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