--- /dev/null
+VERSION 5.00\r
+Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"\r
+Begin VB.Form frmLayoutControl \r
+ Caption = "Graphviz"\r
+ ClientHeight = 8070\r
+ ClientLeft = 60\r
+ ClientTop = 345\r
+ ClientWidth = 7230\r
+ LinkTopic = "Form1"\r
+ MaxButton = 0 'False\r
+ ScaleHeight = 8070\r
+ ScaleWidth = 7230\r
+ StartUpPosition = 3 'Windows Default\r
+ Begin VB.Frame fraControl \r
+ Height = 7935\r
+ Left = 60\r
+ TabIndex = 17\r
+ Top = 60\r
+ Width = 7095\r
+ Begin VB.Frame fraOutput \r
+ Caption = "Output"\r
+ Height = 1995\r
+ Left = 180\r
+ TabIndex = 27\r
+ Top = 5820\r
+ Width = 6735\r
+ Begin VB.CommandButton cmdOutputClear \r
+ Caption = "Clear"\r
+ Height = 375\r
+ Left = 5520\r
+ TabIndex = 29\r
+ Top = 1500\r
+ Width = 1095\r
+ End\r
+ Begin VB.TextBox txtOutput \r
+ Height = 1575\r
+ Left = 180\r
+ Locked = -1 'True\r
+ MultiLine = -1 'True\r
+ ScrollBars = 3 'Both\r
+ TabIndex = 28\r
+ Top = 300\r
+ Width = 5235\r
+ End\r
+ End\r
+ Begin VB.CommandButton cmdClear \r
+ Caption = "Clear"\r
+ Height = 375\r
+ Left = 4800\r
+ TabIndex = 15\r
+ Top = 5280\r
+ Width = 1035\r
+ End\r
+ Begin VB.Frame fraProperties \r
+ Caption = "Properties"\r
+ Height = 2415\r
+ Left = 180\r
+ TabIndex = 23\r
+ Top = 2700\r
+ Width = 6735\r
+ Begin VB.ComboBox optPropName \r
+ Height = 315\r
+ Left = 1560\r
+ TabIndex = 7\r
+ Top = 600\r
+ Width = 1335\r
+ End\r
+ Begin VB.ListBox lstProperties \r
+ Columns = 2\r
+ Height = 1230\r
+ Left = 180\r
+ TabIndex = 10\r
+ Top = 1020\r
+ Width = 5175\r
+ End\r
+ Begin VB.CommandButton cmdPropClear \r
+ Caption = "Clear"\r
+ Height = 375\r
+ Left = 5520\r
+ TabIndex = 12\r
+ Top = 1560\r
+ Width = 975\r
+ End\r
+ Begin VB.CommandButton cmdPropDelete \r
+ Caption = "Delete"\r
+ Height = 375\r
+ Left = 5520\r
+ TabIndex = 11\r
+ Top = 1080\r
+ Width = 975\r
+ End\r
+ Begin VB.CommandButton cmdPropSet \r
+ Caption = "Set"\r
+ Height = 375\r
+ Left = 5520\r
+ TabIndex = 9\r
+ Top = 600\r
+ Width = 975\r
+ End\r
+ Begin VB.ComboBox optPropScope \r
+ Height = 315\r
+ Left = 180\r
+ Style = 2 'Dropdown List\r
+ TabIndex = 6\r
+ Top = 600\r
+ Width = 1275\r
+ End\r
+ Begin VB.TextBox txtPropValue \r
+ Height = 315\r
+ Left = 3000\r
+ TabIndex = 8\r
+ Top = 600\r
+ Width = 2355\r
+ End\r
+ Begin VB.Label lblPropScope \r
+ Caption = "Scope"\r
+ Height = 255\r
+ Left = 180\r
+ TabIndex = 26\r
+ Top = 300\r
+ Width = 855\r
+ End\r
+ Begin VB.Label lblPropValue \r
+ Caption = "Value"\r
+ Height = 255\r
+ Left = 3000\r
+ TabIndex = 25\r
+ Top = 300\r
+ Width = 1095\r
+ End\r
+ Begin VB.Label lblPropName \r
+ Caption = "Name"\r
+ Height = 255\r
+ Left = 1560\r
+ TabIndex = 24\r
+ Top = 300\r
+ Width = 855\r
+ End\r
+ End\r
+ Begin VB.CommandButton cmdViewOutput \r
+ Caption = "View Output"\r
+ Height = 375\r
+ Left = 3360\r
+ TabIndex = 14\r
+ Top = 5280\r
+ Width = 1335\r
+ End\r
+ Begin VB.ComboBox optLayoutEngine \r
+ CausesValidation= 0 'False\r
+ Height = 315\r
+ ItemData = "frmLayoutControl.frx":0000\r
+ Left = 1380\r
+ List = "frmLayoutControl.frx":0002\r
+ Style = 2 'Dropdown List\r
+ TabIndex = 0\r
+ Top = 360\r
+ Width = 2535\r
+ End\r
+ Begin VB.TextBox txtInputFile \r
+ Height = 345\r
+ Left = 1380\r
+ TabIndex = 1\r
+ Top = 1260\r
+ Width = 4335\r
+ End\r
+ Begin VB.TextBox txtOutputFile \r
+ Height = 345\r
+ Left = 1380\r
+ TabIndex = 3\r
+ Top = 1740\r
+ Width = 4335\r
+ End\r
+ Begin VB.CommandButton cmdLayout \r
+ Caption = "Do layout"\r
+ Height = 375\r
+ Left = 2040\r
+ TabIndex = 13\r
+ Top = 5280\r
+ Width = 1215\r
+ End\r
+ Begin VB.ComboBox optOutputType \r
+ Height = 315\r
+ ItemData = "frmLayoutControl.frx":0004\r
+ Left = 1380\r
+ List = "frmLayoutControl.frx":0006\r
+ Sorted = -1 'True\r
+ Style = 2 'Dropdown List\r
+ TabIndex = 5\r
+ Top = 2220\r
+ Width = 2535\r
+ End\r
+ Begin VB.CommandButton cmdClose \r
+ Caption = "Close"\r
+ Height = 375\r
+ Left = 5940\r
+ TabIndex = 16\r
+ Top = 5280\r
+ Width = 975\r
+ End\r
+ Begin VB.CommandButton cmdInputFile \r
+ Caption = "Browse .."\r
+ Height = 375\r
+ Left = 5820\r
+ TabIndex = 2\r
+ Top = 1260\r
+ Width = 1095\r
+ End\r
+ Begin VB.CommandButton cmdOuptutLocation \r
+ Caption = "Browse .."\r
+ Height = 375\r
+ Left = 5820\r
+ TabIndex = 4\r
+ Top = 1740\r
+ Width = 1095\r
+ End\r
+ Begin MSComDlg.CommonDialog dlgFileSelection \r
+ Left = 1200\r
+ Top = 5220\r
+ _ExtentX = 847\r
+ _ExtentY = 847\r
+ _Version = 393216\r
+ End\r
+ Begin VB.Label lblLayoutEngine \r
+ Caption = "Layout engine"\r
+ Height = 255\r
+ Left = 180\r
+ TabIndex = 22\r
+ Top = 360\r
+ Width = 1335\r
+ End\r
+ Begin VB.Label lblEngineHelp \r
+ Caption = "No selection"\r
+ Height = 255\r
+ Left = 1380\r
+ TabIndex = 21\r
+ Top = 840\r
+ Width = 3735\r
+ End\r
+ Begin VB.Label lblInputFile \r
+ Caption = "Input file"\r
+ Height = 255\r
+ Left = 180\r
+ TabIndex = 20\r
+ Top = 1320\r
+ Width = 975\r
+ End\r
+ Begin VB.Label lblOutputLocation \r
+ Caption = "Output file"\r
+ Height = 255\r
+ Left = 180\r
+ TabIndex = 19\r
+ Top = 1800\r
+ Width = 1695\r
+ End\r
+ Begin VB.Label lblOutputType \r
+ Caption = "Output file type"\r
+ Height = 255\r
+ Left = 180\r
+ TabIndex = 18\r
+ Top = 2280\r
+ Width = 1695\r
+ End\r
+ End\r
+End\r
+Attribute VB_Name = "frmLayoutControl"\r
+Attribute VB_GlobalNameSpace = False\r
+Attribute VB_Creatable = False\r
+Attribute VB_PredeclaredId = True\r
+Attribute VB_Exposed = False\r
+\r
+Private engineHelp As Collection\r
+Private installPath As String\r
+\r
+Private props As New LayoutPropertySet\r
+Private propsInfo As New LayoutPropertyInfoSet\r
+\r
+Private manualOutputType As Boolean\r
+Private manualOutputFile As Boolean\r
+\r
+Private Const installPathRegLoc = "SOFTWARE\ATT\Graphviz"\r
+\r
+\r
+Private Sub cmdClear_Click()\r
+ optLayoutEngine.ListIndex = -1\r
+ optOutputType.ListIndex = -1\r
+ txtInputFile.Text = ""\r
+ txtOutputFile.Text = ""\r
+ manualOutputType = False\r
+ cmdPropClear_Click\r
+End Sub\r
+\r
+Private Sub cmdClose_Click()\r
+ ExitGVUI\r
+End Sub\r
+\r
+Private Sub cmdInputFile_Click()\r
+ dlgFileSelection.InitDir = installPath & "\graphs"\r
+ dlgFileSelection.DialogTitle = "Select input graph"\r
+ dlgFileSelection.ShowOpen\r
+\r
+ txtInputFile.Text = dlgFileSelection.FileName\r
+End Sub\r
+\r
+Private Sub cmdLayout_Click()\r
+ \r
+ If Not assertArgs Then\r
+ Exit Sub\r
+ End If\r
+ \r
+ Dim res As ProcessOutput\r
+ Dim apps As Integer\r
+ Dim cmd As String\r
+ \r
+ manualOutputType = False\r
+ manualOutputFile = False\r
+ \r
+ 'ensure the file extension\r
+ If Not manualOutputFile And GetFileExtension(txtOutputFile.Text) = "" Then\r
+ txtOutputFile.Text = txtOutputFile.Text + "." + optOutputType.Text\r
+ End If\r
+ \r
+ cmd = Chr(34) & installPath & "\bin\" & optLayoutEngine.Text & ".exe" & Chr(34) & _\r
+ props.ToString & " " & _\r
+ " -T" & optOutputType.Text & _\r
+ " -o " & Chr(34) & txtOutputFile.Text & Chr(34) & _\r
+ " " & Chr(34) & txtInputFile.Text & Chr(34)\r
+ Debug.Print cmd\r
+ \r
+ Me.MousePointer = MousePointerConstants.vbHourglass\r
+ On Error GoTo LayoutFail\r
+ res = ExecCmd(cmd, True, True)\r
+ Me.MousePointer = MousePointerConstants.vbDefault\r
+ \r
+ txtOutput.Text = txtOutput.Text + optLayoutEngine.Text + " said: "\r
+ If res.ret = 0 Then\r
+ txtOutput.Text = txtOutput.Text + "Layout ended succesfully." + Chr(13) + Chr(10)\r
+ Else\r
+ txtOutput.Text = txtOutput.Text + "Layout ended with errors." + Chr(13) + Chr(10)\r
+ End If\r
+ \r
+ If Not IsNull(res.err) Then\r
+ txtOutput.Text = txtOutput.Text + TrimAll(res.err, True)\r
+ End If\r
+ \r
+ txtOutput.Text = txtOutput.Text + Chr(13) + Chr(10)\r
+ txtOutput.SelStart = Len(txtOutput.Text)\r
+ \r
+ Exit Sub\r
+ \r
+LayoutFail:\r
+ Me.MousePointer = MousePointerConstants.vbDefault\r
+ MsgBox err.Description & "(" & err.Number & ")" & Chr(13) & "Command: " & cmd\r
+ err.Clear\r
+ \r
+End Sub\r
+\r
+Private Sub cmdOuptutLocation_Click()\r
+ If txtInputFile.Text <> "" Then\r
+ dlgFileSelection.FileName = GetFileName(txtInputFile.Text)\r
+ End If\r
+ dlgFileSelection.DialogTitle = "Select output file"\r
+ dlgFileSelection.ShowSave\r
+\r
+ txtOutputFile.Text = dlgFileSelection.FileName\r
+End Sub\r
+\r
+Private Sub cmdOutputClear_Click()\r
+ txtOutput.Text = ""\r
+End Sub\r
+\r
+Private Sub cmdPropClear_Click()\r
+ props.Clear\r
+ lstProperties.Clear\r
+ ClearPropInput\r
+End Sub\r
+\r
+Private Sub cmdPropDelete_Click()\r
+ Dim p As LayoutProperty\r
+ \r
+ If lstProperties.ListIndex <> -1 Then\r
+ Set p = props.RemoveByPos(lstProperties.ListIndex + 1)\r
+ lstProperties.RemoveItem lstProperties.ListIndex\r
+ Else\r
+ MsgBox "Cannot find property to delete"\r
+ End If\r
+\r
+End Sub\r
+\r
+Private Sub cmdPropSet_Click()\r
+ \r
+ If optPropScope.Text = "" Or _\r
+ txtPropValue.Text = "" Or _\r
+ optPropName.Text = "" Then\r
+ MsgBox "You need to specify a name, a value and a scope for the property"\r
+ Exit Sub\r
+ End If\r
+\r
+ Dim p As LayoutProperty\r
+ \r
+ Set p = props.Add(optPropScope.Text, txtPropValue.Text, optPropName.Text)\r
+ lstProperties.Clear\r
+ For Each p In props\r
+ lstProperties.AddItem p.ToString\r
+ Next p\r
+' If Not p Is Nothing Then\r
+' lstProperties.AddItem (p.ToString)\r
+' Else\r
+' 'update the text: I can only do that through re-insert!\r
+' Dim i As Integer\r
+' i = props.Pos(optPropName.Text, optPropScope.Text)\r
+' lstProperties.ListIndex = i - 1\r
+' lstProperties = props.ItemByPos(i).ToString\r
+' End If\r
+ \r
+ ClearPropInput\r
+End Sub\r
+\r
+'\r
+'\r
+'\r
+Private Sub cmdViewOutput_Click()\r
+ \r
+ If txtOutputFile.Text = "" Then\r
+ MsgBox "No output file is specified"\r
+ Exit Sub\r
+ End If\r
+ \r
+ Dim exeName As String\r
+ exeName = GetExecutable(optOutputType.Text)\r
+ If exeName = "" Then\r
+ MsgBox "Cannot find associated program for extension " & optOutputType.Text\r
+ Exit Sub\r
+ End If\r
+ \r
+ Me.MousePointer = MousePointerConstants.vbHourglass\r
+ On Error Resume Next\r
+ Call ExecCmd(Chr(34) & exeName & Chr(34) & " " & Chr(34) & txtOutputFile.Text & Chr(34), False, False)\r
+ Me.MousePointer = MousePointerConstants.vbDefault\r
+ \r
+End Sub\r
+\r
+Private Sub optLayoutEngine_Click()\r
+ If optLayoutEngine.ListIndex <> -1 Then\r
+ lblEngineHelp.Caption = engineHelp.Item(optLayoutEngine.Text)\r
+ Else\r
+ lblEngineHelp.Caption = "No selection"\r
+ End If\r
+End Sub\r
+\r
+Private Sub optOutputType_Click()\r
+ manualOutputType = True\r
+End Sub\r
+\r
+Private Sub optOutputType_GotFocus()\r
+ If Not manualOutputType Then\r
+ optOutputType.ListIndex = GetIndex(optOutputType, GetFileExtension(txtOutputFile.Text))\r
+ End If\r
+End Sub\r
+'ugly code\r
+Private Sub optPropScope_LostFocus()\r
+ Dim pi As LayoutPropertyInfo\r
+ \r
+ Dim e As Integer\r
+ Dim s As Integer\r
+ \r
+ optPropName.Clear\r
+ \r
+ e = Switch(optLayoutEngine.Text = "dot", DOT, _\r
+ optLayoutEngine.Text = "neato", NEATO, _\r
+ optLayoutEngine.Text = "twopi", TWOPI, _\r
+ True, ALL_ENGINES)\r
+ \r
+ s = Switch(optPropScope.Text = "Graph", GRAPH, _\r
+ optPropScope.Text = "Edge", EDGE, _\r
+ optPropScope.Text = "Node", NODE, _\r
+ optPropScope.Text = "Subgraph", SUBGRAPH, _\r
+ optPropScope.Text = "Cluster", CLUSTER, _\r
+ True, ANY_ELEMENT)\r
+ \r
+ For Each pi In propsInfo\r
+ If pi.hasEngine(e) And pi.hasScope(s) Then\r
+ optPropName.AddItem pi.PName\r
+ End If\r
+ Next pi\r
+End Sub\r
+\r
+Private Sub txtOutputFile_KeyPress(KeyAscii As Integer)\r
+ manualOutputFile = True\r
+End Sub\r
+\r
+Private Function assertArgs() As Boolean\r
+ assertArgs = False\r
+ If optLayoutEngine.ListIndex = -1 Then\r
+ MsgBox "Missing engine specification", , "Error"\r
+ Exit Function\r
+ ElseIf optOutputType.ListIndex = -1 Then\r
+ MsgBox "Missing output type specification", , "Error"\r
+ Exit Function\r
+ ElseIf txtInputFile.Text = "" Then\r
+ MsgBox "Missing input file specification", , "Error"\r
+ Exit Function\r
+ ElseIf txtOutputFile.Text = "" Then\r
+ MsgBox "Missing output file specification", , "Error"\r
+ Exit Function\r
+ End If\r
+ \r
+ assertArgs = True\r
+End Function\r
+\r
+Private Sub ExitGVUI()\r
+ Me.Visible = False\r
+ Unload Me\r
+End Sub\r
+\r
+Private Sub ClearPropInput()\r
+ optPropName.Text = ""\r
+ txtPropValue.Text = ""\r
+ optPropScope.ListIndex = -1\r
+End Sub\r
+\r
+Private Function GetIndex(Combo As ComboBox, Text As String) As Integer\r
+ Dim i As Integer\r
+ GetIndex = -1\r
+ For i = 0 To Combo.ListCount - 1\r
+ Debug.Print Combo.List(i)\r
+ If Combo.List(i) = Text Then\r
+ GetIndex = i\r
+ Exit For\r
+ End If\r
+ Next i\r
+End Function\r
+\r
+Private Sub Form_Load()\r
+ manualOutputType = False\r
+\r
+ Set engineHelp = New Collection\r
+ engineHelp.Add "Hierarchical drawing of directed graphs", "dot"\r
+ engineHelp.Add "Force layout of undirected graphs", "neato"\r
+ engineHelp.Add "Circular layout", "twopi"\r
+ \r
+ optPropScope.AddItem "Graph"\r
+ optPropScope.AddItem "Node"\r
+ optPropScope.AddItem "Edge"\r
+ 'optPropScope.AddItem "Subgraph"\r
+ 'optPropScope.AddItem "Cluster"\r
+ \r
+ optLayoutEngine.AddItem "dot"\r
+ optLayoutEngine.AddItem "neato"\r
+ optLayoutEngine.AddItem "twopi"\r
+ \r
+ optOutputType.AddItem "ps"\r
+ optOutputType.AddItem "ps2"\r
+ optOutputType.AddItem "hpgl"\r
+ optOutputType.AddItem "pcl"\r
+ optOutputType.AddItem "mif"\r
+ optOutputType.AddItem "pic"\r
+ optOutputType.AddItem "gd"\r
+ optOutputType.AddItem "gd2"\r
+ optOutputType.AddItem "gif"\r
+ optOutputType.AddItem "jpg"\r
+ optOutputType.AddItem "jpeg"\r
+ optOutputType.AddItem "png"\r
+ optOutputType.AddItem "wbmp"\r
+ optOutputType.AddItem "ismap"\r
+ optOutputType.AddItem "imap"\r
+ optOutputType.AddItem "cmap"\r
+ optOutputType.AddItem "vrml"\r
+ optOutputType.AddItem "vtx"\r
+ optOutputType.AddItem "mp"\r
+ optOutputType.AddItem "fig"\r
+ optOutputType.AddItem "svg"\r
+ optOutputType.AddItem "svgz"\r
+ optOutputType.AddItem "dot"\r
+ optOutputType.AddItem "canon"\r
+ optOutputType.AddItem "plain"\r
+ optOutputType.AddItem "plain-ext"\r
+ \r
+ propsInfo.Add "Damping", "0.99", GRAPH, NEATO\r
+ propsInfo.Add "Epsilon", "", GRAPH, NEATO\r
+ propsInfo.Add "URL", "", ANY_ELEMENT, ALL_ENGINES\r
+ propsInfo.Add "arrowhead", "normal", EDGE, ALL_ENGINES\r
+ propsInfo.Add "arrowsize", "1.0", EDGE, ALL_ENGINES\r
+ propsInfo.Add "arrowtail", "normal", EDGE, ALL_ENGINES\r
+ propsInfo.Add "bb", "", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "bgcolor", "", GRAPH Or CLUSTER, ALL_ENGINES\r
+ propsInfo.Add "bottomlabel", "", NODE, ALL_ENGINES\r
+ propsInfo.Add "center", "false", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "clusterrank", "local", GRAPH, DOT\r
+ propsInfo.Add "color", "black", EDGE Or NODE Or CLUSTER, ALL_ENGINES\r
+ propsInfo.Add "comment", "", EDGE Or NODE Or GRAPH, ALL_ENGINES\r
+ propsInfo.Add "compound", "false", GRAPH, DOT\r
+ propsInfo.Add "concentrate", "false", GRAPH, DOT\r
+ propsInfo.Add "constraint", "true", EDGE, DOT\r
+ propsInfo.Add "decorate", "false", EDGE, ALL_ENGINES\r
+ propsInfo.Add "dir", "forward", EDGE, ALL_ENGINES\r
+ propsInfo.Add "distortion", "0.0", NODE, ALL_ENGINES\r
+ propsInfo.Add "fillcolor", "lightgrey", NODE Or CLUSTER, ALL_ENGINES\r
+ propsInfo.Add "fixedsize", "false", NODE, ALL_ENGINES\r
+ propsInfo.Add "fontcolor", "black", EDGE Or NODE Or GRAPH Or CLUSTER, ALL_ENGINES\r
+ propsInfo.Add "fontname", "Times-Roman", EDGE Or NODE Or GRAPH Or CLUSTER, ALL_ENGINES\r
+ propsInfo.Add "fontpath", "", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "fontsize", "14.0", EDGE Or NODE Or GRAPH Or CLUSTER, ALL_ENGINES\r
+ propsInfo.Add "group", "", NODE, DOT\r
+ propsInfo.Add "headURL", "", EDGE, ALL_ENGINES\r
+ propsInfo.Add "headlabel", "", EDGE, ALL_ENGINES\r
+ propsInfo.Add "headport", "center", EDGE, ALL_ENGINES\r
+ propsInfo.Add "height", "0.5", NODE, ALL_ENGINES\r
+ propsInfo.Add "label", "", EDGE Or NODE Or GRAPH Or CLUSTER, ALL_ENGINES\r
+ propsInfo.Add "labelangle", "-25.0", EDGE, ALL_ENGINES\r
+ propsInfo.Add "labeldistance", "1.0", EDGE, ALL_ENGINES\r
+ propsInfo.Add "labelfloat", "false", EDGE, ALL_ENGINES\r
+ propsInfo.Add "labelfontcolor", "black", EDGE, ALL_ENGINES\r
+ propsInfo.Add "labelfontname", "Times-Roman", EDGE, ALL_ENGINES\r
+ propsInfo.Add "labelfontsize", "11.0", EDGE, ALL_ENGINES\r
+ propsInfo.Add "labeljust", "", ANY_ELEMENT, DOT\r
+ propsInfo.Add "labelloc", "t", GRAPH Or CLUSTER, DOT\r
+ propsInfo.Add "layer", "", EDGE Or NODE, ALL_ENGINES\r
+ propsInfo.Add "layers", "", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "len", "1.0", EDGE, NEATO\r
+ propsInfo.Add "lhead", "", EDGE, DOT\r
+ propsInfo.Add "lp", "", EDGE Or GRAPH Or CLUSTER, ALL_ENGINES\r
+ propsInfo.Add "ltail", "", EDGE, DOT\r
+ propsInfo.Add "margin", "", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "maxiter", "", GRAPH, NEATO\r
+ propsInfo.Add "mclimit", "1.0", GRAPH, DOT\r
+ propsInfo.Add "minlen", "1", EDGE, DOT\r
+ propsInfo.Add "model", "", GRAPH, NEATO\r
+ propsInfo.Add "nodesep", "0.25", GRAPH, DOT\r
+ propsInfo.Add "normalize", "false", GRAPH, NEATO\r
+ propsInfo.Add "nslimit", "", GRAPH, DOT\r
+ propsInfo.Add "ordering", "", GRAPH, DOT\r
+ propsInfo.Add "orientation", "0.0", NODE, ALL_ENGINES\r
+ propsInfo.Add "orientation", "", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "overlap", "", GRAPH, NEATO\r
+ propsInfo.Add "pack", "false", GRAPH, NEATO\r
+ propsInfo.Add "page", "", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "pagedir", "", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "pencolor", "black", CLUSTER, ALL_ENGINES\r
+ propsInfo.Add "peripheries", "0", NODE, ALL_ENGINES\r
+ propsInfo.Add "pin", "false", NODE, NEATO\r
+ propsInfo.Add "pos", "", EDGE Or NODE, ALL_ENGINES\r
+ propsInfo.Add "quantum", "0.0", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "rank", "", SUBGRAPH, DOT\r
+ propsInfo.Add "rankdir", "", GRAPH, DOT\r
+ propsInfo.Add "ranksep", "", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "ratio", "", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "rects", "", NODE, ALL_ENGINES\r
+ propsInfo.Add "regular", "false", NODE, ALL_ENGINES\r
+ propsInfo.Add "remincross", "false", GRAPH, DOT\r
+ propsInfo.Add "rotate", "0", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "samehead", "", EDGE, DOT\r
+ propsInfo.Add "sametail", "", EDGE, DOT\r
+ propsInfo.Add "samplepoints", "8", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "searchsize", "30", GRAPH, DOT\r
+ propsInfo.Add "sep", "0.01", GRAPH, NEATO\r
+ propsInfo.Add "shape", "ellipse", NODE, ALL_ENGINES\r
+ propsInfo.Add "shapefile", "", NODE, ALL_ENGINES\r
+ propsInfo.Add "showboxes", "0", EDGE Or NODE Or GRAPH, DOT\r
+ propsInfo.Add "sides", "4", NODE, ALL_ENGINES\r
+ propsInfo.Add "size", "", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "skew", "0.0", NODE, ALL_ENGINES\r
+ propsInfo.Add "splines", "false", GRAPH, NEATO\r
+ propsInfo.Add "start", "", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "style", "", EDGE Or NODE, ALL_ENGINES\r
+ propsInfo.Add "stylesheet", "", GRAPH, ALL_ENGINES\r
+ propsInfo.Add "tailURL", "", EDGE, ALL_ENGINES\r
+ propsInfo.Add "taillabel", "", EDGE, ALL_ENGINES\r
+ propsInfo.Add "tailport", "center", EDGE, ALL_ENGINES\r
+ propsInfo.Add "toplabel", "", NODE, ALL_ENGINES\r
+ propsInfo.Add "vertices", "", NODE, ALL_ENGINES\r
+ propsInfo.Add "voro_margin", "0.05", GRAPH, NEATO\r
+ propsInfo.Add "weight", "", EDGE, DOT Or NEATO\r
+ propsInfo.Add "width", "0.75", NODE, ALL_ENGINES\r
+ propsInfo.Add "z", "0.0", NODE, ALL_ENGINES\r
+ \r
+ optLayoutEngine.ListIndex = GetIndex(optLayoutEngine, Command)\r
+\r
+ On Error GoTo nopath\r
+ installPath = GetSettingString(HKEY_LOCAL_MACHINE, _\r
+ installPathRegLoc, _\r
+ "InstallPath")\r
+ Exit Sub\r
+ \r
+nopath:\r
+ MsgBox "Missing graphviz installation location. Please specify one."\r
+ installPath = BrowseForFolder(Me.hWnd, "Graphviz install directory")\r
+ If installPath = "" Then\r
+ MsgBox "Missing graphviz location. Cannot continue"\r
+ ExitGVUI\r
+ Else\r
+ On Error GoTo noreg\r
+ SaveSettingString HKEY_LOCAL_MACHINE, installPathRegLoc, "InstallPath", installPath\r
+ End If\r
+ Exit Sub\r
+ \r
+noreg:\r
+ MsgBox "Unable to save registry info. Your setting will only be available " & vbCrLf & _\r
+ "for this session"\r
+ ExitGVUI\r
+End Sub\r