Compare commits
36 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2623bf7f7a | ||
|
|
6230d2f888 | ||
|
|
adc857fe5e | ||
|
|
bddf07ee44 | ||
|
|
63ed3dac67 | ||
|
|
922103e5aa | ||
|
|
d0fe33e953 | ||
|
|
934d17de47 | ||
|
|
2ccc10bb9c | ||
|
|
cc1db7e524 | ||
|
|
c2a9d3ee77 | ||
|
|
65fe7214eb | ||
|
|
71d09126c2 | ||
|
|
2eb0c30702 | ||
|
|
24e1c4b92f | ||
|
|
4e7eb58463 | ||
|
|
3ae0d1ba82 | ||
|
|
6f3ed9ab81 | ||
|
|
a490e6d1f2 | ||
|
|
a5dd1d547b | ||
|
|
974aaa3638 | ||
|
|
c3b73a9953 | ||
|
|
3bd4cbd0bd | ||
|
|
5a9b3c99b3 | ||
|
|
8ce1b00a8c | ||
|
|
e4237a74bb | ||
|
|
72f520f333 | ||
|
|
dc9ec7f190 | ||
|
|
c0dbd95504 | ||
|
|
6c5c54ea1b | ||
|
|
d0c40fd341 | ||
|
|
68855077cf | ||
|
|
3184cb61ec | ||
|
|
8ebfed7ab7 | ||
|
|
229afa92fd | ||
|
|
db6c96a80b |
@@ -7,8 +7,6 @@
|
||||
Private sRelativeRestorePath As String = String.Empty
|
||||
Private dDateUpdated As DateTime = Date.Now
|
||||
Private sUpdatedBy As String = String.Empty
|
||||
Private dLastDateUpdated As DateTime = Date.Now
|
||||
Private sLastUpdatedBy As String = String.Empty
|
||||
Private sCheckSum As String = String.Empty
|
||||
|
||||
Property ID As String
|
||||
@@ -109,24 +107,6 @@
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property LastDateUpdated As DateTime
|
||||
Get
|
||||
Return dLastDateUpdated
|
||||
End Get
|
||||
Set(value As DateTime)
|
||||
dLastDateUpdated = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property LastUpdatedBy As String
|
||||
Get
|
||||
Return sLastUpdatedBy
|
||||
End Get
|
||||
Set(value As String)
|
||||
sLastUpdatedBy = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property CheckSum As String
|
||||
Get
|
||||
Return sCheckSum
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
Private sFileType As String = String.Empty
|
||||
Private bAppendTimeStamp As Boolean = False
|
||||
Private iBackupLimit As Integer = 2
|
||||
Private bCleanFolder As Boolean = False
|
||||
Private sExcludeList As String = String.Empty
|
||||
Private sProcessPath As String = String.Empty
|
||||
Private sIcon As String = String.Empty
|
||||
@@ -127,6 +128,15 @@
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property CleanFolder As Boolean
|
||||
Get
|
||||
Return bCleanFolder
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
bCleanFolder = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property ExcludeList As String
|
||||
Set(value As String)
|
||||
sExcludeList = value
|
||||
@@ -268,6 +278,9 @@
|
||||
If FolderSave <> oGame.FolderSave Then
|
||||
Return False
|
||||
End If
|
||||
If CleanFolder <> oGame.CleanFolder Then
|
||||
Return False
|
||||
End If
|
||||
If AppendTimeStamp <> oGame.AppendTimeStamp Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
Public Class clsRestoreCache
|
||||
Private sName As String
|
||||
Private sPath As String
|
||||
|
||||
Property Name As String
|
||||
Get
|
||||
Return sName
|
||||
End Get
|
||||
Set(value As String)
|
||||
sName = 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
|
||||
Generated
+18
-5
@@ -28,6 +28,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.chkCleanFolder = New System.Windows.Forms.CheckBox()
|
||||
Me.lblLimit = New System.Windows.Forms.Label()
|
||||
Me.nudLimit = New System.Windows.Forms.NumericUpDown()
|
||||
Me.btnExclude = New System.Windows.Forms.Button()
|
||||
@@ -151,6 +152,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.chkCleanFolder)
|
||||
Me.grpConfig.Controls.Add(Me.lblLimit)
|
||||
Me.grpConfig.Controls.Add(Me.nudLimit)
|
||||
Me.grpConfig.Controls.Add(Me.btnExclude)
|
||||
@@ -176,13 +178,23 @@ Partial Class frmGameManager
|
||||
Me.grpConfig.TabStop = False
|
||||
Me.grpConfig.Text = "Configuration"
|
||||
'
|
||||
'chkCleanFolder
|
||||
'
|
||||
Me.chkCleanFolder.AutoSize = True
|
||||
Me.chkCleanFolder.Location = New System.Drawing.Point(329, 101)
|
||||
Me.chkCleanFolder.Name = "chkCleanFolder"
|
||||
Me.chkCleanFolder.Size = New System.Drawing.Size(136, 17)
|
||||
Me.chkCleanFolder.TabIndex = 11
|
||||
Me.chkCleanFolder.Text = "Delete folder on restore"
|
||||
Me.chkCleanFolder.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblLimit
|
||||
'
|
||||
Me.lblLimit.AutoSize = True
|
||||
Me.lblLimit.Location = New System.Drawing.Point(375, 130)
|
||||
Me.lblLimit.Name = "lblLimit"
|
||||
Me.lblLimit.Size = New System.Drawing.Size(68, 13)
|
||||
Me.lblLimit.TabIndex = 13
|
||||
Me.lblLimit.TabIndex = 14
|
||||
Me.lblLimit.Text = "Backup Limit"
|
||||
Me.lblLimit.Visible = False
|
||||
'
|
||||
@@ -192,7 +204,7 @@ Partial Class frmGameManager
|
||||
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 = 12
|
||||
Me.nudLimit.TabIndex = 13
|
||||
Me.nudLimit.Value = New Decimal(New Integer() {2, 0, 0, 0})
|
||||
Me.nudLimit.Visible = False
|
||||
'
|
||||
@@ -293,7 +305,7 @@ Partial Class frmGameManager
|
||||
Me.chkTimeStamp.Location = New System.Drawing.Point(190, 129)
|
||||
Me.chkTimeStamp.Name = "chkTimeStamp"
|
||||
Me.chkTimeStamp.Size = New System.Drawing.Size(133, 17)
|
||||
Me.chkTimeStamp.TabIndex = 11
|
||||
Me.chkTimeStamp.TabIndex = 12
|
||||
Me.chkTimeStamp.Text = "Save multiple backups"
|
||||
Me.chkTimeStamp.UseVisualStyleBackColor = True
|
||||
'
|
||||
@@ -718,10 +730,10 @@ Partial Class frmGameManager
|
||||
Me.optPendingRestores.AutoSize = True
|
||||
Me.optPendingRestores.Location = New System.Drawing.Point(6, 64)
|
||||
Me.optPendingRestores.Name = "optPendingRestores"
|
||||
Me.optPendingRestores.Size = New System.Drawing.Size(122, 17)
|
||||
Me.optPendingRestores.Size = New System.Drawing.Size(134, 17)
|
||||
Me.optPendingRestores.TabIndex = 2
|
||||
Me.optPendingRestores.TabStop = True
|
||||
Me.optPendingRestores.Text = "New Saves Pending"
|
||||
Me.optPendingRestores.Text = "New Backups Pending"
|
||||
Me.optPendingRestores.UseVisualStyleBackColor = True
|
||||
'
|
||||
'optAllGames
|
||||
@@ -928,4 +940,5 @@ Partial Class frmGameManager
|
||||
Friend WithEvents cmsDeleteBackup As ContextMenuStrip
|
||||
Friend WithEvents cmsDeleteOne As ToolStripMenuItem
|
||||
Friend WithEvents cmsDeleteAll As ToolStripMenuItem
|
||||
Friend WithEvents chkCleanFolder As CheckBox
|
||||
End Class
|
||||
|
||||
@@ -470,6 +470,7 @@ Public Class frmGameManager
|
||||
frm.ShowDialog()
|
||||
|
||||
txtBox.Text = frm.BuilderString
|
||||
VerifyCleanFolder()
|
||||
End Sub
|
||||
|
||||
Private Function FindRestorePath() As Boolean
|
||||
@@ -714,6 +715,7 @@ Public Class frmGameManager
|
||||
txtFileType.Text = oApp.FileType
|
||||
txtExclude.Text = oApp.ExcludeList
|
||||
chkFolderSave.Checked = oApp.FolderSave
|
||||
chkCleanFolder.Checked = oApp.CleanFolder
|
||||
chkTimeStamp.Checked = oApp.AppendTimeStamp
|
||||
nudLimit.Value = oApp.BackupLimit
|
||||
chkEnabled.Checked = oApp.Enabled
|
||||
@@ -826,6 +828,7 @@ Public Class frmGameManager
|
||||
WipeControls(grpConfig.Controls)
|
||||
WipeControls(grpExtra.Controls)
|
||||
WipeControls(grpStats.Controls)
|
||||
chkCleanFolder.Enabled = False
|
||||
pbIcon.Image = Icon_Unknown
|
||||
chkEnabled.Enabled = True
|
||||
chkMonitorOnly.Enabled = True
|
||||
@@ -982,6 +985,7 @@ Public Class frmGameManager
|
||||
Else
|
||||
btnInclude.Enabled = True
|
||||
End If
|
||||
VerifyCleanFolder()
|
||||
End Sub
|
||||
|
||||
Private Sub TimeStampModeChange()
|
||||
@@ -996,6 +1000,17 @@ Public Class frmGameManager
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub VerifyCleanFolder()
|
||||
If Not bIsLoading Then
|
||||
If chkFolderSave.Checked = True And txtExclude.Text = String.Empty And txtSavePath.Text <> String.Empty Then
|
||||
chkCleanFolder.Enabled = True
|
||||
Else
|
||||
chkCleanFolder.Checked = False
|
||||
chkCleanFolder.Enabled = False
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub EditApp()
|
||||
eCurrentMode = eModes.Edit
|
||||
ModeChange()
|
||||
@@ -1062,6 +1077,7 @@ Public Class frmGameManager
|
||||
oApp.FileType = txtFileType.Text
|
||||
oApp.ExcludeList = txtExclude.Text
|
||||
oApp.FolderSave = chkFolderSave.Checked
|
||||
oApp.CleanFolder = chkCleanFolder.Checked
|
||||
oApp.AppendTimeStamp = chkTimeStamp.Checked
|
||||
oApp.BackupLimit = nudLimit.Value
|
||||
oApp.Enabled = chkEnabled.Checked
|
||||
@@ -1144,6 +1160,7 @@ Public Class frmGameManager
|
||||
eCurrentMode = eModes.View
|
||||
FillData()
|
||||
ModeChange()
|
||||
VerifyCleanFolder()
|
||||
ElseIf lstGames.SelectedItems.Count > 1 Then
|
||||
eCurrentMode = eModes.MultiSelect
|
||||
ModeChange()
|
||||
@@ -1411,6 +1428,7 @@ Public Class frmGameManager
|
||||
lblName.Text = frmGameManager_lblName
|
||||
chkTimeStamp.Text = frmGameManager_chkTimeStamp
|
||||
chkFolderSave.Text = frmGameManager_chkFolderSave
|
||||
chkCleanFolder.Text = frmGameManager_chkCleanFolder
|
||||
btnBackup.Text = frmGameManager_btnBackup
|
||||
btnClose.Text = frmGameManager_btnClose
|
||||
btnDelete.Text = frmGameManager_btnDelete
|
||||
@@ -1529,7 +1547,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(109, 11), ToolStripDropDownDirection.AboveRight)
|
||||
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)
|
||||
Else
|
||||
DeleteBackup()
|
||||
End If
|
||||
@@ -1585,7 +1603,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(70, 11), ToolStripDropDownDirection.AboveRight)
|
||||
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)
|
||||
End Sub
|
||||
|
||||
Private Sub cmsOfficial_Click(sender As Object, e As EventArgs) Handles cmsOfficial.Click
|
||||
@@ -1607,6 +1625,10 @@ Public Class frmGameManager
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub txtSavePath_TextChanged(sender As Object, e As EventArgs) Handles txtSavePath.TextChanged
|
||||
VerifyCleanFolder()
|
||||
End Sub
|
||||
|
||||
Private Sub tmFilterTimer_Tick(sender As Object, ByVal e As EventArgs) Handles tmFilterTimer.Tick
|
||||
lstGames.DataSource = Nothing
|
||||
FormatAndFillList()
|
||||
@@ -1617,5 +1639,4 @@ Public Class frmGameManager
|
||||
Private Sub frmGameManager_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
|
||||
txtQuickFilter.Focus()
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
@@ -226,6 +226,8 @@ Public Class frmIncludeExclude
|
||||
sNewString = InputBox(frmIncludeExclude_RawEditInfo, mgrCommon.FormatString(frmIncludeExclude_RawEditTitle, FormName), sCurrentString)
|
||||
If sNewString <> String.Empty Then
|
||||
ParseBuilderString(sNewString)
|
||||
Else
|
||||
lstBuilder.Clear()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
Generated
+2
-2
@@ -229,7 +229,7 @@ Partial Class frmMain
|
||||
Me.txtLog.Name = "txtLog"
|
||||
Me.txtLog.ReadOnly = True
|
||||
Me.txtLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
|
||||
Me.txtLog.Size = New System.Drawing.Size(500, 177)
|
||||
Me.txtLog.Size = New System.Drawing.Size(500, 186)
|
||||
Me.txtLog.TabIndex = 10
|
||||
Me.txtLog.TabStop = False
|
||||
'
|
||||
@@ -523,6 +523,7 @@ Partial Class frmMain
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.AutoSize = True
|
||||
Me.ClientSize = New System.Drawing.Size(524, 401)
|
||||
Me.Controls.Add(Me.pbTime)
|
||||
Me.Controls.Add(Me.lblStatus3)
|
||||
@@ -538,7 +539,6 @@ Partial Class frmMain
|
||||
Me.Controls.Add(Me.gMonStatusStrip)
|
||||
Me.Controls.Add(Me.gMonMainMenu)
|
||||
Me.Controls.Add(Me.txtLog)
|
||||
Me.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
|
||||
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
|
||||
Me.KeyPreview = True
|
||||
|
||||
+210
-46
@@ -1,4 +1,5 @@
|
||||
Imports GBM.My.Resources
|
||||
Imports System.IO
|
||||
|
||||
'Name: frmMain
|
||||
'Description: Game Backup Monitor Main Screen
|
||||
@@ -38,12 +39,19 @@ Public Class frmMain
|
||||
Private sPriorPath As String
|
||||
Private sPriorCompany As String
|
||||
Private sPriorVersion As String
|
||||
Private iFormHeight As Integer
|
||||
Private iLogSpacer As Integer
|
||||
Private iRestoreTimeOut As Integer
|
||||
|
||||
'Developer Debug Flags
|
||||
Private bProcessDebugMode As Boolean = False
|
||||
|
||||
WithEvents oFileWatcher As New System.IO.FileSystemWatcher
|
||||
WithEvents oFileWatcher As New FileSystemWatcher
|
||||
|
||||
'Timers - There may only be one System.Windows.Forms.Timer and it must be tmScanTimer.
|
||||
WithEvents tmScanTimer As New Timer
|
||||
WithEvents tmRestoreCheck As New System.Timers.Timer
|
||||
WithEvents tmFileWatcherQueue As New System.Timers.Timer
|
||||
|
||||
Public WithEvents oProcess As New mgrProcesses
|
||||
Public WithEvents oBackup As New mgrBackup
|
||||
@@ -51,6 +59,7 @@ Public Class frmMain
|
||||
Public hshScanList As Hashtable
|
||||
Public oSettings As New mgrSettings
|
||||
|
||||
Delegate Sub UpdateNotifierCallBack(ByVal iCount As Integer)
|
||||
Delegate Sub UpdateLogCallBack(ByVal sLogUpdate As String, ByVal bTrayUpdate As Boolean, ByVal objIcon As System.Windows.Forms.ToolTipIcon, ByVal bTimeStamp As Boolean)
|
||||
Delegate Sub WorkingGameInfoCallBack(ByVal sTitle As String, ByVal sStatus1 As String, ByVal sStatus2 As String, ByVal sStatus3 As String)
|
||||
Delegate Sub UpdateStatusCallBack(ByVal sStatus As String)
|
||||
@@ -77,7 +86,7 @@ Public Class frmMain
|
||||
Dim sStatus3 As String
|
||||
|
||||
'Build Info
|
||||
sStatus1 = IO.Path.GetFileName(oRestoreInfo.FileName)
|
||||
sStatus1 = Path.GetFileName(oRestoreInfo.FileName)
|
||||
sStatus2 = mgrCommon.FormatString(frmMain_UpdatedBy, New String() {oRestoreInfo.UpdatedBy, oRestoreInfo.DateUpdated})
|
||||
If oRestoreInfo.AbsolutePath Then
|
||||
sStatus3 = oRestoreInfo.RestorePath
|
||||
@@ -99,7 +108,7 @@ Public Class frmMain
|
||||
If oGame.AbsolutePath Then
|
||||
sStatus2 = oGame.Path
|
||||
Else
|
||||
sStatus2 = oGame.ProcessPath & System.IO.Path.DirectorySeparatorChar & oGame.Path
|
||||
sStatus2 = oGame.ProcessPath & Path.DirectorySeparatorChar & oGame.Path
|
||||
End If
|
||||
sStatus3 = String.Empty
|
||||
|
||||
@@ -179,7 +188,7 @@ Public Class frmMain
|
||||
End If
|
||||
|
||||
If bPathVerified Then
|
||||
If oRestore.CheckRestorePrereq(oRestoreInfo) Then
|
||||
If oRestore.CheckRestorePrereq(oRestoreInfo, oGame.CleanFolder) Then
|
||||
oReadyList.Add(oRestoreInfo)
|
||||
End If
|
||||
End If
|
||||
@@ -326,15 +335,17 @@ Public Class frmMain
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub CheckRestore()
|
||||
Dim slRestoreData As SortedList = mgrRestore.CompareManifests()
|
||||
Dim sNotification As String
|
||||
|
||||
If slRestoreData.Count > 0 Then
|
||||
If slRestoreData.Count > 1 Then
|
||||
sNotification = mgrCommon.FormatString(frmMain_NewSaveNotificationMulti, slRestoreData.Count)
|
||||
Private Sub UpdateNotifier(ByVal iCount As Integer)
|
||||
'Thread Safe
|
||||
If Me.InvokeRequired = True Then
|
||||
Dim d As New UpdateNotifierCallBack(AddressOf UpdateNotifier)
|
||||
Me.Invoke(d, New Object() {iCount})
|
||||
Else
|
||||
Dim sNotification As String
|
||||
If iCount > 1 Then
|
||||
sNotification = mgrCommon.FormatString(frmMain_NewSaveNotificationMulti, iCount)
|
||||
Else
|
||||
sNotification = mgrCommon.FormatString(frmMain_NewSaveNotificationSingle, slRestoreData.Count)
|
||||
sNotification = mgrCommon.FormatString(frmMain_NewSaveNotificationSingle, iCount)
|
||||
End If
|
||||
gMonNotification.Image = Icon_Inbox
|
||||
gMonTrayNotification.Image = Icon_Inbox
|
||||
@@ -345,6 +356,149 @@ Public Class frmMain
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub StartRestoreCheck()
|
||||
iRestoreTimeOut = -1
|
||||
tmRestoreCheck.Interval = 60000
|
||||
tmRestoreCheck.AutoReset = True
|
||||
tmRestoreCheck.Start()
|
||||
AutoRestoreCheck()
|
||||
End Sub
|
||||
|
||||
Private Sub AutoRestoreCheck()
|
||||
Dim slRestoreData As SortedList = mgrRestore.CompareManifests()
|
||||
Dim sNotReady As New List(Of String)
|
||||
Dim sNotInstalled As New List(Of String)
|
||||
Dim sNoCheckSum As New List(Of String)
|
||||
Dim oBackup As clsBackup
|
||||
Dim sFileName As String
|
||||
Dim sExtractPath As String
|
||||
Dim bFinished As Boolean = True
|
||||
Dim hshRestore As Hashtable
|
||||
Dim hshGames As Hashtable
|
||||
Dim oGame As clsGame
|
||||
Dim sGame As String
|
||||
|
||||
'Shut down the timer and bail out if there's nothing to do
|
||||
If slRestoreData.Count = 0 Then
|
||||
tmRestoreCheck.Stop()
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
If oSettings.AutoMark Or oSettings.AutoRestore Then
|
||||
'Increment Timer
|
||||
iRestoreTimeOut += 1
|
||||
|
||||
'Check backup files
|
||||
For Each de As DictionaryEntry In slRestoreData
|
||||
oBackup = DirectCast(de.Value, clsBackup)
|
||||
|
||||
'Check if backup file is ready to restore
|
||||
If oBackup.CheckSum <> String.Empty Then
|
||||
sFileName = oSettings.BackupFolder & Path.DirectorySeparatorChar & oBackup.FileName
|
||||
If mgrHash.Generate_SHA256_Hash(sFileName) <> oBackup.CheckSum Then
|
||||
sNotReady.Add(de.Key)
|
||||
bFinished = False
|
||||
End If
|
||||
Else
|
||||
sNoCheckSum.Add(de.Key)
|
||||
End If
|
||||
|
||||
'Check if the restore location exists, if not we assume the game is not installed and should be auto-marked.
|
||||
hshGames = mgrMonitorList.DoListGetbyName(de.Key)
|
||||
If hshGames.Count = 1 Then
|
||||
oGame = DirectCast(hshGames(0), clsGame)
|
||||
mgrRestore.DoPathOverride(oBackup, oGame)
|
||||
If oGame.ProcessPath <> String.Empty Then
|
||||
oBackup.RelativeRestorePath = oGame.ProcessPath & Path.DirectorySeparatorChar & oBackup.RestorePath
|
||||
End If
|
||||
End If
|
||||
|
||||
If oBackup.AbsolutePath Then
|
||||
sExtractPath = oBackup.RestorePath
|
||||
Else
|
||||
sExtractPath = oBackup.RelativeRestorePath
|
||||
End If
|
||||
|
||||
If Not Directory.Exists(sExtractPath) Then
|
||||
If oSettings.AutoMark Then
|
||||
If mgrManifest.DoGlobalManifestCheck(de.Key, mgrSQLite.Database.Local) Then
|
||||
mgrManifest.DoManifestUpdateByName(de.Value, mgrSQLite.Database.Local)
|
||||
Else
|
||||
mgrManifest.DoManifestAdd(de.Value, mgrSQLite.Database.Local)
|
||||
End If
|
||||
End If
|
||||
sNotInstalled.Add(de.Key)
|
||||
End If
|
||||
Next
|
||||
|
||||
'Remove any backup files that are not ready
|
||||
For Each s As String In sNotReady
|
||||
slRestoreData.Remove(s)
|
||||
UpdateLog(mgrCommon.FormatString(frmMain_RestoreNotReady, s), False, ToolTipIcon.Info, True)
|
||||
Next
|
||||
|
||||
'Remove any backup files that should not be automatically restored
|
||||
For Each s As String In sNotInstalled
|
||||
slRestoreData.Remove(s)
|
||||
If oSettings.AutoMark Then
|
||||
UpdateLog(mgrCommon.FormatString(frmMain_AutoMark, s), False, ToolTipIcon.Info, True)
|
||||
Else
|
||||
UpdateLog(mgrCommon.FormatString(frmMain_NoAutoMark, s), False, ToolTipIcon.Info, True)
|
||||
End If
|
||||
Next
|
||||
For Each s As String In sNoCheckSum
|
||||
slRestoreData.Remove(s)
|
||||
UpdateLog(mgrCommon.FormatString(frmMain_NoCheckSum, s), False, ToolTipIcon.Info, True)
|
||||
Next
|
||||
|
||||
'Automatically restore backup files
|
||||
If oSettings.AutoRestore Then
|
||||
If slRestoreData.Count > 0 Then
|
||||
hshRestore = New Hashtable
|
||||
sGame = String.Empty
|
||||
For Each de As DictionaryEntry In slRestoreData
|
||||
hshGames = mgrMonitorList.DoListGetbyName(de.Key)
|
||||
If hshGames.Count = 1 Then
|
||||
oGame = DirectCast(hshGames(0), clsGame)
|
||||
sGame = oGame.CroppedName
|
||||
hshRestore.Add(oGame, de.Value)
|
||||
Else
|
||||
UpdateLog(mgrCommon.FormatString(frmMain_AutoRestoreFailure, de.Key), False, ToolTipIcon.Info, True)
|
||||
End If
|
||||
Next
|
||||
|
||||
'Handle notifications
|
||||
If oSettings.RestoreOnLaunch Then
|
||||
If slRestoreData.Count > 1 Then
|
||||
UpdateLog(mgrCommon.FormatString(frmMain_RestoreNotificationMulti, slRestoreData.Count), True, ToolTipIcon.Info, True)
|
||||
Else
|
||||
UpdateLog(mgrCommon.FormatString(frmMain_RestoreNotificationSingle, sGame), True, ToolTipIcon.Info, True)
|
||||
End If
|
||||
End If
|
||||
|
||||
RunRestore(hshRestore)
|
||||
End If
|
||||
End If
|
||||
|
||||
'Shutdown if we are finished
|
||||
If bFinished Then
|
||||
tmRestoreCheck.Stop()
|
||||
End If
|
||||
|
||||
'Time out after 15 minutes
|
||||
If iRestoreTimeOut = 15 Then
|
||||
tmRestoreCheck.Stop()
|
||||
End If
|
||||
End If
|
||||
|
||||
'Update the menu notifier if we aren't using auto restore
|
||||
If oSettings.RestoreOnLaunch And Not oSettings.AutoRestore Then
|
||||
If slRestoreData.Count > 0 Then
|
||||
UpdateNotifier(slRestoreData.Count)
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
'Functions handling the display of game information
|
||||
Private Sub SetIcon()
|
||||
Dim sIcon As String
|
||||
@@ -362,7 +516,7 @@ Public Class frmMain
|
||||
End If
|
||||
|
||||
Try
|
||||
fbBrowser.InitialDirectory = IO.Path.GetDirectoryName(oProcess.FoundProcess.MainModule.FileName)
|
||||
fbBrowser.InitialDirectory = Path.GetDirectoryName(oProcess.FoundProcess.MainModule.FileName)
|
||||
Catch ex As Exception
|
||||
fbBrowser.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
|
||||
End Try
|
||||
@@ -370,7 +524,7 @@ Public Class frmMain
|
||||
|
||||
If fbBrowser.ShowDialog() = Windows.Forms.DialogResult.OK Then
|
||||
sIcon = fbBrowser.FileName
|
||||
If IO.File.Exists(sIcon) Then
|
||||
If File.Exists(sIcon) Then
|
||||
oProcess.GameInfo.Icon = sIcon
|
||||
pbIcon.Image = Image.FromFile(sIcon)
|
||||
mgrMonitorList.DoListUpdate(oProcess.GameInfo)
|
||||
@@ -461,7 +615,7 @@ Public Class frmMain
|
||||
End Try
|
||||
|
||||
'Check for a custom icon & details
|
||||
If IO.File.Exists(oProcess.GameInfo.Icon) Then
|
||||
If File.Exists(oProcess.GameInfo.Icon) Then
|
||||
pbIcon.Image = Image.FromFile(oProcess.GameInfo.Icon)
|
||||
End If
|
||||
If sFileName = String.Empty Then
|
||||
@@ -650,6 +804,7 @@ Public Class frmMain
|
||||
bProcessDebugMode = bDebugEnable
|
||||
mgrCommon.ShowMessage(frmMain_CommandSucess, MsgBoxStyle.Exclamation)
|
||||
End Select
|
||||
|
||||
Case Else
|
||||
mgrCommon.ShowMessage(frmMain_ErrorCommandInvalid, sMainCommand, MsgBoxStyle.Exclamation)
|
||||
End Select
|
||||
@@ -659,9 +814,9 @@ Public Class frmMain
|
||||
|
||||
Private Sub OpenAbout()
|
||||
Dim iProcessType As System.Reflection.ProcessorArchitecture = System.Reflection.AssemblyName.GetAssemblyName(Application.ExecutablePath()).ProcessorArchitecture
|
||||
Dim sVersion As String = My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor
|
||||
Dim sVersion As String = My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor & "." & My.Application.Info.Version.Build
|
||||
Dim sProcessType = [Enum].GetName(GetType(System.Reflection.ProcessorArchitecture), iProcessType)
|
||||
Dim sRevision As String = My.Application.Info.Version.Build & "." & My.Application.Info.Version.Revision
|
||||
Dim sRevision As String = My.Application.Info.Version.Revision
|
||||
Dim sConstCopyright As String = Chr(169) & mgrCommon.FormatString(App_Copyright, Now.Year.ToString)
|
||||
|
||||
mgrCommon.ShowMessage(frmMain_About, New String() {sVersion, sProcessType, sRevision, sConstCopyright}, MsgBoxStyle.Information)
|
||||
@@ -754,8 +909,8 @@ Public Class frmMain
|
||||
End Sub
|
||||
|
||||
Private Sub CheckForNewBackups()
|
||||
If oSettings.RestoreOnLaunch Then
|
||||
CheckRestore()
|
||||
If oSettings.RestoreOnLaunch Or oSettings.AutoRestore Or oSettings.AutoMark Then
|
||||
StartRestoreCheck()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
@@ -768,32 +923,37 @@ Public Class frmMain
|
||||
End Sub
|
||||
|
||||
Private Sub StartSyncWatcher()
|
||||
If oSettings.Sync Then
|
||||
oFileWatcher.EnableRaisingEvents = True
|
||||
End If
|
||||
oFileWatcher.EnableRaisingEvents = True
|
||||
End Sub
|
||||
|
||||
Private Sub StopSyncWatcher()
|
||||
If oSettings.Sync Then
|
||||
oFileWatcher.EnableRaisingEvents = False
|
||||
End If
|
||||
oFileWatcher.EnableRaisingEvents = False
|
||||
End Sub
|
||||
|
||||
Private Sub SetupSyncWatcher()
|
||||
If oSettings.Sync Then
|
||||
oFileWatcher.Path = oSettings.BackupFolder
|
||||
oFileWatcher.Filter = "gbm.s3db"
|
||||
oFileWatcher.NotifyFilter = IO.NotifyFilters.LastWrite
|
||||
End If
|
||||
oFileWatcher.Path = oSettings.BackupFolder
|
||||
oFileWatcher.Filter = "gbm.s3db"
|
||||
oFileWatcher.NotifyFilter = NotifyFilters.LastWrite
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub HandleSyncWatcher() Handles oFileWatcher.Changed
|
||||
Private Sub QueueSyncWatcher() Handles oFileWatcher.Changed
|
||||
tmFileWatcherQueue.Stop()
|
||||
tmFileWatcherQueue.AutoReset = False
|
||||
tmFileWatcherQueue.Interval = 30000
|
||||
tmFileWatcherQueue.Start()
|
||||
End Sub
|
||||
|
||||
Private Sub HandleSyncWatcher() Handles tmFileWatcherQueue.Elapsed
|
||||
tmFileWatcherQueue.Stop()
|
||||
StopSyncWatcher()
|
||||
If oSettings.Sync Then
|
||||
UpdateLog(frmMain_MasterListChanged, False, ToolTipIcon.Info, True)
|
||||
SyncGameSettings()
|
||||
LoadGameSettings()
|
||||
CheckForNewBackups()
|
||||
End If
|
||||
CheckForNewBackups()
|
||||
StartSyncWatcher()
|
||||
End Sub
|
||||
|
||||
Private Sub SyncGameSettings()
|
||||
@@ -870,21 +1030,14 @@ Public Class frmMain
|
||||
Private Sub ToggleLog()
|
||||
If bLogToggle = False Then
|
||||
txtLog.Visible = True
|
||||
|
||||
'Unix Handler
|
||||
If mgrCommon.IsUnix Then
|
||||
Me.Size = New System.Drawing.Size(Me.Size.Width, 440)
|
||||
Else
|
||||
Me.Size = New System.Drawing.Size(Me.Size.Width, 425)
|
||||
End If
|
||||
|
||||
Me.Size = New System.Drawing.Size(Me.Size.Width, iFormHeight)
|
||||
bLogToggle = True
|
||||
btnLogToggle.Text = frmMain_btnToggleLog_Hide
|
||||
txtLog.Select(txtLog.TextLength, 0)
|
||||
txtLog.ScrollToCaret()
|
||||
Else
|
||||
txtLog.Visible = False
|
||||
Me.Size = New System.Drawing.Size(Me.Size.Width, 245)
|
||||
Me.Size = New System.Drawing.Size(Me.Size.Width, Me.Size.Height - (txtLog.Height + iLogSpacer))
|
||||
bLogToggle = False
|
||||
btnLogToggle.Text = frmMain_btnToggleLog_Show
|
||||
End If
|
||||
@@ -1082,7 +1235,7 @@ Public Class frmMain
|
||||
txtLog.ScrollToCaret()
|
||||
gMonTray.BalloonTipText = sLogUpdate
|
||||
gMonTray.BalloonTipIcon = objIcon
|
||||
If bTrayUpdate Then gMonTray.ShowBalloonTip(5000)
|
||||
If bTrayUpdate Then gMonTray.ShowBalloonTip(10000)
|
||||
End If
|
||||
Application.DoEvents()
|
||||
End Sub
|
||||
@@ -1104,6 +1257,9 @@ Public Class frmMain
|
||||
End Sub
|
||||
|
||||
Private Sub SetForm()
|
||||
'Disable Autosize in Linux (Mono prevents manual resizing when this is enabled)
|
||||
If mgrCommon.IsUnix Then Me.AutoSize = False
|
||||
|
||||
'Set Form Name
|
||||
Me.Name = App_NameLong
|
||||
|
||||
@@ -1166,7 +1322,9 @@ Public Class frmMain
|
||||
lblLastAction.Text = String.Empty
|
||||
pbTime.SizeMode = PictureBoxSizeMode.AutoSize
|
||||
pbTime.Image = Icon_Clock
|
||||
Me.Size = New System.Drawing.Size(Me.Size.Width, 245)
|
||||
iFormHeight = Me.Size.Height
|
||||
iLogSpacer = gMonStatusStrip.Location.Y - (txtLog.Location.Y + txtLog.Height)
|
||||
Me.Size = New System.Drawing.Size(Me.Size.Width, Me.Size.Height - (txtLog.Height + iLogSpacer))
|
||||
AddHandler mgrMonitorList.UpdateLog, AddressOf UpdateLog
|
||||
ResetGameInfo()
|
||||
End Sub
|
||||
@@ -1261,9 +1419,9 @@ Public Class frmMain
|
||||
Dim sSettingsRoot As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "/gbm"
|
||||
Dim sDBLocation As String = sSettingsRoot & "/gbm.s3db"
|
||||
|
||||
If Not IO.Directory.Exists(sSettingsRoot) Then
|
||||
If Not Directory.Exists(sSettingsRoot) Then
|
||||
Try
|
||||
IO.Directory.CreateDirectory(sSettingsRoot)
|
||||
Directory.CreateDirectory(sSettingsRoot)
|
||||
Catch ex As Exception
|
||||
mgrCommon.ShowMessage(frmMain_ErrorSettingsFolder, ex.Message, MsgBoxStyle.Critical)
|
||||
bShutdown = True
|
||||
@@ -1271,7 +1429,7 @@ Public Class frmMain
|
||||
End Try
|
||||
End If
|
||||
|
||||
If Not IO.File.Exists(sDBLocation) Then bFirstRun = True
|
||||
If Not File.Exists(sDBLocation) Then bFirstRun = True
|
||||
End Sub
|
||||
|
||||
Private Sub VerifyDBVersion(ByVal iDB As mgrSQLite.Database)
|
||||
@@ -1524,6 +1682,12 @@ Public Class frmMain
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub AutoRestoreEventProcessor(myObject As Object, ByVal myEventArgs As EventArgs) Handles tmRestoreCheck.Elapsed
|
||||
If eCurrentStatus <> eStatus.Paused Then
|
||||
AutoRestoreCheck()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub ScanTimerEventProcessor(myObject As Object, ByVal myEventArgs As EventArgs) Handles tmScanTimer.Tick
|
||||
Dim bNeedsPath As Boolean = False
|
||||
Dim bContinue As Boolean = True
|
||||
|
||||
Generated
-105
@@ -1,105 +0,0 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class frmManifestViewer
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Me.dgView = New System.Windows.Forms.DataGridView()
|
||||
Me.btnCancel = New System.Windows.Forms.Button()
|
||||
Me.lblError = New System.Windows.Forms.Label()
|
||||
Me.fbBrowser = New System.Windows.Forms.FolderBrowserDialog()
|
||||
Me.cboManifest = New System.Windows.Forms.ComboBox()
|
||||
CType(Me.dgView, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'dgView
|
||||
'
|
||||
Me.dgView.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.dgView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill
|
||||
Me.dgView.BackgroundColor = System.Drawing.SystemColors.Window
|
||||
Me.dgView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
|
||||
Me.dgView.Location = New System.Drawing.Point(12, 12)
|
||||
Me.dgView.Name = "dgView"
|
||||
Me.dgView.RowHeadersVisible = False
|
||||
Me.dgView.Size = New System.Drawing.Size(960, 338)
|
||||
Me.dgView.TabIndex = 0
|
||||
'
|
||||
'btnCancel
|
||||
'
|
||||
Me.btnCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnCancel.Location = New System.Drawing.Point(897, 356)
|
||||
Me.btnCancel.Name = "btnCancel"
|
||||
Me.btnCancel.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnCancel.TabIndex = 2
|
||||
Me.btnCancel.Text = "C&lose"
|
||||
Me.btnCancel.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblError
|
||||
'
|
||||
Me.lblError.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
||||
Me.lblError.AutoSize = True
|
||||
Me.lblError.Location = New System.Drawing.Point(139, 362)
|
||||
Me.lblError.Name = "lblError"
|
||||
Me.lblError.Size = New System.Drawing.Size(54, 13)
|
||||
Me.lblError.TabIndex = 5
|
||||
Me.lblError.Text = "Info Label"
|
||||
'
|
||||
'fbBrowser
|
||||
'
|
||||
Me.fbBrowser.ShowNewFolderButton = False
|
||||
'
|
||||
'cboManifest
|
||||
'
|
||||
Me.cboManifest.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
||||
Me.cboManifest.FormattingEnabled = True
|
||||
Me.cboManifest.Location = New System.Drawing.Point(12, 359)
|
||||
Me.cboManifest.Name = "cboManifest"
|
||||
Me.cboManifest.Size = New System.Drawing.Size(121, 21)
|
||||
Me.cboManifest.TabIndex = 6
|
||||
'
|
||||
'frmManifestViewer
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(984, 392)
|
||||
Me.Controls.Add(Me.cboManifest)
|
||||
Me.Controls.Add(Me.lblError)
|
||||
Me.Controls.Add(Me.btnCancel)
|
||||
Me.Controls.Add(Me.dgView)
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "frmManifestViewer"
|
||||
Me.ShowIcon = False
|
||||
Me.ShowInTaskbar = False
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
|
||||
Me.Text = "Manifest Viewer"
|
||||
CType(Me.dgView, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents dgView As System.Windows.Forms.DataGridView
|
||||
Friend WithEvents btnCancel As System.Windows.Forms.Button
|
||||
Friend WithEvents lblError As System.Windows.Forms.Label
|
||||
Friend WithEvents fbBrowser As System.Windows.Forms.FolderBrowserDialog
|
||||
Friend WithEvents cboManifest As System.Windows.Forms.ComboBox
|
||||
End Class
|
||||
@@ -1,123 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="fbBrowser.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -1,149 +0,0 @@
|
||||
Public Class frmManifestViewer
|
||||
|
||||
Private bShutdown As Boolean = False
|
||||
Private oLocalManifest As SortedList
|
||||
Private oRemoteManfiest As SortedList
|
||||
Private oRestoreInfo As clsBackup
|
||||
Private oDataTable As DataTable
|
||||
|
||||
Property RestoreInfo As clsBackup
|
||||
Get
|
||||
Return oRestoreInfo
|
||||
End Get
|
||||
Set(value As clsBackup)
|
||||
oRestoreInfo = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property LocalManifestData As SortedList
|
||||
Get
|
||||
Return oLocalManifest
|
||||
End Get
|
||||
Set(value As SortedList)
|
||||
oLocalManifest = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property RemoteManifestData As SortedList
|
||||
Get
|
||||
Return oRemoteManfiest
|
||||
End Get
|
||||
Set(value As SortedList)
|
||||
oRemoteManfiest = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Sub FormatManifest(ByVal iManifest As Integer)
|
||||
Dim oRow As Object()
|
||||
Dim oLoadData As SortedList
|
||||
|
||||
If iManifest = 1 Then
|
||||
oLoadData = LocalManifestData
|
||||
Else
|
||||
oLoadData = RemoteManifestData
|
||||
End If
|
||||
|
||||
oDataTable = New DataTable
|
||||
|
||||
'Setup Columns
|
||||
oDataTable.Columns.Add("Name")
|
||||
oDataTable.Columns.Add("Backup Path")
|
||||
oDataTable.Columns.Add("Restore Path")
|
||||
oDataTable.Columns.Add("Absolute Path")
|
||||
oDataTable.Columns.Add("Date Updated")
|
||||
oDataTable.Columns.Add("Updated By")
|
||||
|
||||
|
||||
'Setup Data Types
|
||||
oDataTable.Columns(0).DataType = GetType(String)
|
||||
oDataTable.Columns(1).DataType = GetType(String)
|
||||
oDataTable.Columns(2).DataType = GetType(String)
|
||||
oDataTable.Columns(3).DataType = GetType(Boolean)
|
||||
oDataTable.Columns(4).DataType = GetType(DateTime)
|
||||
oDataTable.Columns(5).DataType = GetType(String)
|
||||
|
||||
|
||||
|
||||
For Each o As clsBackup In oLoadData.Values
|
||||
oRow = New Object() {o.Name, o.FileName, o.RestorePath, o.AbsolutePath, o.DateUpdated, o.UpdatedBy}
|
||||
oDataTable.Rows.Add(oRow)
|
||||
Next
|
||||
|
||||
'Sort
|
||||
oDataTable.DefaultView.Sort = "Name asc"
|
||||
dgView.DataSource = oDataTable
|
||||
|
||||
'Setup Column Widths
|
||||
dgView.Columns(0).MinimumWidth = 100
|
||||
dgView.Columns(1).MinimumWidth = 175
|
||||
dgView.Columns(2).MinimumWidth = 175
|
||||
dgView.Columns(3).MinimumWidth = 60
|
||||
dgView.Columns(4).MinimumWidth = 125
|
||||
dgView.Columns(5).MinimumWidth = 100
|
||||
|
||||
dgView.Columns(0).FillWeight = 100
|
||||
dgView.Columns(1).FillWeight = 100
|
||||
dgView.Columns(2).FillWeight = 100
|
||||
dgView.Columns(3).FillWeight = 25
|
||||
dgView.Columns(4).FillWeight = 50
|
||||
dgView.Columns(5).FillWeight = 50
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub LoadCombo()
|
||||
Dim oCombo As New List(Of KeyValuePair(Of Integer, String))
|
||||
oCombo.Add(New KeyValuePair(Of Integer, String)(1, "Local Manifest"))
|
||||
oCombo.Add(New KeyValuePair(Of Integer, String)(2, "Remote Manifest"))
|
||||
cboManifest.DataSource = oCombo
|
||||
cboManifest.ValueMember = "key"
|
||||
cboManifest.DisplayMember = "value"
|
||||
End Sub
|
||||
|
||||
Private Sub frmManifestInfo_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
|
||||
dgView.ReadOnly = True
|
||||
dgView.AllowUserToAddRows = False
|
||||
lblError.Text = String.Empty
|
||||
LoadCombo()
|
||||
FormatManifest(CInt(cboManifest.SelectedValue))
|
||||
End Sub
|
||||
|
||||
Private Sub dgView_CellStateChanged(sender As Object, e As DataGridViewCellStateChangedEventArgs) Handles dgView.CellStateChanged
|
||||
lblError.ForeColor = Color.Black
|
||||
|
||||
Select Case dgView.Columns(e.Cell.ColumnIndex).Index
|
||||
Case 0
|
||||
lblError.Text = "The name of the application."
|
||||
Case 1
|
||||
lblError.Text = "The location of the backup file to restore."
|
||||
Case 2
|
||||
lblError.Text = "When the backup file was updated from this computer."
|
||||
Case 3
|
||||
lblError.Text = "The name of this computer."
|
||||
Case 4
|
||||
lblError.Text = "When the local backup file was last updated."
|
||||
Case 5
|
||||
lblError.Text = "The name of the computer that performed the last backup."
|
||||
End Select
|
||||
End Sub
|
||||
|
||||
Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Private Sub frmGameInfo_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
|
||||
|
||||
If Not bShutdown Then
|
||||
If MsgBox("Are you sure you want to close?", MsgBoxStyle.YesNo, "ABM") = MsgBoxResult.Yes Then
|
||||
bShutdown = True
|
||||
End If
|
||||
End If
|
||||
|
||||
If Not bShutdown Then
|
||||
e.Cancel = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub cboManifest_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles cboManifest.SelectionChangeCommitted
|
||||
FormatManifest(CInt(cboManifest.SelectedValue))
|
||||
End Sub
|
||||
End Class
|
||||
Generated
+136
-104
@@ -23,7 +23,6 @@ Partial Class frmSettings
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Me.chkMonitorOnStartup = New System.Windows.Forms.CheckBox()
|
||||
Me.chkBackupConfirm = New System.Windows.Forms.CheckBox()
|
||||
Me.grpStartup = New System.Windows.Forms.GroupBox()
|
||||
Me.chkStartWindows = New System.Windows.Forms.CheckBox()
|
||||
Me.chkStartToTray = New System.Windows.Forms.CheckBox()
|
||||
@@ -39,12 +38,6 @@ Partial Class frmSettings
|
||||
Me.chkCreateFolder = New System.Windows.Forms.CheckBox()
|
||||
Me.btnSave = New System.Windows.Forms.Button()
|
||||
Me.btnCancel = New System.Windows.Forms.Button()
|
||||
Me.lblMinutes = New System.Windows.Forms.Label()
|
||||
Me.nudSupressBackupThreshold = New System.Windows.Forms.NumericUpDown()
|
||||
Me.chkSupressBackup = New System.Windows.Forms.CheckBox()
|
||||
Me.chkCheckSum = New System.Windows.Forms.CheckBox()
|
||||
Me.chkRestoreOnLaunch = New System.Windows.Forms.CheckBox()
|
||||
Me.chkOverwriteWarning = New System.Windows.Forms.CheckBox()
|
||||
Me.grp7zGeneral = New System.Windows.Forms.GroupBox()
|
||||
Me.cboCompression = New System.Windows.Forms.ComboBox()
|
||||
Me.lblCompression = New System.Windows.Forms.Label()
|
||||
@@ -57,6 +50,15 @@ Partial Class frmSettings
|
||||
Me.lbl7zProduct = New System.Windows.Forms.Label()
|
||||
Me.btnDefaults = New System.Windows.Forms.Button()
|
||||
Me.pnlBackup = New System.Windows.Forms.Panel()
|
||||
Me.lblMinutes = New System.Windows.Forms.Label()
|
||||
Me.nudSupressBackupThreshold = New System.Windows.Forms.NumericUpDown()
|
||||
Me.chkSupressBackup = New System.Windows.Forms.CheckBox()
|
||||
Me.chkBackupConfirm = New System.Windows.Forms.CheckBox()
|
||||
Me.chkOverwriteWarning = New System.Windows.Forms.CheckBox()
|
||||
Me.grpBackupHandling = New System.Windows.Forms.GroupBox()
|
||||
Me.chkAutoRestore = New System.Windows.Forms.CheckBox()
|
||||
Me.chkRestoreNotify = New System.Windows.Forms.CheckBox()
|
||||
Me.chkAutoMark = New System.Windows.Forms.CheckBox()
|
||||
Me.pnl7z = New System.Windows.Forms.Panel()
|
||||
Me.grp7zAdvanced = New System.Windows.Forms.GroupBox()
|
||||
Me.grp7zInformation = New System.Windows.Forms.GroupBox()
|
||||
@@ -65,9 +67,10 @@ Partial Class frmSettings
|
||||
Me.lstSettings = New System.Windows.Forms.ListBox()
|
||||
Me.grpStartup.SuspendLayout()
|
||||
Me.grpFolderOptions.SuspendLayout()
|
||||
CType(Me.nudSupressBackupThreshold, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.grp7zGeneral.SuspendLayout()
|
||||
Me.pnlBackup.SuspendLayout()
|
||||
CType(Me.nudSupressBackupThreshold, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.grpBackupHandling.SuspendLayout()
|
||||
Me.pnl7z.SuspendLayout()
|
||||
Me.grp7zAdvanced.SuspendLayout()
|
||||
Me.grp7zInformation.SuspendLayout()
|
||||
@@ -85,16 +88,6 @@ Partial Class frmSettings
|
||||
Me.chkMonitorOnStartup.Text = "Start monitoring at launch"
|
||||
Me.chkMonitorOnStartup.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkBackupConfirm
|
||||
'
|
||||
Me.chkBackupConfirm.AutoSize = True
|
||||
Me.chkBackupConfirm.Location = New System.Drawing.Point(6, 88)
|
||||
Me.chkBackupConfirm.Name = "chkBackupConfirm"
|
||||
Me.chkBackupConfirm.Size = New System.Drawing.Size(160, 17)
|
||||
Me.chkBackupConfirm.TabIndex = 1
|
||||
Me.chkBackupConfirm.Text = "Disable backup confirmation"
|
||||
Me.chkBackupConfirm.UseVisualStyleBackColor = True
|
||||
'
|
||||
'grpStartup
|
||||
'
|
||||
Me.grpStartup.Controls.Add(Me.chkStartWindows)
|
||||
@@ -133,7 +126,7 @@ Partial Class frmSettings
|
||||
Me.chkAutoSaveLog.Location = New System.Drawing.Point(6, 204)
|
||||
Me.chkAutoSaveLog.Name = "chkAutoSaveLog"
|
||||
Me.chkAutoSaveLog.Size = New System.Drawing.Size(231, 17)
|
||||
Me.chkAutoSaveLog.TabIndex = 7
|
||||
Me.chkAutoSaveLog.TabIndex = 3
|
||||
Me.chkAutoSaveLog.Text = "Autosave log when max length is exceeded"
|
||||
Me.chkAutoSaveLog.UseVisualStyleBackColor = True
|
||||
'
|
||||
@@ -142,7 +135,7 @@ Partial Class frmSettings
|
||||
Me.btnOptionalFields.Location = New System.Drawing.Point(110, 38)
|
||||
Me.btnOptionalFields.Name = "btnOptionalFields"
|
||||
Me.btnOptionalFields.Size = New System.Drawing.Size(134, 23)
|
||||
Me.btnOptionalFields.TabIndex = 6
|
||||
Me.btnOptionalFields.TabIndex = 2
|
||||
Me.btnOptionalFields.Text = "Choose &Optional Fields..."
|
||||
Me.btnOptionalFields.UseVisualStyleBackColor = True
|
||||
'
|
||||
@@ -152,7 +145,7 @@ Partial Class frmSettings
|
||||
Me.chkTimeTracking.Location = New System.Drawing.Point(6, 19)
|
||||
Me.chkTimeTracking.Name = "chkTimeTracking"
|
||||
Me.chkTimeTracking.Size = New System.Drawing.Size(122, 17)
|
||||
Me.chkTimeTracking.TabIndex = 4
|
||||
Me.chkTimeTracking.TabIndex = 0
|
||||
Me.chkTimeTracking.Text = "Enable time tracking"
|
||||
Me.chkTimeTracking.UseVisualStyleBackColor = True
|
||||
'
|
||||
@@ -162,7 +155,7 @@ Partial Class frmSettings
|
||||
Me.chkSync.Location = New System.Drawing.Point(6, 42)
|
||||
Me.chkSync.Name = "chkSync"
|
||||
Me.chkSync.Size = New System.Drawing.Size(98, 17)
|
||||
Me.chkSync.TabIndex = 5
|
||||
Me.chkSync.TabIndex = 1
|
||||
Me.chkSync.Text = "Enable syncing"
|
||||
Me.chkSync.UseVisualStyleBackColor = True
|
||||
'
|
||||
@@ -172,7 +165,7 @@ Partial Class frmSettings
|
||||
Me.chkShowDetectionTips.Location = New System.Drawing.Point(6, 181)
|
||||
Me.chkShowDetectionTips.Name = "chkShowDetectionTips"
|
||||
Me.chkShowDetectionTips.Size = New System.Drawing.Size(159, 17)
|
||||
Me.chkShowDetectionTips.TabIndex = 3
|
||||
Me.chkShowDetectionTips.TabIndex = 2
|
||||
Me.chkShowDetectionTips.Text = "Show detection notifications"
|
||||
Me.chkShowDetectionTips.UseVisualStyleBackColor = True
|
||||
'
|
||||
@@ -185,7 +178,7 @@ Partial Class frmSettings
|
||||
Me.grpFolderOptions.Location = New System.Drawing.Point(6, 12)
|
||||
Me.grpFolderOptions.Name = "grpFolderOptions"
|
||||
Me.grpFolderOptions.Size = New System.Drawing.Size(354, 70)
|
||||
Me.grpFolderOptions.TabIndex = 1
|
||||
Me.grpFolderOptions.TabIndex = 0
|
||||
Me.grpFolderOptions.TabStop = False
|
||||
Me.grpFolderOptions.Text = "Folders"
|
||||
'
|
||||
@@ -194,7 +187,7 @@ Partial Class frmSettings
|
||||
Me.btnBackupFolder.Location = New System.Drawing.Point(313, 17)
|
||||
Me.btnBackupFolder.Name = "btnBackupFolder"
|
||||
Me.btnBackupFolder.Size = New System.Drawing.Size(27, 20)
|
||||
Me.btnBackupFolder.TabIndex = 2
|
||||
Me.btnBackupFolder.TabIndex = 1
|
||||
Me.btnBackupFolder.Text = "..."
|
||||
Me.btnBackupFolder.UseVisualStyleBackColor = True
|
||||
'
|
||||
@@ -212,7 +205,7 @@ Partial Class frmSettings
|
||||
Me.txtBackupFolder.Location = New System.Drawing.Point(91, 17)
|
||||
Me.txtBackupFolder.Name = "txtBackupFolder"
|
||||
Me.txtBackupFolder.Size = New System.Drawing.Size(216, 20)
|
||||
Me.txtBackupFolder.TabIndex = 1
|
||||
Me.txtBackupFolder.TabIndex = 0
|
||||
'
|
||||
'chkCreateFolder
|
||||
'
|
||||
@@ -220,7 +213,7 @@ Partial Class frmSettings
|
||||
Me.chkCreateFolder.Location = New System.Drawing.Point(9, 43)
|
||||
Me.chkCreateFolder.Name = "chkCreateFolder"
|
||||
Me.chkCreateFolder.Size = New System.Drawing.Size(186, 17)
|
||||
Me.chkCreateFolder.TabIndex = 3
|
||||
Me.chkCreateFolder.TabIndex = 2
|
||||
Me.chkCreateFolder.Text = "Create a sub-folder for each game"
|
||||
Me.chkCreateFolder.UseVisualStyleBackColor = True
|
||||
'
|
||||
@@ -244,63 +237,6 @@ Partial Class frmSettings
|
||||
Me.btnCancel.Text = "&Cancel"
|
||||
Me.btnCancel.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblMinutes
|
||||
'
|
||||
Me.lblMinutes.AutoSize = True
|
||||
Me.lblMinutes.Location = New System.Drawing.Point(286, 181)
|
||||
Me.lblMinutes.Name = "lblMinutes"
|
||||
Me.lblMinutes.Size = New System.Drawing.Size(43, 13)
|
||||
Me.lblMinutes.TabIndex = 7
|
||||
Me.lblMinutes.Text = "minutes"
|
||||
'
|
||||
'nudSupressBackupThreshold
|
||||
'
|
||||
Me.nudSupressBackupThreshold.Location = New System.Drawing.Point(229, 179)
|
||||
Me.nudSupressBackupThreshold.Maximum = New Decimal(New Integer() {999, 0, 0, 0})
|
||||
Me.nudSupressBackupThreshold.Name = "nudSupressBackupThreshold"
|
||||
Me.nudSupressBackupThreshold.Size = New System.Drawing.Size(51, 20)
|
||||
Me.nudSupressBackupThreshold.TabIndex = 6
|
||||
'
|
||||
'chkSupressBackup
|
||||
'
|
||||
Me.chkSupressBackup.AutoSize = True
|
||||
Me.chkSupressBackup.Location = New System.Drawing.Point(6, 180)
|
||||
Me.chkSupressBackup.Name = "chkSupressBackup"
|
||||
Me.chkSupressBackup.Size = New System.Drawing.Size(217, 17)
|
||||
Me.chkSupressBackup.TabIndex = 5
|
||||
Me.chkSupressBackup.Text = "Backup only when session time exceeds"
|
||||
Me.chkSupressBackup.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkCheckSum
|
||||
'
|
||||
Me.chkCheckSum.AutoSize = True
|
||||
Me.chkCheckSum.Location = New System.Drawing.Point(6, 134)
|
||||
Me.chkCheckSum.Name = "chkCheckSum"
|
||||
Me.chkCheckSum.Size = New System.Drawing.Size(195, 17)
|
||||
Me.chkCheckSum.TabIndex = 3
|
||||
Me.chkCheckSum.Text = "Verify backup files with a checksum"
|
||||
Me.chkCheckSum.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkRestoreOnLaunch
|
||||
'
|
||||
Me.chkRestoreOnLaunch.AutoSize = True
|
||||
Me.chkRestoreOnLaunch.Location = New System.Drawing.Point(6, 157)
|
||||
Me.chkRestoreOnLaunch.Name = "chkRestoreOnLaunch"
|
||||
Me.chkRestoreOnLaunch.Size = New System.Drawing.Size(257, 17)
|
||||
Me.chkRestoreOnLaunch.TabIndex = 4
|
||||
Me.chkRestoreOnLaunch.Text = "Notify when there are new backup files to restore"
|
||||
Me.chkRestoreOnLaunch.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkOverwriteWarning
|
||||
'
|
||||
Me.chkOverwriteWarning.AutoSize = True
|
||||
Me.chkOverwriteWarning.Location = New System.Drawing.Point(6, 111)
|
||||
Me.chkOverwriteWarning.Name = "chkOverwriteWarning"
|
||||
Me.chkOverwriteWarning.Size = New System.Drawing.Size(139, 17)
|
||||
Me.chkOverwriteWarning.TabIndex = 2
|
||||
Me.chkOverwriteWarning.Text = "Show overwrite warning"
|
||||
Me.chkOverwriteWarning.UseVisualStyleBackColor = True
|
||||
'
|
||||
'grp7zGeneral
|
||||
'
|
||||
Me.grp7zGeneral.Controls.Add(Me.cboCompression)
|
||||
@@ -319,7 +255,7 @@ Partial Class frmSettings
|
||||
Me.cboCompression.Location = New System.Drawing.Point(110, 17)
|
||||
Me.cboCompression.Name = "cboCompression"
|
||||
Me.cboCompression.Size = New System.Drawing.Size(238, 21)
|
||||
Me.cboCompression.TabIndex = 1
|
||||
Me.cboCompression.TabIndex = 0
|
||||
'
|
||||
'lblCompression
|
||||
'
|
||||
@@ -335,7 +271,7 @@ Partial Class frmSettings
|
||||
Me.btn7zLocation.Location = New System.Drawing.Point(313, 41)
|
||||
Me.btn7zLocation.Name = "btn7zLocation"
|
||||
Me.btn7zLocation.Size = New System.Drawing.Size(27, 20)
|
||||
Me.btn7zLocation.TabIndex = 5
|
||||
Me.btn7zLocation.TabIndex = 2
|
||||
Me.btn7zLocation.Text = "..."
|
||||
Me.btn7zLocation.UseVisualStyleBackColor = True
|
||||
'
|
||||
@@ -344,7 +280,7 @@ Partial Class frmSettings
|
||||
Me.txt7zLocation.Location = New System.Drawing.Point(110, 41)
|
||||
Me.txt7zLocation.Name = "txt7zLocation"
|
||||
Me.txt7zLocation.Size = New System.Drawing.Size(197, 20)
|
||||
Me.txt7zLocation.TabIndex = 4
|
||||
Me.txt7zLocation.TabIndex = 1
|
||||
'
|
||||
'lblLocation
|
||||
'
|
||||
@@ -360,7 +296,7 @@ Partial Class frmSettings
|
||||
Me.txt7zArguments.Location = New System.Drawing.Point(110, 15)
|
||||
Me.txt7zArguments.Name = "txt7zArguments"
|
||||
Me.txt7zArguments.Size = New System.Drawing.Size(238, 20)
|
||||
Me.txt7zArguments.TabIndex = 3
|
||||
Me.txt7zArguments.TabIndex = 0
|
||||
'
|
||||
'lblArguments
|
||||
'
|
||||
@@ -402,17 +338,109 @@ Partial Class frmSettings
|
||||
'
|
||||
Me.pnlBackup.Controls.Add(Me.lblMinutes)
|
||||
Me.pnlBackup.Controls.Add(Me.nudSupressBackupThreshold)
|
||||
Me.pnlBackup.Controls.Add(Me.grpFolderOptions)
|
||||
Me.pnlBackup.Controls.Add(Me.chkSupressBackup)
|
||||
Me.pnlBackup.Controls.Add(Me.chkBackupConfirm)
|
||||
Me.pnlBackup.Controls.Add(Me.chkCheckSum)
|
||||
Me.pnlBackup.Controls.Add(Me.chkOverwriteWarning)
|
||||
Me.pnlBackup.Controls.Add(Me.chkRestoreOnLaunch)
|
||||
Me.pnlBackup.Controls.Add(Me.grpBackupHandling)
|
||||
Me.pnlBackup.Controls.Add(Me.grpFolderOptions)
|
||||
Me.pnlBackup.Location = New System.Drawing.Point(180, 0)
|
||||
Me.pnlBackup.Name = "pnlBackup"
|
||||
Me.pnlBackup.Size = New System.Drawing.Size(367, 314)
|
||||
Me.pnlBackup.TabIndex = 3
|
||||
'
|
||||
'lblMinutes
|
||||
'
|
||||
Me.lblMinutes.AutoSize = True
|
||||
Me.lblMinutes.Location = New System.Drawing.Point(286, 228)
|
||||
Me.lblMinutes.Name = "lblMinutes"
|
||||
Me.lblMinutes.Size = New System.Drawing.Size(43, 13)
|
||||
Me.lblMinutes.TabIndex = 14
|
||||
Me.lblMinutes.Text = "minutes"
|
||||
'
|
||||
'nudSupressBackupThreshold
|
||||
'
|
||||
Me.nudSupressBackupThreshold.Location = New System.Drawing.Point(229, 226)
|
||||
Me.nudSupressBackupThreshold.Maximum = New Decimal(New Integer() {999, 0, 0, 0})
|
||||
Me.nudSupressBackupThreshold.Name = "nudSupressBackupThreshold"
|
||||
Me.nudSupressBackupThreshold.Size = New System.Drawing.Size(51, 20)
|
||||
Me.nudSupressBackupThreshold.TabIndex = 5
|
||||
'
|
||||
'chkSupressBackup
|
||||
'
|
||||
Me.chkSupressBackup.AutoSize = True
|
||||
Me.chkSupressBackup.Location = New System.Drawing.Point(6, 228)
|
||||
Me.chkSupressBackup.Name = "chkSupressBackup"
|
||||
Me.chkSupressBackup.Size = New System.Drawing.Size(217, 17)
|
||||
Me.chkSupressBackup.TabIndex = 4
|
||||
Me.chkSupressBackup.Text = "Backup only when session time exceeds"
|
||||
Me.chkSupressBackup.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkBackupConfirm
|
||||
'
|
||||
Me.chkBackupConfirm.AutoSize = True
|
||||
Me.chkBackupConfirm.Location = New System.Drawing.Point(6, 180)
|
||||
Me.chkBackupConfirm.Name = "chkBackupConfirm"
|
||||
Me.chkBackupConfirm.Size = New System.Drawing.Size(160, 17)
|
||||
Me.chkBackupConfirm.TabIndex = 2
|
||||
Me.chkBackupConfirm.Text = "Disable backup confirmation"
|
||||
Me.chkBackupConfirm.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkOverwriteWarning
|
||||
'
|
||||
Me.chkOverwriteWarning.AutoSize = True
|
||||
Me.chkOverwriteWarning.Location = New System.Drawing.Point(6, 204)
|
||||
Me.chkOverwriteWarning.Name = "chkOverwriteWarning"
|
||||
Me.chkOverwriteWarning.Size = New System.Drawing.Size(139, 17)
|
||||
Me.chkOverwriteWarning.TabIndex = 3
|
||||
Me.chkOverwriteWarning.Text = "Show overwrite warning"
|
||||
Me.chkOverwriteWarning.UseVisualStyleBackColor = True
|
||||
'
|
||||
'grpBackupHandling
|
||||
'
|
||||
Me.grpBackupHandling.Controls.Add(Me.chkAutoRestore)
|
||||
Me.grpBackupHandling.Controls.Add(Me.chkRestoreNotify)
|
||||
Me.grpBackupHandling.Controls.Add(Me.chkAutoMark)
|
||||
Me.grpBackupHandling.Location = New System.Drawing.Point(6, 88)
|
||||
Me.grpBackupHandling.Margin = New System.Windows.Forms.Padding(2, 2, 2, 2)
|
||||
Me.grpBackupHandling.Name = "grpBackupHandling"
|
||||
Me.grpBackupHandling.Padding = New System.Windows.Forms.Padding(2, 2, 2, 2)
|
||||
Me.grpBackupHandling.Size = New System.Drawing.Size(354, 87)
|
||||
Me.grpBackupHandling.TabIndex = 1
|
||||
Me.grpBackupHandling.TabStop = False
|
||||
Me.grpBackupHandling.Text = "Backup Handling"
|
||||
'
|
||||
'chkAutoRestore
|
||||
'
|
||||
Me.chkAutoRestore.AutoSize = True
|
||||
Me.chkAutoRestore.Location = New System.Drawing.Point(8, 41)
|
||||
Me.chkAutoRestore.Margin = New System.Windows.Forms.Padding(2, 2, 2, 2)
|
||||
Me.chkAutoRestore.Name = "chkAutoRestore"
|
||||
Me.chkAutoRestore.Size = New System.Drawing.Size(190, 17)
|
||||
Me.chkAutoRestore.TabIndex = 1
|
||||
Me.chkAutoRestore.Text = "Automatically restore new backups"
|
||||
Me.chkAutoRestore.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkRestoreNotify
|
||||
'
|
||||
Me.chkRestoreNotify.AutoSize = True
|
||||
Me.chkRestoreNotify.Location = New System.Drawing.Point(8, 19)
|
||||
Me.chkRestoreNotify.Margin = New System.Windows.Forms.Padding(2, 2, 2, 2)
|
||||
Me.chkRestoreNotify.Name = "chkRestoreNotify"
|
||||
Me.chkRestoreNotify.Size = New System.Drawing.Size(216, 17)
|
||||
Me.chkRestoreNotify.TabIndex = 0
|
||||
Me.chkRestoreNotify.Text = "Display notifications about new backups"
|
||||
Me.chkRestoreNotify.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkAutoMark
|
||||
'
|
||||
Me.chkAutoMark.AutoSize = True
|
||||
Me.chkAutoMark.Location = New System.Drawing.Point(8, 63)
|
||||
Me.chkAutoMark.Name = "chkAutoMark"
|
||||
Me.chkAutoMark.Size = New System.Drawing.Size(321, 17)
|
||||
Me.chkAutoMark.TabIndex = 2
|
||||
Me.chkAutoMark.Text = "Automatically mark new backups as restored when appropriate"
|
||||
Me.chkAutoMark.UseVisualStyleBackColor = True
|
||||
'
|
||||
'pnl7z
|
||||
'
|
||||
Me.pnl7z.Controls.Add(Me.grp7zAdvanced)
|
||||
@@ -433,7 +461,7 @@ Partial Class frmSettings
|
||||
Me.grp7zAdvanced.Location = New System.Drawing.Point(6, 68)
|
||||
Me.grp7zAdvanced.Name = "grp7zAdvanced"
|
||||
Me.grp7zAdvanced.Size = New System.Drawing.Size(354, 73)
|
||||
Me.grp7zAdvanced.TabIndex = 2
|
||||
Me.grp7zAdvanced.TabIndex = 1
|
||||
Me.grp7zAdvanced.TabStop = False
|
||||
Me.grp7zAdvanced.Text = "Advanced"
|
||||
'
|
||||
@@ -444,7 +472,7 @@ Partial Class frmSettings
|
||||
Me.grp7zInformation.Location = New System.Drawing.Point(6, 146)
|
||||
Me.grp7zInformation.Name = "grp7zInformation"
|
||||
Me.grp7zInformation.Size = New System.Drawing.Size(354, 63)
|
||||
Me.grp7zInformation.TabIndex = 1
|
||||
Me.grp7zInformation.TabIndex = 2
|
||||
Me.grp7zInformation.TabStop = False
|
||||
Me.grp7zInformation.Text = "Utility Information"
|
||||
'
|
||||
@@ -484,13 +512,13 @@ Partial Class frmSettings
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(554, 361)
|
||||
Me.Controls.Add(Me.pnlGeneral)
|
||||
Me.Controls.Add(Me.pnlBackup)
|
||||
Me.Controls.Add(Me.pnl7z)
|
||||
Me.Controls.Add(Me.lstSettings)
|
||||
Me.Controls.Add(Me.btnDefaults)
|
||||
Me.Controls.Add(Me.btnCancel)
|
||||
Me.Controls.Add(Me.btnSave)
|
||||
Me.Controls.Add(Me.pnlGeneral)
|
||||
Me.Controls.Add(Me.pnl7z)
|
||||
Me.Controls.Add(Me.pnlBackup)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
@@ -503,11 +531,13 @@ Partial Class frmSettings
|
||||
Me.grpStartup.PerformLayout()
|
||||
Me.grpFolderOptions.ResumeLayout(False)
|
||||
Me.grpFolderOptions.PerformLayout()
|
||||
CType(Me.nudSupressBackupThreshold, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.grp7zGeneral.ResumeLayout(False)
|
||||
Me.grp7zGeneral.PerformLayout()
|
||||
Me.pnlBackup.ResumeLayout(False)
|
||||
Me.pnlBackup.PerformLayout()
|
||||
CType(Me.nudSupressBackupThreshold, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.grpBackupHandling.ResumeLayout(False)
|
||||
Me.grpBackupHandling.PerformLayout()
|
||||
Me.pnl7z.ResumeLayout(False)
|
||||
Me.grp7zAdvanced.ResumeLayout(False)
|
||||
Me.grp7zAdvanced.PerformLayout()
|
||||
@@ -520,7 +550,6 @@ Partial Class frmSettings
|
||||
|
||||
End Sub
|
||||
Friend WithEvents chkMonitorOnStartup As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkBackupConfirm As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents grpStartup As System.Windows.Forms.GroupBox
|
||||
Friend WithEvents grpFolderOptions As System.Windows.Forms.GroupBox
|
||||
Friend WithEvents txtBackupFolder As System.Windows.Forms.TextBox
|
||||
@@ -530,16 +559,10 @@ Partial Class frmSettings
|
||||
Friend WithEvents btnBackupFolder As System.Windows.Forms.Button
|
||||
Friend WithEvents chkShowDetectionTips As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkStartToTray As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkOverwriteWarning As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkCreateFolder As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkRestoreOnLaunch As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkSync As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkCheckSum As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkStartWindows As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents chkTimeTracking As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents lblMinutes As Label
|
||||
Friend WithEvents nudSupressBackupThreshold As NumericUpDown
|
||||
Friend WithEvents chkSupressBackup As CheckBox
|
||||
Friend WithEvents grp7zGeneral As GroupBox
|
||||
Friend WithEvents cboCompression As ComboBox
|
||||
Friend WithEvents lblCompression As Label
|
||||
@@ -560,4 +583,13 @@ Partial Class frmSettings
|
||||
Friend WithEvents lstSettings As ListBox
|
||||
Friend WithEvents grp7zAdvanced As GroupBox
|
||||
Friend WithEvents grp7zInformation As GroupBox
|
||||
Friend WithEvents lblMinutes As Label
|
||||
Friend WithEvents nudSupressBackupThreshold As NumericUpDown
|
||||
Friend WithEvents chkSupressBackup As CheckBox
|
||||
Friend WithEvents chkBackupConfirm As CheckBox
|
||||
Friend WithEvents chkOverwriteWarning As CheckBox
|
||||
Friend WithEvents grpBackupHandling As GroupBox
|
||||
Friend WithEvents chkAutoMark As CheckBox
|
||||
Friend WithEvents chkAutoRestore As CheckBox
|
||||
Friend WithEvents chkRestoreNotify As CheckBox
|
||||
End Class
|
||||
|
||||
+11
-13
@@ -4,7 +4,6 @@ Imports System.IO
|
||||
Public Class frmSettings
|
||||
Dim bShutdown As Boolean = False
|
||||
Dim bSyncSettingsChanged As Boolean = False
|
||||
Dim bCheckSumDisabled As Boolean = False
|
||||
Dim eCurrentSyncFields As clsGame.eOptionalSyncFields
|
||||
Private oSettings As mgrSettings
|
||||
|
||||
@@ -48,7 +47,9 @@ Public Class frmSettings
|
||||
oSettings.DisableConfirmation = chkBackupConfirm.Checked
|
||||
oSettings.CreateSubFolder = chkCreateFolder.Checked
|
||||
oSettings.ShowOverwriteWarning = chkOverwriteWarning.Checked
|
||||
oSettings.RestoreOnLaunch = chkRestoreOnLaunch.Checked
|
||||
oSettings.RestoreOnLaunch = chkRestoreNotify.Checked
|
||||
oSettings.AutoRestore = chkAutoRestore.Checked
|
||||
oSettings.AutoMark = chkAutoMark.Checked
|
||||
oSettings.TimeTracking = chkTimeTracking.Checked
|
||||
oSettings.SupressBackup = chkSupressBackup.Checked
|
||||
oSettings.SupressBackupThreshold = nudSupressBackupThreshold.Value
|
||||
@@ -61,12 +62,6 @@ Public Class frmSettings
|
||||
oSettings.Custom7zArguments = txt7zArguments.Text.Trim
|
||||
oSettings.Custom7zLocation = txt7zLocation.Text.Trim
|
||||
|
||||
'We need to clear all checksums its turned off
|
||||
If chkCheckSum.Checked = False And oSettings.CheckSum = True Then
|
||||
bCheckSumDisabled = True
|
||||
End If
|
||||
oSettings.CheckSum = chkCheckSum.Checked
|
||||
|
||||
'Turning syncing from off to on is the same as changing the backup folder
|
||||
If chkSync.Checked = True And oSettings.Sync = False Then
|
||||
bSyncSettingsChanged = True
|
||||
@@ -106,7 +101,6 @@ Public Class frmSettings
|
||||
If ValidateSettings() Then
|
||||
oSettings.SaveSettings()
|
||||
If bSyncSettingsChanged Then mgrMonitorList.HandleBackupLocationChange(Settings)
|
||||
If bCheckSumDisabled Then mgrManifest.DoManifestHashWipe()
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
@@ -177,10 +171,11 @@ Public Class frmSettings
|
||||
chkBackupConfirm.Checked = oSettings.DisableConfirmation
|
||||
chkCreateFolder.Checked = oSettings.CreateSubFolder
|
||||
chkOverwriteWarning.Checked = oSettings.ShowOverwriteWarning
|
||||
chkRestoreOnLaunch.Checked = oSettings.RestoreOnLaunch
|
||||
chkRestoreNotify.Checked = oSettings.RestoreOnLaunch
|
||||
chkAutoRestore.Checked = oSettings.AutoRestore
|
||||
chkAutoMark.Checked = oSettings.AutoMark
|
||||
txtBackupFolder.Text = oSettings.BackupFolder
|
||||
chkSync.Checked = oSettings.Sync
|
||||
chkCheckSum.Checked = oSettings.CheckSum
|
||||
chkTimeTracking.Checked = oSettings.TimeTracking
|
||||
chkSupressBackup.Checked = oSettings.SupressBackup
|
||||
nudSupressBackupThreshold.Value = oSettings.SupressBackupThreshold
|
||||
@@ -279,8 +274,10 @@ Public Class frmSettings
|
||||
'Set Form Text
|
||||
lblMinutes.Text = frmSettings_lblMinutes
|
||||
chkSupressBackup.Text = frmSettings_chkSupressBackup
|
||||
chkCheckSum.Text = frmSettings_chkCheckSum
|
||||
chkRestoreOnLaunch.Text = frmSettings_chkRestoreOnLaunch
|
||||
grpBackupHandling.Text = frmSettings_grpBackupHandling
|
||||
chkRestoreNotify.Text = frmSettings_chkRestoreNotify
|
||||
chkAutoRestore.Text = frmSettings_chkAutoRestore
|
||||
chkAutoMark.Text = frmSettings_chkAutoMark
|
||||
chkOverwriteWarning.Text = frmSettings_chkOverwriteWarning
|
||||
chkCreateFolder.Text = frmSettings_chkCreateFolder
|
||||
chkBackupConfirm.Text = frmSettings_chkBackupConfirm
|
||||
@@ -375,4 +372,5 @@ Public Class frmSettings
|
||||
Private Sub lstSettings_SelectedValueChanged(sender As Object, e As EventArgs) Handles lstSettings.SelectedValueChanged
|
||||
ChangePanel()
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
@@ -242,10 +242,10 @@ Public Class mgrBackup
|
||||
|
||||
'Write Main Manifest
|
||||
If bBackupCompleted Then
|
||||
If oSettings.CheckSum Then
|
||||
RaiseEvent UpdateLog(mgrCommon.FormatString(mgrBackup_GenerateHash, oGame.Name), False, ToolTipIcon.Info, True)
|
||||
sHash = mgrHash.Generate_SHA256_Hash(sBackupFile)
|
||||
End If
|
||||
|
||||
'Generate checksum for new backup
|
||||
RaiseEvent UpdateLog(mgrCommon.FormatString(mgrBackup_GenerateHash, oGame.Name), False, ToolTipIcon.Info, True)
|
||||
sHash = mgrHash.Generate_SHA256_Hash(sBackupFile)
|
||||
|
||||
If Not DoManifestUpdate(oGame, sBackupFile, dTimeStamp, sHash) Then
|
||||
RaiseEvent UpdateLog(mgrCommon.FormatString(mgrBackup_ErrorManifestFailure, oGame.Name), True, ToolTipIcon.Error, True)
|
||||
|
||||
@@ -30,7 +30,7 @@ Public Class mgrCommon
|
||||
|
||||
Public Shared ReadOnly Property AppVersion As Integer
|
||||
Get
|
||||
Return (My.Application.Info.Version.Major * 100) + My.Application.Info.Version.Minor
|
||||
Return (My.Application.Info.Version.Major * 100) + (My.Application.Info.Version.Minor * 10) + My.Application.Info.Version.Build
|
||||
End Get
|
||||
End Property
|
||||
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
Public Class mgrGlobals
|
||||
Public Shared LocalDatabaseHash As String = String.Empty
|
||||
Public Shared RemoteDatabaseHash As String = String.Empty
|
||||
End Class
|
||||
@@ -30,6 +30,7 @@ Public Class mgrMonitorList
|
||||
oGame.Enabled = CBool(dr("Enabled"))
|
||||
oGame.MonitorOnly = CBool(dr("MonitorOnly"))
|
||||
oGame.BackupLimit = CInt(dr("BackupLimit"))
|
||||
oGame.CleanFolder = CBool(dr("CleanFolder"))
|
||||
|
||||
Return oGame
|
||||
End Function
|
||||
@@ -54,6 +55,7 @@ Public Class mgrMonitorList
|
||||
hshParams.Add("Enabled", oGame.Enabled)
|
||||
hshParams.Add("MonitorOnly", oGame.MonitorOnly)
|
||||
hshParams.Add("BackupLimit", oGame.BackupLimit)
|
||||
hshParams.Add("CleanFolder", oGame.CleanFolder)
|
||||
|
||||
Return hshParams
|
||||
End Function
|
||||
@@ -94,7 +96,7 @@ Public Class mgrMonitorList
|
||||
Dim hshParams As Hashtable
|
||||
|
||||
sSQL = "INSERT INTO monitorlist VALUES (@ID, @Name, @Process, @Path, @AbsolutePath, @FolderSave, @FileType, @TimeStamp, "
|
||||
sSQL &= "@ExcludeList, @ProcessPath, @Icon, @Hours, @Version, @Company, @Enabled, @MonitorOnly, @BackupLimit)"
|
||||
sSQL &= "@ExcludeList, @ProcessPath, @Icon, @Hours, @Version, @Company, @Enabled, @MonitorOnly, @BackupLimit, @CleanFolder)"
|
||||
|
||||
'Parameters
|
||||
hshParams = SetCoreParameters(oGame)
|
||||
@@ -110,7 +112,7 @@ Public Class mgrMonitorList
|
||||
|
||||
sSQL = "UPDATE monitorlist SET Name=@Name, Process=@Process, Path=@Path, AbsolutePath=@AbsolutePath, FolderSave=@FolderSave, "
|
||||
sSQL &= "FileType=@FileType, TimeStamp=@TimeStamp, ExcludeList=@ExcludeList, ProcessPath=@ProcessPath, Icon=@Icon, "
|
||||
sSQL &= "Hours=@Hours, Version=@Version, Company=@Company, Enabled=@Enabled, MonitorOnly=@MonitorOnly, BackupLimit=@BackupLimit WHERE MonitorID=@ID"
|
||||
sSQL &= "Hours=@Hours, Version=@Version, Company=@Company, Enabled=@Enabled, MonitorOnly=@MonitorOnly, BackupLimit=@BackupLimit, CleanFolder=@CleanFolder WHERE MonitorID=@ID"
|
||||
|
||||
'Parameters
|
||||
hshParams = SetCoreParameters(oGame)
|
||||
@@ -315,11 +317,11 @@ Public Class mgrMonitorList
|
||||
sVersion = "(SELECT Version FROM monitorlist WHERE MonitorID=@ID)"
|
||||
End If
|
||||
|
||||
sSQL = "INSERT OR REPLACE INTO monitorlist (MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit) "
|
||||
sSQL = "INSERT OR REPLACE INTO monitorlist (MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder) "
|
||||
sSQL &= "VALUES (@ID, @Name, @Process, @Path, @AbsolutePath, @FolderSave, @FileType, "
|
||||
sSQL &= sTimeStamp & ", @ExcludeList, " & sGamePath & ", "
|
||||
sSQL &= sIcon & ", @Hours, " & sVersion & ", "
|
||||
sSQL &= sCompany & ", " & sMonitorGame & ", @MonitorOnly, " & sBackupLimit & ");"
|
||||
sSQL &= sCompany & ", " & sMonitorGame & ", @MonitorOnly, " & sBackupLimit & ",@CleanFolder);"
|
||||
|
||||
For Each oGame As clsGame In hshGames.Values
|
||||
hshParams = New Hashtable
|
||||
@@ -335,6 +337,7 @@ Public Class mgrMonitorList
|
||||
hshParams.Add("ExcludeList", oGame.ExcludeList)
|
||||
hshParams.Add("Hours", oGame.Hours)
|
||||
hshParams.Add("MonitorOnly", oGame.MonitorOnly)
|
||||
hshParams.Add("CleanFolder", oGame.CleanFolder)
|
||||
|
||||
'Optional Parameters
|
||||
If (eSyncFields And clsGame.eOptionalSyncFields.Company) = clsGame.eOptionalSyncFields.Company Then
|
||||
@@ -471,9 +474,9 @@ Public Class mgrMonitorList
|
||||
|
||||
Select Case eFilterType
|
||||
Case frmFilter.eFilterType.NoFilter
|
||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit FROM monitorlist ORDER BY Name Asc"
|
||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder FROM monitorlist ORDER BY Name Asc"
|
||||
Case frmFilter.eFilterType.FieldAnd, frmFilter.eFilterType.FieldOr
|
||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit FROM monitorlist"
|
||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder FROM monitorlist"
|
||||
|
||||
If hshStringFilters.Count > 0 Then
|
||||
sSQL &= " WHERE ("
|
||||
@@ -495,7 +498,7 @@ Public Class mgrMonitorList
|
||||
End If
|
||||
sSQL &= " ORDER BY Name Asc"
|
||||
Case frmFilter.eFilterType.AnyTag
|
||||
sSQL = "SELECT DISTINCT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit FROM monitorlist "
|
||||
sSQL = "SELECT DISTINCT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder FROM monitorlist "
|
||||
sSQL &= "NATURAL JOIN gametags WHERE gametags.TagID IN ("
|
||||
|
||||
For Each oTag As clsTag In oTagFilters
|
||||
@@ -507,7 +510,7 @@ Public Class mgrMonitorList
|
||||
sSQL = sSQL.TrimEnd(",")
|
||||
sSQL &= ") ORDER BY Name Asc"
|
||||
Case frmFilter.eFilterType.AllTags
|
||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit FROM monitorlist WHERE MonitorID IN "
|
||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder FROM monitorlist WHERE MonitorID IN "
|
||||
|
||||
For Each oTag As clsTag In oTagFilters
|
||||
sSQL &= "(SELECT MonitorID FROM gametags WHERE monitorlist.MonitorID = gametags.MonitorID And TagID = @TagID" & iCounter & ")"
|
||||
@@ -520,7 +523,7 @@ Public Class mgrMonitorList
|
||||
|
||||
sSQL &= " ORDER BY Name Asc"
|
||||
Case frmFilter.eFilterType.NoTags
|
||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit FROM monitorlist WHERE MonitorID NOT IN (SELECT MonitorID FROM gametags) ORDER BY Name Asc"
|
||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder FROM monitorlist WHERE MonitorID NOT IN (SELECT MonitorID FROM gametags) ORDER BY Name Asc"
|
||||
End Select
|
||||
|
||||
Return sSQL
|
||||
|
||||
+19
-25
@@ -96,8 +96,6 @@ Public Class mgrRestore
|
||||
If bLocal And bRemote Then
|
||||
'Compare
|
||||
If oRemoteItem.DateUpdated > oLocalItem.DateUpdated Then
|
||||
oRemoteItem.LastDateUpdated = oLocalItem.DateUpdated
|
||||
oRemoteItem.LastUpdatedBy = oLocalItem.UpdatedBy
|
||||
Return True
|
||||
End If
|
||||
End If
|
||||
@@ -125,18 +123,10 @@ Public Class mgrRestore
|
||||
oLocalItem = DirectCast(slLocalManifest(oItem.Name), clsBackup)
|
||||
|
||||
If oItem.DateUpdated > oLocalItem.DateUpdated Then
|
||||
oLocalItem.FileName = oItem.FileName
|
||||
oLocalItem.LastDateUpdated = oItem.DateUpdated
|
||||
oLocalItem.LastUpdatedBy = oItem.UpdatedBy
|
||||
slRestoreItems.Add(oLocalItem.Name, oLocalItem)
|
||||
slRestoreItems.Add(oItem.Name, oItem)
|
||||
End If
|
||||
Else
|
||||
oLocalItem = oItem
|
||||
oLocalItem.LastDateUpdated = oItem.DateUpdated
|
||||
oLocalItem.LastUpdatedBy = oItem.UpdatedBy
|
||||
oLocalItem.DateUpdated = Nothing
|
||||
oLocalItem.UpdatedBy = Nothing
|
||||
slRestoreItems.Add(oLocalItem.Name, oLocalItem)
|
||||
slRestoreItems.Add(oItem.Name, oItem)
|
||||
End If
|
||||
Next
|
||||
|
||||
@@ -161,7 +151,7 @@ Public Class mgrRestore
|
||||
Return slRemovedItems
|
||||
End Function
|
||||
|
||||
Public Function CheckRestorePrereq(ByVal oBackupInfo As clsBackup) As Boolean
|
||||
Public Function CheckRestorePrereq(ByVal oBackupInfo As clsBackup, ByVal bCleanFolder As Boolean) As Boolean
|
||||
Dim sHash As String
|
||||
Dim sExtractPath As String
|
||||
Dim sBackupFile As String = oSettings.BackupFolder & Path.DirectorySeparatorChar & oBackupInfo.FileName
|
||||
@@ -185,26 +175,30 @@ Public Class mgrRestore
|
||||
RaiseEvent UpdateLog(mgrCommon.FormatString(mgrRestore_ErrorNoPath, sExtractPath), False, ToolTipIcon.Error, True)
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
If bCleanFolder Then
|
||||
mgrCommon.DeleteDirectory(sExtractPath, True)
|
||||
Directory.CreateDirectory(sExtractPath)
|
||||
End If
|
||||
End If
|
||||
|
||||
'Check file integrity
|
||||
If oSettings.CheckSum Then
|
||||
If oBackupInfo.CheckSum <> String.Empty Then
|
||||
sHash = mgrHash.Generate_SHA256_Hash(sBackupFile)
|
||||
If sHash <> oBackupInfo.CheckSum Then
|
||||
RaiseEvent UpdateLog(mgrCommon.FormatString(mgrRestore_ErrorFailedCheck, oBackupInfo.Name), False, ToolTipIcon.Info, True)
|
||||
If mgrCommon.ShowMessage(mgrRestore_ConfirmFailedCheck, oBackupInfo.Name, MsgBoxStyle.YesNo) = MsgBoxResult.No Then
|
||||
RaiseEvent UpdateLog(mgrRestore_ErrorCheckAbort, False, ToolTipIcon.Info, True)
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
RaiseEvent UpdateLog(mgrCommon.FormatString(mgrRestore_Verified, oBackupInfo.Name), False, ToolTipIcon.Info, True)
|
||||
If oBackupInfo.CheckSum <> String.Empty Then
|
||||
sHash = mgrHash.Generate_SHA256_Hash(sBackupFile)
|
||||
If sHash <> oBackupInfo.CheckSum Then
|
||||
RaiseEvent UpdateLog(mgrCommon.FormatString(mgrRestore_ErrorFailedCheck, oBackupInfo.Name), False, ToolTipIcon.Info, True)
|
||||
If mgrCommon.ShowMessage(mgrRestore_ConfirmFailedCheck, oBackupInfo.Name, MsgBoxStyle.YesNo) = MsgBoxResult.No Then
|
||||
RaiseEvent UpdateLog(mgrRestore_ErrorCheckAbort, False, ToolTipIcon.Info, True)
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
RaiseEvent UpdateLog(mgrCommon.FormatString(mgrRestore_NoVerify, oBackupInfo.Name), False, ToolTipIcon.Info, True)
|
||||
RaiseEvent UpdateLog(mgrCommon.FormatString(mgrRestore_Verified, oBackupInfo.Name), False, ToolTipIcon.Info, True)
|
||||
End If
|
||||
Else
|
||||
RaiseEvent UpdateLog(mgrCommon.FormatString(mgrRestore_NoVerify, oBackupInfo.Name), False, ToolTipIcon.Info, True)
|
||||
End If
|
||||
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
|
||||
@@ -72,15 +72,15 @@ Public Class mgrSQLite
|
||||
'Add Tables (Settings)
|
||||
sSql = "CREATE TABLE settings (SettingsID INTEGER NOT NULL PRIMARY KEY, MonitorOnStartup BOOLEAN NOT NULL, StartToTray BOOLEAN NOT NULL, ShowDetectionToolTips BOOLEAN NOT NULL, " &
|
||||
"DisableConfirmation BOOLEAN NOT NULL, CreateSubFolder BOOLEAN NOT NULL, ShowOverwriteWarning BOOLEAN NOT NULL, RestoreOnLaunch BOOLEAN NOT NULL, " &
|
||||
"BackupFolder TEXT NOT NULL, Sync BOOLEAN NOT NULL, CheckSum BOOLEAN NOT NULL, StartWithWindows BOOLEAN NOT NULL, TimeTracking BOOLEAN NOT NULL, " &
|
||||
"BackupFolder TEXT NOT NULL, Sync BOOLEAN NOT NULL, StartWithWindows BOOLEAN NOT NULL, TimeTracking BOOLEAN NOT NULL, " &
|
||||
"SupressBackup BOOLEAN NOT NULL, SupressBackupThreshold INTEGER NOT NULL, CompressionLevel INTEGER NOT NULL, Custom7zArguments TEXT, " &
|
||||
"Custom7zLocation TEXT, SyncFields INTEGER NOT NULL, AutoSaveLog BOOLEAN NOT NULL);"
|
||||
"Custom7zLocation TEXT, SyncFields INTEGER NOT NULL, AutoSaveLog BOOLEAN NOT NULL, AutoRestore BOOLEAN NOT NULL, AutoMark BOOLEAN 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, " &
|
||||
"ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN NOT NULL, MonitorOnly BOOLEAN NOT NULL, " &
|
||||
"BackupLimit INTEGER NOT NULL, PRIMARY KEY(Name, Process));"
|
||||
"BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, PRIMARY KEY(Name, Process));"
|
||||
|
||||
'Add Tables (Tags)
|
||||
sSql &= "CREATE TABLE tags (TagID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY); "
|
||||
@@ -117,7 +117,7 @@ Public Class mgrSQLite
|
||||
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, " &
|
||||
"ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN NOT NULL, MonitorOnly BOOLEAN NOT NULL, " &
|
||||
"BackupLimit INTEGER NOT NULL, PRIMARY KEY(Name, Process));"
|
||||
"BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, PRIMARY KEY(Name, Process));"
|
||||
|
||||
'Add Tables (Remote Manifest)
|
||||
sSql &= "CREATE TABLE manifest (ManifestID TEXT NOT NULL PRIMARY KEY, Name TEXT NOT NULL, FileName TEXT NOT NULL, RestorePath TEXT NOT NULL, " &
|
||||
@@ -600,6 +600,45 @@ Public Class mgrSQLite
|
||||
End If
|
||||
End If
|
||||
|
||||
'1.01 Upgrade
|
||||
If GetDatabaseVersion() < 101 Then
|
||||
If eDatabase = Database.Local Then
|
||||
'Backup DB before starting
|
||||
BackupDB("v98")
|
||||
|
||||
'Remove checksum field
|
||||
sSQL = "CREATE TABLE settings_new (SettingsID INTEGER NOT NULL PRIMARY KEY, MonitorOnStartup BOOLEAN NOT NULL, StartToTray BOOLEAN NOT NULL, ShowDetectionToolTips BOOLEAN NOT NULL, " &
|
||||
"DisableConfirmation BOOLEAN NOT NULL, CreateSubFolder BOOLEAN NOT NULL, ShowOverwriteWarning BOOLEAN NOT NULL, RestoreOnLaunch BOOLEAN NOT NULL, " &
|
||||
"BackupFolder TEXT NOT NULL, Sync BOOLEAN NOT NULL, StartWithWindows BOOLEAN NOT NULL, TimeTracking BOOLEAN NOT NULL, " &
|
||||
"SupressBackup BOOLEAN NOT NULL, SupressBackupThreshold INTEGER NOT NULL, CompressionLevel INTEGER NOT NULL, Custom7zArguments TEXT, " &
|
||||
"Custom7zLocation TEXT, SyncFields INTEGER NOT NULL, AutoSaveLog BOOLEAN NOT NULL);"
|
||||
sSQL &= "INSERT INTO settings_new (SettingsID, MonitorOnStartup, StartToTray, ShowDetectionToolTips, DisableConfirmation, CreateSubFolder, " &
|
||||
"ShowOverwriteWarning, RestoreOnLaunch, BackupFolder, Sync, StartWithWindows, TimeTracking, SupressBackup, SupressBackupThreshold, " &
|
||||
"CompressionLevel, Custom7zArguments, Custom7zLocation, SyncFields, AutoSaveLog) " &
|
||||
"SELECT SettingsID, MonitorOnStartup, StartToTray, ShowDetectionToolTips, DisableConfirmation, CreateSubFolder, " &
|
||||
"ShowOverwriteWarning, RestoreOnLaunch, BackupFolder, Sync, StartWithWindows, TimeTracking, SupressBackup, SupressBackupThreshold, " &
|
||||
"CompressionLevel, Custom7zArguments, Custom7zLocation, SyncFields, AutoSaveLog FROM settings;" &
|
||||
"DROP TABLE settings; ALTER TABLE settings_new RENAME TO settings;"
|
||||
'Add new field(s)
|
||||
sSQL &= "ALTER TABLE monitorlist ADD COLUMN CleanFolder BOOLEAN NOT NULL DEFAULT 0;"
|
||||
sSQL &= "ALTER TABLE settings ADD COLUMN AutoRestore BOOLEAN NOT NULL DEFAULT 0;"
|
||||
sSQL &= "ALTER TABLE settings ADD COLUMN AutoMark BOOLEAN NOT NULL DEFAULT 0;"
|
||||
sSQL &= "PRAGMA user_version=101"
|
||||
|
||||
RunParamQuery(sSQL, New Hashtable)
|
||||
End If
|
||||
If eDatabase = Database.Remote Then
|
||||
'Backup DB before starting
|
||||
BackupDB("v98")
|
||||
|
||||
'Add new field(s)
|
||||
sSQL = "ALTER TABLE monitorlist ADD COLUMN CleanFolder BOOLEAN NOT NULL DEFAULT 0;"
|
||||
sSQL &= "PRAGMA user_version=101"
|
||||
|
||||
RunParamQuery(sSQL, New Hashtable)
|
||||
End If
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Public Function GetDBSize() As Long
|
||||
|
||||
+26
-14
@@ -9,8 +9,9 @@ Public Class mgrSettings
|
||||
Private bCreateSubFolder As Boolean = False
|
||||
Private bShowOverwriteWarning As Boolean = True
|
||||
Private bRestoreOnLaunch As Boolean = False
|
||||
Private bAutoRestore As Boolean = False
|
||||
Private bAutoMark As Boolean = False
|
||||
Private bSync As Boolean = True
|
||||
Private bCheckSum As Boolean = True
|
||||
Private bTimeTracking As Boolean = True
|
||||
Private bSupressBackup As Boolean = False
|
||||
Private iSupressBackupThreshold As Integer = 10
|
||||
@@ -93,6 +94,24 @@ Public Class mgrSettings
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property AutoRestore As Boolean
|
||||
Get
|
||||
Return bAutoRestore
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
bAutoRestore = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property AutoMark As Boolean
|
||||
Get
|
||||
Return bAutoMark
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
bAutoMark = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property Sync As Boolean
|
||||
Get
|
||||
Return bSync
|
||||
@@ -102,15 +121,6 @@ Public Class mgrSettings
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property CheckSum As Boolean
|
||||
Get
|
||||
Return bCheckSum
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
bCheckSum = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property TimeTracking As Boolean
|
||||
Get
|
||||
Return bTimeTracking
|
||||
@@ -249,9 +259,9 @@ Public Class mgrSettings
|
||||
oDatabase.RunParamQuery(sSQL, New Hashtable)
|
||||
|
||||
sSQL = "INSERT INTO settings VALUES (1, @MonitorOnStartup, @StartToTray, @ShowDetectionToolTips, @DisableConfirmation, "
|
||||
sSQL &= "@CreateSubFolder, @ShowOverwriteWarning, @RestoreOnLaunch, @BackupFolder, @Sync, @CheckSum, @StartWithWindows, "
|
||||
sSQL &= "@CreateSubFolder, @ShowOverwriteWarning, @RestoreOnLaunch, @BackupFolder, @Sync, @StartWithWindows, "
|
||||
sSQL &= "@TimeTracking, @SupressBackup, @SupressBackupThreshold, @CompressionLevel, @Custom7zArguments, @Custom7zLocation, "
|
||||
sSQL &= "@SyncFields,@AutoSaveLog)"
|
||||
sSQL &= "@SyncFields, @AutoSaveLog, @AutoRestore, @AutoMark)"
|
||||
|
||||
hshParams.Add("MonitorOnStartup", MonitorOnStartup)
|
||||
hshParams.Add("StartToTray", StartToTray)
|
||||
@@ -262,7 +272,6 @@ Public Class mgrSettings
|
||||
hshParams.Add("RestoreOnLaunch", RestoreOnLaunch)
|
||||
hshParams.Add("BackupFolder", BackupFolder)
|
||||
hshParams.Add("Sync", Sync)
|
||||
hshParams.Add("CheckSum", CheckSum)
|
||||
hshParams.Add("StartWithWindows", StartWithWindows)
|
||||
hshParams.Add("TimeTracking", TimeTracking)
|
||||
hshParams.Add("SupressBackup", SupressBackup)
|
||||
@@ -272,6 +281,8 @@ Public Class mgrSettings
|
||||
hshParams.Add("Custom7zLocation", Custom7zLocation)
|
||||
hshParams.Add("SyncFields", SyncFields)
|
||||
hshParams.Add("AutoSaveLog", AutoSaveLog)
|
||||
hshParams.Add("AutoRestore", AutoRestore)
|
||||
hshParams.Add("AutoMark", AutoMark)
|
||||
oDatabase.RunParamQuery(sSQL, hshParams)
|
||||
End Sub
|
||||
|
||||
@@ -295,7 +306,6 @@ Public Class mgrSettings
|
||||
RestoreOnLaunch = CBool(dr("RestoreOnLaunch"))
|
||||
BackupFolder = CStr(dr("BackupFolder"))
|
||||
Sync = CBool(dr("Sync"))
|
||||
CheckSum = CBool(dr("CheckSum"))
|
||||
StartWithWindows = CBool(dr("StartWithWindows"))
|
||||
TimeTracking = CBool(dr("TimeTracking"))
|
||||
SupressBackup = CBool(dr("SupressBackup"))
|
||||
@@ -305,6 +315,8 @@ Public Class mgrSettings
|
||||
If Not IsDBNull(dr("Custom7zLocation")) Then Custom7zLocation = CStr(dr("Custom7zLocation"))
|
||||
SyncFields = CInt(dr("SyncFields"))
|
||||
AutoSaveLog = CBool(dr("AutoSaveLog"))
|
||||
AutoRestore = CBool(dr("AutoRestore"))
|
||||
AutoMark = CBool(dr("AutoMark"))
|
||||
Next
|
||||
|
||||
oDatabase.Disconnect()
|
||||
|
||||
@@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices
|
||||
' by using the '*' as shown below:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("0.98.*")>
|
||||
<Assembly: AssemblyFileVersion("0.98.0.0")>
|
||||
<Assembly: AssemblyVersion("1.0.1.*")>
|
||||
<Assembly: AssemblyFileVersion("1.0.1.0")>
|
||||
|
||||
<Assembly: NeutralResourcesLanguageAttribute("en")>
|
||||
Generated
+106
-16
@@ -1293,6 +1293,15 @@ Namespace My.Resources
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Delete folder on restore.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmGameManager_chkCleanFolder() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmGameManager_chkCleanFolder", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Monitor this game.
|
||||
'''</summary>
|
||||
@@ -1942,7 +1951,7 @@ Namespace My.Resources
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to New Saves Pending.
|
||||
''' Looks up a localized string similar to New Backups Pending.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmGameManager_optPendingRestores() As String
|
||||
Get
|
||||
@@ -2275,7 +2284,7 @@ Namespace My.Resources
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Game Backup Monitor[BR]Version: [PARAM] Beta ([PARAM])[BR]Build: [PARAM][BR][PARAM][BR][BR]This program comes with ABSOLUTELY NO WARRANTY.[BR]This is free software, and you are welcome to redistribute it under certain conditions.[BR][BR]See gpl-3.0.html in the program folder for details..
|
||||
''' Looks up a localized string similar to Game Backup Monitor[BR]Version: [PARAM] ([PARAM])[BR]Build: [PARAM][BR][PARAM][BR][BR]This program comes with ABSOLUTELY NO WARRANTY.[BR]This is free software, and you are welcome to redistribute it under certain conditions.[BR][BR]See gpl-3.0.html in the program folder for details..
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmMain_About() As String
|
||||
Get
|
||||
@@ -2292,6 +2301,24 @@ Namespace My.Resources
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The saved game folder for [PARAM] does not exist or could not be determined, the backup has been automatically marked as restored..
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmMain_AutoMark() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmMain_AutoMark", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to [PARAM] has multiple configurations and cannot be automatically restored..
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmMain_AutoRestoreFailure() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmMain_AutoRestoreFailure", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Backup in Progress....
|
||||
'''</summary>
|
||||
@@ -3058,7 +3085,7 @@ Namespace My.Resources
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to [PARAM] New Saves Pending.
|
||||
''' Looks up a localized string similar to [PARAM] New Backups Pending.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmMain_NewSaveNotificationMulti() As String
|
||||
Get
|
||||
@@ -3067,7 +3094,7 @@ Namespace My.Resources
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to [PARAM] New Save Pending.
|
||||
''' Looks up a localized string similar to [PARAM] New Backup Pending.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmMain_NewSaveNotificationSingle() As String
|
||||
Get
|
||||
@@ -3075,6 +3102,24 @@ Namespace My.Resources
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The saved game folder for [PARAM] does not exist or could not be determined, this backup has been skipped..
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmMain_NoAutoMark() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmMain_NoAutoMark", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The backup file for [PARAM] has no checksum, it cannot be automatically restored..
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmMain_NoCheckSum() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmMain_NoCheckSum", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Game details are unavailable..
|
||||
'''</summary>
|
||||
@@ -3147,6 +3192,33 @@ Namespace My.Resources
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to [PARAM] new saved game backups are being automatically restored..
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmMain_RestoreNotificationMulti() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmMain_RestoreNotificationMulti", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to A new saved game backup for [PARAM] is being automatically restored..
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmMain_RestoreNotificationSingle() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmMain_RestoreNotificationSingle", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to The backup file for [PARAM] is not ready to restore..
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmMain_RestoreNotReady() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmMain_RestoreNotReady", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to GBM is running with Administrator privileges..
|
||||
'''</summary>
|
||||
@@ -3345,6 +3417,24 @@ Namespace My.Resources
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Automatically mark new backups as restored when appropriate.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmSettings_chkAutoMark() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmSettings_chkAutoMark", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Automatically restore new backups.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmSettings_chkAutoRestore() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmSettings_chkAutoRestore", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Autosave log when max length is exceeded.
|
||||
'''</summary>
|
||||
@@ -3363,15 +3453,6 @@ Namespace My.Resources
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Verify backup files with a checksum.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmSettings_chkCheckSum() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmSettings_chkCheckSum", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Create a sub-folder for each game.
|
||||
'''</summary>
|
||||
@@ -3400,11 +3481,11 @@ Namespace My.Resources
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Notify when there are new backup files to restore.
|
||||
''' Looks up a localized string similar to Display notifications about new backups.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmSettings_chkRestoreOnLaunch() As String
|
||||
Friend ReadOnly Property frmSettings_chkRestoreNotify() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmSettings_chkRestoreOnLaunch", resourceCulture)
|
||||
Return ResourceManager.GetString("frmSettings_chkRestoreNotify", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
@@ -3525,6 +3606,15 @@ Namespace My.Resources
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Backup Handling.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmSettings_grpBackupHandling() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmSettings_grpBackupHandling", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Folders.
|
||||
'''</summary>
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
<value>..\Resources\Admin.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="frmMain_About" xml:space="preserve">
|
||||
<value>Game Backup Monitor[BR]Version: [PARAM] Beta ([PARAM])[BR]Build: [PARAM][BR][PARAM][BR][BR]This program comes with ABSOLUTELY NO WARRANTY.[BR]This is free software, and you are welcome to redistribute it under certain conditions.[BR][BR]See gpl-3.0.html in the program folder for details.</value>
|
||||
<value>Game Backup Monitor[BR]Version: [PARAM] ([PARAM])[BR]Build: [PARAM][BR][PARAM][BR][BR]This program comes with ABSOLUTELY NO WARRANTY.[BR]This is free software, and you are welcome to redistribute it under certain conditions.[BR][BR]See gpl-3.0.html in the program folder for details.</value>
|
||||
</data>
|
||||
<data name="frmMain_ManifestAreadyClean" xml:space="preserve">
|
||||
<value>The local manifest is clean.</value>
|
||||
@@ -287,10 +287,10 @@
|
||||
<value>Multiple Games Detected</value>
|
||||
</data>
|
||||
<data name="frmMain_NewSaveNotificationMulti" xml:space="preserve">
|
||||
<value>[PARAM] New Saves Pending</value>
|
||||
<value>[PARAM] New Backups Pending</value>
|
||||
</data>
|
||||
<data name="frmMain_NewSaveNotificationSingle" xml:space="preserve">
|
||||
<value>[PARAM] New Save Pending</value>
|
||||
<value>[PARAM] New Backup Pending</value>
|
||||
</data>
|
||||
<data name="frmMain_NoDetails" xml:space="preserve">
|
||||
<value>Game details are unavailable.</value>
|
||||
@@ -659,7 +659,7 @@
|
||||
<value>Custom</value>
|
||||
</data>
|
||||
<data name="frmGameManager_optPendingRestores" xml:space="preserve">
|
||||
<value>New Saves Pending</value>
|
||||
<value>New Backups Pending</value>
|
||||
</data>
|
||||
<data name="frmGameManager_OutofSync" xml:space="preserve">
|
||||
<value>Out of Sync</value>
|
||||
@@ -1075,9 +1075,6 @@
|
||||
<data name="frmSettings_chkBackupConfirm" xml:space="preserve">
|
||||
<value>Disable backup confirmation</value>
|
||||
</data>
|
||||
<data name="frmSettings_chkCheckSum" xml:space="preserve">
|
||||
<value>Verify backup files with a checksum</value>
|
||||
</data>
|
||||
<data name="frmSettings_chkCreateFolder" xml:space="preserve">
|
||||
<value>Create a sub-folder for each game</value>
|
||||
</data>
|
||||
@@ -1087,8 +1084,8 @@
|
||||
<data name="frmSettings_chkOverwriteWarning" xml:space="preserve">
|
||||
<value>Show overwrite warning</value>
|
||||
</data>
|
||||
<data name="frmSettings_chkRestoreOnLaunch" xml:space="preserve">
|
||||
<value>Notify when there are new backup files to restore</value>
|
||||
<data name="frmSettings_chkRestoreNotify" xml:space="preserve">
|
||||
<value>Display notifications about new backups</value>
|
||||
</data>
|
||||
<data name="frmSettings_chkShowDetectionTips" xml:space="preserve">
|
||||
<value>Show detection notifications</value>
|
||||
@@ -1732,4 +1729,37 @@
|
||||
<data name="frmGameManager_Unknown" xml:space="preserve">
|
||||
<value>Unknown</value>
|
||||
</data>
|
||||
<data name="frmGameManager_chkCleanFolder" xml:space="preserve">
|
||||
<value>Delete folder on restore</value>
|
||||
</data>
|
||||
<data name="frmMain_AutoMark" xml:space="preserve">
|
||||
<value>The saved game folder for [PARAM] does not exist or could not be determined, the backup has been automatically marked as restored.</value>
|
||||
</data>
|
||||
<data name="frmMain_RestoreNotReady" xml:space="preserve">
|
||||
<value>The backup file for [PARAM] is not ready to restore.</value>
|
||||
</data>
|
||||
<data name="frmSettings_chkAutoMark" xml:space="preserve">
|
||||
<value>Automatically mark new backups as restored when appropriate</value>
|
||||
</data>
|
||||
<data name="frmSettings_grpBackupHandling" xml:space="preserve">
|
||||
<value>Backup Handling</value>
|
||||
</data>
|
||||
<data name="frmSettings_chkAutoRestore" xml:space="preserve">
|
||||
<value>Automatically restore new backups</value>
|
||||
</data>
|
||||
<data name="frmMain_AutoRestoreFailure" xml:space="preserve">
|
||||
<value>[PARAM] has multiple configurations and cannot be automatically restored.</value>
|
||||
</data>
|
||||
<data name="frmMain_RestoreNotificationMulti" xml:space="preserve">
|
||||
<value>[PARAM] new saved game backups are being automatically restored.</value>
|
||||
</data>
|
||||
<data name="frmMain_RestoreNotificationSingle" xml:space="preserve">
|
||||
<value>A new saved game backup for [PARAM] is being automatically restored.</value>
|
||||
</data>
|
||||
<data name="frmMain_NoAutoMark" xml:space="preserve">
|
||||
<value>The saved game folder for [PARAM] does not exist or could not be determined, this backup has been skipped.</value>
|
||||
</data>
|
||||
<data name="frmMain_NoCheckSum" xml:space="preserve">
|
||||
<value>The backup file for [PARAM] has no checksum, it cannot be automatically restored.</value>
|
||||
</data>
|
||||
</root>
|
||||
+14
-25
@@ -1,33 +1,22 @@
|
||||
Game Backup Monitor v0.98 Readme
|
||||
Game Backup Monitor v1.01 Readme
|
||||
http://mikemaximus.github.io/gbm-web/
|
||||
gamebackupmonitor@gmail.com
|
||||
|
||||
September 1, 2016
|
||||
April 1, 2017
|
||||
|
||||
Disclaimer:
|
||||
New in 1.01
|
||||
|
||||
This is beta release software. You may still encounter some bugs.
|
||||
- (All) Added features to automatically handle new backup files.
|
||||
- Automatically restore new backup files when they are detected.
|
||||
- Automatically mark new backup files as restored if the game isn't installed on the current PC.
|
||||
- These new features are available in the "Backup and Restore" section of the Settings. They are optional and disabled by default.
|
||||
- (All) Added new configuration option to delete saved game folder on restore
|
||||
- This option is used for games that change the file names of their saves, which results in a mix of old and new saved games if the old saves aren't deleted first.
|
||||
- This option has limitations and is not part of official configurations or import/export features.
|
||||
- (All) The "Verify backup files with a checksum" option has been removed. This feature is now baked into GBM and cannot be disabled.
|
||||
- (All) GBM will now behave consistently across different configurations (such as LAN) when performing sync operations.
|
||||
- (Windows) Fixed rare issue related to DPI display scaling.
|
||||
|
||||
New in 0.98
|
||||
|
||||
- (All) Redesigned GBM's ability to manage multiple backups per game.
|
||||
- The "Timestamp each backup" option has been renamed "Save multiple backups".
|
||||
- You can limit the amount of backups you keep for each game by setting a limit (2 to 100).
|
||||
- GBM will keep your backup folder clean by automatically deleting old backups as limits are reached or modified.
|
||||
- The Game Manager now allows you to browse and manage ALL backups for each game, not just the latest backup.
|
||||
- (All) Using "Monitor Only" no longer puts anys limitations on the game configuration or available features.
|
||||
- (Windows Installer) The installer will now properly go into upgrade mode if a prior version of GBM is installed. Note: 32-bit and 64-bit qualify as different versions.
|
||||
- (Windows Installer) The installer will now create an uninstall entry in Add/Remove Programs (Apps & Features).
|
||||
- (Linux) 64-bit games running in Wine will now be properly detected.
|
||||
- (Linux) Add Game Wizard will no longer remove all extensions when selecting an executable.
|
||||
- (Linux) GBM now prefers to use an absolute path when creating Linux game configurations.
|
||||
|
||||
Important Upgrade Information:
|
||||
|
||||
- The v0.98 Game Manager will not detect old backup files made using the "Timestamp each backup" setting in prior versions.
|
||||
- Configurations using the "Timestamp each backup" option will have "Save multiple backups" automatically enabled with a backup limit of 5.
|
||||
- If "Timestamp each backup" is currently set to sync, then "Save multiple backups" will also be set to sync after upgrading.
|
||||
|
||||
For more information regarding Linux support read the FAQ at http://mikemaximus.github.io/gbm-web/linux.html
|
||||
Read the "Settings" and "The Game Manager" sections of the manual (http://mikemaximus.github.io/gbm-web/manual.html) for more details on how the new features work and their limitations.
|
||||
|
||||
The entire version history of GBM releases is available at http://mikemaximus.github.io/gbm-web/versionhistory.html
|
||||
@@ -1,15 +1,15 @@
|
||||
# [Game Backup Monitor] (http://mikemaximus.github.io/gbm-web/)
|
||||
# [Game Backup Monitor](http://mikemaximus.github.io/gbm-web/)
|
||||
|
||||
![Screenshot] (http://mikemaximus.github.io/gbm-web/images/manual/manual_01.jpg)
|
||||

|
||||
|
||||
Game Backup Monitor is a simple, but flexible application that detects games as you play them. Once you finish playing a game, a backup of the saved games will be made automatically using 7-Zip compression. GBM can be used on a single computer, or on multiple computers to effectively add cloud support to any game or application.
|
||||
|
||||
**License**: GNU General Public License version 3.0 (GPLv3)<br />
|
||||
**Language**: English Only<br />
|
||||
**Language**: English ([Translation FAQ](http://mikemaximus.github.io/gbm-web/translations.html))<br />
|
||||
**Platform**: Windows (.NET 4) & Linux (Mono)
|
||||
|
||||
[About Game Backup Monitor] (http://mikemaximus.github.io/gbm-web/about.html) <br />
|
||||
[Game Backup Monitor FAQ] (http://mikemaximus.github.io/gbm-web/faq.html) <br />
|
||||
[Game Backup Monitor Manual] (http://mikemaximus.github.io/gbm-web/manual.html) <br />
|
||||
[List of Preconfigured Games] (http://mikemaximus.github.io/gbm-web/GBM_Official.xml) <br /> <br />
|
||||
Updates regarding this project are available via the [Game Backup Monitor web site] (http://mikemaximus.github.io/gbm-web/).
|
||||
[About Game Backup Monitor](http://mikemaximus.github.io/gbm-web/about.html) <br />
|
||||
[Game Backup Monitor FAQ](http://mikemaximus.github.io/gbm-web/faq.html) <br />
|
||||
[Game Backup Monitor Manual](http://mikemaximus.github.io/gbm-web/manual.html) <br />
|
||||
[List of Preconfigured Games](http://mikemaximus.github.io/gbm-web/GBM_Official.xml) <br /> <br />
|
||||
Updates regarding this project are available via the [Game Backup Monitor web site](http://mikemaximus.github.io/gbm-web/).
|
||||
|
||||
Reference in New Issue
Block a user