From aa3237d0fa755378303c342a9816df50937f4125 Mon Sep 17 00:00:00 2001 From: "Michael J. Seiferling" Date: Wed, 14 Jun 2017 10:16:29 -0600 Subject: [PATCH] Enhancement for issue #76 --- GBM/Classes/clsSavedPath.vb | 22 ++++++++++ GBM/Forms/frmAddWizard.vb | 6 +-- GBM/Forms/frmGameManager.vb | 20 +++++----- GBM/Forms/frmIncludeExclude.vb | 2 +- GBM/Forms/frmMain.vb | 2 +- GBM/Forms/frmSettings.vb | 4 +- GBM/Forms/frmStartUpWizard.vb | 2 +- GBM/Forms/frmVariableManager.vb | 2 +- GBM/Game Backup Monitor.vbproj | 2 + GBM/Managers/mgrCommon.vb | 71 +++++++++++++++++++++++++++++---- GBM/Managers/mgrPath.vb | 2 +- GBM/Managers/mgrSQLite.vb | 25 ++++++++++++ GBM/Managers/mgrSavedPath.vb | 54 +++++++++++++++++++++++++ GBM/My Project/AssemblyInfo.vb | 6 +-- 14 files changed, 189 insertions(+), 31 deletions(-) create mode 100644 GBM/Classes/clsSavedPath.vb create mode 100644 GBM/Managers/mgrSavedPath.vb diff --git a/GBM/Classes/clsSavedPath.vb b/GBM/Classes/clsSavedPath.vb new file mode 100644 index 0000000..8954924 --- /dev/null +++ b/GBM/Classes/clsSavedPath.vb @@ -0,0 +1,22 @@ +Public Class clsSavedPath + Private sPathName As String = String.Empty + Private sPath As String = String.Empty + + Property PathName As String + Get + Return sPathName + End Get + Set(value As String) + sPathName = value + End Set + End Property + + Property Path As String + Get + Return sPath + End Get + Set(value As String) + sPath = value + End Set + End Property +End Class diff --git a/GBM/Forms/frmAddWizard.vb b/GBM/Forms/frmAddWizard.vb index 7c89555..19eba8f 100644 --- a/GBM/Forms/frmAddWizard.vb +++ b/GBM/Forms/frmAddWizard.vb @@ -425,8 +425,8 @@ Public Class frmAddWizard End If End If - sNewPath = mgrCommon.OpenFileBrowser(frmAddWizard_ChooseProcess, "exe", - frmAddWizard_Executable, sDefaultFolder, False) + sNewPath = mgrCommon.OpenFileBrowser("Wizard_Process_Path", frmAddWizard_ChooseProcess, "exe", + frmAddWizard_Executable, sDefaultFolder, False, False) If sNewPath <> String.Empty Then txtProcessPath.Text = sNewPath End Sub @@ -442,7 +442,7 @@ Public Class frmAddWizard End If End If - sNewPath = mgrCommon.OpenFolderBrowser(frmAddWizard_ChooseSavePath, sDefaultFolder, False) + sNewPath = mgrCommon.OpenFolderBrowser("Wizard_Save_Path", frmAddWizard_ChooseSavePath, sDefaultFolder, False, False) If sNewPath <> String.Empty Then txtSavePath.Text = sNewPath End Sub diff --git a/GBM/Forms/frmGameManager.vb b/GBM/Forms/frmGameManager.vb index 3dcc6f2..125bfc4 100644 --- a/GBM/Forms/frmGameManager.vb +++ b/GBM/Forms/frmGameManager.vb @@ -288,8 +288,8 @@ Public Class frmGameManager End If End If - sNewPath = mgrCommon.OpenFileBrowser(frmGameManager_ChooseExe, "exe", - frmGameManager_Executable, sDefaultFolder, False) + sNewPath = mgrCommon.OpenFileBrowser("GM_Process", frmGameManager_ChooseExe, "exe", + frmGameManager_Executable, sDefaultFolder, False, False) If sNewPath <> String.Empty Then txtAppPath.Text = Path.GetDirectoryName(sNewPath) @@ -309,7 +309,7 @@ Public Class frmGameManager End If End If - sNewPath = mgrCommon.OpenFolderBrowser(frmGameManager_ChooseExePath, sDefaultFolder, False) + sNewPath = mgrCommon.OpenFolderBrowser("GM_Process_Path", frmGameManager_ChooseExePath, sDefaultFolder, False, False) If sNewPath <> String.Empty Then txtAppPath.Text = sNewPath End Sub @@ -325,7 +325,7 @@ Public Class frmGameManager End If End If - sNewPath = mgrCommon.OpenFolderBrowser(frmGameManager_ChooseSaveFolder, sDefaultFolder, False) + sNewPath = mgrCommon.OpenFolderBrowser("GM_Save_Path", frmGameManager_ChooseSaveFolder, sDefaultFolder, False, False) If sNewPath <> String.Empty Then txtSavePath.Text = sNewPath @@ -346,11 +346,11 @@ Public Class frmGameManager 'Unix Handler If Not mgrCommon.IsUnix Then - sNewPath = mgrCommon.OpenFileBrowser(frmGameManager_ChooseCustomIcon, "ico", - frmGameManager_Icon, sDefaultFolder, False) + sNewPath = mgrCommon.OpenFileBrowser("GM_Icon", frmGameManager_ChooseCustomIcon, "ico", + frmGameManager_Icon, sDefaultFolder, False, False) Else - sNewPath = mgrCommon.OpenFileBrowser(frmGameManager_ChooseCustomIcon, "png", - "PNG", sDefaultFolder, False) + sNewPath = mgrCommon.OpenFileBrowser("GM_Icon", frmGameManager_ChooseCustomIcon, "png", + "PNG", sDefaultFolder, False, False) End If If sNewPath <> String.Empty Then @@ -1410,7 +1410,7 @@ Public Class frmGameManager Private Sub ImportGameListFile() Dim sLocation As String - sLocation = mgrCommon.OpenFileBrowser(frmGameManager_ChooseImportXML, "xml", frmGameManager_XML, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), False) + sLocation = mgrCommon.OpenFileBrowser("XML_Import", frmGameManager_ChooseImportXML, "xml", frmGameManager_XML, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), False) If sLocation <> String.Empty Then If mgrMonitorList.DoImport(sLocation) Then @@ -1423,7 +1423,7 @@ Public Class frmGameManager Private Sub ExportGameList() Dim sLocation As String - sLocation = mgrCommon.SaveFileBrowser(frmGameManager_ChooseExportXML, "xml", frmGameManager_XML, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), frmGameManager_DefaultExportFileName & " " & Date.Now.ToString("dd-MMM-yyyy")) + sLocation = mgrCommon.SaveFileBrowser("XML_Export", frmGameManager_ChooseExportXML, "xml", frmGameManager_XML, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), frmGameManager_DefaultExportFileName & " " & Date.Now.ToString("dd-MMM-yyyy")) If sLocation <> String.Empty Then mgrMonitorList.ExportMonitorList(sLocation) diff --git a/GBM/Forms/frmIncludeExclude.vb b/GBM/Forms/frmIncludeExclude.vb index 23909fd..276cd51 100644 --- a/GBM/Forms/frmIncludeExclude.vb +++ b/GBM/Forms/frmIncludeExclude.vb @@ -108,7 +108,7 @@ Public Class frmIncludeExclude End If End If - sNewPath = mgrCommon.OpenFolderBrowser(frmIncludeExclude_BrowseSaveFolder, sDefaultFolder, False) + sNewPath = mgrCommon.OpenFolderBrowser("IE_Save_Path", frmIncludeExclude_BrowseSaveFolder, sDefaultFolder, False, False) If sNewPath <> String.Empty Then txtRootFolder.Text = sNewPath End Sub diff --git a/GBM/Forms/frmMain.vb b/GBM/Forms/frmMain.vb index 52f7ab6..b21e742 100644 --- a/GBM/Forms/frmMain.vb +++ b/GBM/Forms/frmMain.vb @@ -1249,7 +1249,7 @@ Public Class frmMain Private Sub SaveLog() Dim sLocation As String - sLocation = mgrCommon.SaveFileBrowser(frmMain_ChooseLogFile, "txt", frmMain_Text, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), frmMain_DefaultLogFileName & " " & Date.Now.ToString("dd-MMM-yyyy")) + sLocation = mgrCommon.SaveFileBrowser("Log_File", frmMain_ChooseLogFile, "txt", frmMain_Text, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), frmMain_DefaultLogFileName & " " & Date.Now.ToString("dd-MMM-yyyy")) If sLocation <> String.Empty Then mgrCommon.SaveText(txtLog.Text, sLocation) diff --git a/GBM/Forms/frmSettings.vb b/GBM/Forms/frmSettings.vb index d5cd44d..a2ff9b3 100644 --- a/GBM/Forms/frmSettings.vb +++ b/GBM/Forms/frmSettings.vb @@ -336,13 +336,13 @@ Public Class frmSettings Private Sub btnBackupFolder_Click(sender As System.Object, e As System.EventArgs) Handles btnBackupFolder.Click Dim sNewFolder As String - sNewFolder = mgrCommon.OpenFolderBrowser(frmSettings_BrowseFolder, oSettings.BackupFolder, True) + sNewFolder = mgrCommon.OpenFolderBrowser("Settings_Backup_Path", frmSettings_BrowseFolder, oSettings.BackupFolder, True, False) If sNewFolder <> String.Empty Then txtBackupFolder.Text = sNewFolder End Sub Private Sub btn7zLocation_Click(sender As Object, e As EventArgs) Handles btn7zLocation.Click Dim sNewLocation As String - sNewLocation = mgrCommon.OpenFileBrowser(frmSettings_Browse7za, "exe", frmSettings_7zaFileType, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), False) + sNewLocation = mgrCommon.OpenFileBrowser("7z_Browse", frmSettings_Browse7za, "exe", frmSettings_7zaFileType, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), False) If sNewLocation <> String.Empty Then txt7zLocation.Text = sNewLocation GetUtilityInfo(txt7zLocation.Text) diff --git a/GBM/Forms/frmStartUpWizard.vb b/GBM/Forms/frmStartUpWizard.vb index f3375eb..30b875c 100644 --- a/GBM/Forms/frmStartUpWizard.vb +++ b/GBM/Forms/frmStartUpWizard.vb @@ -215,7 +215,7 @@ Public Class frmStartUpWizard End If End If - sNewPath = mgrCommon.OpenFolderBrowser(frmStartUpWizard_BrowseFolder, sDefaultFolder, True) + sNewPath = mgrCommon.OpenFolderBrowser("Wizard_Backup_Path", frmStartUpWizard_BrowseFolder, sDefaultFolder, True, False) If sNewPath <> String.Empty Then txtBackupPath.Text = sNewPath End Sub diff --git a/GBM/Forms/frmVariableManager.vb b/GBM/Forms/frmVariableManager.vb index 7a3d1fa..da90901 100644 --- a/GBM/Forms/frmVariableManager.vb +++ b/GBM/Forms/frmVariableManager.vb @@ -54,7 +54,7 @@ Public Class frmVariableManager End If End If - sNewPath = mgrCommon.OpenFolderBrowser(frmVariableManager_PathBrowse, sDefaultFolder, False) + sNewPath = mgrCommon.OpenFolderBrowser("VM_Path", frmVariableManager_PathBrowse, sDefaultFolder, False, False) If sNewPath <> String.Empty Then txtPath.Text = sNewPath End Sub diff --git a/GBM/Game Backup Monitor.vbproj b/GBM/Game Backup Monitor.vbproj index b4ace13..0f8aa1c 100644 --- a/GBM/Game Backup Monitor.vbproj +++ b/GBM/Game Backup Monitor.vbproj @@ -121,6 +121,7 @@ + @@ -220,6 +221,7 @@ + diff --git a/GBM/Managers/mgrCommon.vb b/GBM/Managers/mgrCommon.vb index dc59026..111b753 100644 --- a/GBM/Managers/mgrCommon.vb +++ b/GBM/Managers/mgrCommon.vb @@ -61,30 +61,66 @@ Public Class mgrCommon End If End Function - Public Shared Function SaveFileBrowser(ByVal sTitle As String, ByVal sExtension As String, ByVal sFileType As String, ByVal sDefaultFolder As String, ByVal sDefaultFile As String) As String + Public Shared Function SaveFileBrowser(ByVal sName As String, ByVal sTitle As String, ByVal sExtension As String, ByVal sFileType As String, ByVal sDefaultFolder As String, + ByVal sDefaultFile As String, Optional ByVal bSavedPath As Boolean = True) As String Dim fbBrowser As New SaveFileDialog + Dim oSavedPath As New clsSavedPath + fbBrowser.Title = sTitle fbBrowser.DefaultExt = sExtension fbBrowser.Filter = FormatString(mgrCommon_FilesFilter, New String() {sFileType, sExtension, sExtension}) - fbBrowser.InitialDirectory = sDefaultFolder fbBrowser.FileName = sDefaultFile + fbBrowser.InitialDirectory = sDefaultFolder - If fbBrowser.ShowDialog() = Windows.Forms.DialogResult.OK Then - Return fbBrowser.FileName + If bSavedPath Then + oSavedPath = mgrSavedPath.GetPathByName(sName) + If oSavedPath.Path <> String.Empty Then + If Directory.Exists(oSavedPath.Path) Then + fbBrowser.InitialDirectory = oSavedPath.Path + End If + End If End If - Return String.Empty + If fbBrowser.ShowDialog() = Windows.Forms.DialogResult.OK Then + If bSavedPath Then + oSavedPath.PathName = sName + oSavedPath.Path = Path.GetDirectoryName(fbBrowser.FileName) + mgrSavedPath.AddUpdatePath(oSavedPath) + End If + + Return fbBrowser.FileName + End If + + Return String.Empty End Function - Public Shared Function OpenFileBrowser(ByVal sTitle As String, ByVal sExtension As String, ByVal sFileType As String, ByVal sDefaultFolder As String, ByVal bMulti As Boolean) As String + Public Shared Function OpenFileBrowser(ByVal sName As String, ByVal sTitle As String, ByVal sExtension As String, ByVal sFileType As String, ByVal sDefaultFolder As String, + ByVal bMulti As Boolean, Optional ByVal bSavedPath As Boolean = True) As String Dim fbBrowser As New OpenFileDialog + Dim oSavedPath As New clsSavedPath + fbBrowser.Title = sTitle fbBrowser.DefaultExt = sExtension fbBrowser.Filter = FormatString(mgrCommon_FilesFilter, New String() {sFileType, sExtension, sExtension}) - fbBrowser.InitialDirectory = sDefaultFolder fbBrowser.Multiselect = bMulti + fbBrowser.InitialDirectory = sDefaultFolder + + If bSavedPath Then + oSavedPath = mgrSavedPath.GetPathByName(sName) + If oSavedPath.Path <> String.Empty Then + If Directory.Exists(oSavedPath.Path) Then + fbBrowser.InitialDirectory = oSavedPath.Path + End If + End If + End If If fbBrowser.ShowDialog() = Windows.Forms.DialogResult.OK Then + If bSavedPath Then + oSavedPath.PathName = sName + oSavedPath.Path = Path.GetDirectoryName(fbBrowser.FileName) + mgrSavedPath.AddUpdatePath(oSavedPath) + End If + If bMulti Then Dim sFileNames As String = String.Empty For Each sFileName As String In fbBrowser.FileNames @@ -100,12 +136,31 @@ Public Class mgrCommon Return String.Empty End Function - Public Shared Function OpenFolderBrowser(ByVal sTitle As String, ByVal sDefaultFolder As String, ByVal bEnableNewFolder As Boolean) As String + Public Shared Function OpenFolderBrowser(ByVal sName As String, ByVal sTitle As String, ByVal sDefaultFolder As String, ByVal bEnableNewFolder As Boolean, + Optional ByVal bSavedPath As Boolean = True) As String Dim fbBrowser As New FolderBrowserDialog + Dim oSavedPath As New clsSavedPath + fbBrowser.Description = sTitle fbBrowser.SelectedPath = sDefaultFolder fbBrowser.ShowNewFolderButton = bEnableNewFolder + + If bSavedPath Then + oSavedPath = mgrSavedPath.GetPathByName(sName) + If oSavedPath.Path <> String.Empty Then + If Directory.Exists(oSavedPath.Path) Then + fbBrowser.SelectedPath = oSavedPath.Path + End If + End If + End If + If fbBrowser.ShowDialog() = Windows.Forms.DialogResult.OK Then + If bSavedPath Then + oSavedPath.PathName = sName + oSavedPath.Path = fbBrowser.SelectedPath + mgrSavedPath.AddUpdatePath(oSavedPath) + End If + Return fbBrowser.SelectedPath End If diff --git a/GBM/Managers/mgrPath.vb b/GBM/Managers/mgrPath.vb index f607651..433a82d 100644 --- a/GBM/Managers/mgrPath.vb +++ b/GBM/Managers/mgrPath.vb @@ -335,7 +335,7 @@ Public Class mgrPath Dim sDefaultFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) Dim sNewPath As String - sNewPath = mgrCommon.OpenFolderBrowser(mgrPath_ChoosePath, sDefaultFolder, False) + sNewPath = mgrCommon.OpenFolderBrowser("Manual_Game_Location", mgrPath_ChoosePath, sDefaultFolder, False) Return sNewPath End Function diff --git a/GBM/Managers/mgrSQLite.vb b/GBM/Managers/mgrSQLite.vb index 3990d8c..cb7d4c2 100644 --- a/GBM/Managers/mgrSQLite.vb +++ b/GBM/Managers/mgrSQLite.vb @@ -76,6 +76,9 @@ Public Class mgrSQLite "SupressBackup BOOLEAN NOT NULL, SupressBackupThreshold INTEGER NOT NULL, CompressionLevel INTEGER NOT NULL, Custom7zArguments TEXT, " & "Custom7zLocation TEXT, SyncFields INTEGER NOT NULL, AutoSaveLog BOOLEAN NOT NULL, AutoRestore BOOLEAN NOT NULL, AutoMark BOOLEAN NOT NULL);" + 'Add Tables (SavedPath) + sSql &= "CREATE TABLE savedpath (PathName TEXT NOT NULL PRIMARY KEY, Path TEXT NOT NULL);" + 'Add Tables (Monitor List) sSql &= "CREATE TABLE monitorlist (MonitorID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL, Process TEXT NOT NULL, Path TEXT, " & "AbsolutePath BOOLEAN NOT NULL, FolderSave BOOLEAN NOT NULL, FileType TEXT, TimeStamp BOOLEAN NOT NULL, ExcludeList TEXT NOT NULL, " & @@ -639,6 +642,28 @@ Public Class mgrSQLite End If End If + '1.02 Upgrade + If GetDatabaseVersion() < 102 Then + If eDatabase = Database.Local Then + 'Backup DB before starting + BackupDB("v101") + + 'Add Table (SavedPath) + sSQL = "CREATE TABLE savedpath (PathName TEXT NOT NULL PRIMARY KEY, Path TEXT NOT NULL);" + sSQL &= "PRAGMA user_version=102" + + RunParamQuery(sSQL, New Hashtable) + End If + If eDatabase = Database.Remote Then + 'Backup DB before starting + BackupDB("v101") + + sSQL = "PRAGMA user_version=102" + + RunParamQuery(sSQL, New Hashtable) + End If + End If + End Sub Public Function GetDBSize() As Long diff --git a/GBM/Managers/mgrSavedPath.vb b/GBM/Managers/mgrSavedPath.vb new file mode 100644 index 0000000..d4e64f4 --- /dev/null +++ b/GBM/Managers/mgrSavedPath.vb @@ -0,0 +1,54 @@ +Public Class mgrSavedPath + + + Private Shared Function MapToObject(ByVal dr As DataRow) As clsSavedPath + Dim oSavedPath As New clsSavedPath + + oSavedPath.PathName = CStr(dr("PathName")) + oSavedPath.Path = CStr(dr("Path")) + + Return oSavedPath + End Function + + Private Shared Function SetCoreParameters(ByVal oSavedPath As clsSavedPath) As Hashtable + Dim hshParams As New Hashtable + + hshParams.Add("PathName", oSavedPath.PathName) + hshParams.Add("Path", oSavedPath.Path) + + Return hshParams + End Function + + Public Shared Function GetPathByName(ByVal sPathName As String) As clsSavedPath + Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local) + Dim oData As DataSet + Dim sSQL As String + Dim hshParams As New Hashtable + Dim oSavedPath As New clsSavedPath + + sSQL = "SELECT PathName, Path from savedpath WHERE PathName=@PathName;" + + hshParams.Add("PathName", sPathName) + + oData = oDatabase.ReadParamData(sSQL, hshParams) + + For Each dr As DataRow In oData.Tables(0).Rows + oSavedPath = MapToObject(dr) + Next + + Return oSavedPath + End Function + + Public Shared Sub AddUpdatePath(ByVal oSavedPath As clsSavedPath) + Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local) + Dim sSQL As String + Dim hshParams As Hashtable + + sSQL = "INSERT OR REPLACE INTO savedpath (PathName, Path) VALUES (@PathName, @Path);" + + hshParams = SetCoreParameters(oSavedPath) + + oDatabase.RunParamQuery(sSQL, hshParams) + End Sub + +End Class diff --git a/GBM/My Project/AssemblyInfo.vb b/GBM/My Project/AssemblyInfo.vb index ed587ad..0e26d81 100644 --- a/GBM/My Project/AssemblyInfo.vb +++ b/GBM/My Project/AssemblyInfo.vb @@ -14,7 +14,7 @@ Imports System.Runtime.InteropServices - + @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + \ No newline at end of file