home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / INI_to_XML20388912222006.psc / frmMain.frm < prev    next >
Text File  |  2006-12-22  |  17KB  |  500 lines

  1. VERSION 5.00
  2. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
  3. Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
  4. Begin VB.Form frmMain 
  5.    Caption         =   "INI XML Editor"
  6.    ClientHeight    =   5175
  7.    ClientLeft      =   165
  8.    ClientTop       =   855
  9.    ClientWidth     =   7380
  10.    LinkTopic       =   "Form1"
  11.    ScaleHeight     =   5175
  12.    ScaleWidth      =   7380
  13.    StartUpPosition =   3  'Windows Default
  14.    Begin VB.PictureBox picValues 
  15.       Align           =   4  'Align Right
  16.       BorderStyle     =   0  'None
  17.       Height          =   5175
  18.       Left            =   3270
  19.       ScaleHeight     =   5175
  20.       ScaleWidth      =   2655
  21.       TabIndex        =   9
  22.       Top             =   0
  23.       Width           =   2655
  24.       Begin VB.TextBox txtKey 
  25.          Height          =   375
  26.          Left            =   0
  27.          TabIndex        =   14
  28.          Top             =   2520
  29.          Width           =   2415
  30.       End
  31.       Begin VB.TextBox txtValue 
  32.          Height          =   375
  33.          Left            =   0
  34.          TabIndex        =   13
  35.          Top             =   3240
  36.          Width           =   2415
  37.       End
  38.       Begin VB.TextBox txtKeyDesc 
  39.          Height          =   1095
  40.          Left            =   0
  41.          MultiLine       =   -1  'True
  42.          TabIndex        =   12
  43.          Top             =   3960
  44.          Width           =   2415
  45.       End
  46.       Begin VB.TextBox txtSectDesc 
  47.          Height          =   975
  48.          Left            =   0
  49.          MultiLine       =   -1  'True
  50.          TabIndex        =   11
  51.          Top             =   1080
  52.          Width           =   2415
  53.       End
  54.       Begin VB.TextBox txtSection 
  55.          Height          =   375
  56.          Left            =   0
  57.          TabIndex        =   10
  58.          Top             =   360
  59.          Width           =   2415
  60.       End
  61.       Begin VB.Label Label5 
  62.          Caption         =   "Key Value"
  63.          Height          =   255
  64.          Left            =   0
  65.          TabIndex        =   19
  66.          Top             =   3000
  67.          Width           =   2295
  68.       End
  69.       Begin VB.Label Label6 
  70.          Caption         =   "Key"
  71.          Height          =   255
  72.          Left            =   0
  73.          TabIndex        =   18
  74.          Top             =   2280
  75.          Width           =   2295
  76.       End
  77.       Begin VB.Label Label3 
  78.          Caption         =   "Key Description"
  79.          Height          =   255
  80.          Left            =   0
  81.          TabIndex        =   17
  82.          Top             =   3720
  83.          Width           =   2415
  84.       End
  85.       Begin VB.Label Label2 
  86.          Caption         =   "Section Description"
  87.          Height          =   255
  88.          Left            =   0
  89.          TabIndex        =   16
  90.          Top             =   840
  91.          Width           =   2415
  92.       End
  93.       Begin VB.Label Label4 
  94.          Caption         =   "Section"
  95.          Height          =   255
  96.          Left            =   0
  97.          TabIndex        =   15
  98.          Top             =   120
  99.          Width           =   2295
  100.       End
  101.    End
  102.    Begin VB.PictureBox picSettings 
  103.       Align           =   3  'Align Left
  104.       BorderStyle     =   0  'None
  105.       Height          =   5175
  106.       Left            =   0
  107.       ScaleHeight     =   5175
  108.       ScaleWidth      =   3135
  109.       TabIndex        =   6
  110.       Top             =   0
  111.       Width           =   3135
  112.       Begin MSComctlLib.TreeView tvwSettings 
  113.          Height          =   4695
  114.          Left            =   120
  115.          TabIndex        =   7
  116.          Top             =   360
  117.          Width           =   2895
  118.          _ExtentX        =   5106
  119.          _ExtentY        =   8281
  120.          _Version        =   393217
  121.          Indentation     =   176
  122.          LabelEdit       =   1
  123.          LineStyle       =   1
  124.          Style           =   7
  125.          Appearance      =   1
  126.       End
  127.       Begin VB.Label Label1 
  128.          Caption         =   "Sections && Keys"
  129.          Height          =   255
  130.          Left            =   120
  131.          TabIndex        =   8
  132.          Top             =   120
  133.          Width           =   2415
  134.       End
  135.    End
  136.    Begin MSComDlg.CommonDialog cdlFile 
  137.       Left            =   6720
  138.       Top             =   3480
  139.       _ExtentX        =   847
  140.       _ExtentY        =   847
  141.       _Version        =   393216
  142.    End
  143.    Begin VB.PictureBox Picture1 
  144.       Align           =   4  'Align Right
  145.       BorderStyle     =   0  'None
  146.       Height          =   5175
  147.       Left            =   5925
  148.       ScaleHeight     =   5175
  149.       ScaleWidth      =   1455
  150.       TabIndex        =   5
  151.       Top             =   0
  152.       Width           =   1455
  153.       Begin VB.CommandButton cmdView 
  154.          Caption         =   "View XML"
  155.          Enabled         =   0   'False
  156.          Height          =   495
  157.          Left            =   0
  158.          TabIndex        =   2
  159.          Top             =   1560
  160.          Width           =   1215
  161.       End
  162.       Begin VB.CommandButton cmdWrite 
  163.          Caption         =   "Write Value"
  164.          Height          =   495
  165.          Left            =   0
  166.          TabIndex        =   3
  167.          Top             =   2160
  168.          Width           =   1215
  169.       End
  170.       Begin VB.CommandButton cmdClose 
  171.          Caption         =   "Close"
  172.          Height          =   495
  173.          Left            =   0
  174.          TabIndex        =   4
  175.          Top             =   2760
  176.          Width           =   1215
  177.       End
  178.       Begin VB.CommandButton cmdDelSection 
  179.          Caption         =   "Delete Section"
  180.          Enabled         =   0   'False
  181.          Height          =   495
  182.          Left            =   0
  183.          TabIndex        =   0
  184.          Top             =   360
  185.          Width           =   1215
  186.       End
  187.       Begin VB.CommandButton cmdDelKey 
  188.          Caption         =   "Delete Key"
  189.          Enabled         =   0   'False
  190.          Height          =   495
  191.          Left            =   0
  192.          TabIndex        =   1
  193.          Top             =   960
  194.          Width           =   1215
  195.       End
  196.    End
  197.    Begin VB.Menu mnuTop 
  198.       Caption         =   "&File"
  199.       Index           =   0
  200.       Begin VB.Menu mnuFile 
  201.          Caption         =   "&Open..."
  202.          Index           =   0
  203.       End
  204.       Begin VB.Menu mnuFile 
  205.          Caption         =   "&Save As..."
  206.          Enabled         =   0   'False
  207.          Index           =   1
  208.       End
  209.       Begin VB.Menu mnuFile 
  210.          Caption         =   "-"
  211.          Index           =   2
  212.       End
  213.       Begin VB.Menu mnuFile 
  214.          Caption         =   "&View XML"
  215.          Enabled         =   0   'False
  216.          Index           =   3
  217.       End
  218.       Begin VB.Menu mnuFile 
  219.          Caption         =   "-"
  220.          Index           =   4
  221.       End
  222.       Begin VB.Menu mnuFile 
  223.          Caption         =   "E&xit"
  224.          Index           =   5
  225.       End
  226.    End
  227.    Begin VB.Menu mnuTop 
  228.       Caption         =   "&Help"
  229.       Index           =   1
  230.       Begin VB.Menu mnuHelp 
  231.          Caption         =   "About..."
  232.          Index           =   0
  233.       End
  234.       Begin VB.Menu mnuHelp 
  235.          Caption         =   "Read Me"
  236.          Index           =   1
  237.       End
  238.    End
  239. End
  240. Attribute VB_Name = "frmMain"
  241. Attribute VB_GlobalNameSpace = False
  242. Attribute VB_Creatable = False
  243. Attribute VB_PredeclaredId = True
  244. Attribute VB_Exposed = False
  245. '****************************************************************************************
  246. 'Module:        frmMain - Form
  247. 'Filename:      frmMain.frm
  248. 'Author:        Jim Kahl
  249. 'Purpose:       a simple utility to allow creation/editing of INI style XML files
  250. 'Assumes:       must be used in conjunction with or in some way reference the XMLConfig
  251. '               class object
  252. '****************************************************************************************
  253. Option Explicit
  254.  
  255. '****************************************************************************************
  256. 'API CONSTANTS
  257. '****************************************************************************************
  258. Private Const SW_SHOW As Long = 5
  259.  
  260. '****************************************************************************************
  261. 'API FUNCTIONS
  262. '****************************************************************************************
  263. Private Declare Function ShellExecute Lib "shell32.dll" _
  264.         Alias "ShellExecuteA" ( _
  265.                 ByVal hwnd As Long, _
  266.                 ByVal lpOperation As String, _
  267.                 ByVal lpFile As String, _
  268.                 ByVal lpParameters As String, _
  269.                 ByVal lpDirectory As String, _
  270.                 ByVal nShowCmd As Long) _
  271.                 As Long
  272.  
  273. '****************************************************************************************
  274. 'CONSTANTS - PRIVATE
  275. '****************************************************************************************
  276. Private Const cdOpenFilter As String = "INI Files (*.ini)|*.ini|XML Files (*.xml)|*.xml|All Files (*.*)|*.*"
  277. Private Const cdSaveFilter As String = "XML Files (*.xml)|*.xml|All Files (*.*)|*.*"
  278.  
  279. '****************************************************************************************
  280. 'VARIABLES - PRIVATE
  281. '****************************************************************************************
  282. Private mcXML As New XMLConfig
  283. Private msFilename As String
  284.  
  285. '****************************************************************************************
  286. 'EVENTS - PRIVATE
  287. '****************************************************************************************
  288. Private Sub cmdClose_Click()
  289.     Unload Me
  290. End Sub
  291.  
  292. Private Sub cmdDelKey_Click()
  293.     'provide a way to delete a key
  294.     Dim eRet As VbMsgBoxResult
  295.     eRet = MsgBox("Are you sure you want to delete this key?", vbYesNo)
  296.     If eRet = vbYes Then
  297.         mcXML.Section = txtSection.Text
  298.         mcXML.Key = txtKey.Text
  299.         mcXML.DeleteKey
  300.         RefreshList
  301.     End If
  302. End Sub
  303.  
  304. Private Sub cmdView_Click()
  305.     mnuFile_Click 3
  306. End Sub
  307.  
  308. Private Sub cmdWrite_Click()
  309.     
  310.     'there must be a key name
  311.     If txtKey.Text = vbNullString Then
  312.         MsgBox "You must enter a Key name before attempting to write"
  313.         txtKey.SetFocus
  314.         Exit Sub
  315.     End If
  316.     
  317.     'there must be a section name
  318.     If txtSection.Text = vbNullString Then
  319.         MsgBox "You must enter a Section name before attempting to write"
  320.         txtSection.SetFocus
  321.         Exit Sub
  322.     End If
  323.     
  324.     'make sure we have a valid filename before attempting to write
  325.     If msFilename = vbNullString Then
  326.         mnuFile_Click 1
  327.         If msFilename = vbNullString Then
  328.             Exit Sub
  329.         End If
  330.         mcXML.Path = msFilename
  331.     End If
  332.     
  333.     'now set the properties and refresh the list
  334.     With mcXML
  335.         .Section = txtSection.Text
  336.         .SectionDescription = txtSectDesc.Text
  337.         .Key = txtKey.Text
  338.         .KeyDescription = txtKeyDesc.Text
  339.         .Value = txtValue.Text
  340.     End With
  341.     
  342. End Sub
  343.  
  344. Private Sub cmdDelSection_Click()
  345.     'provide a way to delete a section
  346.     Dim eRet As VbMsgBoxResult
  347.     eRet = MsgBox("Are you sure you want to delete this section?", vbYesNo)
  348.     If eRet = vbYes Then
  349.         mcXML.Section = txtSection.Text
  350.         mcXML.DeleteSection
  351.         RefreshList
  352.     End If
  353. End Sub
  354.  
  355. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  356.     Set mcXML = Nothing
  357. End Sub
  358.  
  359. Private Sub mnuFile_Click(Index As Integer)
  360.     On Error GoTo ErrHandler
  361.     Dim sFile As String
  362.     Dim sXMLFile As String
  363.     
  364.     'set properties for common dialog
  365.     With cdlFile
  366.         .CancelError = True
  367.         .Flags = cdlOFNHideReadOnly + cdlOFNOverwritePrompt
  368.     End With
  369.     
  370.     Select Case Index
  371.         Case 0  'Open
  372.             With cdlFile
  373.                 .Filter = cdOpenFilter
  374.                 .FilterIndex = 2
  375.                 .ShowOpen
  376.                 sFile = .FileName
  377.             End With
  378.             'if the file is an INI file convert to XML
  379.             If LCase$(Right$(sFile, 3)) = "ini" Then
  380.                 'this will be same filename with ".xml" extension
  381.                 'ie. sample.ini becomes sample.ini.xml
  382.                 mcXML.IniToXml sFile, sXMLFile
  383.                 msFilename = sXMLFile
  384.             Else
  385.                 msFilename = sFile
  386.             End If
  387.             RefreshList
  388.         Case 1  'Save As
  389.             With cdlFile
  390.                 .Filter = cdSaveFilter
  391.                 .FilterIndex = 1
  392.                 .ShowSave
  393.                 sFile = .FileName
  394.             End With
  395.             If msFilename <> vbNullString Then
  396.                 'have a current filename but save it as a new filename
  397.                 FileCopy msFilename, sFile
  398.             Else
  399.                 'we do not have a current file so first we need to kill the old
  400.                 Kill sFile
  401.             End If
  402.             msFilename = sFile
  403.         Case 3  'View
  404.             ShellExecute 0, "open", msFilename, vbNullString, vbNullString, SW_SHOW
  405.         Case 5  'Exit
  406.             Unload Me
  407.     End Select
  408.     If msFilename <> vbNullString Then
  409.         mnuFile(1).Enabled = True
  410.         mnuFile(3).Enabled = True
  411.         cmdDelSection.Enabled = True
  412.         cmdDelKey.Enabled = True
  413.         cmdView.Enabled = True
  414.     End If
  415.     Exit Sub
  416. ErrHandler:
  417.     If Err.Number <> 32755 Then
  418.         If Err.Number = 53 Then
  419.             Resume Next
  420.         End If
  421.         'user did not cancel
  422.         Debug.Print Err.Number & ": " & Err.Description
  423.     End If
  424. End Sub
  425.  
  426. Private Sub mnuHelp_Click(Index As Integer)
  427.     Select Case Index
  428.         Case 0
  429.             MsgBox "INI XML Editor was written by Jim Kahl"
  430.         Case 1
  431.             ShellExecute 0, "open", App.Path & "\readme.doc", vbNullString, vbNullString, SW_SHOW
  432.     End Select
  433. End Sub
  434.  
  435. Private Sub tvwSettings_Click()
  436.     On Error Resume Next
  437.     With mcXML
  438.         If tvwSettings.Nodes(tvwSettings.SelectedItem.Text).Children = 0 Then
  439.             'this is for when someone clicks the key name
  440.             .Section = tvwSettings.SelectedItem.Parent.Text
  441.             .Key = tvwSettings.SelectedItem.Text
  442.             txtSection.Text = .Section
  443.             txtSectDesc.Text = .SectionDescription
  444.             txtKey.Text = .Key
  445.             txtKeyDesc.Text = .KeyDescription
  446.             txtValue.Text = .Value
  447.         Else
  448.             'this is for when someone clicks just a section name
  449.             .Section = tvwSettings.SelectedItem.Text
  450.             txtSection.Text = .Section
  451.             txtSectDesc.Text = .SectionDescription
  452.             txtKey.Text = vbNullString
  453.             txtKeyDesc.Text = vbNullString
  454.             txtValue.Text = vbNullString
  455.         End If
  456.     End With
  457. End Sub
  458.  
  459. '****************************************************************************************
  460. 'METHODS - PRIVATE
  461. '****************************************************************************************
  462. Private Sub RefreshList()
  463.     Dim sSection() As String
  464.     Dim sKey() As String
  465.     Dim lCount As Long
  466.     Dim lSection As Long
  467.     Dim lKey As Long
  468.     
  469.     On Error GoTo ErrHandler
  470.     
  471.     tvwSettings.Nodes.Clear
  472.     
  473.     'fill the tree view with the Section and Key nodes from the XML file
  474.     With mcXML
  475.         .Path = msFilename
  476.         'EnumerateAllSections will error out if this is a new file or if
  477.         'the file does not contain any Sections - that is ok for now, it
  478.         'just means there is nothing at this time to populate the treeview
  479.         .EnumerateAllSections sSection(), lCount
  480.         For lSection = LBound(sSection) To UBound(sSection)
  481.             tvwSettings.Nodes.Add , , sSection(lSection), sSection(lSection)
  482.             .Section = sSection(lSection)
  483.             'EnumerateCurrentSection will error out if the Section does not
  484.             'have any Keys associated with it, but that's ok since we want to
  485.             'be able to add and delete keys at will
  486.             .EnumerateCurrentSection sKey(), lCount
  487.             For lKey = LBound(sKey) To UBound(sKey)
  488.                 .Key = sKey(lKey)
  489.                 tvwSettings.Nodes.Add sSection(lSection), tvwChild, , sKey(lKey)
  490.             Next lKey
  491.             tvwSettings.Nodes(sSection(lSection)).Expanded = True
  492.         Next lSection
  493.     End With
  494.     tvwSettings.Nodes(1).Selected = True
  495.     tvwSettings_Click
  496. ErrHandler:
  497. '    Debug.Print Err.Number & ": " & Err.Description
  498. End Sub
  499.  
  500.