Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1e2f4de816 | ||
|
|
b9b959f96c | ||
|
|
2ae705be18 | ||
|
|
ccade84b65 | ||
|
|
017c5def56 | ||
|
|
1f9dc18c49 | ||
|
|
bc1630a122 | ||
|
|
478721dbd1 | ||
|
|
8ad4810011 | ||
|
|
93bc974cc3 | ||
|
|
c9463c3a36 | ||
|
|
8b2c5f376b | ||
|
|
9e329476a2 | ||
|
|
626fca3e1e | ||
|
|
039f91cd6f | ||
|
|
f98a98af99 | ||
|
|
d9bd7f38f5 | ||
|
|
4e2ab9a0fb | ||
|
|
218ce3f367 | ||
|
|
b3cfab7ee6 | ||
|
|
39440e1f98 | ||
|
|
9b9d3f9125 | ||
|
|
7eab3b8841 | ||
|
|
539009c5de | ||
|
|
01b46107ad | ||
|
|
a5d2ce2255 | ||
|
|
c0764d0c08 |
@@ -6,6 +6,8 @@
|
|||||||
Private sPath As String
|
Private sPath As String
|
||||||
Private bAbsolutePath As Boolean
|
Private bAbsolutePath As Boolean
|
||||||
Private bFolderSave As Boolean
|
Private bFolderSave As Boolean
|
||||||
|
Private bAppendTimeStamp As Boolean
|
||||||
|
Private iBackupLimit As Integer
|
||||||
Private sFileType As String
|
Private sFileType As String
|
||||||
Private sExcludeList As String
|
Private sExcludeList As String
|
||||||
Private bMonitorOnly As Boolean
|
Private bMonitorOnly As Boolean
|
||||||
@@ -76,6 +78,24 @@
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
Property AppendTimeStamp As Boolean
|
||||||
|
Set(value As Boolean)
|
||||||
|
bAppendTimeStamp = value
|
||||||
|
End Set
|
||||||
|
Get
|
||||||
|
Return bAppendTimeStamp
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
Property BackupLimit As Integer
|
||||||
|
Set(value As Integer)
|
||||||
|
iBackupLimit = value
|
||||||
|
End Set
|
||||||
|
Get
|
||||||
|
Return iBackupLimit
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
Property FileType As String
|
Property FileType As String
|
||||||
Set(value As String)
|
Set(value As String)
|
||||||
sFileType = value
|
sFileType = value
|
||||||
|
|||||||
@@ -47,6 +47,12 @@
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
ReadOnly Property FileSafeName As String
|
||||||
|
Get
|
||||||
|
Return mgrPath.ValidateFileNameForOS(sName)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
Property FileName As String
|
Property FileName As String
|
||||||
Get
|
Get
|
||||||
If mgrCommon.IsUnix Then
|
If mgrCommon.IsUnix Then
|
||||||
|
|||||||
+10
-12
@@ -9,7 +9,7 @@ Public Class clsGame
|
|||||||
Private bFolderSave As Boolean = False
|
Private bFolderSave As Boolean = False
|
||||||
Private sFileType As String = String.Empty
|
Private sFileType As String = String.Empty
|
||||||
Private bAppendTimeStamp As Boolean = False
|
Private bAppendTimeStamp As Boolean = False
|
||||||
Private iBackupLimit As Integer = 2
|
Private iBackupLimit As Integer = 0
|
||||||
Private bCleanFolder As Boolean = False
|
Private bCleanFolder As Boolean = False
|
||||||
Private sExcludeList As String = String.Empty
|
Private sExcludeList As String = String.Empty
|
||||||
Private sProcessPath As String = String.Empty
|
Private sProcessPath As String = String.Empty
|
||||||
@@ -31,7 +31,7 @@ Public Class clsGame
|
|||||||
Company = 2
|
Company = 2
|
||||||
Version = 4
|
Version = 4
|
||||||
Icon = 16
|
Icon = 16
|
||||||
TimeStamp = 32
|
Unused = 32 'Do not remove to maintain compatability, re-use for a future field.
|
||||||
MonitorGame = 64
|
MonitorGame = 64
|
||||||
End Enum
|
End Enum
|
||||||
|
|
||||||
@@ -340,10 +340,13 @@ Public Class clsGame
|
|||||||
If FolderSave <> oGame.FolderSave Then
|
If FolderSave <> oGame.FolderSave Then
|
||||||
Return False
|
Return False
|
||||||
End If
|
End If
|
||||||
If CleanFolder <> oGame.CleanFolder Then
|
If AppendTimeStamp <> oGame.AppendTimeStamp Then
|
||||||
Return False
|
Return False
|
||||||
End If
|
End If
|
||||||
If AppendTimeStamp <> oGame.AppendTimeStamp Then
|
If BackupLimit <> oGame.BackupLimit Then
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
If CleanFolder <> oGame.CleanFolder Then
|
||||||
Return False
|
Return False
|
||||||
End If
|
End If
|
||||||
If Hours <> oGame.Hours Then
|
If Hours <> oGame.Hours Then
|
||||||
@@ -380,14 +383,6 @@ Public Class clsGame
|
|||||||
Return False
|
Return False
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
If (eSyncFields And eOptionalSyncFields.TimeStamp) = eOptionalSyncFields.TimeStamp Then
|
|
||||||
If AppendTimeStamp <> oGame.AppendTimeStamp Then
|
|
||||||
Return False
|
|
||||||
End If
|
|
||||||
If BackupLimit <> oGame.BackupLimit Then
|
|
||||||
Return False
|
|
||||||
End If
|
|
||||||
End If
|
|
||||||
If (eSyncFields And eOptionalSyncFields.Version) = eOptionalSyncFields.Version Then
|
If (eSyncFields And eOptionalSyncFields.Version) = eOptionalSyncFields.Version Then
|
||||||
If Version <> oGame.Version Then
|
If Version <> oGame.Version Then
|
||||||
Return False
|
Return False
|
||||||
@@ -430,6 +425,9 @@ Public Class clsGame
|
|||||||
If FolderSave <> oGame.FolderSave Then
|
If FolderSave <> oGame.FolderSave Then
|
||||||
Return False
|
Return False
|
||||||
End If
|
End If
|
||||||
|
If AppendTimeStamp <> oGame.AppendTimeStamp Then
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
If MonitorOnly <> oGame.MonitorOnly Then
|
If MonitorOnly <> oGame.MonitorOnly Then
|
||||||
Return False
|
Return False
|
||||||
End If
|
End If
|
||||||
|
|||||||
Generated
-2
@@ -267,11 +267,9 @@ Partial Class frmGameManager
|
|||||||
'nudLimit
|
'nudLimit
|
||||||
'
|
'
|
||||||
Me.nudLimit.Location = New System.Drawing.Point(330, 155)
|
Me.nudLimit.Location = New System.Drawing.Point(330, 155)
|
||||||
Me.nudLimit.Minimum = New Decimal(New Integer() {2, 0, 0, 0})
|
|
||||||
Me.nudLimit.Name = "nudLimit"
|
Me.nudLimit.Name = "nudLimit"
|
||||||
Me.nudLimit.Size = New System.Drawing.Size(40, 20)
|
Me.nudLimit.Size = New System.Drawing.Size(40, 20)
|
||||||
Me.nudLimit.TabIndex = 17
|
Me.nudLimit.TabIndex = 17
|
||||||
Me.nudLimit.Value = New Decimal(New Integer() {2, 0, 0, 0})
|
|
||||||
Me.nudLimit.Visible = False
|
Me.nudLimit.Visible = False
|
||||||
'
|
'
|
||||||
'btnExclude
|
'btnExclude
|
||||||
|
|||||||
+95
-34
@@ -175,40 +175,33 @@ Public Class frmGameManager
|
|||||||
Return sPath
|
Return sPath
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Sub CheckManifestandUpdate(ByVal oOriginalApp As clsGame, ByVal oNewApp As clsGame)
|
Private Sub CheckManifestandUpdate(ByVal oOriginalApp As clsGame, ByVal oNewApp As clsGame, ByVal bUseGameID As Boolean)
|
||||||
Dim oBackupItems As List(Of clsBackup)
|
Dim oBackupItems As List(Of clsBackup)
|
||||||
Dim sDirectory As String
|
Dim sDirectory As String
|
||||||
Dim sNewDirectory As String
|
Dim sNewDirectory As String
|
||||||
Dim sFileName As String
|
Dim sFileName As String
|
||||||
Dim sNewFileName As String
|
Dim sNewFileName As String
|
||||||
|
Dim sNewAppItem As String
|
||||||
|
Dim sOriginalAppItem As String
|
||||||
|
|
||||||
|
'If there is a valid change, check and update the manifest
|
||||||
|
If (oNewApp.ID <> oOriginalApp.ID) Or (oNewApp.FileSafeName <> oOriginalApp.FileSafeName) Then
|
||||||
|
'Choose how to perform file & folder renames
|
||||||
|
If bUseGameID Then
|
||||||
|
sNewAppItem = oNewApp.ID
|
||||||
|
sOriginalAppItem = oOriginalApp.ID
|
||||||
|
Else
|
||||||
|
sNewAppItem = oNewApp.FileSafeName
|
||||||
|
sOriginalAppItem = oOriginalApp.FileSafeName
|
||||||
|
End If
|
||||||
|
|
||||||
'If there is an ID change, check and update the manifest
|
|
||||||
If oNewApp.ID <> oOriginalApp.ID Then
|
|
||||||
'Local
|
'Local
|
||||||
If mgrManifest.DoManifestCheck(oOriginalApp.ID, mgrSQLite.Database.Local) Then
|
If mgrManifest.DoManifestCheck(oOriginalApp.ID, mgrSQLite.Database.Local) Then
|
||||||
oBackupItems = mgrManifest.DoManifestGetByMonitorID(oOriginalApp.ID, mgrSQLite.Database.Local)
|
oBackupItems = mgrManifest.DoManifestGetByMonitorID(oOriginalApp.ID, mgrSQLite.Database.Local)
|
||||||
'The local manifest will only have one entry per game, therefore this runs only once
|
'The local manifest will only have one entry per game, therefore this runs only once
|
||||||
For Each oBackupItem As clsBackup In oBackupItems
|
For Each oBackupItem As clsBackup In oBackupItems
|
||||||
'Rename Current Backup File & Folder
|
|
||||||
sFileName = BackupFolder & oBackupItem.FileName
|
|
||||||
|
|
||||||
'Rename Backup File
|
|
||||||
sNewFileName = Path.GetDirectoryName(sFileName) & Path.DirectorySeparatorChar & Path.GetFileName(sFileName).Replace(oOriginalApp.ID, oNewApp.ID)
|
|
||||||
If File.Exists(sFileName) And Not sFileName = sNewFileName Then
|
|
||||||
FileSystem.Rename(sFileName, sNewFileName)
|
|
||||||
End If
|
|
||||||
|
|
||||||
'Rename Directory
|
|
||||||
sDirectory = Path.GetDirectoryName(sFileName)
|
|
||||||
sNewDirectory = sDirectory.Replace(oOriginalApp.ID, oNewApp.ID)
|
|
||||||
If sDirectory <> sNewDirectory Then
|
|
||||||
If Directory.Exists(sDirectory) And Not sDirectory = sNewDirectory Then
|
|
||||||
FileSystem.Rename(sDirectory, sNewDirectory)
|
|
||||||
End If
|
|
||||||
End If
|
|
||||||
|
|
||||||
oBackupItem.MonitorID = oNewApp.ID
|
oBackupItem.MonitorID = oNewApp.ID
|
||||||
oBackupItem.FileName = oBackupItem.FileName.Replace(oOriginalApp.ID, oNewApp.ID)
|
oBackupItem.FileName = oBackupItem.FileName.Replace(sOriginalAppItem, sNewAppItem)
|
||||||
mgrManifest.DoManifestUpdateByManifestID(oBackupItem, mgrSQLite.Database.Local)
|
mgrManifest.DoManifestUpdateByManifestID(oBackupItem, mgrSQLite.Database.Local)
|
||||||
Next
|
Next
|
||||||
End If
|
End If
|
||||||
@@ -218,10 +211,24 @@ Public Class frmGameManager
|
|||||||
oBackupItems = mgrManifest.DoManifestGetByMonitorID(oOriginalApp.ID, mgrSQLite.Database.Remote)
|
oBackupItems = mgrManifest.DoManifestGetByMonitorID(oOriginalApp.ID, mgrSQLite.Database.Remote)
|
||||||
|
|
||||||
For Each oBackupItem As clsBackup In oBackupItems
|
For Each oBackupItem As clsBackup In oBackupItems
|
||||||
|
'Rename Current Backup File
|
||||||
|
sFileName = BackupFolder & oBackupItem.FileName
|
||||||
|
sNewFileName = Path.GetDirectoryName(sFileName) & Path.DirectorySeparatorChar & Path.GetFileName(sFileName).Replace(sOriginalAppItem, sNewAppItem)
|
||||||
|
If File.Exists(sFileName) And Not sFileName = sNewFileName Then
|
||||||
|
FileSystem.Rename(sFileName, sNewFileName)
|
||||||
|
End If
|
||||||
|
|
||||||
oBackupItem.MonitorID = oNewApp.ID
|
oBackupItem.MonitorID = oNewApp.ID
|
||||||
oBackupItem.FileName = oBackupItem.FileName.Replace(oOriginalApp.ID, oNewApp.ID)
|
oBackupItem.FileName = oBackupItem.FileName.Replace(sOriginalAppItem, sNewAppItem)
|
||||||
mgrManifest.DoManifestUpdateByManifestID(oBackupItem, mgrSQLite.Database.Remote)
|
mgrManifest.DoManifestUpdateByManifestID(oBackupItem, mgrSQLite.Database.Remote)
|
||||||
Next
|
Next
|
||||||
|
|
||||||
|
'Rename folder if there is one
|
||||||
|
sDirectory = BackupFolder & sOriginalAppItem
|
||||||
|
sNewDirectory = sDirectory.Replace(sOriginalAppItem, sNewAppItem)
|
||||||
|
If Directory.Exists(sDirectory) And Not sDirectory = sNewDirectory Then
|
||||||
|
FileSystem.Rename(sDirectory, sNewDirectory)
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
@@ -675,6 +682,36 @@ Public Class frmGameManager
|
|||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Public Sub VerifyBackups(ByVal oApp As clsGame)
|
||||||
|
Dim oCurrentBackup As clsBackup
|
||||||
|
Dim oCurrentBackups As List(Of clsBackup)
|
||||||
|
Dim oBackupsRemoved As New List(Of clsBackup)
|
||||||
|
|
||||||
|
oCurrentBackups = mgrManifest.DoManifestGetByMonitorID(oApp.ID, mgrSQLite.Database.Remote)
|
||||||
|
|
||||||
|
Cursor.Current = Cursors.WaitCursor
|
||||||
|
|
||||||
|
For Each oCurrentBackup In oCurrentBackups
|
||||||
|
If Not File.Exists(BackupFolder & oCurrentBackup.FileName) Then
|
||||||
|
oBackupsRemoved.Add(oCurrentBackup)
|
||||||
|
mgrManifest.DoManifestDeleteByManifestID(oCurrentBackup, mgrSQLite.Database.Remote)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
If oBackupsRemoved.Count > 0 Then
|
||||||
|
For Each oCurrentBackup In oBackupsRemoved
|
||||||
|
oCurrentBackups.Remove(oCurrentBackup)
|
||||||
|
If oCurrentBackups.Count = 0 Then
|
||||||
|
mgrManifest.DoManifestDeleteByMonitorID(oCurrentBackup, mgrSQLite.Database.Local)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
LoadBackupData()
|
||||||
|
GetBackupInfo(oApp)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Cursor.Current = Cursors.Default
|
||||||
|
End Sub
|
||||||
|
|
||||||
Private Sub GetBackupInfo(ByVal oApp As clsGame)
|
Private Sub GetBackupInfo(ByVal oApp As clsGame)
|
||||||
Dim oBackupInfo As clsBackup
|
Dim oBackupInfo As clsBackup
|
||||||
Dim oCurrentBackup As clsBackup
|
Dim oCurrentBackup As clsBackup
|
||||||
@@ -847,14 +884,14 @@ Public Class frmGameManager
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub FillTagsbyID(ByVal sID As String)
|
Private Sub FillTagsbyID(ByVal sID As String)
|
||||||
Dim hshTags As Hashtable
|
Dim slTags As SortedList
|
||||||
Dim oTag As clsTag
|
Dim oTag As clsTag
|
||||||
Dim sTags As String = String.Empty
|
Dim sTags As String = String.Empty
|
||||||
Dim cTrim() As Char = {",", " "}
|
Dim cTrim() As Char = {",", " "}
|
||||||
|
|
||||||
hshTags = mgrGameTags.GetTagsByGame(sID)
|
slTags = mgrGameTags.GetTagsByGame(sID)
|
||||||
|
|
||||||
For Each de As DictionaryEntry In hshTags
|
For Each de As DictionaryEntry In slTags
|
||||||
oTag = DirectCast(de.Value, clsTag)
|
oTag = DirectCast(de.Value, clsTag)
|
||||||
sTags &= "#" & oTag.Name & ", "
|
sTags &= "#" & oTag.Name & ", "
|
||||||
Next
|
Next
|
||||||
@@ -913,7 +950,7 @@ Public Class frmGameManager
|
|||||||
Next
|
Next
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub ModeChange()
|
Private Sub ModeChange(Optional ByVal bNoFocusChange As Boolean = False)
|
||||||
IsLoading = True
|
IsLoading = True
|
||||||
|
|
||||||
Select Case eCurrentMode
|
Select Case eCurrentMode
|
||||||
@@ -1060,7 +1097,7 @@ Public Class frmGameManager
|
|||||||
btnExport.Enabled = True
|
btnExport.Enabled = True
|
||||||
End Select
|
End Select
|
||||||
|
|
||||||
lstGames.Focus()
|
If Not bNoFocusChange Then lstGames.Focus()
|
||||||
|
|
||||||
IsLoading = False
|
IsLoading = False
|
||||||
End Sub
|
End Sub
|
||||||
@@ -1082,28 +1119,34 @@ Public Class frmGameManager
|
|||||||
If chkMonitorOnly.Checked Then
|
If chkMonitorOnly.Checked Then
|
||||||
chkFolderSave.Enabled = False
|
chkFolderSave.Enabled = False
|
||||||
chkTimeStamp.Enabled = False
|
chkTimeStamp.Enabled = False
|
||||||
|
lblLimit.Enabled = False
|
||||||
|
nudLimit.Enabled = False
|
||||||
lblSavePath.Enabled = False
|
lblSavePath.Enabled = False
|
||||||
txtSavePath.Enabled = False
|
txtSavePath.Enabled = False
|
||||||
btnSavePathBrowse.Enabled = False
|
btnSavePathBrowse.Enabled = False
|
||||||
btnInclude.Enabled = False
|
btnInclude.Enabled = False
|
||||||
btnExclude.Enabled = False
|
btnExclude.Enabled = False
|
||||||
|
chkCleanFolder.Enabled = False
|
||||||
Else
|
Else
|
||||||
chkFolderSave.Enabled = True
|
chkFolderSave.Enabled = True
|
||||||
chkTimeStamp.Enabled = True
|
chkTimeStamp.Enabled = True
|
||||||
|
lblLimit.Enabled = True
|
||||||
|
nudLimit.Enabled = True
|
||||||
lblSavePath.Enabled = True
|
lblSavePath.Enabled = True
|
||||||
txtSavePath.Enabled = True
|
txtSavePath.Enabled = True
|
||||||
btnSavePathBrowse.Enabled = True
|
btnSavePathBrowse.Enabled = True
|
||||||
btnInclude.Enabled = True
|
btnInclude.Enabled = True
|
||||||
btnExclude.Enabled = True
|
btnExclude.Enabled = True
|
||||||
|
FolderSaveModeChange()
|
||||||
|
VerifyCleanFolder()
|
||||||
End If
|
End If
|
||||||
VerifyCleanFolder()
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub TimeStampModeChange()
|
Private Sub TimeStampModeChange()
|
||||||
If chkTimeStamp.Checked Then
|
If chkTimeStamp.Checked Then
|
||||||
nudLimit.Visible = True
|
nudLimit.Visible = True
|
||||||
lblLimit.Visible = True
|
lblLimit.Visible = True
|
||||||
nudLimit.Value = 5
|
nudLimit.Value = 0
|
||||||
Else
|
Else
|
||||||
nudLimit.Visible = False
|
nudLimit.Visible = False
|
||||||
nudLimit.Value = nudLimit.Minimum
|
nudLimit.Value = nudLimit.Minimum
|
||||||
@@ -1249,7 +1292,7 @@ Public Class frmGameManager
|
|||||||
Case eModes.Edit
|
Case eModes.Edit
|
||||||
If CoreValidatation(oApp, False) Then
|
If CoreValidatation(oApp, False) Then
|
||||||
bSuccess = True
|
bSuccess = True
|
||||||
CheckManifestandUpdate(oCurrentGame, oApp)
|
CheckManifestandUpdate(oCurrentGame, oApp, oSettings.UseGameID)
|
||||||
mgrMonitorList.DoListUpdate(oApp, CurrentGame.ID)
|
mgrMonitorList.DoListUpdate(oApp, CurrentGame.ID)
|
||||||
eCurrentMode = eModes.View
|
eCurrentMode = eModes.View
|
||||||
End If
|
End If
|
||||||
@@ -1294,7 +1337,7 @@ Public Class frmGameManager
|
|||||||
|
|
||||||
If mgrCommon.ShowMessage(frmGameManager_ConfirmGameDelete, oApp.Name, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
If mgrCommon.ShowMessage(frmGameManager_ConfirmGameDelete, oApp.Name, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
||||||
mgrMonitorList.DoListDelete(oApp.ID)
|
mgrMonitorList.DoListDelete(oApp.ID)
|
||||||
mgrMonitorList.SyncMonitorLists(Settings)
|
mgrMonitorList.SyncMonitorLists(Settings,, False)
|
||||||
LoadData()
|
LoadData()
|
||||||
eCurrentMode = eModes.Disabled
|
eCurrentMode = eModes.Disabled
|
||||||
ModeChange()
|
ModeChange()
|
||||||
@@ -1309,7 +1352,7 @@ Public Class frmGameManager
|
|||||||
|
|
||||||
If mgrCommon.ShowMessage(frmGameManager_ConfirmMultiGameDelete, sMonitorIDs.Count, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
If mgrCommon.ShowMessage(frmGameManager_ConfirmMultiGameDelete, sMonitorIDs.Count, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
||||||
mgrMonitorList.DoListDeleteMulti(sMonitorIDs)
|
mgrMonitorList.DoListDeleteMulti(sMonitorIDs)
|
||||||
mgrMonitorList.SyncMonitorLists(Settings)
|
mgrMonitorList.SyncMonitorLists(Settings,, False)
|
||||||
LoadData()
|
LoadData()
|
||||||
eCurrentMode = eModes.Disabled
|
eCurrentMode = eModes.Disabled
|
||||||
ModeChange()
|
ModeChange()
|
||||||
@@ -1479,7 +1522,6 @@ Public Class frmGameManager
|
|||||||
If lstGames.SelectedItems.Count > 0 Then
|
If lstGames.SelectedItems.Count > 0 Then
|
||||||
RestoreList.Clear()
|
RestoreList.Clear()
|
||||||
|
|
||||||
|
|
||||||
For Each oData In lstGames.SelectedItems
|
For Each oData In lstGames.SelectedItems
|
||||||
If oRemoteBackupData.Contains(oData.Key) Then
|
If oRemoteBackupData.Contains(oData.Key) Then
|
||||||
oGame = DirectCast(GameData(oData.Key), clsGame)
|
oGame = DirectCast(GameData(oData.Key), clsGame)
|
||||||
@@ -1494,6 +1536,12 @@ Public Class frmGameManager
|
|||||||
For Each de As DictionaryEntry In RestoreList
|
For Each de As DictionaryEntry In RestoreList
|
||||||
oGame = DirectCast(de.Key, clsGame)
|
oGame = DirectCast(de.Key, clsGame)
|
||||||
Next
|
Next
|
||||||
|
|
||||||
|
'FIXME: This is a really lazy fix. This whole function needs a rewrite at some point.
|
||||||
|
'Replace backup entry with currently selected backup item in case the user wants to restore an older backup.
|
||||||
|
RestoreList.Clear()
|
||||||
|
RestoreList.Add(oGame, oCurrentBackupItem)
|
||||||
|
|
||||||
If Not mgrRestore.CheckManifest(oGame.Name) Then
|
If Not mgrRestore.CheckManifest(oGame.Name) Then
|
||||||
sMsg = mgrCommon.FormatString(frmGameManager_ConfirmRestoreAnyway, oGame.Name)
|
sMsg = mgrCommon.FormatString(frmGameManager_ConfirmRestoreAnyway, oGame.Name)
|
||||||
Else
|
Else
|
||||||
@@ -1785,6 +1833,10 @@ Public Class frmGameManager
|
|||||||
TimeStampModeChange()
|
TimeStampModeChange()
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub cboRemoteBackup_Enter(sender As Object, e As EventArgs) Handles cboRemoteBackup.Enter, cboRemoteBackup.Click
|
||||||
|
If Not oCurrentGame Is Nothing Then VerifyBackups(oCurrentGame)
|
||||||
|
End Sub
|
||||||
|
|
||||||
Private Sub cboRemoteBackup_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboRemoteBackup.SelectedIndexChanged
|
Private Sub cboRemoteBackup_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboRemoteBackup.SelectedIndexChanged
|
||||||
If Not bIsLoading Then
|
If Not bIsLoading Then
|
||||||
UpdateBackupInfo(DirectCast(cboRemoteBackup.SelectedItem, KeyValuePair(Of String, String)).Key)
|
UpdateBackupInfo(DirectCast(cboRemoteBackup.SelectedItem, KeyValuePair(Of String, String)).Key)
|
||||||
@@ -1812,7 +1864,14 @@ Public Class frmGameManager
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub txtQuickFilter_TextChanged(sender As Object, e As EventArgs) Handles txtQuickFilter.TextChanged
|
Private Sub txtQuickFilter_TextChanged(sender As Object, e As EventArgs) Handles txtQuickFilter.TextChanged
|
||||||
|
If Not eCurrentMode = eModes.Disabled Then
|
||||||
|
eCurrentMode = eModes.Disabled
|
||||||
|
ModeChange(True)
|
||||||
|
lstGames.ClearSelected()
|
||||||
|
End If
|
||||||
|
|
||||||
If Not tmFilterTimer.Enabled Then
|
If Not tmFilterTimer.Enabled Then
|
||||||
|
lstGames.Enabled = False
|
||||||
tmFilterTimer.Enabled = True
|
tmFilterTimer.Enabled = True
|
||||||
tmFilterTimer.Start()
|
tmFilterTimer.Start()
|
||||||
End If
|
End If
|
||||||
@@ -1827,6 +1886,7 @@ Public Class frmGameManager
|
|||||||
FormatAndFillList()
|
FormatAndFillList()
|
||||||
tmFilterTimer.Stop()
|
tmFilterTimer.Stop()
|
||||||
tmFilterTimer.Enabled = False
|
tmFilterTimer.Enabled = False
|
||||||
|
lstGames.Enabled = True
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub frmGameManager_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
|
Private Sub frmGameManager_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
|
||||||
@@ -1836,4 +1896,5 @@ Public Class frmGameManager
|
|||||||
Private Sub chkMonitorOnly_CheckedChanged(sender As Object, e As EventArgs) Handles chkMonitorOnly.CheckedChanged
|
Private Sub chkMonitorOnly_CheckedChanged(sender As Object, e As EventArgs) Handles chkMonitorOnly.CheckedChanged
|
||||||
MonitorOnlyModeChange()
|
MonitorOnlyModeChange()
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
+19
-14
@@ -587,6 +587,20 @@ Public Class frmMain
|
|||||||
lblStatus2.Text = String.Empty
|
lblStatus2.Text = String.Empty
|
||||||
lblStatus3.Text = String.Empty
|
lblStatus3.Text = String.Empty
|
||||||
|
|
||||||
|
'Get Process Information
|
||||||
|
Try
|
||||||
|
Dim ic As Icon = System.Drawing.Icon.ExtractAssociatedIcon(oProcess.FoundProcess.MainModule.FileName)
|
||||||
|
pbIcon.Image = ic.ToBitmap
|
||||||
|
|
||||||
|
'Set Game Details
|
||||||
|
sFileName = oProcess.FoundProcess.MainModule.FileName
|
||||||
|
sFileVersion = oProcess.FoundProcess.MainModule.FileVersionInfo.FileVersion
|
||||||
|
sCompanyName = oProcess.FoundProcess.MainModule.FileVersionInfo.CompanyName
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
pbIcon.Image = Icon_Unknown
|
||||||
|
End Try
|
||||||
|
|
||||||
'Get Game Details
|
'Get Game Details
|
||||||
If bMulti Then
|
If bMulti Then
|
||||||
bAllowIcon = False
|
bAllowIcon = False
|
||||||
@@ -595,25 +609,16 @@ Public Class frmMain
|
|||||||
pbTime.Visible = False
|
pbTime.Visible = False
|
||||||
lblTimeSpent.Visible = False
|
lblTimeSpent.Visible = False
|
||||||
pbIcon.Image = Icon_Unknown
|
pbIcon.Image = Icon_Unknown
|
||||||
lblStatus1.Text = frmMain_NoDetails
|
If sFileName = String.Empty Then
|
||||||
|
lblStatus1.Text = frmMain_NoDetails
|
||||||
|
Else
|
||||||
|
lblStatus1.Text = sFileName
|
||||||
|
End If
|
||||||
Else
|
Else
|
||||||
bAllowIcon = True
|
bAllowIcon = True
|
||||||
bAllowDetails = True
|
bAllowDetails = True
|
||||||
lblGameTitle.Text = oProcess.GameInfo.Name
|
lblGameTitle.Text = oProcess.GameInfo.Name
|
||||||
|
|
||||||
Try
|
|
||||||
Dim ic As Icon = System.Drawing.Icon.ExtractAssociatedIcon(oProcess.FoundProcess.MainModule.FileName)
|
|
||||||
pbIcon.Image = ic.ToBitmap
|
|
||||||
|
|
||||||
'Set Game Details
|
|
||||||
sFileName = oProcess.FoundProcess.MainModule.FileName
|
|
||||||
sFileVersion = oProcess.FoundProcess.MainModule.FileVersionInfo.FileVersion
|
|
||||||
sCompanyName = oProcess.FoundProcess.MainModule.FileVersionInfo.CompanyName
|
|
||||||
|
|
||||||
Catch ex As Exception
|
|
||||||
pbIcon.Image = Icon_Unknown
|
|
||||||
End Try
|
|
||||||
|
|
||||||
'Check for a custom icon & details
|
'Check for a custom icon & details
|
||||||
If File.Exists(oProcess.GameInfo.Icon) Then
|
If File.Exists(oProcess.GameInfo.Icon) Then
|
||||||
pbIcon.Image = Image.FromFile(oProcess.GameInfo.Icon)
|
pbIcon.Image = Image.FromFile(oProcess.GameInfo.Icon)
|
||||||
|
|||||||
Generated
+9
-22
@@ -28,7 +28,6 @@ Partial Class frmSyncFields
|
|||||||
Me.chkVersion = New System.Windows.Forms.CheckBox()
|
Me.chkVersion = New System.Windows.Forms.CheckBox()
|
||||||
Me.chkCompany = New System.Windows.Forms.CheckBox()
|
Me.chkCompany = New System.Windows.Forms.CheckBox()
|
||||||
Me.chkGamePath = New System.Windows.Forms.CheckBox()
|
Me.chkGamePath = New System.Windows.Forms.CheckBox()
|
||||||
Me.chkTimeStamp = New System.Windows.Forms.CheckBox()
|
|
||||||
Me.btnCancel = New System.Windows.Forms.Button()
|
Me.btnCancel = New System.Windows.Forms.Button()
|
||||||
Me.btnSave = New System.Windows.Forms.Button()
|
Me.btnSave = New System.Windows.Forms.Button()
|
||||||
Me.grpFields.SuspendLayout()
|
Me.grpFields.SuspendLayout()
|
||||||
@@ -41,10 +40,9 @@ Partial Class frmSyncFields
|
|||||||
Me.grpFields.Controls.Add(Me.chkVersion)
|
Me.grpFields.Controls.Add(Me.chkVersion)
|
||||||
Me.grpFields.Controls.Add(Me.chkCompany)
|
Me.grpFields.Controls.Add(Me.chkCompany)
|
||||||
Me.grpFields.Controls.Add(Me.chkGamePath)
|
Me.grpFields.Controls.Add(Me.chkGamePath)
|
||||||
Me.grpFields.Controls.Add(Me.chkTimeStamp)
|
|
||||||
Me.grpFields.Location = New System.Drawing.Point(12, 12)
|
Me.grpFields.Location = New System.Drawing.Point(12, 12)
|
||||||
Me.grpFields.Name = "grpFields"
|
Me.grpFields.Name = "grpFields"
|
||||||
Me.grpFields.Size = New System.Drawing.Size(195, 162)
|
Me.grpFields.Size = New System.Drawing.Size(195, 135)
|
||||||
Me.grpFields.TabIndex = 0
|
Me.grpFields.TabIndex = 0
|
||||||
Me.grpFields.TabStop = False
|
Me.grpFields.TabStop = False
|
||||||
Me.grpFields.Text = "Available Fields"
|
Me.grpFields.Text = "Available Fields"
|
||||||
@@ -52,7 +50,7 @@ Partial Class frmSyncFields
|
|||||||
'chkMonitorGame
|
'chkMonitorGame
|
||||||
'
|
'
|
||||||
Me.chkMonitorGame.AutoSize = True
|
Me.chkMonitorGame.AutoSize = True
|
||||||
Me.chkMonitorGame.Location = New System.Drawing.Point(6, 134)
|
Me.chkMonitorGame.Location = New System.Drawing.Point(6, 111)
|
||||||
Me.chkMonitorGame.Name = "chkMonitorGame"
|
Me.chkMonitorGame.Name = "chkMonitorGame"
|
||||||
Me.chkMonitorGame.Size = New System.Drawing.Size(109, 17)
|
Me.chkMonitorGame.Size = New System.Drawing.Size(109, 17)
|
||||||
Me.chkMonitorGame.TabIndex = 5
|
Me.chkMonitorGame.TabIndex = 5
|
||||||
@@ -62,7 +60,7 @@ Partial Class frmSyncFields
|
|||||||
'chkIcon
|
'chkIcon
|
||||||
'
|
'
|
||||||
Me.chkIcon.AutoSize = True
|
Me.chkIcon.AutoSize = True
|
||||||
Me.chkIcon.Location = New System.Drawing.Point(6, 111)
|
Me.chkIcon.Location = New System.Drawing.Point(6, 88)
|
||||||
Me.chkIcon.Name = "chkIcon"
|
Me.chkIcon.Name = "chkIcon"
|
||||||
Me.chkIcon.Size = New System.Drawing.Size(148, 17)
|
Me.chkIcon.Size = New System.Drawing.Size(148, 17)
|
||||||
Me.chkIcon.TabIndex = 4
|
Me.chkIcon.TabIndex = 4
|
||||||
@@ -72,7 +70,7 @@ Partial Class frmSyncFields
|
|||||||
'chkVersion
|
'chkVersion
|
||||||
'
|
'
|
||||||
Me.chkVersion.AutoSize = True
|
Me.chkVersion.AutoSize = True
|
||||||
Me.chkVersion.Location = New System.Drawing.Point(6, 88)
|
Me.chkVersion.Location = New System.Drawing.Point(6, 65)
|
||||||
Me.chkVersion.Name = "chkVersion"
|
Me.chkVersion.Name = "chkVersion"
|
||||||
Me.chkVersion.Size = New System.Drawing.Size(61, 17)
|
Me.chkVersion.Size = New System.Drawing.Size(61, 17)
|
||||||
Me.chkVersion.TabIndex = 3
|
Me.chkVersion.TabIndex = 3
|
||||||
@@ -82,7 +80,7 @@ Partial Class frmSyncFields
|
|||||||
'chkCompany
|
'chkCompany
|
||||||
'
|
'
|
||||||
Me.chkCompany.AutoSize = True
|
Me.chkCompany.AutoSize = True
|
||||||
Me.chkCompany.Location = New System.Drawing.Point(6, 65)
|
Me.chkCompany.Location = New System.Drawing.Point(6, 42)
|
||||||
Me.chkCompany.Name = "chkCompany"
|
Me.chkCompany.Name = "chkCompany"
|
||||||
Me.chkCompany.Size = New System.Drawing.Size(70, 17)
|
Me.chkCompany.Size = New System.Drawing.Size(70, 17)
|
||||||
Me.chkCompany.TabIndex = 2
|
Me.chkCompany.TabIndex = 2
|
||||||
@@ -92,27 +90,17 @@ Partial Class frmSyncFields
|
|||||||
'chkGamePath
|
'chkGamePath
|
||||||
'
|
'
|
||||||
Me.chkGamePath.AutoSize = True
|
Me.chkGamePath.AutoSize = True
|
||||||
Me.chkGamePath.Location = New System.Drawing.Point(6, 42)
|
Me.chkGamePath.Location = New System.Drawing.Point(6, 19)
|
||||||
Me.chkGamePath.Name = "chkGamePath"
|
Me.chkGamePath.Name = "chkGamePath"
|
||||||
Me.chkGamePath.Size = New System.Drawing.Size(180, 17)
|
Me.chkGamePath.Size = New System.Drawing.Size(180, 17)
|
||||||
Me.chkGamePath.TabIndex = 1
|
Me.chkGamePath.TabIndex = 1
|
||||||
Me.chkGamePath.Text = "Game Path (Not Recommended)"
|
Me.chkGamePath.Text = "Game Path (Not Recommended)"
|
||||||
Me.chkGamePath.UseVisualStyleBackColor = True
|
Me.chkGamePath.UseVisualStyleBackColor = True
|
||||||
'
|
'
|
||||||
'chkTimeStamp
|
|
||||||
'
|
|
||||||
Me.chkTimeStamp.AutoSize = True
|
|
||||||
Me.chkTimeStamp.Location = New System.Drawing.Point(6, 19)
|
|
||||||
Me.chkTimeStamp.Name = "chkTimeStamp"
|
|
||||||
Me.chkTimeStamp.Size = New System.Drawing.Size(133, 17)
|
|
||||||
Me.chkTimeStamp.TabIndex = 0
|
|
||||||
Me.chkTimeStamp.Text = "Save multiple backups"
|
|
||||||
Me.chkTimeStamp.UseVisualStyleBackColor = True
|
|
||||||
'
|
|
||||||
'btnCancel
|
'btnCancel
|
||||||
'
|
'
|
||||||
Me.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
|
Me.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
|
||||||
Me.btnCancel.Location = New System.Drawing.Point(132, 180)
|
Me.btnCancel.Location = New System.Drawing.Point(132, 153)
|
||||||
Me.btnCancel.Name = "btnCancel"
|
Me.btnCancel.Name = "btnCancel"
|
||||||
Me.btnCancel.Size = New System.Drawing.Size(75, 23)
|
Me.btnCancel.Size = New System.Drawing.Size(75, 23)
|
||||||
Me.btnCancel.TabIndex = 2
|
Me.btnCancel.TabIndex = 2
|
||||||
@@ -122,7 +110,7 @@ Partial Class frmSyncFields
|
|||||||
'btnSave
|
'btnSave
|
||||||
'
|
'
|
||||||
Me.btnSave.DialogResult = System.Windows.Forms.DialogResult.OK
|
Me.btnSave.DialogResult = System.Windows.Forms.DialogResult.OK
|
||||||
Me.btnSave.Location = New System.Drawing.Point(52, 180)
|
Me.btnSave.Location = New System.Drawing.Point(52, 153)
|
||||||
Me.btnSave.Name = "btnSave"
|
Me.btnSave.Name = "btnSave"
|
||||||
Me.btnSave.Size = New System.Drawing.Size(75, 23)
|
Me.btnSave.Size = New System.Drawing.Size(75, 23)
|
||||||
Me.btnSave.TabIndex = 1
|
Me.btnSave.TabIndex = 1
|
||||||
@@ -133,7 +121,7 @@ Partial Class frmSyncFields
|
|||||||
'
|
'
|
||||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||||
Me.ClientSize = New System.Drawing.Size(219, 211)
|
Me.ClientSize = New System.Drawing.Size(219, 186)
|
||||||
Me.Controls.Add(Me.btnCancel)
|
Me.Controls.Add(Me.btnCancel)
|
||||||
Me.Controls.Add(Me.btnSave)
|
Me.Controls.Add(Me.btnSave)
|
||||||
Me.Controls.Add(Me.grpFields)
|
Me.Controls.Add(Me.grpFields)
|
||||||
@@ -157,7 +145,6 @@ Partial Class frmSyncFields
|
|||||||
Friend WithEvents chkVersion As CheckBox
|
Friend WithEvents chkVersion As CheckBox
|
||||||
Friend WithEvents chkCompany As CheckBox
|
Friend WithEvents chkCompany As CheckBox
|
||||||
Friend WithEvents chkGamePath As CheckBox
|
Friend WithEvents chkGamePath As CheckBox
|
||||||
Friend WithEvents chkTimeStamp As CheckBox
|
|
||||||
Friend WithEvents btnCancel As Button
|
Friend WithEvents btnCancel As Button
|
||||||
Friend WithEvents btnSave As Button
|
Friend WithEvents btnSave As Button
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
@@ -26,9 +26,6 @@ Public Class frmSyncFields
|
|||||||
If (eSyncFields And clsGame.eOptionalSyncFields.MonitorGame) = clsGame.eOptionalSyncFields.MonitorGame Then
|
If (eSyncFields And clsGame.eOptionalSyncFields.MonitorGame) = clsGame.eOptionalSyncFields.MonitorGame Then
|
||||||
chkMonitorGame.Checked = True
|
chkMonitorGame.Checked = True
|
||||||
End If
|
End If
|
||||||
If (eSyncFields And clsGame.eOptionalSyncFields.TimeStamp) = clsGame.eOptionalSyncFields.TimeStamp Then
|
|
||||||
chkTimeStamp.Checked = True
|
|
||||||
End If
|
|
||||||
If (eSyncFields And clsGame.eOptionalSyncFields.Version) = clsGame.eOptionalSyncFields.Version Then
|
If (eSyncFields And clsGame.eOptionalSyncFields.Version) = clsGame.eOptionalSyncFields.Version Then
|
||||||
chkVersion.Checked = True
|
chkVersion.Checked = True
|
||||||
End If
|
End If
|
||||||
@@ -47,7 +44,6 @@ Public Class frmSyncFields
|
|||||||
chkVersion.Text = frmSyncFields_chkVersion
|
chkVersion.Text = frmSyncFields_chkVersion
|
||||||
chkCompany.Text = frmSyncFields_chkCompany
|
chkCompany.Text = frmSyncFields_chkCompany
|
||||||
chkGamePath.Text = frmSyncFields_chkGamePath
|
chkGamePath.Text = frmSyncFields_chkGamePath
|
||||||
chkTimeStamp.Text = frmSyncFields_chkTimeStamp
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub frmSyncFields_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
Private Sub frmSyncFields_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||||
@@ -65,14 +61,6 @@ Public Class frmSyncFields
|
|||||||
Me.Close()
|
Me.Close()
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub chkTimeStamp_CheckedChanged(sender As Object, e As EventArgs) Handles chkTimeStamp.CheckedChanged
|
|
||||||
If chkTimeStamp.Checked Then
|
|
||||||
SyncFields = clsGame.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.TimeStamp)
|
|
||||||
Else
|
|
||||||
SyncFields = clsGame.RemoveSyncField(SyncFields, clsGame.eOptionalSyncFields.TimeStamp)
|
|
||||||
End If
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Private Sub chkGamePath_CheckedChanged(sender As Object, e As EventArgs) Handles chkGamePath.CheckedChanged
|
Private Sub chkGamePath_CheckedChanged(sender As Object, e As EventArgs) Handles chkGamePath.CheckedChanged
|
||||||
If chkGamePath.Checked Then
|
If chkGamePath.Checked Then
|
||||||
SyncFields = clsGame.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.GamePath)
|
SyncFields = clsGame.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.GamePath)
|
||||||
|
|||||||
@@ -116,6 +116,7 @@ Public Class mgrBackup
|
|||||||
Public Function CheckBackupPrereq(ByVal oGame As clsGame) As Boolean
|
Public Function CheckBackupPrereq(ByVal oGame As clsGame) As Boolean
|
||||||
Dim sBackupFile As String = oSettings.BackupFolder
|
Dim sBackupFile As String = oSettings.BackupFolder
|
||||||
Dim sSavePath As String
|
Dim sSavePath As String
|
||||||
|
Dim sOverwriteMessage As String
|
||||||
Dim lAvailableSpace As Long
|
Dim lAvailableSpace As Long
|
||||||
Dim lFolderSize As Long
|
Dim lFolderSize As Long
|
||||||
|
|
||||||
@@ -150,13 +151,19 @@ Public Class mgrBackup
|
|||||||
End If
|
End If
|
||||||
|
|
||||||
If oSettings.ShowOverwriteWarning And File.Exists(sBackupFile) And Not oGame.AppendTimeStamp Then
|
If oSettings.ShowOverwriteWarning And File.Exists(sBackupFile) And Not oGame.AppendTimeStamp Then
|
||||||
If mgrCommon.ShowMessage(mgrBackup_ConfirmOverwrite, MsgBoxStyle.YesNo) = MsgBoxResult.No Then
|
If oGame.AbsolutePath Then
|
||||||
|
sOverwriteMessage = mgrBackup_ConfirmOverwrite
|
||||||
|
Else
|
||||||
|
sOverwriteMessage = mgrBackup_ConfirmOverwriteRelative
|
||||||
|
End If
|
||||||
|
|
||||||
|
If mgrCommon.ShowMessage(sOverwriteMessage, MsgBoxStyle.YesNo) = MsgBoxResult.No Then
|
||||||
RaiseEvent UpdateLog(mgrCommon.FormatString(mgrBackup_ErrorOverwriteAbort, oGame.Name), False, ToolTipIcon.Error, True)
|
RaiseEvent UpdateLog(mgrCommon.FormatString(mgrBackup_ErrorOverwriteAbort, oGame.Name), False, ToolTipIcon.Error, True)
|
||||||
Return False
|
Return False
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Return True
|
Return True
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Sub CheckOldBackups(ByVal oGame As clsGame)
|
Private Sub CheckOldBackups(ByVal oGame As clsGame)
|
||||||
@@ -223,7 +230,7 @@ Public Class mgrBackup
|
|||||||
End If
|
End If
|
||||||
|
|
||||||
If oGame.AppendTimeStamp Then
|
If oGame.AppendTimeStamp Then
|
||||||
CheckOldBackups(oGame)
|
If oGame.BackupLimit > 0 Then CheckOldBackups(oGame)
|
||||||
sBackupFile = sBackupFile & Path.DirectorySeparatorChar & GetFileName(oGame) & sTimeStamp & ".7z"
|
sBackupFile = sBackupFile & Path.DirectorySeparatorChar & GetFileName(oGame) & sTimeStamp & ".7z"
|
||||||
Else
|
Else
|
||||||
sBackupFile = sBackupFile & Path.DirectorySeparatorChar & GetFileName(oGame) & ".7z"
|
sBackupFile = sBackupFile & Path.DirectorySeparatorChar & GetFileName(oGame) & ".7z"
|
||||||
|
|||||||
@@ -434,15 +434,22 @@ Public Class mgrCommon
|
|||||||
Dim oDir As DirectoryInfo
|
Dim oDir As DirectoryInfo
|
||||||
Dim sDir As String = sBackupFolder & oBackup.MonitorID
|
Dim sDir As String = sBackupFolder & oBackup.MonitorID
|
||||||
|
|
||||||
'Delete sub directory if it's empty
|
'Check if the sub-folder is an ID or Name
|
||||||
If oBackup.FileName.StartsWith(oBackup.MonitorID & Path.DirectorySeparatorChar) Then
|
If oBackup.FileName.StartsWith(oBackup.MonitorID & Path.DirectorySeparatorChar) Then
|
||||||
If Directory.Exists(sDir) Then
|
sDir = sBackupFolder & oBackup.MonitorID
|
||||||
'Check if there's any sub-directories or files remaining
|
ElseIf oBackup.FileName.StartsWith(oBackup.FileSafeName & Path.DirectorySeparatorChar) Then
|
||||||
oDir = New DirectoryInfo(sDir)
|
sDir = sBackupFolder & oBackup.FileSafeName
|
||||||
If oDir.GetDirectories.Length = 0 And oDir.GetFiles.Length = 0 Then
|
Else
|
||||||
'Folder is empty, delete the empty sub-folder
|
Exit Sub
|
||||||
If Directory.Exists(sDir) Then DeleteDirectory(sDir)
|
End If
|
||||||
End If
|
|
||||||
|
'Delete sub directory if it's empty
|
||||||
|
If Directory.Exists(sDir) Then
|
||||||
|
'Check if there's any sub-directories or files remaining
|
||||||
|
oDir = New DirectoryInfo(sDir)
|
||||||
|
If oDir.GetDirectories.Length = 0 And oDir.GetFiles.Length = 0 Then
|
||||||
|
'Folder is empty, delete the empty sub-folder
|
||||||
|
If Directory.Exists(sDir) Then DeleteDirectory(sDir)
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|||||||
@@ -76,11 +76,11 @@
|
|||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Shared Function GetTagsByGame(ByVal sMonitorID As String) As Hashtable
|
Public Shared Function GetTagsByGame(ByVal sMonitorID As String) As SortedList
|
||||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||||
Dim oData As DataSet
|
Dim oData As DataSet
|
||||||
Dim sSQL As String
|
Dim sSQL As String
|
||||||
Dim hshList As New Hashtable
|
Dim slList As New SortedList
|
||||||
Dim hshParams As New Hashtable
|
Dim hshParams As New Hashtable
|
||||||
Dim oTag As clsTag
|
Dim oTag As clsTag
|
||||||
|
|
||||||
@@ -94,10 +94,10 @@
|
|||||||
oTag = New clsTag
|
oTag = New clsTag
|
||||||
oTag.ID = CStr(dr("TagID"))
|
oTag.ID = CStr(dr("TagID"))
|
||||||
oTag.Name = CStr(dr("Name"))
|
oTag.Name = CStr(dr("Name"))
|
||||||
hshList.Add(oTag.Name, oTag)
|
slList.Add(oTag.Name, oTag)
|
||||||
Next
|
Next
|
||||||
|
|
||||||
Return hshList
|
Return slList
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Shared Function GetTagsByGameForExport(ByVal sMonitorID As String) As List(Of Tag)
|
Public Shared Function GetTagsByGameForExport(ByVal sMonitorID As String) As List(Of Tag)
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
Dim hshParams As New Hashtable
|
Dim hshParams As New Hashtable
|
||||||
Dim oTag As Tag
|
Dim oTag As Tag
|
||||||
|
|
||||||
sSQL = "SELECT TagID, tags.Name FROM gametags NATURAL JOIN tags WHERE MonitorID = @ID"
|
sSQL = "SELECT TagID, tags.Name FROM gametags NATURAL JOIN tags WHERE MonitorID = @ID ORDER BY tags.Name ASC"
|
||||||
|
|
||||||
hshParams.Add("ID", sMonitorID)
|
hshParams.Add("ID", sMonitorID)
|
||||||
|
|
||||||
|
|||||||
@@ -373,8 +373,6 @@ Public Class mgrMonitorList
|
|||||||
Dim sVersion As String
|
Dim sVersion As String
|
||||||
Dim sCompany As String
|
Dim sCompany As String
|
||||||
Dim sMonitorGame As String
|
Dim sMonitorGame As String
|
||||||
Dim sTimeStamp As String
|
|
||||||
Dim sBackupLimit As String
|
|
||||||
|
|
||||||
'Setup SQL for optional fields
|
'Setup SQL for optional fields
|
||||||
If (eSyncFields And clsGame.eOptionalSyncFields.Company) = clsGame.eOptionalSyncFields.Company Then
|
If (eSyncFields And clsGame.eOptionalSyncFields.Company) = clsGame.eOptionalSyncFields.Company Then
|
||||||
@@ -397,13 +395,6 @@ Public Class mgrMonitorList
|
|||||||
Else
|
Else
|
||||||
sMonitorGame = "COALESCE((SELECT Enabled FROM monitorlist WHERE MonitorID=@ID),1)"
|
sMonitorGame = "COALESCE((SELECT Enabled FROM monitorlist WHERE MonitorID=@ID),1)"
|
||||||
End If
|
End If
|
||||||
If (eSyncFields And clsGame.eOptionalSyncFields.TimeStamp) = clsGame.eOptionalSyncFields.TimeStamp Then
|
|
||||||
sTimeStamp = "@TimeStamp"
|
|
||||||
sBackupLimit = "@BackupLimit"
|
|
||||||
Else
|
|
||||||
sTimeStamp = "COALESCE((SELECT TimeStamp FROM monitorlist WHERE MonitorID=@ID),0)"
|
|
||||||
sBackupLimit = "COALESCE((SELECT BackupLimit FROM monitorlist WHERE MonitorID=@ID),2)"
|
|
||||||
End If
|
|
||||||
If (eSyncFields And clsGame.eOptionalSyncFields.Version) = clsGame.eOptionalSyncFields.Version Then
|
If (eSyncFields And clsGame.eOptionalSyncFields.Version) = clsGame.eOptionalSyncFields.Version Then
|
||||||
sVersion = "@Version"
|
sVersion = "@Version"
|
||||||
Else
|
Else
|
||||||
@@ -412,9 +403,9 @@ Public Class mgrMonitorList
|
|||||||
|
|
||||||
sSQL = "INSERT OR REPLACE INTO monitorlist (MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter, Comments, IsRegEx) "
|
sSQL = "INSERT OR REPLACE INTO monitorlist (MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter, Comments, IsRegEx) "
|
||||||
sSQL &= "VALUES (@ID, @Name, @Process, @Path, @AbsolutePath, @FolderSave, @FileType, "
|
sSQL &= "VALUES (@ID, @Name, @Process, @Path, @AbsolutePath, @FolderSave, @FileType, "
|
||||||
sSQL &= sTimeStamp & ", @ExcludeList, " & sGamePath & ", "
|
sSQL &= "@TimeStamp, @ExcludeList, " & sGamePath & ", "
|
||||||
sSQL &= sIcon & ", @Hours, " & sVersion & ", "
|
sSQL &= sIcon & ", @Hours, " & sVersion & ", "
|
||||||
sSQL &= sCompany & ", " & sMonitorGame & ", @MonitorOnly, " & sBackupLimit & ", @CleanFolder, @Parameter, @Comments, @IsRegEx);"
|
sSQL &= sCompany & ", " & sMonitorGame & ", @MonitorOnly, @BackupLimit, @CleanFolder, @Parameter, @Comments, @IsRegEx);"
|
||||||
|
|
||||||
For Each oGame As clsGame In hshGames.Values
|
For Each oGame As clsGame In hshGames.Values
|
||||||
hshParams = New Hashtable
|
hshParams = New Hashtable
|
||||||
@@ -426,6 +417,8 @@ Public Class mgrMonitorList
|
|||||||
hshParams.Add("Path", oGame.TruePath)
|
hshParams.Add("Path", oGame.TruePath)
|
||||||
hshParams.Add("AbsolutePath", oGame.AbsolutePath)
|
hshParams.Add("AbsolutePath", oGame.AbsolutePath)
|
||||||
hshParams.Add("FolderSave", oGame.FolderSave)
|
hshParams.Add("FolderSave", oGame.FolderSave)
|
||||||
|
hshParams.Add("TimeStamp", oGame.AppendTimeStamp)
|
||||||
|
hshParams.Add("BackupLimit", oGame.BackupLimit)
|
||||||
hshParams.Add("FileType", oGame.FileType)
|
hshParams.Add("FileType", oGame.FileType)
|
||||||
hshParams.Add("ExcludeList", oGame.ExcludeList)
|
hshParams.Add("ExcludeList", oGame.ExcludeList)
|
||||||
hshParams.Add("Hours", oGame.Hours)
|
hshParams.Add("Hours", oGame.Hours)
|
||||||
@@ -448,10 +441,6 @@ Public Class mgrMonitorList
|
|||||||
If (eSyncFields And clsGame.eOptionalSyncFields.MonitorGame) = clsGame.eOptionalSyncFields.MonitorGame Then
|
If (eSyncFields And clsGame.eOptionalSyncFields.MonitorGame) = clsGame.eOptionalSyncFields.MonitorGame Then
|
||||||
hshParams.Add("Enabled", oGame.Enabled)
|
hshParams.Add("Enabled", oGame.Enabled)
|
||||||
End If
|
End If
|
||||||
If (eSyncFields And clsGame.eOptionalSyncFields.TimeStamp) = clsGame.eOptionalSyncFields.TimeStamp Then
|
|
||||||
hshParams.Add("TimeStamp", oGame.AppendTimeStamp)
|
|
||||||
hshParams.Add("BackupLimit", oGame.BackupLimit)
|
|
||||||
End If
|
|
||||||
If (eSyncFields And clsGame.eOptionalSyncFields.Version) = clsGame.eOptionalSyncFields.Version Then
|
If (eSyncFields And clsGame.eOptionalSyncFields.Version) = clsGame.eOptionalSyncFields.Version Then
|
||||||
hshParams.Add("Version", oGame.Version)
|
hshParams.Add("Version", oGame.Version)
|
||||||
End If
|
End If
|
||||||
@@ -491,7 +480,7 @@ Public Class mgrMonitorList
|
|||||||
oDatabase.RunMassParamQuery(sSQL, oParamList)
|
oDatabase.RunMassParamQuery(sSQL, oParamList)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Shared Sub SyncMonitorLists(ByVal oSettings As mgrSettings, Optional ByVal bToRemote As Boolean = True)
|
Public Shared Sub SyncMonitorLists(ByVal oSettings As mgrSettings, Optional ByVal bToRemote As Boolean = True, Optional ByVal bSyncProtection As Boolean = True)
|
||||||
Dim hshCompareFrom As Hashtable
|
Dim hshCompareFrom As Hashtable
|
||||||
Dim hshCompareTo As Hashtable
|
Dim hshCompareTo As Hashtable
|
||||||
Dim hshSyncItems As Hashtable
|
Dim hshSyncItems As Hashtable
|
||||||
@@ -520,11 +509,15 @@ Public Class mgrMonitorList
|
|||||||
End If
|
End If
|
||||||
|
|
||||||
'Sync Wipe Protection
|
'Sync Wipe Protection
|
||||||
If hshCompareFrom.Count = 0 And hshCompareTo.Count > 0 Then
|
If bSyncProtection Then
|
||||||
If mgrCommon.ShowMessage(mgrMonitorList_WarningSyncProtection, MsgBoxStyle.YesNo) = MsgBoxResult.No Then
|
If hshCompareFrom.Count = 0 And hshCompareTo.Count > 0 Then
|
||||||
'We will always show this one in the log regardless of setting
|
Cursor.Current = Cursors.Default
|
||||||
RaiseEvent UpdateLog(mgrMonitorList_ErrorSyncCancel, False, ToolTipIcon.Warning, True)
|
If mgrCommon.ShowMessage(mgrMonitorList_WarningSyncProtection, MsgBoxStyle.YesNo) = MsgBoxResult.No Then
|
||||||
Exit Sub
|
'We will always show this one in the log regardless of setting
|
||||||
|
RaiseEvent UpdateLog(mgrMonitorList_ErrorSyncCancel, False, ToolTipIcon.Warning, True)
|
||||||
|
Exit Sub
|
||||||
|
End If
|
||||||
|
Cursor.Current = Cursors.WaitCursor
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
@@ -778,6 +771,8 @@ Public Class mgrMonitorList
|
|||||||
If Not IsDBNull(dr("Path")) Then oGame.Path = CStr(dr("Path"))
|
If Not IsDBNull(dr("Path")) Then oGame.Path = CStr(dr("Path"))
|
||||||
oGame.AbsolutePath = CBool(dr("AbsolutePath"))
|
oGame.AbsolutePath = CBool(dr("AbsolutePath"))
|
||||||
oGame.FolderSave = CBool(dr("FolderSave"))
|
oGame.FolderSave = CBool(dr("FolderSave"))
|
||||||
|
oGame.AppendTimeStamp = CBool(dr("TimeStamp"))
|
||||||
|
oGame.BackupLimit = CInt(dr("BackupLimit"))
|
||||||
If Not IsDBNull(dr("FileType")) Then oGame.FileType = CStr(dr("FileType"))
|
If Not IsDBNull(dr("FileType")) Then oGame.FileType = CStr(dr("FileType"))
|
||||||
If Not IsDBNull(dr("ExcludeList")) Then oGame.ExcludeList = CStr(dr("ExcludeList"))
|
If Not IsDBNull(dr("ExcludeList")) Then oGame.ExcludeList = CStr(dr("ExcludeList"))
|
||||||
oGame.MonitorOnly = CBool(dr("MonitorOnly"))
|
oGame.MonitorOnly = CBool(dr("MonitorOnly"))
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Public Class mgrSettings
|
|||||||
Private s7zArguments As String = String.Empty
|
Private s7zArguments As String = String.Empty
|
||||||
Private s7zLocation As String = String.Empty
|
Private s7zLocation As String = String.Empty
|
||||||
Private sBackupFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).TrimEnd(New Char() {"\", "/"})
|
Private sBackupFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).TrimEnd(New Char() {"\", "/"})
|
||||||
Private eSyncFields As clsGame.eOptionalSyncFields = clsGame.eOptionalSyncFields.None Or clsGame.eOptionalSyncFields.TimeStamp
|
Private eSyncFields As clsGame.eOptionalSyncFields = clsGame.eOptionalSyncFields.None
|
||||||
Private eMessages As eSuppressMessages = eSuppressMessages.None
|
Private eMessages As eSuppressMessages = eSuppressMessages.None
|
||||||
Private bAutoSaveLog As Boolean = False
|
Private bAutoSaveLog As Boolean = False
|
||||||
Private bBackupOnLaunch As Boolean = True
|
Private bBackupOnLaunch As Boolean = True
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ Public Class mgrXML
|
|||||||
oGame.AbsolutePath = g.AbsolutePath
|
oGame.AbsolutePath = g.AbsolutePath
|
||||||
oGame.Path = g.Path
|
oGame.Path = g.Path
|
||||||
oGame.FolderSave = g.FolderSave
|
oGame.FolderSave = g.FolderSave
|
||||||
|
oGame.AppendTimeStamp = g.AppendTimeStamp
|
||||||
|
oGame.BackupLimit = g.BackupLimit
|
||||||
oGame.FileType = g.FileType
|
oGame.FileType = g.FileType
|
||||||
oGame.ExcludeList = g.ExcludeList
|
oGame.ExcludeList = g.ExcludeList
|
||||||
oGame.MonitorOnly = g.MonitorOnly
|
oGame.MonitorOnly = g.MonitorOnly
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices
|
|||||||
' by using the '*' as shown below:
|
' by using the '*' as shown below:
|
||||||
' <Assembly: AssemblyVersion("1.0.*")>
|
' <Assembly: AssemblyVersion("1.0.*")>
|
||||||
|
|
||||||
<Assembly: AssemblyVersion("1.1.1.*")>
|
<Assembly: AssemblyVersion("1.1.3.*")>
|
||||||
<Assembly: AssemblyFileVersion("1.1.1.0")>
|
<Assembly: AssemblyFileVersion("1.1.3.0")>
|
||||||
|
|
||||||
<Assembly: NeutralResourcesLanguageAttribute("en")>
|
<Assembly: NeutralResourcesLanguageAttribute("en")>
|
||||||
Generated
+11
-2
@@ -2698,7 +2698,7 @@ Namespace My.Resources
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Items are semi-colon delimited..
|
''' Looks up a localized string similar to Items are colon delimited..
|
||||||
'''</summary>
|
'''</summary>
|
||||||
Friend ReadOnly Property frmIncludeExclude_RawEditInfo() As String
|
Friend ReadOnly Property frmIncludeExclude_RawEditInfo() As String
|
||||||
Get
|
Get
|
||||||
@@ -5620,7 +5620,7 @@ Namespace My.Resources
|
|||||||
End Property
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to The manifest shows the backup folder contains a backup for [PARAM] that has not been restored on this computer.[BR][BR]Do you want to overwrite this file anyway?.
|
''' Looks up a localized string similar to The manifest shows the backup folder contains a more recent backup for [PARAM] that has not been restored on this computer.[BR][BR]Do you want to overwrite this file anyway?.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
Friend ReadOnly Property mgrBackup_ConfirmManifestConflict() As String
|
Friend ReadOnly Property mgrBackup_ConfirmManifestConflict() As String
|
||||||
Get
|
Get
|
||||||
@@ -5637,6 +5637,15 @@ Namespace My.Resources
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Looks up a localized string similar to A file with the same name already exists in the backup folder.[BR][BR]This game stores saves in a relative location, you may need to restore the current backup if the game was recently re-installed.[BR][BR]Do you want to overwrite this file?.
|
||||||
|
'''</summary>
|
||||||
|
Friend ReadOnly Property mgrBackup_ConfirmOverwriteRelative() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("mgrBackup_ConfirmOverwriteRelative", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Looks up a localized string similar to Backup aborted due to lack of disk space..
|
''' Looks up a localized string similar to Backup aborted due to lack of disk space..
|
||||||
'''</summary>
|
'''</summary>
|
||||||
|
|||||||
@@ -986,7 +986,7 @@
|
|||||||
<value>Individual Files</value>
|
<value>Individual Files</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="frmIncludeExclude_RawEditInfo" xml:space="preserve">
|
<data name="frmIncludeExclude_RawEditInfo" xml:space="preserve">
|
||||||
<value>Items are semi-colon delimited.</value>
|
<value>Items are colon delimited.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="frmIncludeExclude_RawEditTitle" xml:space="preserve">
|
<data name="frmIncludeExclude_RawEditTitle" xml:space="preserve">
|
||||||
<value>[PARAM] Raw Edit</value>
|
<value>[PARAM] Raw Edit</value>
|
||||||
@@ -1283,7 +1283,7 @@
|
|||||||
<value>[PARAM] backup completed with warnings.</value>
|
<value>[PARAM] backup completed with warnings.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="mgrBackup_ConfirmManifestConflict" xml:space="preserve">
|
<data name="mgrBackup_ConfirmManifestConflict" xml:space="preserve">
|
||||||
<value>The manifest shows the backup folder contains a backup for [PARAM] that has not been restored on this computer.[BR][BR]Do you want to overwrite this file anyway?</value>
|
<value>The manifest shows the backup folder contains a more recent backup for [PARAM] that has not been restored on this computer.[BR][BR]Do you want to overwrite this file anyway?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="mgrBackup_ConfirmOverwrite" xml:space="preserve">
|
<data name="mgrBackup_ConfirmOverwrite" xml:space="preserve">
|
||||||
<value>A file with the same name already exists in the backup folder.[BR][BR]Do you want to overwrite this file?</value>
|
<value>A file with the same name already exists in the backup folder.[BR][BR]Do you want to overwrite this file?</value>
|
||||||
@@ -2188,4 +2188,7 @@
|
|||||||
<data name="frmSettings_lstSettings_Startup" xml:space="preserve">
|
<data name="frmSettings_lstSettings_Startup" xml:space="preserve">
|
||||||
<value>Startup</value>
|
<value>Startup</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="mgrBackup_ConfirmOverwriteRelative" xml:space="preserve">
|
||||||
|
<value>A file with the same name already exists in the backup folder.[BR][BR]This game stores saves in a relative location, you may need to restore the current backup if the game was recently re-installed.[BR][BR]Do you want to overwrite this file?</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
+15
-8
@@ -1,17 +1,24 @@
|
|||||||
Game Backup Monitor v1.1.1 Readme
|
Game Backup Monitor v1.1.3 Readme
|
||||||
http://mikemaximus.github.io/gbm-web/
|
http://mikemaximus.github.io/gbm-web/
|
||||||
gamebackupmonitor@gmail.com
|
gamebackupmonitor@gmail.com
|
||||||
|
|
||||||
May 4, 2018
|
July 5th, 2018
|
||||||
|
|
||||||
New in 1.1.1
|
New in 1.1.3
|
||||||
|
|
||||||
All Platforms:
|
All Platforms:
|
||||||
|
|
||||||
- Spelling error fixed in manual backup message
|
- Game tags are now sorted alphanumerically on the Game Manager and in XML exports.
|
||||||
|
- GBM now displays a unique backup overwrite warning for games that use a relative saved game path.
|
||||||
Windows Only:
|
- The "Save Multiple Backups" setting now allows infinite backups when "Backup Limit" is set to 0. This is now the default for new configurations.
|
||||||
|
- "Save Multiple Backups" and "Backup Limit" are now core fields, they are synced by default and included in the Import/Export.
|
||||||
- Updated 7-Zip to v18.05
|
- The Game Manager will now clean up it's own manifest when backup files are deleted outside of GBM. As to not affect performance, this only occurs when the "Backup Data" field is accessed.
|
||||||
|
- When a single game is selected, the Game Manager now restores the currently selected backup, instead of always restoring the latest backup.
|
||||||
|
- If possible, GBM now displays the full path of the detected process when multiple configurations are triggered.
|
||||||
|
- Fixed an issue that could cause the certain controls to become enabled incorrectly on the Game Manager.
|
||||||
|
- Fixed an issue that caused GBM not to remove empty sub-folders unless the "Use Game ID for files and folders" setting was enabled when the folder was created.
|
||||||
|
- Fixed an issue that caused GBM not to rename backup files or sub-folders unless the "Use Game ID for files and folders" setting was enabled.
|
||||||
|
- Fixed an issue that caused GBM to only rename the most current backup file when modifying a Name or Game ID.
|
||||||
|
- GBM no longer displays a sync warning when the user deletes all game configurations from the Game Manager.
|
||||||
|
|
||||||
The entire version history of GBM releases is available at http://mikemaximus.github.io/gbm-web/versionhistory.html
|
The entire version history of GBM releases is available at http://mikemaximus.github.io/gbm-web/versionhistory.html
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,22 +1,45 @@
|
|||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
#check for all dependencies
|
# prepare
|
||||||
for prog in mono readlink df 7za;do
|
if [ -z "${XDG_DATA_HOME}" ]; then
|
||||||
[ -n "`whereis -b ${prog} | cut -sd' ' -f2`" ] || (echo "Please install ${prog}" && exit 1);
|
XDG_DATA_HOME="${HOME}/.local/share"
|
||||||
done
|
fi
|
||||||
for lib in libsqlite3;do
|
mkdir -p "${XDG_DATA_HOME}/gbm"
|
||||||
[ -n "`ldconfig -p | grep ${lib}`" ] || (echo "Please install ${lib}" && exit 1);
|
pidfile="${XDG_DATA_HOME}/gbm/pid"
|
||||||
done
|
|
||||||
dir="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
|
# check whether pid file exists and process is running
|
||||||
echo "Located in ${dir}";
|
if ( ! [ -e "${pidfile}" ] || ! pgrep -F "${pidfile}" ); then
|
||||||
gbmpath='./';
|
|
||||||
#locate GBM.exe
|
# check for all dependencies
|
||||||
if [ "${dir}" = '/usr/bin' ] && [ -s '/usr/share/gbm/GBM.exe' ]; then
|
for prog in mono readlink df 7za;do
|
||||||
gbmpath='/usr/share/gbm/';
|
[ -n "`whereis -b ${prog} | cut -sd' ' -f2`" ] || (echo "Please install ${prog}" && exit 1);
|
||||||
elif [ "${dir}" = '/usr/local/bin' ] && [ -s '/usr/local/share/gbm/GBM.exe' ]; then
|
done
|
||||||
gbmpath='/usr/local/share/gbm/';
|
for lib in libsqlite3;do
|
||||||
elif [ ! -s './GBM.exe' ]; then
|
[ -n "`ldconfig -p | grep ${lib}`" ] || (echo "Please install ${lib}" && exit 1);
|
||||||
echo 'GBM.exe not found';
|
done
|
||||||
exit 2;
|
|
||||||
|
# directory this script is located in
|
||||||
|
dir="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
|
||||||
|
echo "Located in ${dir}";
|
||||||
|
gbmpath='./';
|
||||||
|
|
||||||
|
# locate GBM.exe
|
||||||
|
if [ "${dir}" = '/usr/bin' ] && [ -s '/usr/share/gbm/GBM.exe' ]; then
|
||||||
|
gbmpath='/usr/share/gbm/';
|
||||||
|
elif [ "${dir}" = '/usr/local/bin' ] && [ -s '/usr/local/share/gbm/GBM.exe' ]; then
|
||||||
|
gbmpath='/usr/local/share/gbm/';
|
||||||
|
elif [ ! -s './GBM.exe' ]; then
|
||||||
|
echo 'GBM.exe not found';
|
||||||
|
exit 2;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# pass our arguments to GBM and run it in background
|
||||||
|
mono --desktop "${gbmpath}GBM.exe" "$@" &
|
||||||
|
# store pid and wait for process to end
|
||||||
|
echo $! > "${pidfile}"
|
||||||
|
wait $!
|
||||||
|
rm "${pidfile}"
|
||||||
|
exit $?;
|
||||||
|
else
|
||||||
|
echo "GBM is already running"
|
||||||
|
exit 1;
|
||||||
fi
|
fi
|
||||||
mono --desktop ${gbmpath}'GBM.exe' "$@";
|
|
||||||
exit $?;
|
|
||||||
|
|||||||
Reference in New Issue
Block a user