Skip to content

Commit d159398

Browse files
committed
Fix bug in accessing some database operations from main menu.
Database menu's Backup User Database, Move User Database & Delete User Database options are now disabled if user database is empty. Additionally, new, un-saved snippets are now saved to user database before the database operations take place. Fixes #45
1 parent 830a888 commit d159398

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

Src/FmMain.dfm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -619,6 +619,7 @@ inherited MainForm: TMainForm
619619
Hint = 'Backup user database|Backup the user-defined snippet database'
620620
ImageIndex = 33
621621
OnExecute = actBackupDatabaseExecute
622+
OnUpdate = ActNonEmptyUserDBUpdate
622623
end
623624
object actRestoreDatabase: TAction
624625
Category = 'Database'
@@ -849,6 +850,7 @@ inherited MainForm: TMainForm
849850
'Move user database|Move the user-defined snippet database to a n' +
850851
'ew directory'
851852
OnExecute = actMoveUserDatabaseExecute
853+
OnUpdate = ActNonEmptyUserDBUpdate
852854
end
853855
object actSWAGImport: TAction
854856
Category = 'Snippets'
@@ -873,6 +875,7 @@ inherited MainForm: TMainForm
873875
'Delete User Database|Deletes the user'#39's snippets database - USE ' +
874876
'WITH CAUTION'
875877
OnExecute = actDeleteUserDatabaseExecute
878+
OnUpdate = ActNonEmptyUserDBUpdate
876879
end
877880
end
878881
object mnuMain: TMainMenu

Src/FmMain.pas

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,7 @@ TMainForm = class(THelpAwareForm)
495495
/// position is permitted and blocks the move if not.</summary>
496496
procedure splitVertCanResize(Sender: TObject; var NewSize: Integer;
497497
var Accept: Boolean);
498+
procedure ActNonEmptyUserDBUpdate(Sender: TObject);
498499
strict private
499500
var
500501
/// <summary>Object that notifies user-initiated events by triggering
@@ -621,7 +622,10 @@ procedure TMainForm.actAddSnippetExecute(Sender: TObject);
621622

622623
procedure TMainForm.actBackupDatabaseExecute(Sender: TObject);
623624
begin
625+
if (Database as IDatabaseEdit).Updated then
626+
TUserDBMgr.Save(Self);
624627
TUserDBMgr.BackupDatabase(Self);
628+
fStatusBarMgr.Update;
625629
end;
626630

627631
procedure TMainForm.actBugReportExecute(Sender: TObject);
@@ -721,8 +725,13 @@ procedure TMainForm.actDeleteSnippetExecute(Sender: TObject);
721725

722726
procedure TMainForm.actDeleteUserDatabaseExecute(Sender: TObject);
723727
begin
728+
if (Database as IDatabaseEdit).Updated then
729+
TUserDBMgr.Save(Self);
724730
if TUserDBMgr.DeleteDatabase then
731+
begin
725732
ReloadDatabase;
733+
fStatusBarMgr.Update;
734+
end;
726735
end;
727736

728737
procedure TMainForm.actDuplicateSnippetExecute(Sender: TObject);
@@ -902,6 +911,8 @@ procedure TMainForm.actLoadSelectionExecute(Sender: TObject);
902911

903912
procedure TMainForm.actMoveUserDatabaseExecute(Sender: TObject);
904913
begin
914+
if (Database as IDatabaseEdit).Updated then
915+
TUserDBMgr.Save(Self);
905916
TUserDBMgr.MoveDatabase;
906917
end;
907918

@@ -920,6 +931,11 @@ procedure TMainForm.ActNonEmptyDBUpdate(Sender: TObject);
920931
(Sender as TAction).Enabled := not Database.Snippets.IsEmpty;
921932
end;
922933

934+
procedure TMainForm.ActNonEmptyUserDBUpdate(Sender: TObject);
935+
begin
936+
(Sender as TAction).Enabled := not Database.Snippets.IsEmpty(True);
937+
end;
938+
923939
procedure TMainForm.ActOverviewTabExecute(Sender: TObject);
924940
begin
925941
// Action's Tag property specifies index of tab being selected
@@ -979,7 +995,10 @@ procedure TMainForm.actRenameCategoryUpdate(Sender: TObject);
979995
procedure TMainForm.actRestoreDatabaseExecute(Sender: TObject);
980996
begin
981997
if TUserDBMgr.RestoreDatabase(Self) then
998+
begin
982999
ReloadDatabase;
1000+
fStatusBarMgr.Update;
1001+
end;
9831002
end;
9841003

9851004
procedure TMainForm.actSaveDatabaseExecute(Sender: TObject);

0 commit comments

Comments
 (0)