]> granicus.if.org Git - graphviz/commitdiff
Add build files and extra source files for windows
authorerg <devnull@localhost>
Thu, 20 Jan 2005 19:57:36 +0000 (19:57 +0000)
committererg <devnull@localhost>
Thu, 20 Jan 2005 19:57:36 +0000 (19:57 +0000)
windows/cmd/gvui/frmLayoutControl.frm [new file with mode: 0644]

diff --git a/windows/cmd/gvui/frmLayoutControl.frm b/windows/cmd/gvui/frmLayoutControl.frm
new file mode 100644 (file)
index 0000000..8550ce5
--- /dev/null
@@ -0,0 +1,700 @@
+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