Merge branch 'master-origin' into dev-origin

This commit is contained in:
2019-06-09 11:43:10 +01:00
18 changed files with 259 additions and 162 deletions
+1 -1
View File
@@ -49,7 +49,7 @@
ReadOnly Property FileSafeName As String
Get
Return mgrPath.ValidateFileNameForOS(sName)
Return mgrPath.ValidateFileName(sName)
End Get
End Property
+2 -2
View File
@@ -50,7 +50,7 @@ Public Class clsGame
Property ID As String
Set(value As String)
If Not value Is Nothing Then
sGameID = mgrPath.ValidateFileNameForOS(value)
sGameID = mgrPath.ValidateFileName(value)
End If
End Set
Get
@@ -70,7 +70,7 @@ Public Class clsGame
ReadOnly Property FileSafeName As String
Get
Return mgrPath.ValidateFileNameForOS(sGameName)
Return mgrPath.ValidateFileName(sGameName)
End Get
End Property
+2 -4
View File
@@ -228,19 +228,17 @@ Partial Class frmAddWizard
Me.lblLimit.AutoSize = True
Me.lblLimit.Location = New System.Drawing.Point(203, 109)
Me.lblLimit.Name = "lblLimit"
Me.lblLimit.Size = New System.Drawing.Size(68, 13)
Me.lblLimit.Size = New System.Drawing.Size(138, 13)
Me.lblLimit.TabIndex = 15
Me.lblLimit.Text = "Backup Limit"
Me.lblLimit.Text = "Backup Limit (0 = Unlimited)"
Me.lblLimit.Visible = False
'
'nudLimit
'
Me.nudLimit.Location = New System.Drawing.Point(157, 107)
Me.nudLimit.Minimum = New Decimal(New Integer() {2, 0, 0, 0})
Me.nudLimit.Name = "nudLimit"
Me.nudLimit.Size = New System.Drawing.Size(40, 20)
Me.nudLimit.TabIndex = 14
Me.nudLimit.Value = New Decimal(New Integer() {2, 0, 0, 0})
Me.nudLimit.Visible = False
'
'lblStep3Title
+8 -6
View File
@@ -75,10 +75,8 @@ Public Class frmAddWizard
If chkTimeStamp.Checked Then
nudLimit.Visible = True
lblLimit.Visible = True
nudLimit.Value = 5
Else
nudLimit.Visible = False
nudLimit.Value = nudLimit.Minimum
lblLimit.Visible = False
End If
End Sub
@@ -87,9 +85,13 @@ Public Class frmAddWizard
Dim sLimit As String = String.Empty
If bTimeStamp Then
Return mgrCommon.BooleanYesNo(bTimeStamp) & " (" & iLimit & ")"
If iLimit <> 0 Then
Return mgrCommon.BooleanYesNo(bTimeStamp) & " (" & iLimit & ")"
Else
Return mgrCommon.BooleanYesNo(bTimeStamp) & " (" & frmAddWizard_Summary_NoLimit & ")"
End If
Else
Return mgrCommon.BooleanYesNo(bTimeStamp)
Return mgrCommon.BooleanYesNo(bTimeStamp)
End If
End Function
@@ -208,7 +210,7 @@ Public Class frmAddWizard
End Function
Private Function ValidateProcessPath(ByVal strPath As String, ByRef sErrorMessage As String) As Boolean
strPath = mgrPath.ValidatePathForOS(strPath)
strPath = mgrPath.ValidatePath(strPath)
If strPath.Trim = String.Empty Then
sErrorMessage = frmAddWizard_ErrorValidProcess
@@ -325,7 +327,7 @@ Public Class frmAddWizard
End If
Case eSteps.Step3
txtSavePath.Text = mgrPath.ValidatePathForOS(txtSavePath.Text)
txtSavePath.Text = mgrPath.ValidatePath(txtSavePath.Text)
If ValidateSavePath(txtSavePath.Text, sErrorMessage) Then
lblIncludePath.Text = txtSavePath.Text
lblExcludePath.Text = txtSavePath.Text
+39 -12
View File
@@ -81,7 +81,7 @@ Partial Class frmGameManager
Me.lblLocalBackupData = New System.Windows.Forms.Label()
Me.lblRestorePath = New System.Windows.Forms.Label()
Me.btnOpenRestorePath = New System.Windows.Forms.Button()
Me.btnOpenBackupFile = New System.Windows.Forms.Button()
Me.btnOpenBackup = New System.Windows.Forms.Button()
Me.btnDeleteBackup = New System.Windows.Forms.Button()
Me.lblBackupFile = New System.Windows.Forms.Label()
Me.lblRemote = New System.Windows.Forms.Label()
@@ -111,6 +111,9 @@ Partial Class frmGameManager
Me.cmsDeleteAll = New System.Windows.Forms.ToolStripMenuItem()
Me.btnProcesses = New System.Windows.Forms.Button()
Me.ttFullPath = New System.Windows.Forms.ToolTip(Me.components)
Me.cmsOpenBackup = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.cmsOpenBackupFile = New System.Windows.Forms.ToolStripMenuItem()
Me.cmsOpenBackupFolder = New System.Windows.Forms.ToolStripMenuItem()
Me.grpConfig.SuspendLayout()
CType(Me.nudLimit, System.ComponentModel.ISupportInitialize).BeginInit()
Me.grpExtra.SuspendLayout()
@@ -120,6 +123,7 @@ Partial Class frmGameManager
Me.grpFilter.SuspendLayout()
Me.cmsImport.SuspendLayout()
Me.cmsDeleteBackup.SuspendLayout()
Me.cmsOpenBackup.SuspendLayout()
Me.SuspendLayout()
'
'btnAdd
@@ -309,9 +313,9 @@ Partial Class frmGameManager
Me.lblLimit.AutoSize = True
Me.lblLimit.Location = New System.Drawing.Point(376, 229)
Me.lblLimit.Name = "lblLimit"
Me.lblLimit.Size = New System.Drawing.Size(68, 13)
Me.lblLimit.Size = New System.Drawing.Size(138, 13)
Me.lblLimit.TabIndex = 23
Me.lblLimit.Text = "Backup Limit"
Me.lblLimit.Text = "Backup Limit (0 = Unlimited)"
Me.lblLimit.Visible = False
'
'nudLimit
@@ -629,7 +633,7 @@ Partial Class frmGameManager
Me.grpStats.Controls.Add(Me.lblLocalBackupData)
Me.grpStats.Controls.Add(Me.lblRestorePath)
Me.grpStats.Controls.Add(Me.btnOpenRestorePath)
Me.grpStats.Controls.Add(Me.btnOpenBackupFile)
Me.grpStats.Controls.Add(Me.btnOpenBackup)
Me.grpStats.Controls.Add(Me.btnDeleteBackup)
Me.grpStats.Controls.Add(Me.lblBackupFile)
Me.grpStats.Controls.Add(Me.lblRemote)
@@ -711,14 +715,14 @@ Partial Class frmGameManager
Me.btnOpenRestorePath.Text = "O&pen Restore Path"
Me.btnOpenRestorePath.UseVisualStyleBackColor = True
'
'btnOpenBackupFile
'btnOpenBackup
'
Me.btnOpenBackupFile.Location = New System.Drawing.Point(249, 125)
Me.btnOpenBackupFile.Name = "btnOpenBackupFile"
Me.btnOpenBackupFile.Size = New System.Drawing.Size(114, 23)
Me.btnOpenBackupFile.TabIndex = 10
Me.btnOpenBackupFile.Text = "&Open Backup File"
Me.btnOpenBackupFile.UseVisualStyleBackColor = True
Me.btnOpenBackup.Location = New System.Drawing.Point(249, 125)
Me.btnOpenBackup.Name = "btnOpenBackup"
Me.btnOpenBackup.Size = New System.Drawing.Size(114, 23)
Me.btnOpenBackup.TabIndex = 10
Me.btnOpenBackup.Text = "&Open Backup"
Me.btnOpenBackup.UseVisualStyleBackColor = True
'
'btnDeleteBackup
'
@@ -972,6 +976,25 @@ Partial Class frmGameManager
Me.ttFullPath.InitialDelay = 300
Me.ttFullPath.ReshowDelay = 60
'
'cmsOpenBackup
'
Me.cmsOpenBackup.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cmsOpenBackupFile, Me.cmsOpenBackupFolder})
Me.cmsOpenBackup.Name = "cmsOpenBackup"
Me.cmsOpenBackup.ShowImageMargin = False
Me.cmsOpenBackup.Size = New System.Drawing.Size(83, 48)
'
'cmsOpenBackupFile
'
Me.cmsOpenBackupFile.Name = "cmsOpenBackupFile"
Me.cmsOpenBackupFile.Size = New System.Drawing.Size(82, 22)
Me.cmsOpenBackupFile.Text = "&File"
'
'cmsOpenBackupFolder
'
Me.cmsOpenBackupFolder.Name = "cmsOpenBackupFolder"
Me.cmsOpenBackupFolder.Size = New System.Drawing.Size(82, 22)
Me.cmsOpenBackupFolder.Text = "F&older"
'
'frmGameManager
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -1017,6 +1040,7 @@ Partial Class frmGameManager
Me.grpFilter.PerformLayout()
Me.cmsImport.ResumeLayout(False)
Me.cmsDeleteBackup.ResumeLayout(False)
Me.cmsOpenBackup.ResumeLayout(False)
Me.ResumeLayout(False)
Me.PerformLayout()
@@ -1065,7 +1089,7 @@ Partial Class frmGameManager
Friend WithEvents btnMarkAsRestored As System.Windows.Forms.Button
Friend WithEvents btnRestore As System.Windows.Forms.Button
Friend WithEvents btnDeleteBackup As System.Windows.Forms.Button
Friend WithEvents btnOpenBackupFile As System.Windows.Forms.Button
Friend WithEvents btnOpenBackup As System.Windows.Forms.Button
Friend WithEvents grpFilter As System.Windows.Forms.GroupBox
Friend WithEvents optPendingRestores As System.Windows.Forms.RadioButton
Friend WithEvents optAllGames As System.Windows.Forms.RadioButton
@@ -1109,4 +1133,7 @@ Partial Class frmGameManager
Friend WithEvents lblOS As Label
Friend WithEvents cboOS As ComboBox
Friend WithEvents btnWineConfig As Button
Friend WithEvents cmsOpenBackup As ContextMenuStrip
Friend WithEvents cmsOpenBackupFile As ToolStripMenuItem
Friend WithEvents cmsOpenBackupFolder As ToolStripMenuItem
End Class
+3
View File
@@ -126,4 +126,7 @@
<metadata name="ttFullPath.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>275, 17</value>
</metadata>
<metadata name="cmsOpenBackup.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>378, 17</value>
</metadata>
</root>
+35 -47
View File
@@ -535,24 +535,15 @@ Public Class frmGameManager
End Sub
Private Sub OpenBackupFile()
Dim sFileName As String
Dim oProcessStartInfo As ProcessStartInfo
Dim sFileName As String = BackupFolder & CurrentBackupItem.FileName
sFileName = BackupFolder & CurrentBackupItem.FileName
mgrCommon.OpenInOS(sFileName, frmGameManager_ErrorNoBackupFileExists)
End Sub
If File.Exists(sFileName) Then
Try
oProcessStartInfo = New ProcessStartInfo
oProcessStartInfo.FileName = sFileName
oProcessStartInfo.UseShellExecute = True
oProcessStartInfo.Verb = "open"
Process.Start(oProcessStartInfo)
Catch ex As Exception
mgrCommon.ShowMessage(App_ErrorLaunchExternal, ex.Message, MsgBoxStyle.Exclamation)
End Try
Else
mgrCommon.ShowMessage(frmGameManager_ErrorNoBackupExists, MsgBoxStyle.Exclamation)
End If
Private Sub OpenBackupFolder()
Dim sFileName As String = BackupFolder & Path.GetDirectoryName(CurrentBackupItem.FileName)
mgrCommon.OpenInOS(sFileName, frmGameManager_ErrorNoBackupFolderExists)
End Sub
Private Sub UpdateBuilderButtonLabel(ByVal sBuilderString As String, ByVal sLabel As String, ByVal btn As Button, ByVal bDirty As Boolean)
@@ -583,7 +574,7 @@ Public Class frmGameManager
Private Function GetBuilderRoot() As String
Dim sRoot As String = String.Empty
Dim sPath As String = mgrPath.ValidatePathForOS(txtSavePath.Text)
Dim sPath As String = mgrPath.ValidatePath(txtSavePath.Text)
If Not Settings.ShowResolvedPaths Then sPath = mgrPath.ReplaceSpecialPaths(sPath)
@@ -642,7 +633,6 @@ Public Class frmGameManager
Private Sub OpenRestorePath()
Dim sPath As String = String.Empty
Dim oProcessStartInfo As ProcessStartInfo
If CurrentBackupItem.AbsolutePath Then
sPath = CurrentBackupItem.RestorePath
@@ -652,19 +642,7 @@ Public Class frmGameManager
End If
End If
If Directory.Exists(sPath) Then
Try
oProcessStartInfo = New ProcessStartInfo
oProcessStartInfo.FileName = sPath
oProcessStartInfo.UseShellExecute = True
oProcessStartInfo.Verb = "open"
Process.Start(oProcessStartInfo)
Catch ex As Exception
mgrCommon.ShowMessage(App_ErrorLaunchExternal, ex.Message, MsgBoxStyle.Exclamation)
End Try
Else
mgrCommon.ShowMessage(frmGameManager_ErrorNoRestorePathExists, MsgBoxStyle.Exclamation)
End If
mgrCommon.OpenInOS(sPath, frmGameManager_ErrorNoRestorePathExists)
End Sub
Private Sub OpenProcesses()
@@ -822,7 +800,7 @@ Public Class frmGameManager
sFileName = BackupFolder & CurrentBackupItem.FileName
btnOpenBackupFile.Enabled = True
btnOpenBackup.Enabled = True
btnOpenRestorePath.Enabled = True
btnRestore.Enabled = True
btnDeleteBackup.Enabled = True
@@ -830,7 +808,7 @@ Public Class frmGameManager
If File.Exists(sFileName) Then
lblBackupFileData.Text = Path.GetFileName(CurrentBackupItem.FileName) & " (" & mgrCommon.FormatDiskSpace(mgrCommon.GetFileSize(sFileName)) & ")"
Else
lblBackupFileData.Text = frmGameManager_ErrorNoBackupExists
lblBackupFileData.Text = frmGameManager_ErrorNoBackupFileExists
End If
SetBackupRestorePath(oApp)
@@ -838,7 +816,7 @@ Public Class frmGameManager
oComboItems.Add(New KeyValuePair(Of String, String)(String.Empty, frmGameManager_None))
lblBackupFileData.Text = String.Empty
lblRestorePathData.Text = String.Empty
btnOpenBackupFile.Enabled = False
btnOpenBackup.Enabled = False
btnOpenRestorePath.Enabled = False
btnRestore.Enabled = False
btnDeleteBackup.Enabled = False
@@ -876,7 +854,7 @@ Public Class frmGameManager
If mgrPath.IsSupportedRegistryPath(oApp.TruePath) Then
btnImportBackup.Enabled = False
btnOpenBackupFile.Enabled = False
btnOpenBackup.Enabled = False
btnOpenRestorePath.Enabled = False
End If
@@ -893,7 +871,7 @@ Public Class frmGameManager
If File.Exists(sFileName) Then
lblBackupFileData.Text = Path.GetFileName(CurrentBackupItem.FileName) & " (" & mgrCommon.FormatDiskSpace(mgrCommon.GetFileSize(sFileName)) & ")"
Else
lblBackupFileData.Text = frmGameManager_ErrorNoBackupExists
lblBackupFileData.Text = frmGameManager_ErrorNoBackupFileExists
End If
SetBackupRestorePath(CurrentGame)
@@ -1081,7 +1059,7 @@ Public Class frmGameManager
btnRestore.Enabled = False
btnImportBackup.Enabled = False
btnDeleteBackup.Enabled = False
btnOpenBackupFile.Enabled = False
btnOpenBackup.Enabled = False
btnOpenRestorePath.Enabled = False
chkEnabled.Checked = True
chkMonitorOnly.Checked = False
@@ -1115,7 +1093,7 @@ Public Class frmGameManager
btnRestore.Enabled = False
btnImportBackup.Enabled = False
btnDeleteBackup.Enabled = False
btnOpenBackupFile.Enabled = False
btnOpenBackup.Enabled = False
btnOpenRestorePath.Enabled = False
btnTags.Enabled = True
btnProcesses.Enabled = True
@@ -1257,7 +1235,6 @@ Public Class frmGameManager
btnInclude.Enabled = False
btnExclude.Enabled = False
Else
chkFolderSave.Checked = False
chkFolderSave.Enabled = True
btnInclude.Enabled = True
btnExclude.Enabled = True
@@ -1384,7 +1361,7 @@ Public Class frmGameManager
oApp.IsRegEx = chkRegEx.Checked
If Not oApp.IsRegEx Then
txtProcess.Text = mgrPath.ValidateFileNameForOS(txtProcess.Text)
txtProcess.Text = mgrPath.ValidateFileName(txtProcess.Text)
If Path.HasExtension(txtProcess.Text) Then
If txtProcess.Text.ToLower.EndsWith(".exe") Then
txtProcess.Text = Path.GetFileNameWithoutExtension(txtProcess.Text)
@@ -1395,7 +1372,7 @@ Public Class frmGameManager
oApp.ProcessName = txtProcess.Text
oApp.Parameter = txtParameter.Text
oApp.OS = CType(cboOS.SelectedValue, clsGame.eOS)
oApp.Path = mgrPath.ValidatePathForOS(txtSavePath.Text)
oApp.Path = mgrPath.ValidatePath(txtSavePath.Text)
'If we have a registry path, trim any trailing backslashes because they cause export failures
If mgrPath.IsSupportedRegistryPath(oApp.Path) Then
@@ -1420,7 +1397,7 @@ Public Class frmGameManager
oApp.Comments = txtComments.Text
oApp.Enabled = chkEnabled.Checked
oApp.MonitorOnly = chkMonitorOnly.Checked
oApp.ProcessPath = mgrPath.ValidatePathForOS(txtAppPath.Text)
oApp.ProcessPath = mgrPath.ValidatePath(txtAppPath.Text)
oApp.Company = txtCompany.Text
oApp.Version = txtVersion.Text
oApp.Icon = txtIcon.Text
@@ -1818,7 +1795,7 @@ Public Class frmGameManager
btnSave.Text = frmGameManager_btnSave
lblRestorePath.Text = frmGameManager_lblRestorePath
btnOpenRestorePath.Text = frmGameManager_btnOpenRestorePath
btnOpenBackupFile.Text = frmGameManager_btnOpenBackupFile
btnOpenBackup.Text = frmGameManager_btnOpenBackup
btnDeleteBackup.Text = frmGameManager_btnDeleteBackup
lblBackupFile.Text = frmGameManager_lblBackupFile
lblRemote.Text = frmGameManager_lblRemote
@@ -1860,6 +1837,8 @@ Public Class frmGameManager
btnProcesses.Text = frmGameManager_btnProcesses
lblOS.Text = frmGameManager_lblOS
btnWineConfig.Text = frmGameManager_btnWineConfig
cmsOpenBackupFile.Text = frmGameManager_cmsOpenBackupFile
cmsOpenBackupFolder.Text = frmGameManager_cmsOpenBackupFolder
'Init Combos
Dim oComboItems As New List(Of KeyValuePair(Of Integer, String))
@@ -1902,8 +1881,9 @@ Public Class frmGameManager
btnRestore.Visible = False
btnMarkAsRestored.Visible = False
btnDeleteBackup.Visible = False
btnOpenBackupFile.Visible = False
btnOpenBackup.Visible = False
btnOpenRestorePath.Visible = False
btnImportBackup.Visible = False
End If
LoadBackupData()
@@ -1984,10 +1964,18 @@ Public Class frmGameManager
IconBrowse()
End Sub
Private Sub btnOpenBackupFile_Click(sender As Object, e As EventArgs) Handles btnOpenBackupFile.Click
Private Sub btnOpenBackup_Click(sender As Object, e As EventArgs) Handles btnOpenBackup.Click
mgrCommon.OpenButtonSubMenu(cmsOpenBackup, btnOpenBackup)
End Sub
Private Sub cmsOpenBackupFile_Click(sender As Object, e As EventArgs) Handles cmsOpenBackupFile.Click
OpenBackupFile()
End Sub
Private Sub cmsOpenBackupFolder_Click(sender As Object, e As EventArgs) Handles cmsOpenBackupFolder.Click
OpenBackupFolder()
End Sub
Private Sub btnOpenRestorePath_Click(sender As Object, e As EventArgs) Handles btnOpenRestorePath.Click
OpenRestorePath()
End Sub
@@ -2006,7 +1994,7 @@ Public Class frmGameManager
Private Sub btnDeleteBackup_Click(sender As Object, e As EventArgs) Handles btnDeleteBackup.Click
If cboRemoteBackup.Items.Count > 1 Then
cmsDeleteBackup.Show(btnDeleteBackup, New Drawing.Point(btnDeleteBackup.Size.Width - Math.Floor(btnDeleteBackup.Size.Width * 0.1), btnDeleteBackup.Size.Height - Math.Floor(btnDeleteBackup.Size.Height * 0.5)), ToolStripDropDownDirection.AboveRight)
mgrCommon.OpenButtonSubMenu(cmsDeleteBackup, btnDeleteBackup)
Else
DeleteBackup()
End If
@@ -2076,7 +2064,7 @@ Public Class frmGameManager
End Sub
Private Sub btnImport_Click(sender As Object, e As EventArgs) Handles btnImport.Click
cmsImport.Show(btnImport, New Drawing.Point(btnImport.Size.Width - Math.Floor(btnImport.Size.Width * 0.1), btnImport.Size.Height - Math.Floor(btnImport.Size.Height * 0.5)), ToolStripDropDownDirection.AboveRight)
mgrCommon.OpenButtonSubMenu(cmsImport, btnImport)
End Sub
Private Sub cmsOfficialWindows_Click(sender As Object, e As EventArgs) Handles cmsOfficialWindows.Click, cmsOfficial.Click
+4 -10
View File
@@ -1008,12 +1008,9 @@ Public Class frmMain
Private Sub OpenStartupWizard()
Dim frm As New frmStartUpWizard()
frm.Settings = oSettings
PauseScan()
frm.Settings = New mgrSettings
frm.ShowDialog()
LoadAndVerify()
bFirstRun = False
ResumeScan()
End Sub
Private Sub OpenWebSite()
@@ -1757,8 +1754,8 @@ Public Class frmMain
Private Sub VerifyGameDataPath()
'Important: This function cannot access mgrPath for settings, as that will trigger a database creation and destroy the reason for this function
Dim sSettingsRoot As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "/gbm"
Dim sDBLocation As String = sSettingsRoot & "/gbm.s3db"
Dim sSettingsRoot As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & Path.DirectorySeparatorChar & "gbm"
Dim sDBLocation As String = sSettingsRoot & Path.DirectorySeparatorChar & "gbm.s3db"
If Not Directory.Exists(sSettingsRoot) Then
Try
@@ -2208,6 +2205,7 @@ Public Class frmMain
If bInitialLoad Then
Try
VerifyGameDataPath()
If bFirstRun Then OpenStartupWizard()
LoadAndVerify()
Catch ex As Exception
If mgrCommon.ShowMessage(frmMain_ErrorInitFailure, ex.Message & vbCrLf & ex.StackTrace, MsgBoxStyle.YesNo) = MsgBoxResult.No Then
@@ -2246,10 +2244,6 @@ Public Class frmMain
CheckForNewBackups()
End If
If bFirstRun And Not bShutdown Then
OpenStartupWizard()
End If
bInitialLoad = False
Else
txtLog.Select(txtLog.TextLength, 0)
+13 -1
View File
@@ -49,6 +49,7 @@ Partial Class frmStartUpWizard
Me.lblStep4Instructions = New System.Windows.Forms.Label()
Me.btnNext = New System.Windows.Forms.Button()
Me.btnBack = New System.Windows.Forms.Button()
Me.lblStep2Warning = New System.Windows.Forms.Label()
Me.tabWizard.SuspendLayout()
Me.tbPage1.SuspendLayout()
Me.tbPage2.SuspendLayout()
@@ -125,6 +126,7 @@ Partial Class frmStartUpWizard
'tbPage2
'
Me.tbPage2.BackColor = System.Drawing.SystemColors.Control
Me.tbPage2.Controls.Add(Me.lblStep2Warning)
Me.tbPage2.Controls.Add(Me.chkCreateFolder)
Me.tbPage2.Controls.Add(Me.lblStep2Title)
Me.tbPage2.Controls.Add(Me.lblStep2Instructions)
@@ -162,7 +164,7 @@ Partial Class frmStartUpWizard
'
Me.lblStep2Instructions.Location = New System.Drawing.Point(14, 103)
Me.lblStep2Instructions.Name = "lblStep2Instructions"
Me.lblStep2Instructions.Size = New System.Drawing.Size(335, 50)
Me.lblStep2Instructions.Size = New System.Drawing.Size(335, 44)
Me.lblStep2Instructions.TabIndex = 6
Me.lblStep2Instructions.Text = "GBM will store all your backup files along with a manifest database (gbm.s3db) in" &
" this location. Any existing GBM data in this folder will be automatically impo" &
@@ -318,6 +320,15 @@ Partial Class frmStartUpWizard
Me.btnBack.TabIndex = 1
Me.btnBack.Text = "&Back"
Me.btnBack.UseVisualStyleBackColor = True
'
'lblStep2Warning
'
Me.lblStep2Warning.Location = New System.Drawing.Point(14, 147)
Me.lblStep2Warning.Name = "lblStep2Warning"
Me.lblStep2Warning.Size = New System.Drawing.Size(335, 33)
Me.lblStep2Warning.TabIndex = 7
Me.lblStep2Warning.Text = "You cannot return to this step after clicking Next. The Backup Location can be c" &
"hanged any time once Setup is complete."
'
'frmStartUpWizard
'
@@ -371,4 +382,5 @@ Partial Class frmStartUpWizard
Friend WithEvents lblStep4Instructions2 As System.Windows.Forms.Label
Friend WithEvents lblStep1Instructions2 As System.Windows.Forms.Label
Friend WithEvents llbManual As System.Windows.Forms.LinkLabel
Friend WithEvents lblStep2Warning As Label
End Class
+13 -9
View File
@@ -42,6 +42,7 @@ Public Class frmStartUpWizard
chkCreateFolder.Text = frmStartUpWizard_chkCreateFolder
lblStep2Title.Text = frmStartUpWizard_lblStep2Title
lblStep2Instructions.Text = frmStartUpWizard_lblStep2Instructions
lblStep2Warning.Text = frmStartUpWizard_lblStep2Warning
btnFolderBrowse.Text = frmStartUpWizard_btnFolderBrowse
lblStep2Intro.Text = frmStartUpWizard_lblStep2Intro
btnOpenWizard.Text = frmStartUpWizard_btnOpenWizard
@@ -55,7 +56,8 @@ Public Class frmStartUpWizard
lblStep4Instructions.Text = frmStartUpWizard_lblStep4Instructions
llbManual.Links.Add(0, 26, App_URLManual)
LoadGameSettings()
txtBackupPath.Text = oSettings.BackupFolder
StepHandler()
End Sub
@@ -78,8 +80,6 @@ Public Class frmStartUpWizard
btnNext.Enabled = True
tabWizard.SelectTab(0)
Case eSteps.Step2
txtBackupPath.Text = oSettings.BackupFolder
chkCreateFolder.Checked = oSettings.CreateSubFolder
btnBack.Enabled = True
btnNext.Enabled = True
tabWizard.SelectTab(1)
@@ -141,18 +141,22 @@ Public Class frmStartUpWizard
Return False
End If
If Not Directory.Exists(strPath) Then
sErrorMessage = frmStartUpWizard_ErrorNoFolderExists
txtBackupPath.Focus()
Return False
End If
If Not Path.IsPathRooted(strPath) Then
sErrorMessage = frmStartUpWizard_ErrorBadFolder
txtBackupPath.Focus()
Return False
End If
If Not Directory.Exists(strPath) Then
Try
Directory.CreateDirectory(strPath)
Catch ex As Exception
sErrorMessage = frmStartUpWizard_ErrorNoFolderExists
txtBackupPath.Focus()
Return False
End Try
End If
Return True
End Function
+2 -2
View File
@@ -1,5 +1,5 @@
GBM - Game Backup Monitor
Copyright (C) 2019 Michael J. Seiferling
Game Backup Monitor
Copyright (C) 2014 - 2019 Michael J. Seiferling and Game Backup Monitor contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
+29 -1
View File
@@ -451,7 +451,7 @@ Public Class mgrCommon
Try
prsdf = New Process
prsdf.StartInfo.FileName = "/bin/df"
prsdf.StartInfo.Arguments = sPath
prsdf.StartInfo.Arguments = """" & sPath & """"
prsdf.StartInfo.UseShellExecute = False
prsdf.StartInfo.RedirectStandardOutput = True
prsdf.StartInfo.CreateNoWindow = True
@@ -529,6 +529,29 @@ Public Class mgrCommon
End If
End Sub
'Opens a file or folder in default application determined by the OS
Public Shared Function OpenInOS(ByVal sFileName As String, ByVal sNotFoundError As String) As Boolean
Dim oProcessStartInfo As ProcessStartInfo
If File.Exists(sFileName) Or Directory.Exists(sFileName) Then
Try
oProcessStartInfo = New ProcessStartInfo
oProcessStartInfo.FileName = sFileName
oProcessStartInfo.UseShellExecute = True
oProcessStartInfo.Verb = "open"
Process.Start(oProcessStartInfo)
Catch ex As Exception
mgrCommon.ShowMessage(App_ErrorLaunchExternal, ex.Message, MsgBoxStyle.Exclamation)
Return False
End Try
Else
mgrCommon.ShowMessage(sNotFoundError, MsgBoxStyle.Exclamation)
Return False
End If
Return True
End Function
'Delete a sub-folder based on the provided backup information
Public Shared Sub DeleteDirectoryByBackup(ByVal sBackupFolder As String, ByVal oBackup As clsBackup)
Dim oDir As DirectoryInfo
@@ -569,6 +592,11 @@ Public Class mgrCommon
End Try
End Sub
'Open a nice button sub-menu
Public Shared Sub OpenButtonSubMenu(ByRef cms As ContextMenuStrip, ByRef btn As Button)
cms.Show(btn, New Drawing.Point(btn.Size.Width - Math.Floor(btn.Size.Width * 0.1), btn.Size.Height - Math.Floor(btn.Size.Height * 0.5)), ToolStripDropDownDirection.AboveRight)
End Sub
'Configure a fake form to trigger focus for priority messages
Private Shared Sub ConfigureFakeForm(ByRef frm As Form)
frm.FormBorderStyle = FormBorderStyle.None
+10 -6
View File
@@ -101,8 +101,10 @@ Public Class mgrPath
End Set
End Property
Public Shared Function ValidatePathForOS(ByVal sCheckString As String) As String
Dim cInvalidCharacters As Char() = Path.GetInvalidPathChars
Public Shared Function ValidatePath(ByVal sCheckString As String) As String
Dim cInvalidCharacters As Char() = {Chr(0), Chr(1), Chr(2), Chr(3), Chr(4), Chr(5), Chr(6), Chr(7), Chr(8), Chr(9), Chr(10), Chr(11), Chr(12), Chr(13), Chr(14), Chr(15),
Chr(16), Chr(17), Chr(18), Chr(19), Chr(20), Chr(21), Chr(22), Chr(23), Chr(24), Chr(25), Chr(26), Chr(27), Chr(28), Chr(29), Chr(30),
Chr(31), Chr(34), Chr(60), Chr(62), Chr(124)}
For Each c As Char In cInvalidCharacters
sCheckString = sCheckString.Replace(c, "")
@@ -111,15 +113,17 @@ Public Class mgrPath
Return sCheckString.Trim
End Function
Public Shared Function ValidateFileNameForOS(ByVal sCheckString As String) As String
Dim cInvalidCharacters As Char() = Path.GetInvalidFileNameChars
Public Shared Function ValidateFileName(ByVal sCheckString As String) As String
Dim cInvalidCharacters As Char() = {Chr(0), Chr(1), Chr(2), Chr(3), Chr(4), Chr(5), Chr(6), Chr(7), Chr(8), Chr(9), Chr(10), Chr(11), Chr(12), Chr(13), Chr(14), Chr(15),
Chr(16), Chr(17), Chr(18), Chr(19), Chr(20), Chr(21), Chr(22), Chr(23), Chr(24), Chr(25), Chr(26), Chr(27), Chr(28), Chr(29), Chr(30),
Chr(31), Chr(34), Chr(42), Chr(47), Chr(58), Chr(60), Chr(62), Chr(63), Chr(92), Chr(124)}
For Each c As Char In cInvalidCharacters
sCheckString = sCheckString.Replace(c, "")
Next
If sCheckString.Length > 257 Then
sCheckString = sCheckString.Substring(0, 257)
If sCheckString.Length > 255 Then
sCheckString = sCheckString.Substring(0, 255)
End If
Return sCheckString.Trim
+2 -1
View File
@@ -1,4 +1,5 @@
Imports System.IO
Imports GBM.My.Resources
Public Class mgrSettings
Private bStartWithWindows As Boolean = False
@@ -18,7 +19,7 @@ Public Class mgrSettings
Private iCompressionLevel As Integer = 5
Private s7zArguments As String = String.Empty
Private s7zLocation As String = String.Empty
Private sBackupFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).TrimEnd(New Char() {"\", "/"})
Private sBackupFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & Path.DirectorySeparatorChar & App_NameLong
Private eSyncFields As clsGame.eOptionalSyncFields = clsGame.eOptionalSyncFields.None
Private eMessages As eSuppressMessages = eSuppressMessages.None
Private bAutoSaveLog As Boolean = False
+3 -3
View File
@@ -14,7 +14,7 @@ Imports System.Runtime.InteropServices
<Assembly: AssemblyDescription("Game Backup Monitor")>
<Assembly: AssemblyCompany("Michael J. Seiferling")>
<Assembly: AssemblyProduct("Game Backup Monitor")>
<Assembly: AssemblyCopyright("Copyright © 2018 Michael J. Seiferling")>
<Assembly: AssemblyCopyright("© 2014 - 2019 Michael J. Seiferling and Game Backup Monitor contributors")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
@@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.1.8.*")>
<Assembly: AssemblyFileVersion("1.1.8.0")>
<Assembly: AssemblyVersion("1.1.9.*")>
<Assembly: AssemblyFileVersion("1.1.9.0")>
<Assembly: NeutralResourcesLanguageAttribute("en")>
+54 -9
View File
@@ -79,7 +79,7 @@ Namespace My.Resources
End Property
'''<summary>
''' Looks up a localized string similar to [PARAM] Michael J. Seiferling.
''' Looks up a localized string similar to 2014 - [PARAM] Michael J. Seiferling and Game Backup Monitor contributors.
'''</summary>
Friend ReadOnly Property App_Copyright() As String
Get
@@ -547,7 +547,7 @@ Namespace My.Resources
End Property
'''<summary>
''' Looks up a localized string similar to Backup Limit.
''' Looks up a localized string similar to Backup Limit (0 = Unlimited).
'''</summary>
Friend ReadOnly Property frmAddWizard_lblLimit() As String
Get
@@ -744,6 +744,15 @@ Namespace My.Resources
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Unlimited.
'''</summary>
Friend ReadOnly Property frmAddWizard_Summary_NoLimit() As String
Get
Return ResourceManager.GetString("frmAddWizard_Summary_NoLimit", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Process.
'''</summary>
@@ -1654,11 +1663,11 @@ Namespace My.Resources
End Property
'''<summary>
''' Looks up a localized string similar to &amp;Open Backup File.
''' Looks up a localized string similar to &amp;Open Backup.
'''</summary>
Friend ReadOnly Property frmGameManager_btnOpenBackupFile() As String
Friend ReadOnly Property frmGameManager_btnOpenBackup() As String
Get
Return ResourceManager.GetString("frmGameManager_btnOpenBackupFile", resourceCulture)
Return ResourceManager.GetString("frmGameManager_btnOpenBackup", resourceCulture)
End Get
End Property
@@ -1905,6 +1914,24 @@ Namespace My.Resources
End Get
End Property
'''<summary>
''' Looks up a localized string similar to &amp;File.
'''</summary>
Friend ReadOnly Property frmGameManager_cmsOpenBackupFile() As String
Get
Return ResourceManager.GetString("frmGameManager_cmsOpenBackupFile", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to F&amp;older.
'''</summary>
Friend ReadOnly Property frmGameManager_cmsOpenBackupFolder() As String
Get
Return ResourceManager.GetString("frmGameManager_cmsOpenBackupFolder", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Are you sure you want to run a backup for [PARAM]? This will close the form..
'''</summary>
@@ -2106,9 +2133,18 @@ Namespace My.Resources
'''<summary>
''' Looks up a localized string similar to The backup file does not exist..
'''</summary>
Friend ReadOnly Property frmGameManager_ErrorNoBackupExists() As String
Friend ReadOnly Property frmGameManager_ErrorNoBackupFileExists() As String
Get
Return ResourceManager.GetString("frmGameManager_ErrorNoBackupExists", resourceCulture)
Return ResourceManager.GetString("frmGameManager_ErrorNoBackupFileExists", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to The backup folder does not exist..
'''</summary>
Friend ReadOnly Property frmGameManager_ErrorNoBackupFolderExists() As String
Get
Return ResourceManager.GetString("frmGameManager_ErrorNoBackupFolderExists", resourceCulture)
End Get
End Property
@@ -2383,7 +2419,7 @@ Namespace My.Resources
End Property
'''<summary>
''' Looks up a localized string similar to Backup Limit.
''' Looks up a localized string similar to Backup Limit (0 = Unlimited).
'''</summary>
Friend ReadOnly Property frmGameManager_lblLimit() As String
Get
@@ -5254,7 +5290,7 @@ Namespace My.Resources
End Property
'''<summary>
''' Looks up a localized string similar to The folder you selected does not exist or is not a valid folder..
''' Looks up a localized string similar to The selected backup location does not exist and could not be created.[BR][BR][PARAM].
'''</summary>
Friend ReadOnly Property frmStartUpWizard_ErrorNoFolderExists() As String
Get
@@ -5334,6 +5370,15 @@ Namespace My.Resources
End Get
End Property
'''<summary>
''' Looks up a localized string similar to You cannot return to this step after clicking Next. The Backup Location can be changed any time once Setup is complete..
'''</summary>
Friend ReadOnly Property frmStartUpWizard_lblStep2Warning() As String
Get
Return ResourceManager.GetString("frmStartUpWizard_lblStep2Warning", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Before you can start monitoring for games, they need to be configured so GBM knows what to look for and how to handle them. You can download pre-made configurations from the official list or add them all yourself using the tools below. You can also skip this step for now!.
'''</summary>
+22 -7
View File
@@ -137,7 +137,7 @@
<value>This will rebuild all databases and shrink them to an optimal size.[BR]This should only be used if your gbm.s3db files are becoming very large.[BR][BR]Do you wish to continue?</value>
</data>
<data name="App_Copyright" xml:space="preserve">
<value>[PARAM] Michael J. Seiferling</value>
<value> 2014 - [PARAM] Michael J. Seiferling and Game Backup Monitor contributors</value>
</data>
<data name="frmMain_Exit" xml:space="preserve">
<value>Are you sure you want to exit? Your games will no longer be monitored.</value>
@@ -460,8 +460,8 @@
<data name="frmGameManager_btnMarkAsRestored" xml:space="preserve">
<value>&amp;Mark as Restored</value>
</data>
<data name="frmGameManager_btnOpenBackupFile" xml:space="preserve">
<value>&amp;Open Backup File</value>
<data name="frmGameManager_btnOpenBackup" xml:space="preserve">
<value>&amp;Open Backup</value>
</data>
<data name="frmGameManager_btnOpenRestorePath" xml:space="preserve">
<value>O&amp;pen Restore Path</value>
@@ -553,7 +553,7 @@
<data name="frmGameManager_ErrorNoBackupData" xml:space="preserve">
<value>The selected game(s) have no backup data or can't be restored with their current configuration.</value>
</data>
<data name="frmGameManager_ErrorNoBackupExists" xml:space="preserve">
<data name="frmGameManager_ErrorNoBackupFileExists" xml:space="preserve">
<value>The backup file does not exist.</value>
</data>
<data name="frmGameManager_ErrorNoItems" xml:space="preserve">
@@ -1136,7 +1136,7 @@
<value>You must select a backup path to continue.</value>
</data>
<data name="frmStartUpWizard_ErrorNoFolderExists" xml:space="preserve">
<value>The folder you selected does not exist or is not a valid folder.</value>
<value>The selected backup location does not exist and could not be created.[BR][BR][PARAM]</value>
</data>
<data name="frmStartUpWizard_ExistingData" xml:space="preserve">
<value>Existing data was detected in the backup folder and has been imported.</value>
@@ -1682,7 +1682,7 @@
<value>You cannot choose a file located outside the current [PARAM] backup folder.</value>
</data>
<data name="frmGameManager_lblLimit" xml:space="preserve">
<value>Backup Limit</value>
<value>Backup Limit (0 = Unlimited)</value>
</data>
<data name="mgrBackup_BackupLimitExceeded" xml:space="preserve">
<value>[PARAM] was automatically removed.</value>
@@ -1697,7 +1697,7 @@
<value>This will delete all backup files for [PARAM]. This cannot be undone. [BR][BR]Do you want to continue?</value>
</data>
<data name="frmAddWizard_lblLimit" xml:space="preserve">
<value>Backup Limit</value>
<value>Backup Limit (0 = Unlimited)</value>
</data>
<data name="frmGameManager_Unknown" xml:space="preserve">
<value>Unknown</value>
@@ -2413,4 +2413,19 @@
<data name="GBM_Icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\resources\gbm.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="frmGameManager_cmsOpenBackupFile" xml:space="preserve">
<value>&amp;File</value>
</data>
<data name="frmGameManager_cmsOpenBackupFolder" xml:space="preserve">
<value>F&amp;older</value>
</data>
<data name="frmGameManager_ErrorNoBackupFolderExists" xml:space="preserve">
<value>The backup folder does not exist.</value>
</data>
<data name="frmAddWizard_Summary_NoLimit" xml:space="preserve">
<value>Unlimited</value>
</data>
<data name="frmStartUpWizard_lblStep2Warning" xml:space="preserve">
<value>You cannot return to this step after clicking Next. The Backup Location can be changed any time once Setup is complete.</value>
</data>
</root>
+17 -41
View File
@@ -1,52 +1,28 @@
Game Backup Monitor v1.1.8 Readme
Game Backup Monitor v1.1.9 Readme
http://mikemaximus.github.io/gbm-web/
gamebackupmonitor@gmail.com
March 22, 2019
June 7, 2019
New in 1.1.8
New in 1.1.9
All Platforms:
- Added the ability to backup and restore saved games that are stored in the Windows registry:
- This feature is also supported in Linux for Windows games running in Wine/Proton.
- Please see the online manual for more details on how to use this feature.
- On startup, GBM now waits up to one minute for the current backup location to become available before displaying an error message.
- The error message can now be canceled to continue waiting.
- This is useful for delayed network shares on startup or if you forgot to plug in an external backup drive.
- The "Choose Game" window now displays tags in addition to the game name when multiple configurations are detected.
- The "Backup Confirmation" window should now always get top focus after a gaming session ends.
- This fix has also been applied to other important messages to make sure they don't get hidden behind other windows.
- The Game Manager and Custom Variable Manager now use a different folder browser where applicable.
- The new browser provides better usability for power users, other areas of the app will still use the classic folder browser.
- The new browser allows Linux users to "Show Hidden Folders", which can't be done using the classic Folder Browser.
- When a UNC path is used for the backup folder, the disk space check prior to backups will be automatically disabled because it cannot be done.
- The disk space check prior to backups can now be disabled in the "Backup and Restore" settings.
- Added "Operating System" field to game configurations:
- "Windows" and "Linux" are the only valid choices at this time and only Linux users are allowed to change this field.
- Changed how GBM initilizes on startup to fix some long standing issues.
- Fixed some inconsistencies with form icons and when forms are shown in the task bar.
- GBM no longer provides a warning about "Syncing Game IDs" when importing configurations in the Game Manager.
- The warning was very confusing and is no longer relevant to most users.
- The "Sync Game IDs" Tool will continue to be available for now, but the messaging has been changed warning not to use it without reading the manual first.
Windows:
- Updated SQLite to 3.27.2
- Updated 7-Zip to 19.00
- Fixed a bug on the Game Manager that caused the "Save Entire Folder" checkbox to be unchecked anytime the "Save Path" field was changed.
- The "Add Game Wizard" now allows you to set an unlimited number of backups.
- The "Backup Limit" label has been updated to indicate that 0 means unlimited.
- The "Open Backup File" button on the Game Manager is now called "Open Backup". It now gives a choice between opening the backup file or the folder containing the file.
- Set rules are now used for backup folder and file names, regardless of the operating system GBM is running on.
- GBM now always filters out NTFS reserved characters and allows a maximum file name length of 255.
- This will prevent various problems when using a backup drive with a non-standard file system in Linux or Windows.
- These rules will be applied to new backup files or folders, existing backups not be modified.
- Made improvements to the Start-Up Wizard.
- The default backup location now includes a "Game Backup Monitor" sub-folder.
- The wizard will now automatically create the backup location if it doesn't exist.
- You can no longer attempt to Import Backup Files during the Start-Up Wizard.
Linux:
- You can now set GBM to automatically start on log-in via the "Startup" settings.
- This requires that GBM be installed via a package manager or the makefile, so any required files are in a known location. The option will be disabled otherwise.
- The "Start Minimized" option is now available in "Startup" settings.
- GBM now stores all Wine configuration data seperately from the core game configuration:
- The core configuration is no longer altered in any way when a game is detected running in Wine or Proton.
- The Wine configuration data is now automatically updated each time a game is detected, such as when running the game from a new prefix.
- This data can be viewed and manually modified on the Game Manager.
- Fixed the handling of Wine/Proton games when multiple configurations are detected.
- Fixed a crash when using "Backup Only" and "New Backups Pending" filters on the Game Manager.
- The Mono and GBM process will now exit cleanly if a critical error occurs during startup.
- GBM will no longer show the exit dialog when a critical error occurs.
- Fixed a bug that caused the "Available Disk Space" check to fail if the backup folder contained one or more spaces.
The entire version history of GBM releases is available at http://mikemaximus.github.io/gbm-web/versionhistory.html