home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / himetr1r / modfiles.bas < prev    next >
Encoding:
BASIC Source File  |  1999-08-17  |  8.8 KB  |  343 lines

  1. Attribute VB_Name = "modFiles"
  2. '----------------------------------------
  3. '- Name: Sam Huggill
  4. '- Email: sam@vbsquare.com
  5. '- Web: http://www.vbsquare.com/
  6. '- Company: Lighthouse Internet Solutions
  7. '- Date/Time: 14/08/99 11:30:03
  8. '----------------------------------------
  9. '- Notes:   Handles any file routines
  10. '
  11. '----------------------------------------
  12.  
  13. Option Explicit
  14.  
  15. Private m_blnRTF As Boolean
  16.  
  17. Public Sub ExportFile(sKey As String, tvw As TreeView, ctl As Object)
  18.     Dim oHeader As FileHeader
  19.     Dim lNumToExport As Long
  20.     Dim cHourGlass As CWaitCursor
  21.     Dim sFIleName As String
  22.     Dim iFile As Integer
  23.     Dim nNode As Node
  24.     Dim lRet As Long
  25.  
  26.     '// Exports a node/nodes to a file
  27.     '// By Chris Eastwood
  28.  
  29.     Set nNode = tvw.SelectedItem
  30.  
  31.     If nNode Is Nothing Then Exit Sub
  32.  
  33.     sFIleName = frmMain.ShowFileDialog(eSave, "", "Export Code Item", "Developers Code Book |*.dcb")
  34.  
  35.     If Len(sFIleName) = 0 Then Exit Sub
  36.  
  37.     lRet = MsgBox("Would you like to export the code styles (colouring)?", vbYesNo + vbInformation)
  38.     If lRet = vbYes Then
  39.         g_blnRTF = True
  40.     Else
  41.         g_blnRTF = False
  42.     End If
  43.  
  44.     Set cHourGlass = New CWaitCursor
  45.     cHourGlass.SetCursor
  46.  
  47.     iFile = FreeFile
  48.  
  49.     On Error Resume Next
  50.  
  51.     Kill sFIleName
  52.     On Error GoTo 0
  53.  
  54.     Open sFIleName For Binary Access Write As iFile
  55.  
  56.     oHeader.lNumberOfRecords = frmMain.RecursiveCountNodes(tvw.SelectedItem, True)
  57.  
  58.     If nNode.Key <> "ROOT" Then
  59.         oHeader.lNumberOfRecords = oHeader.lNumberOfRecords + 1
  60.     End If
  61.  
  62.     Put #iFile, , oHeader
  63.     ctl.Redraw False
  64.     modData.RecursiveExportCode nNode, iFile, frmMain.ctlData1
  65.     ctl.Redraw True
  66.     Close iFile
  67.     
  68.     MsgBox "Code item exported to " & sFIleName
  69.  
  70. End Sub
  71.  
  72. Public Sub NewDB(ByVal strPath As String)
  73.  
  74.     Dim tdfCode As TableDef
  75.     Dim tdfBookmark As TableDef
  76.     Dim tdfFolders As TableDef
  77.     Dim tdfVer As TableDef
  78.     Dim tdfLinks As TableDef
  79.     Dim tdfFiles As TableDef
  80.     Dim fldFile As Field
  81.     Dim fldID As Field
  82.     Dim fldDesc As Field
  83.     Dim fldCode As Field
  84.     Dim fldNotes As Field
  85.     Dim fldExample As Field
  86.     Dim fldPID As Field
  87.     Dim fldVer As Field
  88.     Dim fldLev As Field
  89.     Dim fldCodeID As Field
  90.     Dim fldSect As Field
  91.     Dim fldName As Field
  92.     Dim fldFolder As Field
  93.     Dim fldLink As Field
  94.     Dim fldDateTime As Field
  95.     Dim db As Database
  96.     Dim rs As Recordset
  97.     Dim strDBPath As String
  98.     
  99.     strDBPath = strPath
  100.     
  101. ' Creates a new database for storing code in
  102.  
  103.     If strDBPath = "" Then Exit Sub
  104.  
  105.     If strDBPath = modData.DBName Then
  106.         MsgBox "You cannot overwrite the database currently in use."
  107.         Exit Sub
  108.     End If
  109.  
  110. ' Check if the database already exists and delete it if so
  111.  
  112.     If InStr(strDBPath, ".mdb") Then
  113.         If Len(Dir$(strDBPath)) <> 0 Then Kill (strPath)
  114.     Else
  115.         If Dir$(strDBPath & ".mdb") <> "" Then Kill (strPath & ".mdb")
  116.     End If
  117.  
  118. ' Create the database and the first table
  119.  
  120.     Set db = CreateDatabase(strPath, dbLangGeneral)
  121.     Set tdfCode = db.CreateTableDef("Code")
  122.     
  123. ' Create all the fields needed in the Code table
  124.  
  125.     Set fldID = tdfCode.CreateField("ID", 4)
  126.     fldID.Attributes = 17
  127.     fldID.Required = False
  128.     fldID.OrdinalPosition = 1
  129.     Set fldDesc = tdfCode.CreateField("Description", dbText)
  130.     Set fldCode = tdfCode.CreateField("Code", dbMemo)
  131.     Set fldNotes = tdfCode.CreateField("Notes", dbMemo)
  132.     Set fldExample = tdfCode.CreateField("Example", dbMemo)
  133.     Set fldPID = tdfCode.CreateField("ParentID", dbInteger)
  134.     Set fldVer = tdfCode.CreateField("Version", dbText)
  135.     Set fldLev = tdfCode.CreateField("Level", dbText)
  136.  
  137. ' Append the fields to the table
  138.  
  139.     With tdfCode.Fields
  140.         .Append fldID
  141.         .Append fldDesc
  142.         .Append fldCode
  143.         .Append fldNotes
  144.         .Append fldExample
  145.         .Append fldPID
  146.         .Append fldVer
  147.         .Append fldLev
  148.     End With
  149.  
  150. ' Append the table to the database
  151.  
  152.     db.TableDefs.Append tdfCode
  153.  
  154. ' Create the Bookmarks table
  155.  
  156.     Set tdfBookmark = db.CreateTableDef("Bookmarks")
  157.     
  158. ' Create the needed fields
  159.     
  160.     Set fldID = tdfBookmark.CreateField("ID", 4)
  161.     Set fldCodeID = tdfBookmark.CreateField("CodeID", dbInteger)
  162.     Set fldDesc = tdfBookmark.CreateField("Description", dbText)
  163.     Set fldSect = tdfBookmark.CreateField("Section", dbText)
  164.     Set fldFolder = tdfBookmark.CreateField("IsFolder", dbBoolean)
  165.  
  166. 'Append the fields to the table
  167.  
  168.     With tdfBookmark.Fields
  169.         .Append fldID
  170.         .Append fldCodeID
  171.         .Append fldDesc
  172.         .Append fldSect
  173.         .Append fldFolder
  174.     End With
  175.  
  176. ' Append the table to the database
  177.  
  178.     db.TableDefs.Append tdfBookmark
  179.  
  180. ' Create the Folders table
  181.  
  182.     Set tdfFolders = db.CreateTableDef("Folders")
  183.     
  184. ' Create the fields needed
  185.     
  186.     Set fldID = tdfFolders.CreateField("ID", 4)
  187.     Set fldName = tdfFolders.CreateField("Name", dbText)
  188.     Set fldPID = tdfFolders.CreateField("ParentID", dbInteger)
  189.  
  190.     fldID.Attributes = 17
  191.     fldID.Required = False
  192.     fldID.OrdinalPosition = 1
  193.  
  194. ' Append the fields
  195.  
  196.     With tdfFolders.Fields
  197.         .Append fldID
  198.         .Append fldName
  199.         .Append fldPID
  200.     End With
  201.  
  202. ' Append the table to the database
  203.  
  204.     db.TableDefs.Append tdfFolders
  205.  
  206.     Set tdfVer = db.CreateTableDef("Version")
  207.     Set fldVer = tdfVer.CreateField("DB Version", dbInteger)
  208.     tdfVer.Fields.Append fldVer
  209.  
  210.     db.TableDefs.Append tdfVer
  211.     
  212.     Set tdfLinks = db.CreateTableDef("Links")
  213.     Set fldID = tdfLinks.CreateField("ID", 4)
  214.     fldID.Attributes = 17
  215.     fldID.Required = False
  216.     fldID.OrdinalPosition = 1
  217.     Set fldLink = tdfLinks.CreateField("Link", dbText)
  218.     Set fldName = tdfLinks.CreateField("Name", dbText)
  219.     Set fldDateTime = tdfLinks.CreateField("DateTime", dbText)
  220.     
  221.     With tdfLinks.Fields
  222.         .Append fldID
  223.         .Append fldLink
  224.         .Append fldName
  225.         .Append fldDateTime
  226.     End With
  227.     
  228.     db.TableDefs.Append tdfLinks
  229.     
  230.     Set tdfFiles = db.CreateTableDef("Files")
  231.     Set fldID = tdfFiles.CreateField("ID", 4)
  232.     fldID.Attributes = 17
  233.     fldID.Required = False
  234.     fldID.OrdinalPosition = 1
  235.     Set fldFile = tdfFiles.CreateField("File", dbLongBinary)
  236.     Set fldDateTime = tdfFiles.CreateField("DateTime", dbText)
  237.     Set fldName = tdfFiles.CreateField("Name", dbText)
  238.     Set fldCodeID = tdfFiles.CreateField("CodeID", dbInteger)
  239.     
  240.     With tdfFiles.Fields
  241.         .Append fldID
  242.         .Append fldFile
  243.         .Append fldDateTime
  244.         .Append fldName
  245.         .Append fldCodeID
  246.     End With
  247.     
  248.     db.TableDefs.Append tdfFiles
  249.     
  250.     modData.DBName = strPath
  251.     
  252.     Set db = OpenDatabase(modData.DBName)
  253.     Set rs = db.OpenRecordset("SELECT * FROM Version")
  254.     rs.AddNew
  255.     rs.Fields("DB Version").Value = 3
  256.     rs.Update
  257.     rs.Close
  258.     db.Close
  259.  
  260.     modFiles.OpenDB modData.DBName
  261.  
  262. End Sub
  263.  
  264. Public Sub OpenDB(strPath As String)
  265.     On Error Resume Next
  266.  
  267. ' Opens a database when one is currently open
  268.  
  269.     If strPath = "" Then Exit Sub
  270.  
  271. ' Carry out the form's unload routine
  272.  
  273.     frmMain.UnloadMe
  274.     
  275. ' Save the old database filename and carry out shutdown routines
  276.  
  277.     SaveSetting ThisApp, "General", "DBPath", modData.DBName
  278.     modData.SetNothing
  279.     modData.DBName = modMain.LastDB
  280.     
  281. ' Open the new database and fill the treeview
  282.     
  283.     If modData.OpenDB(strPath) = True Then
  284.         modMain.ClearTree frmMain.tvwItems
  285.         modData.FillTree frmMain.tvwItems
  286.         frmMain.ctlFavourites1.Initalize
  287.         frmMain.ctlData1.Initalize
  288.     End If
  289.     
  290. End Sub
  291.  
  292. Public Sub InsertFile(strPath As String)
  293.  
  294. ' Based on the VBCodeLibrary procedure by
  295. ' Chris Eastwood - vb@codeguru.com
  296.  
  297.     Dim strDesc As String
  298.  
  299.     strDesc = strPath
  300.  
  301.     modData.Description = strDesc
  302.  
  303.     ' Insert the file
  304.     modData.InserObject True, strPath
  305. End Sub
  306.  
  307. Public Sub InsertLink(strLink As String, strDesc As String)
  308.  
  309. ' Insert a link into the database
  310.  
  311.     modData.Description = strDesc
  312.  
  313.     modData.InserObject False, "", strLink
  314.  
  315. End Sub
  316.  
  317. Public Sub OutputFile(lv As ListView)
  318.     Dim strKey As String
  319.     Dim strFileName As String
  320.     
  321. ' Check if an item is selected
  322.  
  323.     If lv.SelectedItem Is Nothing Then Exit Sub
  324.     
  325. ' Set the data properties
  326.     
  327.     modData.Key = lv.SelectedItem.Key
  328.     strKey = Right$(modData.Key, Len(modData.Key) - 1)
  329.     
  330. ' Get the current filename, and then get the users filename
  331.     
  332.     strFileName = lv.SelectedItem.SubItems(1)
  333.     
  334.     strFileName = frmMain.ShowFileDialog(eSave, strFileName, "Save File As...")
  335.     
  336.     If Len(strFileName) = 0 Then Exit Sub
  337.     
  338. ' Start the export process
  339.     
  340.     modData.ExportToFile strFileName
  341.     
  342. End Sub
  343.