diff --git a/GBM/Forms/frmAdvancedImport.Designer.vb b/GBM/Forms/frmAdvancedImport.Designer.vb
index fba2c65..d27f728 100644
--- a/GBM/Forms/frmAdvancedImport.Designer.vb
+++ b/GBM/Forms/frmAdvancedImport.Designer.vb
@@ -96,6 +96,7 @@ Partial Class frmAdvancedImport
Me.Controls.Add(Me.btnImport)
Me.Controls.Add(Me.lstGames)
Me.Controls.Add(Me.lblGames)
+ Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "frmAdvancedImport"
diff --git a/GBM/Forms/frmGameManager.Designer.vb b/GBM/Forms/frmGameManager.Designer.vb
index 0c5e507..b886bac 100644
--- a/GBM/Forms/frmGameManager.Designer.vb
+++ b/GBM/Forms/frmGameManager.Designer.vb
@@ -27,6 +27,7 @@ Partial Class frmGameManager
Me.btnBackup = New System.Windows.Forms.Button()
Me.btnClose = New System.Windows.Forms.Button()
Me.grpConfig = New System.Windows.Forms.GroupBox()
+ Me.btnInclude = New System.Windows.Forms.Button()
Me.txtID = New System.Windows.Forms.TextBox()
Me.lblExclude = New System.Windows.Forms.Label()
Me.lblFileType = New System.Windows.Forms.Label()
@@ -81,7 +82,7 @@ Partial Class frmGameManager
Me.optBackupData = New System.Windows.Forms.RadioButton()
Me.optPendingRestores = New System.Windows.Forms.RadioButton()
Me.optAllGames = New System.Windows.Forms.RadioButton()
- Me.btnInclude = New System.Windows.Forms.Button()
+ Me.btnExclude = New System.Windows.Forms.Button()
Me.grpConfig.SuspendLayout()
Me.grpExtra.SuspendLayout()
CType(Me.pbIcon, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -135,6 +136,7 @@ Partial Class frmGameManager
'grpConfig
'
Me.grpConfig.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.grpConfig.Controls.Add(Me.btnExclude)
Me.grpConfig.Controls.Add(Me.btnInclude)
Me.grpConfig.Controls.Add(Me.txtID)
Me.grpConfig.Controls.Add(Me.lblExclude)
@@ -159,6 +161,15 @@ Partial Class frmGameManager
Me.grpConfig.TabStop = False
Me.grpConfig.Text = "Configuration"
'
+ 'btnInclude
+ '
+ Me.btnInclude.Location = New System.Drawing.Point(498, 97)
+ Me.btnInclude.Name = "btnInclude"
+ Me.btnInclude.Size = New System.Drawing.Size(30, 20)
+ Me.btnInclude.TabIndex = 15
+ Me.btnInclude.Text = "..."
+ Me.btnInclude.UseVisualStyleBackColor = True
+ '
'txtID
'
Me.txtID.Enabled = False
@@ -236,7 +247,7 @@ Partial Class frmGameManager
'
Me.txtExclude.Location = New System.Drawing.Point(69, 123)
Me.txtExclude.Name = "txtExclude"
- Me.txtExclude.Size = New System.Drawing.Size(459, 20)
+ Me.txtExclude.Size = New System.Drawing.Size(423, 20)
Me.txtExclude.TabIndex = 12
'
'txtFileType
@@ -683,14 +694,14 @@ Partial Class frmGameManager
Me.optAllGames.Text = "All"
Me.optAllGames.UseVisualStyleBackColor = True
'
- 'btnInclude
+ 'btnExclude
'
- Me.btnInclude.Location = New System.Drawing.Point(498, 97)
- Me.btnInclude.Name = "btnInclude"
- Me.btnInclude.Size = New System.Drawing.Size(30, 20)
- Me.btnInclude.TabIndex = 15
- Me.btnInclude.Text = "..."
- Me.btnInclude.UseVisualStyleBackColor = True
+ Me.btnExclude.Location = New System.Drawing.Point(498, 123)
+ Me.btnExclude.Name = "btnExclude"
+ Me.btnExclude.Size = New System.Drawing.Size(30, 20)
+ Me.btnExclude.TabIndex = 16
+ Me.btnExclude.Text = "..."
+ Me.btnExclude.UseVisualStyleBackColor = True
'
'frmGameManager
'
@@ -794,4 +805,5 @@ Partial Class frmGameManager
Friend WithEvents lblTags As System.Windows.Forms.Label
Friend WithEvents optTag As System.Windows.Forms.RadioButton
Friend WithEvents btnInclude As System.Windows.Forms.Button
+ Friend WithEvents btnExclude As System.Windows.Forms.Button
End Class
diff --git a/GBM/Forms/frmGameManager.vb b/GBM/Forms/frmGameManager.vb
index 4492dbc..2940b9d 100644
--- a/GBM/Forms/frmGameManager.vb
+++ b/GBM/Forms/frmGameManager.vb
@@ -386,23 +386,32 @@ Public Class frmGameManager
End Sub
- Private Sub OpenIncludeBuilder()
- Dim frm As New frmIncludeExclude
- frm.FormName = "Include Builder"
+ Private Function GetBuilderRoot() As String
+ Dim sRoot As String = String.Empty
If Path.IsPathRooted(txtSavePath.Text) Then
If Directory.Exists(txtSavePath.Text) Then
- frm.RootFolder = txtSavePath.Text
+ sRoot = txtSavePath.Text
End If
Else
If txtAppPath.Text <> String.Empty Then
If Directory.Exists(txtAppPath.Text & "\" & txtSavePath.Text) Then
- frm.RootFolder = txtAppPath.Text & "\" & txtSavePath.Text
+ sRoot = txtAppPath.Text & "\" & txtSavePath.Text
End If
End If
End If
+ Return sRoot
+ End Function
+
+ Private Sub OpenBuilder(ByVal sFormText As String, ByRef txtBox As TextBox)
+ Dim frm As New frmIncludeExclude
+ frm.FormName = sFormText
+ frm.BuilderString = txtBox.Text
+ frm.RootFolder = GetBuilderRoot()
+
frm.ShowDialog()
+ txtBox.Text = frm.BuilderString
End Sub
Private Function FindRestorePath() As Boolean
@@ -1219,6 +1228,10 @@ Public Class frmGameManager
End Sub
Private Sub btnInclude_Click(sender As Object, e As EventArgs) Handles btnInclude.Click
- OpenIncludeBuilder()
+ OpenBuilder("Include", txtFileType)
+ End Sub
+
+ Private Sub btnExclude_Click(sender As Object, e As EventArgs) Handles btnExclude.Click
+ OpenBuilder("Exclude", txtExclude)
End Sub
End Class
\ No newline at end of file
diff --git a/GBM/Forms/frmIncludeExclude.Designer.vb b/GBM/Forms/frmIncludeExclude.Designer.vb
index 4cfaa63..1a18631 100644
--- a/GBM/Forms/frmIncludeExclude.Designer.vb
+++ b/GBM/Forms/frmIncludeExclude.Designer.vb
@@ -26,7 +26,6 @@ Partial Class frmIncludeExclude
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmIncludeExclude))
Me.treFiles = New System.Windows.Forms.TreeView()
Me.imgIcons = New System.Windows.Forms.ImageList(Me.components)
- Me.bwLoader = New System.ComponentModel.BackgroundWorker()
Me.btnSave = New System.Windows.Forms.Button()
Me.btnCancel = New System.Windows.Forms.Button()
Me.txtRootFolder = New System.Windows.Forms.TextBox()
@@ -34,16 +33,22 @@ Partial Class frmIncludeExclude
Me.lstBuilder = New System.Windows.Forms.ListView()
Me.btnRemove = New System.Windows.Forms.Button()
Me.btnAdd = New System.Windows.Forms.Button()
+ Me.grpFileOptions = New System.Windows.Forms.GroupBox()
+ Me.optIndividualFiles = New System.Windows.Forms.RadioButton()
+ Me.optFileTypes = New System.Windows.Forms.RadioButton()
+ Me.lblItems = New System.Windows.Forms.Label()
+ Me.grpFileOptions.SuspendLayout()
Me.SuspendLayout()
'
'treFiles
'
+ Me.treFiles.CheckBoxes = True
Me.treFiles.ImageIndex = 0
Me.treFiles.ImageList = Me.imgIcons
Me.treFiles.Location = New System.Drawing.Point(12, 38)
Me.treFiles.Name = "treFiles"
Me.treFiles.SelectedImageIndex = 0
- Me.treFiles.Size = New System.Drawing.Size(230, 359)
+ Me.treFiles.Size = New System.Drawing.Size(250, 359)
Me.treFiles.TabIndex = 0
'
'imgIcons
@@ -52,6 +57,7 @@ Partial Class frmIncludeExclude
Me.imgIcons.TransparentColor = System.Drawing.Color.Transparent
Me.imgIcons.Images.SetKeyName(0, "folder.ico")
Me.imgIcons.Images.SetKeyName(1, "file.ico")
+ Me.imgIcons.Images.SetKeyName(2, "type.ico")
'
'btnSave
'
@@ -81,7 +87,7 @@ Partial Class frmIncludeExclude
'
'btnBrowse
'
- Me.btnBrowse.Location = New System.Drawing.Point(212, 11)
+ Me.btnBrowse.Location = New System.Drawing.Point(212, 12)
Me.btnBrowse.Name = "btnBrowse"
Me.btnBrowse.Size = New System.Drawing.Size(30, 20)
Me.btnBrowse.TabIndex = 9
@@ -90,11 +96,13 @@ Partial Class frmIncludeExclude
'
'lstBuilder
'
- Me.lstBuilder.Location = New System.Drawing.Point(342, 38)
+ Me.lstBuilder.Location = New System.Drawing.Point(322, 38)
Me.lstBuilder.Name = "lstBuilder"
- Me.lstBuilder.Size = New System.Drawing.Size(230, 359)
+ Me.lstBuilder.Size = New System.Drawing.Size(250, 359)
+ Me.lstBuilder.SmallImageList = Me.imgIcons
Me.lstBuilder.TabIndex = 10
Me.lstBuilder.UseCompatibleStateImageBehavior = False
+ Me.lstBuilder.View = System.Windows.Forms.View.List
'
'btnRemove
'
@@ -114,11 +122,55 @@ Partial Class frmIncludeExclude
Me.btnAdd.Text = "> >"
Me.btnAdd.UseVisualStyleBackColor = True
'
+ 'grpFileOptions
+ '
+ Me.grpFileOptions.Controls.Add(Me.optFileTypes)
+ Me.grpFileOptions.Controls.Add(Me.optIndividualFiles)
+ Me.grpFileOptions.Location = New System.Drawing.Point(12, 403)
+ Me.grpFileOptions.Name = "grpFileOptions"
+ Me.grpFileOptions.Size = New System.Drawing.Size(194, 46)
+ Me.grpFileOptions.TabIndex = 13
+ Me.grpFileOptions.TabStop = False
+ Me.grpFileOptions.Text = "File Options"
+ '
+ 'optIndividualFiles
+ '
+ Me.optIndividualFiles.AutoSize = True
+ Me.optIndividualFiles.Location = New System.Drawing.Point(85, 19)
+ Me.optIndividualFiles.Name = "optIndividualFiles"
+ Me.optIndividualFiles.Size = New System.Drawing.Size(94, 17)
+ Me.optIndividualFiles.TabIndex = 14
+ Me.optIndividualFiles.TabStop = True
+ Me.optIndividualFiles.Text = "Individual Files"
+ Me.optIndividualFiles.UseVisualStyleBackColor = True
+ '
+ 'optFileTypes
+ '
+ Me.optFileTypes.AutoSize = True
+ Me.optFileTypes.Location = New System.Drawing.Point(6, 19)
+ Me.optFileTypes.Name = "optFileTypes"
+ Me.optFileTypes.Size = New System.Drawing.Size(73, 17)
+ Me.optFileTypes.TabIndex = 15
+ Me.optFileTypes.TabStop = True
+ Me.optFileTypes.Text = "File Types"
+ Me.optFileTypes.UseVisualStyleBackColor = True
+ '
+ 'lblItems
+ '
+ Me.lblItems.AutoSize = True
+ Me.lblItems.Location = New System.Drawing.Point(319, 16)
+ Me.lblItems.Name = "lblItems"
+ Me.lblItems.Size = New System.Drawing.Size(32, 13)
+ Me.lblItems.TabIndex = 14
+ Me.lblItems.Text = "Items"
+ '
'frmIncludeExclude
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(584, 461)
+ Me.Controls.Add(Me.lblItems)
+ Me.Controls.Add(Me.grpFileOptions)
Me.Controls.Add(Me.btnRemove)
Me.Controls.Add(Me.btnAdd)
Me.Controls.Add(Me.lstBuilder)
@@ -133,14 +185,15 @@ Partial Class frmIncludeExclude
Me.Name = "frmIncludeExclude"
Me.ShowIcon = False
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
- Me.Text = "Include Exclude Builder"
+ Me.Text = "Include / Exclude Builder"
+ Me.grpFileOptions.ResumeLayout(False)
+ Me.grpFileOptions.PerformLayout()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents treFiles As System.Windows.Forms.TreeView
Friend WithEvents imgIcons As System.Windows.Forms.ImageList
- Friend WithEvents bwLoader As System.ComponentModel.BackgroundWorker
Friend WithEvents btnSave As System.Windows.Forms.Button
Friend WithEvents btnCancel As System.Windows.Forms.Button
Friend WithEvents txtRootFolder As System.Windows.Forms.TextBox
@@ -148,4 +201,8 @@ Partial Class frmIncludeExclude
Friend WithEvents lstBuilder As System.Windows.Forms.ListView
Friend WithEvents btnRemove As System.Windows.Forms.Button
Friend WithEvents btnAdd As System.Windows.Forms.Button
+ Friend WithEvents grpFileOptions As System.Windows.Forms.GroupBox
+ Friend WithEvents optFileTypes As System.Windows.Forms.RadioButton
+ Friend WithEvents optIndividualFiles As System.Windows.Forms.RadioButton
+ Friend WithEvents lblItems As System.Windows.Forms.Label
End Class
diff --git a/GBM/Forms/frmIncludeExclude.resx b/GBM/Forms/frmIncludeExclude.resx
index d100af6..613eb5d 100644
--- a/GBM/Forms/frmIncludeExclude.resx
+++ b/GBM/Forms/frmIncludeExclude.resx
@@ -124,8 +124,8 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
- ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAB2
- CAAAAk1TRnQBSQFMAgEBAgEAATABAAEwAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAB6
+ CQAAAk1TRnQBSQFMAgEBAwEAAUgBAAFIAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -153,18 +153,19 @@
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
- AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/xMACf82AAH0CQcB/yUA
- AfIMuwHyAgAB8wm8AfQD/yIAAbsMswEJAgAB8wLyAfEJBwH0IgABCQyzAQkCAAHzAvIB8QnwAfMiAAEJ
- DLMBCQIAAfMM8gHzIgABCQy6AQkCAALzC/IB8yIAAfAMugHwAgAD8wryAfMiAAHwDNsB8AIABPMB8gnz
- IgABGQzcARkCAATzAfIJ8yIAAfEMCQHxAgAO8yIAAfAH3AW6AfACAAHzAvQH8wHyAe8BvAH0IgABGQG7
- BO8BCQH/CAAB9AnzAe8B9wHxIwAB8wHwBBkB8gkAA/8B9AHzBPQBBwG8Af83AAH/BPMC8joABf8mAAFC
- AU0BPgcAAT4DAAEoAwABQAMAARADAAEBAQABAQUAAYAXAAP/AQAC/wHAAR8EAAL/AYABDwQAAYABAQGA
- AQEEAAGAAQEBgAEBBAABgAEBAYABAQQAAYABAQGAAQEEAAGAAQEBgAEBBAABgAEBAYABAQQAAYABAQGA
- AQEEAAGAAQEBgAEBBAABgAEBAYABAQQAAYABAQGAAQEEAAGAAX8BgAEDBAABgAH/AYABBwQAAv8B8AEf
- BAAC/wH4AT8EAAs=
+ AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/xMACf82AAH0CQcB/wsA
+ Af8ZAAHyDLsB8gIAAfMJvAH0A/8IAAH/AbMBuwH/FgABuwyzAQkCAAHzAvIB8QkHAfQHAAH/A7MBugH/
+ FQABCQyzAQkCAAHzAvIB8QnwAfMGAAH/ArQB8QG8AbQBCQH/FAABCQyzAQkCAAHzDPIB8wUAAf8CtALy
+ AfEBvAG0AbsB/xMAAQkMugEJAgAC8wvyAfMEAAH/AbQBugHzA/IB8QG8AbQBuxMAAfAMugHwAgAD8wry
+ AfMDAAH/AroD8wPyAfEBugG0EwAB8AzbAfACAATzAfIJ8wIAAf8CugbzAfICugL/EgABGQzcARkCAATz
+ AfIJ8wIAAfQCugEJBfMCuwH/FAAB8QwJAfECAA7zAgAB9AG6AdsB3AEJA/MBCQG7Af8VAAHwB9wFugHw
+ AgAB8wL0B/MB8gHvAbwB9AIAAfQB3AHzAf8B3AEJAfICCQH/FgABGQG7BO8BCQH/CAAB9AnzAe8B9wHx
+ AwAB9AHcARkB8wPcAQkB/xcAAfMB8AQZAfIJAAP/AfQB8wT0AQcBvAH/BAAB9AIJAdwB4QIJAf8rAAH/
+ BPMC8gYAAf8F9AH/LQAF/yYAAUIBTQE+BwABPgMAASgDAAFAAwABEAMAAQEBAAEBBQABgBcAA/8BAAL/
+ AcABHwL/AgAC/wGAAQ8B/gH/AgABgAEBAYABAQH+AR8CAAGAAQEBgAEBAfwBDwIAAYABAQGAAQEB+AEH
+ AgABgAEBAYABAQHwAQMCAAGAAQEBgAEBAeABAwIAAYABAQGAAQEBwAEDAgABgAEBAYABAQGAAQECAAGA
+ AQEBgAEBAYABBwIAAYABAQGAAQEBgAEPAgABgAEBAYABAQGAAR8CAAGAAX8BgAEDAYABPwIAAYAB/wGA
+ AQcBgAF/AgAC/wHwAR8BgAH/AgAC/wH4AT8C/wIACw==
-
- 118, 17
-
\ No newline at end of file
diff --git a/GBM/Forms/frmIncludeExclude.vb b/GBM/Forms/frmIncludeExclude.vb
index 449c885..0ca0b75 100644
--- a/GBM/Forms/frmIncludeExclude.vb
+++ b/GBM/Forms/frmIncludeExclude.vb
@@ -3,7 +3,17 @@
Public Class frmIncludeExclude
Dim sFormName As String = "Include Exclude"
- Dim sRootFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
+ Dim sRootFolder As String = String.Empty
+ Dim sBuilderString As String
+
+ Public Property BuilderString As String
+ Get
+ Return sBuilderString
+ End Get
+ Set(value As String)
+ sBuilderString = value
+ End Set
+ End Property
Public Property FormName As String
Get
@@ -19,51 +29,79 @@ Public Class frmIncludeExclude
Return sRootFolder
End Get
Set(value As String)
- sRootFolder = value
+ sRootFolder = value.TrimEnd("\")
End Set
End Property
- Private Sub BuildTreeNodes(ByVal sDirectory As String, ByVal oNode As TreeNode)
+ Private Sub BuildBranch(ByVal sDirectory As String, ByVal oNode As TreeNode, ByVal bIsDriveRoot As Boolean)
Dim sFolders As String()
Dim sFiles As String()
Dim oChild As TreeNode
+ Dim oPlaceHolder As TreeNode
Try
+ Cursor.Current = Cursors.WaitCursor
+ treFiles.BeginUpdate()
+
+ oNode.Nodes.RemoveByKey("GBM_Tree_Placeholder")
+
sFolders = Directory.GetDirectories(sDirectory)
sFiles = Directory.GetFiles(sDirectory)
If sFolders.Length <> 0 Then
For Each sFolder As String In sFolders
- oChild = New TreeNode(sFolder.Replace(sDirectory & "\", String.Empty), 0, 0)
- oChild.Name = sFolder
+ If bIsDriveRoot Then
+ oChild = New TreeNode(sFolder.Replace(sDirectory, String.Empty), 0, 0)
+ Else
+ oChild = New TreeNode(sFolder.Replace(sDirectory & "\", String.Empty), 0, 0)
+ End If
+ oChild.Name = sFolder
+ oChild.Tag = 0
oNode.Nodes.Add(oChild)
- BuildTreeNodes(sFolder, oChild)
+ oPlaceHolder = New TreeNode("GBM_Tree_Placeholder")
+ oPlaceHolder.Name = "GBM_Tree_Placeholder"
+ oChild.Nodes.Add(oPlaceHolder)
Next
End If
If sFiles.Length <> 0 Then
For Each sFile As String In sFiles
- oChild = New TreeNode(sFile.Replace(sDirectory & "\", String.Empty), 1, 1)
+ If bIsDriveRoot Then
+ oChild = New TreeNode(sFile.Replace(sDirectory, String.Empty), 1, 1)
+ Else
+ oChild = New TreeNode(sFile.Replace(sDirectory & "\", String.Empty), 1, 1)
+ End If
+ oChild.Tag = 1
oNode.Nodes.Add(oChild)
Next
End If
+
Catch uaex As UnauthorizedAccessException
'Do Nothing
Catch ex As Exception
MsgBox("An unexcepted error occured while reading the file system: " & vbCrLf & vbCrLf & ex.Message, MsgBoxStyle.Critical, "Game Backup Monitor")
+ Finally
+ treFiles.EndUpdate()
+ Cursor.Current = Cursors.Default
End Try
End Sub
- Private Sub BuildTree()
- Cursor.Current = Cursors.WaitCursor
- treFiles.BeginUpdate()
+ Private Sub BuildTrunk()
treFiles.Nodes.Clear()
Dim oRootNode As TreeNode
- oRootNode = New TreeNode(Path.GetFileName(txtRootFolder.Text), 0, 0)
+ Dim bIsDriveRoot As Boolean
+
+ If Path.GetPathRoot(txtRootFolder.Text) = txtRootFolder.Text Then
+ oRootNode = New TreeNode(txtRootFolder.Text, 0, 0)
+ bIsDriveRoot = True
+ Else
+ oRootNode = New TreeNode(Path.GetFileName(txtRootFolder.Text), 0, 0)
+ bIsDriveRoot = False
+ End If
+
+ oRootNode.Name = "Root"
treFiles.Nodes.Add(oRootNode)
- BuildTreeNodes(txtRootFolder.Text, oRootNode)
- treFiles.EndUpdate()
- Cursor.Current = Cursors.Default
+ BuildBranch(txtRootFolder.Text, oRootNode, bIsDriveRoot)
End Sub
Private Sub RootPathBrowse()
@@ -77,30 +115,121 @@ Public Class frmIncludeExclude
End If
End If
- sNewPath = mgrCommon.OpenFolderBrowser("Choose the location of the save folder:", sDefaultFolder, False)
+ sNewPath = mgrCommon.OpenFolderBrowser("Choose the location of the saved game folder:", sDefaultFolder, False)
If sNewPath <> String.Empty Then txtRootFolder.Text = sNewPath
End Sub
+ Private Sub GetAllCheckedNodes(ByVal oRootNode As TreeNodeCollection, ByRef oNodeList As List(Of TreeNode))
+ For Each oNode As TreeNode In oRootNode
+ If oNode.Checked Then
+ oNode.Checked = False
+ oNodeList.Add(oNode)
+ End If
+ If oNode.Nodes.Count > 0 Then
+ GetAllCheckedNodes(oNode.Nodes, oNodeList)
+ End If
+ Next
+ End Sub
+
+ Private Sub AddItem()
+ Dim oCheckedNodes As New List(Of TreeNode)
+ Dim oListViewItem As ListViewItem
+ Dim sItem As String
+
+ GetAllCheckedNodes(treFiles.Nodes, oCheckedNodes)
+
+ lstBuilder.BeginUpdate()
+ For Each oNode In oCheckedNodes
+ sItem = oNode.Text
+ If oNode.Tag = 1 And optFileTypes.Checked Then
+ sItem = Path.GetExtension(oNode.Text)
+ If sItem <> String.Empty Then
+ sItem = "*" & sItem
+ oListViewItem = New ListViewItem(sItem, 2)
+ oListViewItem.Name = sItem
+ Else
+ sItem = oNode.Text
+ oListViewItem = New ListViewItem(sItem, 1)
+ oListViewItem.Name = sItem
+ End If
+ Else
+ oListViewItem = New ListViewItem(sItem, CInt(oNode.Tag))
+ oListViewItem.Name = sItem
+ End If
+
+ If Not lstBuilder.Items.ContainsKey(sItem) Then
+ lstBuilder.Items.Add(oListViewItem)
+ End If
+ Next
+ lstBuilder.EndUpdate()
+ End Sub
+
+ Private Sub RemoveItem()
+ For Each oListViewItem As ListViewItem In lstBuilder.SelectedItems
+ oListViewItem.Remove()
+ Next
+ End Sub
+
+ Private Sub ParseBuilderString()
+ Dim iType As Integer = 1
+ Dim oListViewItem As ListViewItem
+ Dim sItems As String() = BuilderString.Split(":")
+
+ For Each sItem As String In sItems
+ If sItem.Contains("*") Then
+ iType = 2
+ Else
+ If txtRootFolder.Text <> String.Empty Then
+ If Directory.Exists(txtRootFolder.Text & "\" & sItem) Then
+ iType = 0
+ Else
+ iType = 1
+ End If
+ End If
+ End If
+
+ oListViewItem = New ListViewItem(sItem, iType)
+ oListViewItem.Name = sItem
+ lstBuilder.Items.Add(oListViewItem)
+ Next
+ End Sub
+
+ Private Sub CreateNewBuilderString()
+ Dim sTempString As String = String.Empty
+
+ For Each oListViewItem As ListViewItem In lstBuilder.Items
+ sTempString &= oListViewItem.Text & ":"
+ Next
+
+ sTempString = sTempString.TrimEnd(":")
+
+ BuilderString = sTempString
+ End Sub
+
Private Sub frmIncludeExclude_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Me.Text = FormName
+ Me.Text = FormName & " Builder"
txtRootFolder.Text = RootFolder
- BuildTree()
+ optFileTypes.Checked = True
+ lblItems.Text = FormName & " Items"
+ If BuilderString <> String.Empty Then ParseBuilderString()
+ If txtRootFolder.Text <> String.Empty Then BuildTrunk()
End Sub
Private Sub frmIncludeExclude_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
treFiles.Select()
- treFiles.SelectedNode.Expand()
+ If Not treFiles.SelectedNode Is Nothing Then treFiles.SelectedNode.Expand()
End Sub
Private Sub btnBrowse_Click(sender As Object, e As EventArgs) Handles btnBrowse.Click
RootPathBrowse()
- BuildTree()
+ If txtRootFolder.Text <> String.Empty Then BuildTrunk()
treFiles.Select()
- treFiles.SelectedNode.Expand()
+ If Not treFiles.SelectedNode Is Nothing Then treFiles.SelectedNode.Expand()
End Sub
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
+ CreateNewBuilderString()
Me.Close()
End Sub
@@ -108,4 +237,17 @@ Public Class frmIncludeExclude
Me.Close()
End Sub
+ Private Sub treFiles_BeforeExpand(sender As Object, e As TreeViewCancelEventArgs) Handles treFiles.BeforeExpand
+ If Not e.Node.Name = "Root" Then
+ BuildBranch(e.Node.Name, e.Node, False)
+ End If
+ End Sub
+
+ Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
+ AddItem()
+ End Sub
+
+ Private Sub btnRemove_Click(sender As Object, e As EventArgs) Handles btnRemove.Click
+ RemoveItem()
+ End Sub
End Class
\ No newline at end of file
diff --git a/GBM/My Project/AssemblyInfo.vb b/GBM/My Project/AssemblyInfo.vb
index 13bceb1..9fa0d2b 100644
--- a/GBM/My Project/AssemblyInfo.vb
+++ b/GBM/My Project/AssemblyInfo.vb
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' by using the '*' as shown below:
'
-
-
+
+