US20150205497A1 - Techniques for disambiguating unconnected components in a visual programming interface - Google Patents
Techniques for disambiguating unconnected components in a visual programming interface Download PDFInfo
- Publication number
- US20150205497A1 US20150205497A1 US14/579,496 US201414579496A US2015205497A1 US 20150205497 A1 US20150205497 A1 US 20150205497A1 US 201414579496 A US201414579496 A US 201414579496A US 2015205497 A1 US2015205497 A1 US 2015205497A1
- Authority
- US
- United States
- Prior art keywords
- visual
- piece
- proximate
- visual piece
- pieces
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 230000000007 visual effect Effects 0.000 title claims abstract description 629
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000002910 structure generation Methods 0.000 claims description 6
- 230000014509 gene expression Effects 0.000 description 21
- 238000004590 computer program Methods 0.000 description 8
- 230000015654 memory Effects 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04842—Selection of displayed objects or displayed text elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
Definitions
- the present disclosure relates to techniques for disambiguating unconnected visual pieces in a visual programming interface.
- Visual programming languages are programming languages that allow programmers to generate computer programs using graphical elements, as opposed to generating code textually.
- a programmer can generate the computer program using a visual programming interface. Some visual programming interfaces allow the programmer to connect graphical elements with one another to generate expressions, statements, routines, functions, or the like. For example, a programmer may connect an operator, e.g., a plus operator, with two operands, e.g., two integers, to create a mathematical expression. As can be appreciated, the programmer can create increasingly complex computer code, which can be compiled into an executable program.
- a computer-implemented method for generating, at a computing device having one or more processors, a visual programming interface is disclosed.
- the visual programming interface can be displayed at a user device and allow a user to manipulate a plurality of visual pieces that represent computer instructions to generate computer code.
- a connection between visual pieces in the visual programming interface can represent a relationship between corresponding computer instructions in the generated computer code.
- Each visual piece can include at least one connector and visual pieces may be connected when their corresponding connectors are aligned and their corresponding computer instructions are logically compatible.
- the method can further include receiving user input indicating a command to move a selected visual piece to a requested location in the visual programming interface.
- a distance table can also be generated at the computing device.
- the distance table can store locations of one or more other visual pieces with respect to the selected visual piece in the visual programming interface.
- the distance table can be indexed by one of (i) X-coordinates of the other visual pieces with respect to the selected visual piece and (ii) Y-coordinates of the other visual pieces with respect to the selected visual piece.
- the method can further include storing the other one of the (i) X-coordinates of the other visual pieces with respect to the selected visual piece and (ii) Y-coordinates of the other visual pieces with respect to the selected visual piece, wherein the one or more other visual pieces include the proximate visual piece.
- the method can determine whether the selected visual piece is connected to a proximate visual piece based on the distance table. When the selected visual piece is not connected to the proximate visual piece, the method can include determining a distance between the selected visual piece and the proximate visual piece. When the distance is not greater than a predetermined distance threshold, the method can further adjust a position of the selected visual piece or the proximate visual piece such that the distance is greater than the predetermined distance threshold.
- another computer-implemented method for generating, at a computing device having one or more processors, a visual programming interface is disclosed.
- the visual programming interface can be displayed at a user device and allow a user to manipulate a plurality of visual pieces that represent computer instructions to generate computer code.
- a connection between visual pieces in the visual programming interface can represent a relationship between corresponding computer instructions in the generated computer code.
- the method can also include receiving user input indicating a command to move a selected visual piece to a requested location in the visual programming interface, and determining whether the selected visual piece is connected to a proximate visual piece at the requested location.
- the method can include determining a distance between the selected visual piece at the requested location and the proximate visual piece. When the distance is not greater than a predetermined distance threshold, the method can include adjusting a position of the selected visual piece or the proximate visual piece such that the distance is greater than the predetermined distance threshold.
- the method can further include generating one or more data structures, each individual data structure representing a set of interconnected visual pieces, wherein each interconnected visual piece in the set of interconnected visual pieces is connected to at least one other visual piece represented in the individual data structure.
- the selected visual piece can be determined to be connected to the proximate visual piece when the selected visual piece and the proximate visual piece are members of a same data structure of the one or more data structures.
- the method can further include, in some embodiments, generating a distance table storing locations of one or more other visual pieces with respect to the selected visual piece in the visual programming interface, the distance table being indexed by one of (i) X-coordinates of the other visual pieces with respect to the selected visual piece and (ii) Y-coordinates of the other visual pieces with respect to the selected visual piece, and storing the other one of the (i) X-coordinates of the other visual pieces with respect to the selected visual piece and (ii) Y-coordinates of the other visual pieces with respect to the selected visual piece, wherein the one or more other visual pieces include the proximate visual piece. Additionally, the method can include determining whether the proximate visual piece is within the predetermined distance based on the distance table.
- the plurality of visual pieces can each include at least one connector, wherein visual pieces are connected when their corresponding connectors are aligned and their corresponding computer instructions are logically compatible. Further, adjusting the position of the selected visual piece or the position of the proximate visual piece can be in a predetermined direction and by a predetermined distance.
- the method can further include, upon adjusting the position of the selected visual piece or the proximate visual piece determining whether one of the selected visual piece and the proximate visual piece is connected to a different proximate visual piece.
- the method can include determining a new distance between the one of the selected visual piece and the proximate visual piece and the different proximate visual piece.
- the method can further include adjusting a position of the different proximate visual piece such that the new distance is greater than the predetermined distance threshold.
- the position of the selected visual piece is only adjusted no more than twice and the position of the proximate visual piece is adjusted no more than once.
- the computer instructions can include one or more of a declaration of a variable, an assignment of a value to the variable, a mathematical operation performed on one or more operands, an input instruction, an output instruction, a logic instruction, and a control instruction.
- a computer-implemented system can include a user interface module.
- the user interface module can generate a visual programming interface that is displayed at a user device.
- the visual programming interface can allow a user to manipulate a plurality of visual pieces that represent computer instructions to generate computer code, where a connection between visual pieces represents a relationship between corresponding computer instructions in the generated computer-code.
- the user interface module can further receive user input indicating a command to move a selected visual piece to a requested location in the visual programming interface.
- the system can further include an ambiguity determination module that determines whether the selected visual piece is connected to a proximate visual piece at the requested location. When the selected visual piece is not connected to the proximate visual piece, the ambiguity determination module can determine a distance between the selected visual piece at the requested location and the proximate visual piece. When the distance is not greater than a predetermined distance threshold, ambiguity determination module can adjust a position of the selected visual piece or the proximate visual piece such that the distance is greater than the predetermined distance threshold.
- the system can further include a data structure generation module that generates one or more data structures.
- Each individual data structure can represent a set of interconnected visual pieces, wherein each interconnected visual piece in the set of interconnected visual pieces is connected to at least one other visual piece represented in the individual data structure.
- the ambiguity determination module can determine that the selected visual piece is connected to the proximate visual piece when the selected visual piece and the proximate visual piece are members of a same data structure of the one or more data structures.
- the system can further include a distance determination module that generates a distance table storing locations of one or more other visual pieces with respect to the selected visual piece in the visual programming interface.
- the distance table can be indexed by one of (i) X-coordinates of the other visual pieces with respect to the selected visual piece and (ii) Y-coordinates of the other visual pieces with respect to the selected visual piece.
- the distance determination module can also store the other one of the (i) X-coordinates of the other visual pieces with respect to the selected visual piece and (ii) Y-coordinates of the other visual pieces with respect to the selected visual piece, wherein the one or more other visual pieces include the proximate visual piece.
- the ambiguity determination module can determine whether the proximate visual piece is within the predetermined distance based on the distance table.
- the plurality of visual pieces can each include at least one connector, wherein visual pieces are connected when their corresponding connectors are and their corresponding computer instructions are logically compatible.
- the ambiguity determination module can adjust the position of the selected visual piece or the position of the proximate visual piece in a predetermined direction and by a predetermined distance. Upon adjusting the position of the selected visual piece or the position of the proximate visual piece, the ambiguity determination module can determine whether one of the selected visual piece and the proximate visual piece is connected to a different proximate visual piece. When the one of the selected visual piece and the proximate visual piece is not connected to the different proximate visual piece, the ambiguity determination module can determine a new distance between the one of the selected visual piece and the proximate visual piece and the different proximate visual piece. When the new distance is not greater than the predetermined distance threshold, the ambiguity determination module can, adjust a position of the selected visual piece or the proximate visual piece such that the distance is greater than the predetermined distance threshold.
- FIGS. 1A and 1B are drawings illustrating example environments for providing a visual programming interface according to some embodiments of the present disclosure
- FIG. 2 is a drawing illustrating an example of a visual programming interface according to some embodiments of the present disclosure
- FIGS. 3A and 3B are drawings illustrating examples of visual pieces and connecting visual pieces according to some embodiments of the present disclosure
- FIGS. 4A and 4B are drawings illustrating examples of an ambiguity between two visual pieces and disambiguating the two visual pieces causing the ambiguity, respectively, according to some embodiments of the present disclosure
- FIG. 5 is a flow chart illustrating an example technique for identifying an ambiguity in a visual programming interface and disambiguating the two visual pieces causing the ambiguity according to some embodiments of the present disclosure.
- FIG. 6 is a block diagram illustrating example components of a visual programming module according to some embodiments of the present disclosure.
- FIGS. 1A and 1B illustrate example environments for presenting a visual programming interface (VPI) to a user.
- a VPI can be a graphical user interface (GUI) that allows a user, e.g., a programmer, to generate computer code using a plurality of visual pieces, which are described in greater detail below.
- GUI graphical user interface
- the VPI can be generated by a visual programming module 50 that is implemented at one or more servers 10 .
- the server 10 can generate the VPI and transmit it over a network 20 for display at a user device 30 .
- the server 10 may execute computer-executable instructions for generating and manipulating the VPI and provide the VPI to the user device 30 for display.
- the server 10 may provide the computer-executable instructions to the user device 30 , which in turn executes the computer-executable instructions. It should be appreciated that the server 10 can include one or more processors, and in some embodiments, a plurality of distributed servers 10 can generate the VPI. In FIG. 1B , the visual programming module 50 is implemented at the user device 30 , which executes computer-executable instructions for generating and manipulating the VPI.
- the example VPI 100 may include a menu area 102 and a programming area 104 . It should be appreciated that the VPI 100 is provided for example only and not intended to limit the scope of the disclosure.
- the programming area 104 is the portion of the VPI 100 where a user can position visual pieces in relation to other visual pieces to create computer code.
- a visual piece can be a graphical element that represents a computer instruction.
- a computer instruction can be any instruction that can be compiled and executed by a processor.
- an instruction can be a declaration of a variable, an assignment of a value to a variable, a mathematical operation performed on one or more operands, an input instruction, an output instruction, a logic instruction such as an if-else instruction or a do-while instruction, a control instruction such as a function declaration, or any other type of instruction.
- the user can connect two or more visual pieces, such that a connection indicates a relationship between the instructions represented by the two or more visual pieces.
- the resulting relationship may be an expression which returns a value or a statement which does not return a value.
- the user has generated a function using a plurality of visual pieces.
- the user has included a procedure visual piece 120 .
- the procedure visual piece 120 can receive zero or more arguments.
- the user can define the arguments by connecting one or more visual pieces to the procedure visual piece 120 .
- the user has connected a first argument visual piece 122 referencing a variable “A” and a second argument visual piece 124 referencing a variable “B” to the procedure visual piece 120 .
- the user can connect an additional argument visual piece to the procedure visual piece 120 at a connector 126 .
- the procedure visual piece 120 can also have a variable visual piece 142 indicating a value that is returned after the procedure is performed.
- the user has connected a logic visual piece 128 to the procedure visual piece 120 at connection point 127 .
- the logic visual piece 128 in the illustrated example is an “if-else” statement.
- the user has connected a test expression 130 to the logic visual piece 128 at connection point 129 .
- the test expression 130 is whether the value of the variable B is greater than or equal to the value of the variable A.
- the test expression 130 is made up of a mathematical operator visual piece 132 indicating the “greater than” operator, a first mathematical operand visual piece 134 indicating the value of the variable B, and a second mathematical operand visual piece 136 indicating the value of the variable A.
- the first mathematical expression 138 is connected to the logic visual piece 128 at connection point 139 .
- the first mathematical expression 138 is formed by five visual pieces.
- the second mathematical expression 140 is connected to the logic visual piece 128 at connection point 141 .
- the second mathematical expression 140 is formed by five visual pieces as well.
- the menu area 102 includes drop down menus for selecting different types of visual pieces.
- the menu area may include a “definition” drop down menu 106 for selecting definition visual pieces, a “text” drop down menu 108 for selecting text visual pieces, a “lists” drop down menu 110 for selecting list visual pieces, a “math” drop down menu 112 for selecting mathematical visual pieces, a “logic” drop down menu 114 for selecting logic visual pieces, a “control” drop down menu 116 for selecting control visual pieces, and a “colors” drop down menu 118 for selecting color visual pieces.
- the user can chose a type of visual piece from one of the drop down menus.
- the user may choose a mathematical visual piece representing the “+” operand from the math drop down menu 112 .
- the chosen visual piece is then displayed in the programming area 104 of the VPI 100 . Once displayed in the programming area 104 , the user can incorporate the newly chosen visual piece into the computer code being generated.
- visual pieces e.g. visual piece 202 , visual piece 204 , and visual piece 206
- the visual pieces are mathematical visual pieces and include an operator visual piece 202 , a first operand visual piece 204 , and a second operand visual piece 206 .
- the visual pieces described herein are provided for example only, and the description contained herein is applicable to other types of visual pieces, not only mathematical visual pieces.
- the operator visual piece 202 can include an instruction type 210 .
- the instruction type 210 indicates that the operator visual piece 202 is for a multiplication instruction.
- the operator visual piece 202 further includes three connectors 212 , 214 , and 216 .
- the connectors can further be classified as male connectors, e.g., connector 216 , and female connectors, e.g., connectors 212 and 214 .
- a female connector of a visual piece receives a male connector of another visual piece.
- the first operand visual piece 204 can include an instruction type 220 .
- the instruction type is a value of the variable “A.”
- the first operand visual piece 204 can also include a connector 222 .
- the connector 222 is a male connector 222 .
- the second operand visual piece 206 includes an instruction type 230 and a male connector 232 .
- FIG. 3B illustrates an example of an expression 250 .
- the male connector 222 ( FIG. 3A ) of the first operand visual piece 204 has been inserted into the female connector 212 ( FIG. 3A ) of the operator visual piece 202 and the male connector 232 of the second operand visual piece 206 has been inserted into the female connector 214 .
- the mathematical expression 250 is “A*B.”
- the mathematical expression 250 can be included as part of a more complex expression by inserting the male connector 216 ( FIG. 3A ) of the operator visual piece 202 into a female connector of another visual piece (Not Shown).
- the user can generate computer code by selecting a visual piece and providing a command to move the selected visual piece to a requested location in the programming area 104 of the VPI 100 .
- the user can click on a selected visual piece and drag the selected visual piece to a requested location in the programming area 104 .
- the user can connect a plurality of visual pieces to create expressions and/or statements, which in turn can be further connected to create more complex expressions and/or statements.
- the user can create routines, subroutines, programs, and the like using the VPI 100 .
- the user can instruct a compiler associated with the visual programming module 50 to compile the generated computer code into computer-executable instructions that are executable by a processor. It is appreciated that the compiler can be implemented in any suitable manner.
- One situation that may arise is when the user moves a selected visual piece into the proximity of a proximate visual piece, and for whatever reason, a connection is not formed between the selected visual piece and the proximate visual piece. These situations may arise, for example, when the selected visual piece and the proximate visual piece are not compatible instructions or when the connectors of the selected visual piece and the proximate visual piece are close enough to one another to appear connected, but no connection has been made between the two visual pieces.
- the situations described above may be referred to as ambiguities, as the user may believe that the two visual pieces are connected when the two visual pieces are not actually connected. In these situations, the computer code that is generated from the collection of visual pieces may not compile as the user desired, as the user may be believe that a connection exists where no such connection has been made.
- FIG. 4A illustrates an example of an ambiguity.
- the user has attempted to connect a selected visual piece 408 to a complex expression 400 at a female connector 406 of a proximate visual piece 404 .
- the proximate visual piece 404 is a control visual piece for a procedure that can receive arguments.
- the user should provide a visual piece which represents a variable, e.g., an integer, character, string or the like.
- the selected visual piece 408 is a logic visual piece indicating an “OR” test.
- an “OR” test is not a valid argument for a procedure. While the selected visual piece 408 and the proximate visual piece 404 appear to be connected, no connection has been established between the selected visual piece 408 and the proximate visual piece 404 .
- the visual programming module 50 can be configured to disambiguate unconnected visual pieces.
- FIG. 4B illustrates an example of the VPI 100 after the visual programming module 50 has disambiguated the selected visual piece 408 and the proximate visual piece 404 .
- the visual programming module 50 can disambiguate two unconnected visual pieces by adjusting the position of at least one of the visual pieces such that the visual pieces no longer appear to be connected.
- the selected visual piece 408 has been moved to the right, thereby disambiguating the selected visual piece 408 and the proximate visual piece 404 .
- FIGS. 4A and 4B is provided for example only and is not intended to limit the scope of the disclosure.
- FIG. 5 illustrates an example technique for identifying unconnected visual pieces, and disambiguating the unconnected visual pieces.
- the VPI 100 is generated and provided for display at a user device 30 .
- user input indicating a command to move a selected visual piece to a requested location in the VPI 100 can be received by the visual programming module 50 .
- the command to move the selected visual piece may be, for example, received when a user clicks and drags on the selected visual piece.
- the location at which the user releases the selected visual piece can be identified as the requested location.
- the position of the selected visual piece is adjusted, such that the selected visual piece is located at the requested location in the VPI 100 .
- the visual programming module 50 can locate a proximate visual piece. It should be appreciated that the proximate visual piece can be any visual piece displayed in the VPI 100 , or can be any visual piece within a predetermined distance from the selected visual piece.
- the visual programming module 50 can determine whether the proximate visual piece is connected to the selected visual piece. The visual programming module 50 can make this determination in any suitable manner. For instance, the visual programming module 50 can be configured to generate data structures for each set of interconnected visual pieces, such that each interconnected visual piece in the set is connected to at least one other interconnected visual piece in the set. The visual programming module 50 can determine that the selected visual piece and the proximate visual piece are connected if both visual pieces are in the same data structure.
- the visual programming module 50 can determine whether there are any remaining proximate visual pieces to analyze, as shown at 518 , which is described in greater detail below. If the selected visual piece and the proximate visual piece are not in the same data structure, then the visual programming module 50 can determine that the selected visual piece and the proximate visual piece are not connected.
- the data structure is a hierarchical tree, where the highest level instruction is the root node of the hierarchical tree, visual pieces that are connected to the highest level instructions are children of the root node, and so on and so forth.
- the procedure visual piece 120 would be the root node in the hierarchical tree, while the visual pieces 122 , 124 , 128 and 142 , are the children nodes.
- Visual piece 132 would be a child node of logic visual piece 128 and a grandchild node of visual piece 120 .
- a linked list can represent a set of interconnected visual pieces.
- the visual programming module 50 can determine a distance between the selected visual piece and the proximate visual piece, as shown at 512 .
- the distance between two visual pieces can represent an amount of units between two visual pieces, when measured from a particular resolution.
- the selected visual piece and the proximate visual piece may appear closer or further apart.
- the distance between the two visual pieces may be based on the resolution that the visual pieces are currently being viewed at by the user, such that the greater the resolution, e.g., the greater amount of “zoom,” the larger the unit.
- the distance between two visual pieces can be determined in any suitable manner. For example, in embodiments where the visual pieces include connectors, the distance can be calculated from a first point corresponding to a connector of the selected visual piece to a second point corresponding to a connector of the proximate visual piece. Further, in some embodiments, a distance table can be generated for the selected visual piece and the visual programming module 50 can determine the distance from the distance table.
- a distance table lists a position of one or more proximate visual pieces with respect to the selected visual piece.
- the distance table can be indexed by one of the X-coordinates of the proximate visual pieces or the Y-coordinates of the proximate visual pieces, such that if the selected visual piece is located at (0,0), the positions of the proximate visual pieces are represented with respect to the selected visual piece. For instance, if a specific proximate visual piece is located two units to the right and two units up from the selected visual piece, the specific proximate visual piece can be said to be located at (2,2).
- an entry corresponding to a particular proximate visual piece in the distance table may be indexed at the X-coordinate of the particular proximate visual piece, and may include a reference to the particular proximate visual piece and the Y-coordinate of the particular visual piece.
- a distance can then be calculated, for example, by calculating the Euclidean distance between the selected visual piece and the proximate visual piece.
- the visual programming module 50 can compare the distance between the selected visual piece and the proximate visual piece to a distance threshold. If the distance between the two visual pieces is greater than the distance threshold, then it is unlikely that there is an ambiguity as to the connectedness of the selected visual piece and the proximate visual piece. That is, the two visual pieces are not connected and do not appear to be connected. If, however, the distance is not greater than the distance threshold, then the selected visual piece and the proximate visual piece may appear connected when in fact the two visual pieces are not connected.
- the visual programming module 50 can disambiguate the selected visual piece and the proximate visual piece by adjusting the position of the selected visual piece and/or the proximate visual piece, as shown at 516 .
- the visual programming module 50 can adjust the position of the selected visual piece and/or the proximate visual piece such that the distance between the two visual pieces exceeds the distance threshold. It should be appreciated that when the position of the selected visual piece or the proximate visual piece is adjusted, the positions of any visual pieces connected to the selected visual piece or the proximate visual piece are also adjusted.
- the visual programming module 50 can be configured to adjust the position of the selected visual piece by moving the selected visual piece in a predetermined direction and a predetermined distance. For example, if the selected visual piece is to the right of the proximate visual piece, the visual programming module 50 can move the selected visual piece upward and further to the right by 2 units in each direction. Similarly, if the selected visual piece is to the left of the proximate visual piece, the selected visual piece can be moved downward and further to the left. It should be appreciated that the position of the proximate visual piece may also be adjusted in a similar manner.
- the visual programming module 50 determines whether there are any other proximate visual pieces to analyze with respect to the selected visual piece, as shown at 518 . If there are other proximate visual pieces to analyze, the visual programming module 50 identifies a next proximate visual piece, as shown at 520 , and returns to 510 . If there are no other proximate visual pieces remaining, then the visual programming module 50 can update the VPI 100 to indicate the new position of the selected visual piece and/or any proximate visual pieces that may have had their respective positions updated.
- a situation may arise where the selected visual piece is between two or more proximate visual pieces, the selected visual piece is determined to be not connected to any of the proximate visual pieces, and the selected visual piece is within the distance threshold from one of the proximate visual pieces.
- the visual programming module 50 may enter an infinite loop if the position of the selected visual piece is toggled between the two or more proximate visual pieces.
- the visual programming module 50 can be configured to adjust the position of the selected visual piece no more than twice or any of the proximate visual pieces no more than once. If a new ambiguity arises, then the visual programming module 50 may be restricted to only moving a visual piece if the proximate visual piece has not been previously moved. If none of the visual pieces causing the ambiguity can be moved, then a visual indicator such as a warning may be presented to the user via the VPI 100 .
- the visual programming module 50 can include a user interface module 610 , an ambiguity determination module 612 , a distance determination module 614 , and a data structure generation module 616 .
- the user interface module 610 can be configured to generate the VPI 100 , which can be displayed at the user device 30 . Furthermore, the user interface module 610 can be further configured to receive user commands. For example, the user interface module 610 can receive a user command to move a selected visual piece to a requested location in the programming area 104 of the VPI 100 . Upon receiving such a user command, the user interface module 610 can adjust the position of the selected visual piece so that the selected visual piece is moved to the requested location in the programming area 104 of the VPI 100 .
- the user interface module 610 can receive other user commands as well. For example, the user interface module 610 may receive user commands indicating a type of visual piece that a user has chosen from the menu area 102 . Upon receiving such a user command, the user interface module 610 may generate and display the chosen visual piece in the programming area 104 .
- the ambiguity determination module 612 analyzes the VPI 100 after a triggering event to determine if there are any ambiguities in the VPI 100 .
- An example of a triggering event is when a user provides a user command to move a selected visual piece to a requested location.
- the ambiguity determination module 612 can analyze the VPI 100 to determine whether there is a visual piece that is not connected to another visual piece and is within a distance threshold from the other visual piece. For example, the ambiguity determination module 612 can determine if the selected visual piece is connected to a proximate visual piece.
- the ambiguity determination module 612 can determine whether the distance between the selected visual piece and the proximate visual piece is less than or equal to a distance threshold. When the distance is less than or equal to the distance threshold, e.g., an ambiguity has been determined, the ambiguity determination module 612 can adjust the position of the selected visual piece and/or a position of the proximate visual piece in the VPI 100 , such that the distance between the selected visual piece and the proximate visual piece is greater than the predetermined distance threshold.
- the data structure generation module 616 generates one or more data structures that can be used by the ambiguity determination module 612 to determine whether two visual pieces are connected. As indicated above, the data structure generation module 616 can generate, for example, a hierarchical tree based on the visual pieces displayed by the VPI 100 and the connections between the visual pieces. The data structure generation module 616 can generate the data structure in any suitable manner and provide the generated data structure to the ambiguity determination module 612 .
- the ambiguity determination module 612 can determine whether the selected visual piece and a proximate visual piece are connected by, for example, determining whether both visual pieces are included in the same data structure. If so, then the two visual pieces are connected. If the selected visual piece and the proximate visual piece are not in the same data structure, the two visual pieces are not connected. When the selected visual piece and the proximate visual piece are not connected, the ambiguity determination module 612 can determine whether there is an ambiguity between the selected visual piece and the proximate visual piece based on the distance between the selected visual piece and the proximate visual piece.
- the distance determination module 614 can determine a distance between two visual pieces. It is appreciated that the distance determination module 614 can determine the distance in any suitable manner. For instance, the distance determination module 614 can calculate a Euclidean distance between a point on the selected visual piece and a point on a proximate visual piece. The distance determination module 614 can calculate a distance with the selected visual piece for every proximate visual piece displayed by the VPI 100 or only for relatively close proximate visual pieces.
- the distance determination module 614 can generate distance tables for one or more visual pieces, including the selected visual piece. As described above, a distance table with respect to the selected visual piece can be generated by indexing each proximate visual piece according to its location with respect to the selected visual piece. Once a distance table has been generated, the distance determination module 614 can determine a distance between the selected visual piece and a proximate visual piece indexed in the distance table based on the index of the proximate visual piece and the other coordinate corresponding to the proximate visual piece.
- the distance determination module 614 can determine that the distance between the selected visual piece and the proximate visual piece is 5 units, e.g., ⁇ square root over ((x 2 proximate — visual — piece +y 2 proximate — visual — piece )) ⁇ . It should be appreciated that in the foregoing example, the x value can be obtained from the index, and the y value can be obtained from the entry corresponding to the index.
- the distance determination module 614 can return the distance between the selected visual piece and the proximate visual piece to the ambiguity determination module 612 .
- the ambiguity determination module 612 compares the distance between the selected visual piece and the proximate visual piece to a distance threshold.
- the distance threshold can be dependent on a current resolution or zoom of the VPI 100 . For instance, if the amount of zoom is relatively high, then the distance threshold can be increased as well. When the distance is less than or equal to the distance threshold, then the ambiguity determination module 612 determines that an ambiguity exists.
- the ambiguity determination module 612 can disambiguate the selected visual piece and the proximate visual piece causing the ambiguity. For example, the ambiguity determination module 612 can adjust the position of the selected visual piece and/or the position of the proximate visual piece, such that the distance between the two visual pieces is greater than the distance threshold.
- the ambiguity determination module 612 can analyze all of the visual pieces displayed in by the VPI 100 or can analyze visual pieces which the user has requested to be moved.
- the techniques described above have been provided for example only and are not intended to be limiting.
- Example embodiments are provided so that this disclosure will be thorough, and will fully convey the scope to those who are skilled in the art. Numerous specific details are set forth such as examples of specific components, devices, and methods, to provide a thorough understanding of embodiments of the present disclosure. It will be apparent to those skilled in the art that specific details need not be employed, that example embodiments may be embodied in many different forms and that neither should be construed to limit the scope of the disclosure. In some example embodiments, well-known procedures, well-known device structures, and well-known technologies are not described in detail.
- first, second, third, etc. may be used herein to describe various elements, components, regions, layers and/or sections, these elements, components, regions, layers and/or sections should not be limited by these terms. These terms may be only used to distinguish one element, component, region, layer or section from another region, layer or section. Terms such as “first,” “second,” and other numerical terms when used herein do not imply a sequence or order unless clearly indicated by the context. Thus, a first element, component, region, layer or section discussed below could be termed a second element, component, region, layer or section without departing from the teachings of the example embodiments.
- module may refer to, be part of, or include: an Application Specific Integrated Circuit (ASIC); an electronic circuit; a combinational logic circuit; a field programmable gate array (FPGA); a processor or a distributed network of processors (shared, dedicated, or grouped) and storage in networked clusters or datacenters that executes code or a process; other suitable components that provide the described functionality; or a combination of some or all of the above, such as in a system-on-chip.
- the term module may also include memory (shared, dedicated, or grouped) that stores code executed by the one or more processors.
- code may include software, firmware, byte-code and/or microcode, and may refer to programs, routines, functions, classes, and/or objects.
- shared means that some or all code from multiple modules may be executed using a single (shared) processor. In addition, some or all code from multiple modules may be stored by a single (shared) memory.
- group means that some or all code from a single module may be executed using a group of processors. In addition, some or all code from a single module may be stored using a group of memories.
- the techniques described herein may be implemented by one or more computer programs executed by one or more processors.
- the computer programs include processor-executable instructions that are stored on a non-transitory tangible computer readable medium.
- the computer programs may also include stored data.
- Non-limiting examples of the non-transitory tangible computer readable medium are nonvolatile memory, magnetic storage, and optical storage.
- the present disclosure also relates to an apparatus for performing the operations herein.
- This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored on a computer readable medium that can be accessed by the computer.
- a computer program may be stored in a tangible computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, application specific integrated circuits (ASICs), or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
- the computers referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
- the present disclosure is well suited to a wide variety of computer network systems over numerous topologies.
- the configuration and management of large networks comprise storage devices and computers that are communicatively coupled to dissimilar computers and storage devices over a network, such as the Internet.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
Description
- This application is a continuation of U.S. patent application Ser. No. 13/832,710 filed on Mar. 15, 2013. The entire disclosure of the above application is incorporated herein by reference.
- The present disclosure relates to techniques for disambiguating unconnected visual pieces in a visual programming interface.
- The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent it is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
- Visual programming languages are programming languages that allow programmers to generate computer programs using graphical elements, as opposed to generating code textually. A programmer can generate the computer program using a visual programming interface. Some visual programming interfaces allow the programmer to connect graphical elements with one another to generate expressions, statements, routines, functions, or the like. For example, a programmer may connect an operator, e.g., a plus operator, with two operands, e.g., two integers, to create a mathematical expression. As can be appreciated, the programmer can create increasingly complex computer code, which can be compiled into an executable program.
- In various embodiments, a computer-implemented method for generating, at a computing device having one or more processors, a visual programming interface is disclosed. The visual programming interface can be displayed at a user device and allow a user to manipulate a plurality of visual pieces that represent computer instructions to generate computer code. A connection between visual pieces in the visual programming interface can represent a relationship between corresponding computer instructions in the generated computer code. Each visual piece can include at least one connector and visual pieces may be connected when their corresponding connectors are aligned and their corresponding computer instructions are logically compatible. The method can further include receiving user input indicating a command to move a selected visual piece to a requested location in the visual programming interface.
- A distance table can also be generated at the computing device. The distance table can store locations of one or more other visual pieces with respect to the selected visual piece in the visual programming interface. The distance table can be indexed by one of (i) X-coordinates of the other visual pieces with respect to the selected visual piece and (ii) Y-coordinates of the other visual pieces with respect to the selected visual piece. The method can further include storing the other one of the (i) X-coordinates of the other visual pieces with respect to the selected visual piece and (ii) Y-coordinates of the other visual pieces with respect to the selected visual piece, wherein the one or more other visual pieces include the proximate visual piece.
- Additionally, the method can determine whether the selected visual piece is connected to a proximate visual piece based on the distance table. When the selected visual piece is not connected to the proximate visual piece, the method can include determining a distance between the selected visual piece and the proximate visual piece. When the distance is not greater than a predetermined distance threshold, the method can further adjust a position of the selected visual piece or the proximate visual piece such that the distance is greater than the predetermined distance threshold.
- In further embodiments, another computer-implemented method for generating, at a computing device having one or more processors, a visual programming interface is disclosed. The visual programming interface can be displayed at a user device and allow a user to manipulate a plurality of visual pieces that represent computer instructions to generate computer code. A connection between visual pieces in the visual programming interface can represent a relationship between corresponding computer instructions in the generated computer code. The method can also include receiving user input indicating a command to move a selected visual piece to a requested location in the visual programming interface, and determining whether the selected visual piece is connected to a proximate visual piece at the requested location. Additionally, when the selected visual piece is not connected to the proximate visual piece, the method can include determining a distance between the selected visual piece at the requested location and the proximate visual piece. When the distance is not greater than a predetermined distance threshold, the method can include adjusting a position of the selected visual piece or the proximate visual piece such that the distance is greater than the predetermined distance threshold.
- According to various embodiments of the present disclosure, the method can further include generating one or more data structures, each individual data structure representing a set of interconnected visual pieces, wherein each interconnected visual piece in the set of interconnected visual pieces is connected to at least one other visual piece represented in the individual data structure.
- Additionally or alternatively, the selected visual piece can be determined to be connected to the proximate visual piece when the selected visual piece and the proximate visual piece are members of a same data structure of the one or more data structures.
- The method can further include, in some embodiments, generating a distance table storing locations of one or more other visual pieces with respect to the selected visual piece in the visual programming interface, the distance table being indexed by one of (i) X-coordinates of the other visual pieces with respect to the selected visual piece and (ii) Y-coordinates of the other visual pieces with respect to the selected visual piece, and storing the other one of the (i) X-coordinates of the other visual pieces with respect to the selected visual piece and (ii) Y-coordinates of the other visual pieces with respect to the selected visual piece, wherein the one or more other visual pieces include the proximate visual piece. Additionally, the method can include determining whether the proximate visual piece is within the predetermined distance based on the distance table.
- The plurality of visual pieces can each include at least one connector, wherein visual pieces are connected when their corresponding connectors are aligned and their corresponding computer instructions are logically compatible. Further, adjusting the position of the selected visual piece or the position of the proximate visual piece can be in a predetermined direction and by a predetermined distance.
- In various embodiments, the method can further include, upon adjusting the position of the selected visual piece or the proximate visual piece determining whether one of the selected visual piece and the proximate visual piece is connected to a different proximate visual piece. When the one of the selected visual piece and the proximate visual piece is not connected to the different proximate visual piece, the method can include determining a new distance between the one of the selected visual piece and the proximate visual piece and the different proximate visual piece. When the new distance is not greater than the predetermined distance threshold, the method can further include adjusting a position of the different proximate visual piece such that the new distance is greater than the predetermined distance threshold.
- In some embodiments, the position of the selected visual piece is only adjusted no more than twice and the position of the proximate visual piece is adjusted no more than once. Additionally or alternatively, the computer instructions can include one or more of a declaration of a variable, an assignment of a value to the variable, a mathematical operation performed on one or more operands, an input instruction, an output instruction, a logic instruction, and a control instruction.
- According to various embodiments of the present disclosure, a computer-implemented system is disclosed. The system can include a user interface module. The user interface module can generate a visual programming interface that is displayed at a user device. The visual programming interface can allow a user to manipulate a plurality of visual pieces that represent computer instructions to generate computer code, where a connection between visual pieces represents a relationship between corresponding computer instructions in the generated computer-code. The user interface module can further receive user input indicating a command to move a selected visual piece to a requested location in the visual programming interface.
- The system can further include an ambiguity determination module that determines whether the selected visual piece is connected to a proximate visual piece at the requested location. When the selected visual piece is not connected to the proximate visual piece, the ambiguity determination module can determine a distance between the selected visual piece at the requested location and the proximate visual piece. When the distance is not greater than a predetermined distance threshold, ambiguity determination module can adjust a position of the selected visual piece or the proximate visual piece such that the distance is greater than the predetermined distance threshold.
- The system can further include a data structure generation module that generates one or more data structures. Each individual data structure can represent a set of interconnected visual pieces, wherein each interconnected visual piece in the set of interconnected visual pieces is connected to at least one other visual piece represented in the individual data structure. In some embodiments, the ambiguity determination module can determine that the selected visual piece is connected to the proximate visual piece when the selected visual piece and the proximate visual piece are members of a same data structure of the one or more data structures.
- The system can further include a distance determination module that generates a distance table storing locations of one or more other visual pieces with respect to the selected visual piece in the visual programming interface. The distance table can be indexed by one of (i) X-coordinates of the other visual pieces with respect to the selected visual piece and (ii) Y-coordinates of the other visual pieces with respect to the selected visual piece. The distance determination module can also store the other one of the (i) X-coordinates of the other visual pieces with respect to the selected visual piece and (ii) Y-coordinates of the other visual pieces with respect to the selected visual piece, wherein the one or more other visual pieces include the proximate visual piece. The ambiguity determination module can determine whether the proximate visual piece is within the predetermined distance based on the distance table.
- According to various embodiments of the present disclosure, the plurality of visual pieces can each include at least one connector, wherein visual pieces are connected when their corresponding connectors are and their corresponding computer instructions are logically compatible.
- Additionally or alternatively, the ambiguity determination module can adjust the position of the selected visual piece or the position of the proximate visual piece in a predetermined direction and by a predetermined distance. Upon adjusting the position of the selected visual piece or the position of the proximate visual piece, the ambiguity determination module can determine whether one of the selected visual piece and the proximate visual piece is connected to a different proximate visual piece. When the one of the selected visual piece and the proximate visual piece is not connected to the different proximate visual piece, the ambiguity determination module can determine a new distance between the one of the selected visual piece and the proximate visual piece and the different proximate visual piece. When the new distance is not greater than the predetermined distance threshold, the ambiguity determination module can, adjust a position of the selected visual piece or the proximate visual piece such that the distance is greater than the predetermined distance threshold.
- Further areas of applicability of the present disclosure will become apparent from the detailed description provided hereinafter. It should be understood that the detailed description and specific examples are intended for purposes of illustration only and are not intended to limit the scope of the disclosure.
- The present disclosure will become more fully understood from the detailed description and the accompanying drawings, wherein:
-
FIGS. 1A and 1B are drawings illustrating example environments for providing a visual programming interface according to some embodiments of the present disclosure; -
FIG. 2 is a drawing illustrating an example of a visual programming interface according to some embodiments of the present disclosure; -
FIGS. 3A and 3B are drawings illustrating examples of visual pieces and connecting visual pieces according to some embodiments of the present disclosure; -
FIGS. 4A and 4B are drawings illustrating examples of an ambiguity between two visual pieces and disambiguating the two visual pieces causing the ambiguity, respectively, according to some embodiments of the present disclosure; -
FIG. 5 is a flow chart illustrating an example technique for identifying an ambiguity in a visual programming interface and disambiguating the two visual pieces causing the ambiguity according to some embodiments of the present disclosure; and -
FIG. 6 is a block diagram illustrating example components of a visual programming module according to some embodiments of the present disclosure. -
FIGS. 1A and 1B illustrate example environments for presenting a visual programming interface (VPI) to a user. A VPI can be a graphical user interface (GUI) that allows a user, e.g., a programmer, to generate computer code using a plurality of visual pieces, which are described in greater detail below. InFIG. 1A , the VPI can be generated by avisual programming module 50 that is implemented at one ormore servers 10. Theserver 10 can generate the VPI and transmit it over a network 20 for display at auser device 30. In the illustrated example, theserver 10 may execute computer-executable instructions for generating and manipulating the VPI and provide the VPI to theuser device 30 for display. In some embodiments, theserver 10 may provide the computer-executable instructions to theuser device 30, which in turn executes the computer-executable instructions. It should be appreciated that theserver 10 can include one or more processors, and in some embodiments, a plurality of distributedservers 10 can generate the VPI. InFIG. 1B , thevisual programming module 50 is implemented at theuser device 30, which executes computer-executable instructions for generating and manipulating the VPI. - Referring now to
FIG. 2 , an example of a visual programming interface 100 (VPI) is illustrated. Theexample VPI 100 may include amenu area 102 and aprogramming area 104. It should be appreciated that theVPI 100 is provided for example only and not intended to limit the scope of the disclosure. - The
programming area 104 is the portion of theVPI 100 where a user can position visual pieces in relation to other visual pieces to create computer code. A visual piece can be a graphical element that represents a computer instruction. A computer instruction can be any instruction that can be compiled and executed by a processor. For example, an instruction can be a declaration of a variable, an assignment of a value to a variable, a mathematical operation performed on one or more operands, an input instruction, an output instruction, a logic instruction such as an if-else instruction or a do-while instruction, a control instruction such as a function declaration, or any other type of instruction. The user can connect two or more visual pieces, such that a connection indicates a relationship between the instructions represented by the two or more visual pieces. The resulting relationship may be an expression which returns a value or a statement which does not return a value. - In the illustrated example, the user has generated a function using a plurality of visual pieces. At the highest level, the user has included a procedure
visual piece 120. The procedurevisual piece 120 can receive zero or more arguments. The user can define the arguments by connecting one or more visual pieces to the procedurevisual piece 120. In the example, the user has connected a first argumentvisual piece 122 referencing a variable “A” and a second argumentvisual piece 124 referencing a variable “B” to the procedurevisual piece 120. If the user desires, the user can connect an additional argument visual piece to the procedurevisual piece 120 at aconnector 126. The procedurevisual piece 120 can also have a variablevisual piece 142 indicating a value that is returned after the procedure is performed. - In the body of the procedure, the user has connected a logic
visual piece 128 to the procedurevisual piece 120 atconnection point 127. The logicvisual piece 128 in the illustrated example is an “if-else” statement. The user has connected atest expression 130 to the logicvisual piece 128 atconnection point 129. In the illustrated example, thetest expression 130 is whether the value of the variable B is greater than or equal to the value of the variable A. Thetest expression 130 is made up of a mathematical operatorvisual piece 132 indicating the “greater than” operator, a first mathematical operandvisual piece 134 indicating the value of the variable B, and a second mathematical operandvisual piece 136 indicating the value of the variable A. - If the
test expression 130 is true, then a firstmathematical expression 138 is performed, e.g. “A=B−A.” The firstmathematical expression 138 is connected to the logicvisual piece 128 atconnection point 139. As should be appreciated, the firstmathematical expression 138 is formed by five visual pieces. If thetest expression 130 is false, then a secondmathematical expression 140 is performed, e.g., “A=B+A.” The secondmathematical expression 140 is connected to the logicvisual piece 128 atconnection point 141. As should be appreciated, the secondmathematical expression 140 is formed by five visual pieces as well. - In the illustrated example, the
menu area 102 includes drop down menus for selecting different types of visual pieces. For example, the menu area may include a “definition” drop downmenu 106 for selecting definition visual pieces, a “text” drop downmenu 108 for selecting text visual pieces, a “lists” drop downmenu 110 for selecting list visual pieces, a “math” drop downmenu 112 for selecting mathematical visual pieces, a “logic” drop downmenu 114 for selecting logic visual pieces, a “control” drop downmenu 116 for selecting control visual pieces, and a “colors” drop downmenu 118 for selecting color visual pieces. The user can chose a type of visual piece from one of the drop down menus. For example, the user may choose a mathematical visual piece representing the “+” operand from the math drop downmenu 112. In some embodiments, the chosen visual piece is then displayed in theprogramming area 104 of theVPI 100. Once displayed in theprogramming area 104, the user can incorporate the newly chosen visual piece into the computer code being generated. - Referring now to
FIGS. 3A and 3B , examples of visual pieces, e.g.visual piece 202,visual piece 204, andvisual piece 206, are depicted. In the example ofFIGS. 3A and 3B , the visual pieces are mathematical visual pieces and include an operatorvisual piece 202, a first operandvisual piece 204, and a second operandvisual piece 206. It should be appreciated that the visual pieces described herein are provided for example only, and the description contained herein is applicable to other types of visual pieces, not only mathematical visual pieces. - The operator
visual piece 202 can include aninstruction type 210. In the illustrated example, theinstruction type 210 indicates that the operatorvisual piece 202 is for a multiplication instruction. The operatorvisual piece 202 further includes threeconnectors connector 216, and female connectors, e.g.,connectors - The first operand
visual piece 204 can include aninstruction type 220. In this example, the instruction type is a value of the variable “A.” The first operandvisual piece 204 can also include aconnector 222. In this example, theconnector 222 is amale connector 222. Similarly, the second operandvisual piece 206 includes aninstruction type 230 and amale connector 232. -
FIG. 3B illustrates an example of anexpression 250. In the example, the male connector 222 (FIG. 3A ) of the first operandvisual piece 204 has been inserted into the female connector 212 (FIG. 3A ) of the operatorvisual piece 202 and themale connector 232 of the second operandvisual piece 206 has been inserted into thefemale connector 214. As should be appreciated, themathematical expression 250 is “A*B.” Themathematical expression 250 can be included as part of a more complex expression by inserting the male connector 216 (FIG. 3A ) of the operatorvisual piece 202 into a female connector of another visual piece (Not Shown). - In general, the user can generate computer code by selecting a visual piece and providing a command to move the selected visual piece to a requested location in the
programming area 104 of theVPI 100. For example, the user can click on a selected visual piece and drag the selected visual piece to a requested location in theprogramming area 104. The user can connect a plurality of visual pieces to create expressions and/or statements, which in turn can be further connected to create more complex expressions and/or statements. It should be appreciated, that the user can create routines, subroutines, programs, and the like using theVPI 100. Once finished, the user can instruct a compiler associated with thevisual programming module 50 to compile the generated computer code into computer-executable instructions that are executable by a processor. It is appreciated that the compiler can be implemented in any suitable manner. - One situation that may arise is when the user moves a selected visual piece into the proximity of a proximate visual piece, and for whatever reason, a connection is not formed between the selected visual piece and the proximate visual piece. These situations may arise, for example, when the selected visual piece and the proximate visual piece are not compatible instructions or when the connectors of the selected visual piece and the proximate visual piece are close enough to one another to appear connected, but no connection has been made between the two visual pieces. The situations described above may be referred to as ambiguities, as the user may believe that the two visual pieces are connected when the two visual pieces are not actually connected. In these situations, the computer code that is generated from the collection of visual pieces may not compile as the user desired, as the user may be believe that a connection exists where no such connection has been made.
-
FIG. 4A illustrates an example of an ambiguity. In the example, the user has attempted to connect a selectedvisual piece 408 to a complex expression 400 at afemale connector 406 of a proximatevisual piece 404. In the example, the proximatevisual piece 404 is a control visual piece for a procedure that can receive arguments. Thus, in order to connect to proximatevisual piece 404 atconnector 406, the user should provide a visual piece which represents a variable, e.g., an integer, character, string or the like. In the example, however, the selectedvisual piece 408 is a logic visual piece indicating an “OR” test. As should be appreciated, an “OR” test is not a valid argument for a procedure. While the selectedvisual piece 408 and the proximatevisual piece 404 appear to be connected, no connection has been established between the selectedvisual piece 408 and the proximatevisual piece 404. - The
visual programming module 50 can be configured to disambiguate unconnected visual pieces.FIG. 4B illustrates an example of theVPI 100 after thevisual programming module 50 has disambiguated the selectedvisual piece 408 and the proximatevisual piece 404. In some embodiments, thevisual programming module 50 can disambiguate two unconnected visual pieces by adjusting the position of at least one of the visual pieces such that the visual pieces no longer appear to be connected. As should be appreciated, inFIG. 4B the selectedvisual piece 408 has been moved to the right, thereby disambiguating the selectedvisual piece 408 and the proximatevisual piece 404. The example ofFIGS. 4A and 4B is provided for example only and is not intended to limit the scope of the disclosure. -
FIG. 5 illustrates an example technique for identifying unconnected visual pieces, and disambiguating the unconnected visual pieces. At 502, theVPI 100 is generated and provided for display at auser device 30. At 504, user input indicating a command to move a selected visual piece to a requested location in theVPI 100 can be received by thevisual programming module 50. The command to move the selected visual piece may be, for example, received when a user clicks and drags on the selected visual piece. The location at which the user releases the selected visual piece can be identified as the requested location. At 506, the position of the selected visual piece is adjusted, such that the selected visual piece is located at the requested location in theVPI 100. - At 508, the
visual programming module 50 can locate a proximate visual piece. It should be appreciated that the proximate visual piece can be any visual piece displayed in theVPI 100, or can be any visual piece within a predetermined distance from the selected visual piece. At 510, thevisual programming module 50 can determine whether the proximate visual piece is connected to the selected visual piece. Thevisual programming module 50 can make this determination in any suitable manner. For instance, thevisual programming module 50 can be configured to generate data structures for each set of interconnected visual pieces, such that each interconnected visual piece in the set is connected to at least one other interconnected visual piece in the set. Thevisual programming module 50 can determine that the selected visual piece and the proximate visual piece are connected if both visual pieces are in the same data structure. When the selected visual piece and the proximate visual piece are connected, thevisual programming module 50 can determine whether there are any remaining proximate visual pieces to analyze, as shown at 518, which is described in greater detail below. If the selected visual piece and the proximate visual piece are not in the same data structure, then thevisual programming module 50 can determine that the selected visual piece and the proximate visual piece are not connected. - In some embodiments, the data structure is a hierarchical tree, where the highest level instruction is the root node of the hierarchical tree, visual pieces that are connected to the highest level instructions are children of the root node, and so on and so forth. For instance, in the example of
FIG. 2 , the procedurevisual piece 120 would be the root node in the hierarchical tree, while thevisual pieces Visual piece 132 would be a child node of logicvisual piece 128 and a grandchild node ofvisual piece 120. While a hierarchical tree is described, it should be appreciated that other suitable data structures may be implemented. For example, a linked list can represent a set of interconnected visual pieces. - When the selected visual piece and the proximate visual piece are not connected, the
visual programming module 50 can determine a distance between the selected visual piece and the proximate visual piece, as shown at 512. The distance between two visual pieces can represent an amount of units between two visual pieces, when measured from a particular resolution. As should be appreciated, at different resolutions, the selected visual piece and the proximate visual piece may appear closer or further apart. Thus, the distance between the two visual pieces may be based on the resolution that the visual pieces are currently being viewed at by the user, such that the greater the resolution, e.g., the greater amount of “zoom,” the larger the unit. - The distance between two visual pieces can be determined in any suitable manner. For example, in embodiments where the visual pieces include connectors, the distance can be calculated from a first point corresponding to a connector of the selected visual piece to a second point corresponding to a connector of the proximate visual piece. Further, in some embodiments, a distance table can be generated for the selected visual piece and the
visual programming module 50 can determine the distance from the distance table. - A distance table lists a position of one or more proximate visual pieces with respect to the selected visual piece. The distance table can be indexed by one of the X-coordinates of the proximate visual pieces or the Y-coordinates of the proximate visual pieces, such that if the selected visual piece is located at (0,0), the positions of the proximate visual pieces are represented with respect to the selected visual piece. For instance, if a specific proximate visual piece is located two units to the right and two units up from the selected visual piece, the specific proximate visual piece can be said to be located at (2,2). In embodiments where the distance table is referenced by X-coordinates, an entry corresponding to a particular proximate visual piece in the distance table may be indexed at the X-coordinate of the particular proximate visual piece, and may include a reference to the particular proximate visual piece and the Y-coordinate of the particular visual piece. For instance, in the example with the specific proximate visual piece located at (2,2) with respect to the selected visual piece, the specific proximate visual piece can be indexed at X=2, and the entry can include the Y-coordinate, e.g., 2, of the specific proximate visual piece. As should be appreciated, a distance can then be calculated, for example, by calculating the Euclidean distance between the selected visual piece and the proximate visual piece.
- At 514, the
visual programming module 50 can compare the distance between the selected visual piece and the proximate visual piece to a distance threshold. If the distance between the two visual pieces is greater than the distance threshold, then it is unlikely that there is an ambiguity as to the connectedness of the selected visual piece and the proximate visual piece. That is, the two visual pieces are not connected and do not appear to be connected. If, however, the distance is not greater than the distance threshold, then the selected visual piece and the proximate visual piece may appear connected when in fact the two visual pieces are not connected. - When an ambiguity between the selected visual piece and the proximate visual piece exists, the
visual programming module 50 can disambiguate the selected visual piece and the proximate visual piece by adjusting the position of the selected visual piece and/or the proximate visual piece, as shown at 516. In some embodiments, thevisual programming module 50 can adjust the position of the selected visual piece and/or the proximate visual piece such that the distance between the two visual pieces exceeds the distance threshold. It should be appreciated that when the position of the selected visual piece or the proximate visual piece is adjusted, the positions of any visual pieces connected to the selected visual piece or the proximate visual piece are also adjusted. - In some embodiments, the
visual programming module 50 can be configured to adjust the position of the selected visual piece by moving the selected visual piece in a predetermined direction and a predetermined distance. For example, if the selected visual piece is to the right of the proximate visual piece, thevisual programming module 50 can move the selected visual piece upward and further to the right by 2 units in each direction. Similarly, if the selected visual piece is to the left of the proximate visual piece, the selected visual piece can be moved downward and further to the left. It should be appreciated that the position of the proximate visual piece may also be adjusted in a similar manner. - Once the position of the selected visual piece and/or the proximate visual piece has been adjusted, the
visual programming module 50 determines whether there are any other proximate visual pieces to analyze with respect to the selected visual piece, as shown at 518. If there are other proximate visual pieces to analyze, thevisual programming module 50 identifies a next proximate visual piece, as shown at 520, and returns to 510. If there are no other proximate visual pieces remaining, then thevisual programming module 50 can update theVPI 100 to indicate the new position of the selected visual piece and/or any proximate visual pieces that may have had their respective positions updated. - In some scenarios, a situation may arise where the selected visual piece is between two or more proximate visual pieces, the selected visual piece is determined to be not connected to any of the proximate visual pieces, and the selected visual piece is within the distance threshold from one of the proximate visual pieces. In such a scenario, the
visual programming module 50 may enter an infinite loop if the position of the selected visual piece is toggled between the two or more proximate visual pieces. To avoid such situations, thevisual programming module 50 can be configured to adjust the position of the selected visual piece no more than twice or any of the proximate visual pieces no more than once. If a new ambiguity arises, then thevisual programming module 50 may be restricted to only moving a visual piece if the proximate visual piece has not been previously moved. If none of the visual pieces causing the ambiguity can be moved, then a visual indicator such as a warning may be presented to the user via theVPI 100. - Referring now to
FIG. 6 , an examplevisual programming module 50 is depicted. Thevisual programming module 50 can include a user interface module 610, an ambiguity determination module 612, a distance determination module 614, and a data structure generation module 616. - The user interface module 610 can be configured to generate the
VPI 100, which can be displayed at theuser device 30. Furthermore, the user interface module 610 can be further configured to receive user commands. For example, the user interface module 610 can receive a user command to move a selected visual piece to a requested location in theprogramming area 104 of theVPI 100. Upon receiving such a user command, the user interface module 610 can adjust the position of the selected visual piece so that the selected visual piece is moved to the requested location in theprogramming area 104 of theVPI 100. - The user interface module 610 can receive other user commands as well. For example, the user interface module 610 may receive user commands indicating a type of visual piece that a user has chosen from the
menu area 102. Upon receiving such a user command, the user interface module 610 may generate and display the chosen visual piece in theprogramming area 104. - The ambiguity determination module 612 analyzes the
VPI 100 after a triggering event to determine if there are any ambiguities in theVPI 100. An example of a triggering event is when a user provides a user command to move a selected visual piece to a requested location. The ambiguity determination module 612 can analyze theVPI 100 to determine whether there is a visual piece that is not connected to another visual piece and is within a distance threshold from the other visual piece. For example, the ambiguity determination module 612 can determine if the selected visual piece is connected to a proximate visual piece. When the selected visual piece is not connected to the proximate visual piece, the ambiguity determination module 612 can determine whether the distance between the selected visual piece and the proximate visual piece is less than or equal to a distance threshold. When the distance is less than or equal to the distance threshold, e.g., an ambiguity has been determined, the ambiguity determination module 612 can adjust the position of the selected visual piece and/or a position of the proximate visual piece in theVPI 100, such that the distance between the selected visual piece and the proximate visual piece is greater than the predetermined distance threshold. - The data structure generation module 616 generates one or more data structures that can be used by the ambiguity determination module 612 to determine whether two visual pieces are connected. As indicated above, the data structure generation module 616 can generate, for example, a hierarchical tree based on the visual pieces displayed by the
VPI 100 and the connections between the visual pieces. The data structure generation module 616 can generate the data structure in any suitable manner and provide the generated data structure to the ambiguity determination module 612. - As described above, the ambiguity determination module 612 can determine whether the selected visual piece and a proximate visual piece are connected by, for example, determining whether both visual pieces are included in the same data structure. If so, then the two visual pieces are connected. If the selected visual piece and the proximate visual piece are not in the same data structure, the two visual pieces are not connected. When the selected visual piece and the proximate visual piece are not connected, the ambiguity determination module 612 can determine whether there is an ambiguity between the selected visual piece and the proximate visual piece based on the distance between the selected visual piece and the proximate visual piece.
- The distance determination module 614 can determine a distance between two visual pieces. It is appreciated that the distance determination module 614 can determine the distance in any suitable manner. For instance, the distance determination module 614 can calculate a Euclidean distance between a point on the selected visual piece and a point on a proximate visual piece. The distance determination module 614 can calculate a distance with the selected visual piece for every proximate visual piece displayed by the
VPI 100 or only for relatively close proximate visual pieces. - In some embodiments, the distance determination module 614 can generate distance tables for one or more visual pieces, including the selected visual piece. As described above, a distance table with respect to the selected visual piece can be generated by indexing each proximate visual piece according to its location with respect to the selected visual piece. Once a distance table has been generated, the distance determination module 614 can determine a distance between the selected visual piece and a proximate visual piece indexed in the distance table based on the index of the proximate visual piece and the other coordinate corresponding to the proximate visual piece. For instance, if a proximate visual piece is indexed at X=3, and the Y-coordinate corresponding to the proximate visual piece is 4, then the distance determination module 614 can determine that the distance between the selected visual piece and the proximate visual piece is 5 units, e.g., √{square root over ((x2 proximate
— visual— piece+y2 proximate— visual— piece))}. It should be appreciated that in the foregoing example, the x value can be obtained from the index, and the y value can be obtained from the entry corresponding to the index. - The distance determination module 614 can return the distance between the selected visual piece and the proximate visual piece to the ambiguity determination module 612. The ambiguity determination module 612 compares the distance between the selected visual piece and the proximate visual piece to a distance threshold. The distance threshold can be dependent on a current resolution or zoom of the
VPI 100. For instance, if the amount of zoom is relatively high, then the distance threshold can be increased as well. When the distance is less than or equal to the distance threshold, then the ambiguity determination module 612 determines that an ambiguity exists. - When the ambiguity determination module 612 determines that an ambiguity exists, the ambiguity determination module 612 can disambiguate the selected visual piece and the proximate visual piece causing the ambiguity. For example, the ambiguity determination module 612 can adjust the position of the selected visual piece and/or the position of the proximate visual piece, such that the distance between the two visual pieces is greater than the distance threshold.
- The ambiguity determination module 612 can analyze all of the visual pieces displayed in by the
VPI 100 or can analyze visual pieces which the user has requested to be moved. The techniques described above have been provided for example only and are not intended to be limiting. - Example embodiments are provided so that this disclosure will be thorough, and will fully convey the scope to those who are skilled in the art. Numerous specific details are set forth such as examples of specific components, devices, and methods, to provide a thorough understanding of embodiments of the present disclosure. It will be apparent to those skilled in the art that specific details need not be employed, that example embodiments may be embodied in many different forms and that neither should be construed to limit the scope of the disclosure. In some example embodiments, well-known procedures, well-known device structures, and well-known technologies are not described in detail.
- The terminology used herein is for the purpose of describing particular example embodiments only and is not intended to be limiting. As used herein, the singular forms “a,” “an,” and “the” may be intended to include the plural forms as well, unless the context clearly indicates otherwise. The term “and/or” includes any and all combinations of one or more of the associated listed items. The terms “comprises,” “comprising,” “including,” and “having,” are inclusive and therefore specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. The method steps, processes, and operations described herein are not to be construed as necessarily requiring their performance in the particular order discussed or illustrated, unless specifically identified as an order of performance. It is also to be understood that additional or alternative steps may be employed.
- Although the terms first, second, third, etc. may be used herein to describe various elements, components, regions, layers and/or sections, these elements, components, regions, layers and/or sections should not be limited by these terms. These terms may be only used to distinguish one element, component, region, layer or section from another region, layer or section. Terms such as “first,” “second,” and other numerical terms when used herein do not imply a sequence or order unless clearly indicated by the context. Thus, a first element, component, region, layer or section discussed below could be termed a second element, component, region, layer or section without departing from the teachings of the example embodiments.
- As used herein, the term module may refer to, be part of, or include: an Application Specific Integrated Circuit (ASIC); an electronic circuit; a combinational logic circuit; a field programmable gate array (FPGA); a processor or a distributed network of processors (shared, dedicated, or grouped) and storage in networked clusters or datacenters that executes code or a process; other suitable components that provide the described functionality; or a combination of some or all of the above, such as in a system-on-chip. The term module may also include memory (shared, dedicated, or grouped) that stores code executed by the one or more processors.
- The term code, as used above, may include software, firmware, byte-code and/or microcode, and may refer to programs, routines, functions, classes, and/or objects. The term shared, as used above, means that some or all code from multiple modules may be executed using a single (shared) processor. In addition, some or all code from multiple modules may be stored by a single (shared) memory. The term group, as used above, means that some or all code from a single module may be executed using a group of processors. In addition, some or all code from a single module may be stored using a group of memories.
- The techniques described herein may be implemented by one or more computer programs executed by one or more processors. The computer programs include processor-executable instructions that are stored on a non-transitory tangible computer readable medium. The computer programs may also include stored data. Non-limiting examples of the non-transitory tangible computer readable medium are nonvolatile memory, magnetic storage, and optical storage.
- Some portions of the above description present the techniques described herein in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. These operations, while described functionally or logically, are understood to be implemented by computer programs. Furthermore, it has also proven convenient at times to refer to these arrangements of operations as modules or by functional names, without loss of generality.
- Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system memories or registers or other such information storage, transmission or display devices.
- Certain aspects of the described techniques include process steps and instructions described herein in the form of an algorithm. It should be noted that the described process steps and instructions could be embodied in software, firmware or hardware, and when embodied in software, could be downloaded to reside on and be operated from different platforms used by real time network operating systems.
- The present disclosure also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored on a computer readable medium that can be accessed by the computer. Such a computer program may be stored in a tangible computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, application specific integrated circuits (ASICs), or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus. Furthermore, the computers referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
- The algorithms and operations presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may also be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatuses to perform the required method steps. The required structure for a variety of these systems will be apparent to those of skill in the art, along with equivalent variations. In addition, the present disclosure is not described with reference to any particular programming language. It is appreciated that a variety of programming languages may be used to implement the teachings of the present disclosure as described herein, and any references to specific languages are provided for disclosure of enablement and best mode of the present invention.
- The present disclosure is well suited to a wide variety of computer network systems over numerous topologies. Within this field, the configuration and management of large networks comprise storage devices and computers that are communicatively coupled to dissimilar computers and storage devices over a network, such as the Internet.
- The foregoing description of the embodiments has been provided for purposes of illustration and description. It is not intended to be exhaustive or to limit the disclosure. Individual elements or features of a particular embodiment are generally not limited to that particular embodiment, but, where applicable, are interchangeable and can be used in a selected embodiment, even if not specifically shown or described. The same may also be varied in many ways. Such variations are not to be regarded as a departure from the disclosure, and all such modifications are intended to be included within the scope of the disclosure.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/579,496 US20150205497A1 (en) | 2013-03-15 | 2014-12-22 | Techniques for disambiguating unconnected components in a visual programming interface |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/832,710 US8924926B1 (en) | 2013-03-15 | 2013-03-15 | Techniques for disambiguating unconnected components in a visual programming interface |
US14/579,496 US20150205497A1 (en) | 2013-03-15 | 2014-12-22 | Techniques for disambiguating unconnected components in a visual programming interface |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/832,710 Continuation US8924926B1 (en) | 2013-03-15 | 2013-03-15 | Techniques for disambiguating unconnected components in a visual programming interface |
Publications (1)
Publication Number | Publication Date |
---|---|
US20150205497A1 true US20150205497A1 (en) | 2015-07-23 |
Family
ID=52112673
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/832,710 Active 2033-06-19 US8924926B1 (en) | 2013-03-15 | 2013-03-15 | Techniques for disambiguating unconnected components in a visual programming interface |
US14/579,496 Abandoned US20150205497A1 (en) | 2013-03-15 | 2014-12-22 | Techniques for disambiguating unconnected components in a visual programming interface |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/832,710 Active 2033-06-19 US8924926B1 (en) | 2013-03-15 | 2013-03-15 | Techniques for disambiguating unconnected components in a visual programming interface |
Country Status (1)
Country | Link |
---|---|
US (2) | US8924926B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020228221A1 (en) * | 2019-05-10 | 2020-11-19 | 上海莉莉丝科技股份有限公司 | Adaptive user-interface configuration method, system, and device, and medium |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9595202B2 (en) * | 2012-12-14 | 2017-03-14 | Neuron Fuel, Inc. | Programming learning center |
US9595205B2 (en) | 2012-12-18 | 2017-03-14 | Neuron Fuel, Inc. | Systems and methods for goal-based programming instruction |
US10510264B2 (en) | 2013-03-21 | 2019-12-17 | Neuron Fuel, Inc. | Systems and methods for customized lesson creation and application |
US9579573B2 (en) | 2013-06-10 | 2017-02-28 | Pixel Press Technology, LLC | Systems and methods for creating a playable video game from a three-dimensional model |
US9370721B2 (en) * | 2013-06-10 | 2016-06-21 | Pixel Press Technology, LLC | Systems and methods for creating a playable video game from a static model |
US10363486B2 (en) | 2013-06-10 | 2019-07-30 | Pixel Press Technology, LLC | Smart video game board system and methods |
US20190340952A1 (en) * | 2018-05-02 | 2019-11-07 | Infitech Co., Ltd. | System for learning programming |
US11610059B2 (en) | 2018-12-07 | 2023-03-21 | Interject Data System, Inc. | Systems and methods for a visual interface for grid-based programs |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020089541A1 (en) * | 2000-02-14 | 2002-07-11 | Julian Orbanes | System for graphically interconnecting operators |
US6774899B1 (en) * | 1997-09-18 | 2004-08-10 | Mitsubishi Electric Research Laboratories, Inc. | Drawing graphs using user selectable visual oragnization features and/or other user controlled constraints |
US20060156282A1 (en) * | 2004-12-29 | 2006-07-13 | Microsoft Corporation | System and method to re-associate class designer shapes to the types they represent |
US20070106975A1 (en) * | 2005-11-04 | 2007-05-10 | Microsoft Corporation | Cartographic software maps |
US20090089715A1 (en) * | 2007-09-27 | 2009-04-02 | Dickey Roger F | Automatic Re-Positioning of Graphical Program Nodes during Node Placement or Node Movement |
US20100100867A1 (en) * | 2008-04-17 | 2010-04-22 | Renuka Sindhgatta | Method for finding an impact on a computer generated code |
US20110022975A1 (en) * | 2007-07-09 | 2011-01-27 | Anand Kodaganur | Automatically Arranging Objects in a Selected Portion of a Graphical Program Block Diagram |
US20110029905A1 (en) * | 2007-07-09 | 2011-02-03 | Anand Kodaganur | Re-Arranging a Graphical Program while Keeping Contents of a Structure Object Fixed |
US20110035723A1 (en) * | 2007-07-09 | 2011-02-10 | Anand Kodaganur | Excluding a Portion of a Graphical Program from Re-Arrangement |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5557731A (en) | 1993-12-28 | 1996-09-17 | International Business Machines Corporation | Method and system for detecting undefined objects in an application |
-
2013
- 2013-03-15 US US13/832,710 patent/US8924926B1/en active Active
-
2014
- 2014-12-22 US US14/579,496 patent/US20150205497A1/en not_active Abandoned
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6774899B1 (en) * | 1997-09-18 | 2004-08-10 | Mitsubishi Electric Research Laboratories, Inc. | Drawing graphs using user selectable visual oragnization features and/or other user controlled constraints |
US20020089541A1 (en) * | 2000-02-14 | 2002-07-11 | Julian Orbanes | System for graphically interconnecting operators |
US20060156282A1 (en) * | 2004-12-29 | 2006-07-13 | Microsoft Corporation | System and method to re-associate class designer shapes to the types they represent |
US20070106975A1 (en) * | 2005-11-04 | 2007-05-10 | Microsoft Corporation | Cartographic software maps |
US20110022975A1 (en) * | 2007-07-09 | 2011-01-27 | Anand Kodaganur | Automatically Arranging Objects in a Selected Portion of a Graphical Program Block Diagram |
US20110029905A1 (en) * | 2007-07-09 | 2011-02-03 | Anand Kodaganur | Re-Arranging a Graphical Program while Keeping Contents of a Structure Object Fixed |
US20110035723A1 (en) * | 2007-07-09 | 2011-02-10 | Anand Kodaganur | Excluding a Portion of a Graphical Program from Re-Arrangement |
US20090089715A1 (en) * | 2007-09-27 | 2009-04-02 | Dickey Roger F | Automatic Re-Positioning of Graphical Program Nodes during Node Placement or Node Movement |
US8539367B2 (en) * | 2007-09-27 | 2013-09-17 | National Instruments Corporation | Automatic re-positioning of graphical program nodes during node placement or node movement |
US20100100867A1 (en) * | 2008-04-17 | 2010-04-22 | Renuka Sindhgatta | Method for finding an impact on a computer generated code |
Non-Patent Citations (3)
Title |
---|
Cox et al., "Abstraction in Algorithm Animation," IEEE, 1992, 7pg. * |
Kim et al., "Target Exploration for Disconnected Feasible Regions in Enterprise-Driven Multilevel Product Design," AIAA/ISSMO, 2005, 11pg. * |
Smith, David N., "Visual Programming in the Interface Construction Set," IEEE, 1988, 12pg. * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020228221A1 (en) * | 2019-05-10 | 2020-11-19 | 上海莉莉丝科技股份有限公司 | Adaptive user-interface configuration method, system, and device, and medium |
US11748121B2 (en) | 2019-05-10 | 2023-09-05 | Shanghai Lilith Technology Corporation | Method, system, device and medium for adaptive configuration of a user interface employing stretching and moving |
Also Published As
Publication number | Publication date |
---|---|
US8924926B1 (en) | 2014-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8924926B1 (en) | Techniques for disambiguating unconnected components in a visual programming interface | |
US8423345B1 (en) | Mapping between code coverage and model coverage for a design | |
US10235140B2 (en) | Defining attributes of variables in a state chart of a technical computing environment | |
US9639332B2 (en) | Applying coding standards in graphical programming environments | |
US9811233B2 (en) | Building applications for configuring processes | |
US9846575B1 (en) | Installation of a technical computing environment customized for a target hardware platform | |
US10318595B2 (en) | Analytics based on pipes programming model | |
US11061539B2 (en) | Reference nodes in a computational graph | |
US10684936B2 (en) | Observer for simulation test and verification | |
US8984488B2 (en) | Type and range propagation through data-flow models | |
US10185793B2 (en) | Conditional-based duration logic | |
US11886776B2 (en) | Techniques for generating graph-based representations of complex mechanical assemblies | |
EP2787435A1 (en) | Compilation validation | |
US9576085B2 (en) | Selective importance sampling | |
US8938710B2 (en) | Preventing interference between subsystem blocks at a design time | |
US9170783B1 (en) | Class creation assistant for textual programming languages | |
Luckow et al. | Symbolic pathfinder v7 | |
US9177452B1 (en) | User interface for a modeling environment | |
CN112612846B (en) | Method and terminal for visualizing association relationship | |
US10534603B1 (en) | Automatic renaming of elements of a graphical modeling environment | |
US8862446B1 (en) | Systems and methods for graphical model environment routing | |
US11144684B2 (en) | Method and system for improving efficacy of model verification by model partitioning | |
CN117493637A (en) | Force guide graph layout method and device, electronic equipment and storage medium | |
KR20190109996A (en) | Method for operating software for application development | |
CN118445123A (en) | Memory error detection method and device, electronic equipment, storage medium and vehicle |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: GOOGLE INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:FRASER, NEIL DONALD;REEL/FRAME:034570/0914 Effective date: 20130402 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: GOOGLE LLC, CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:044144/0001 Effective date: 20170929 |
|
AS | Assignment |
Owner name: GOOGLE LLC, CALIFORNIA Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE THE REMOVAL OF THE INCORRECTLY RECORDED APPLICATION NUMBERS 14/149802 AND 15/419313 PREVIOUSLY RECORDED AT REEL: 44144 FRAME: 1. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:068092/0502 Effective date: 20170929 |