Skip to content

Commit 7171e48

Browse files
committed
feat: rename snippet per right-click on query helpers tree
Refs #2458
1 parent 79c5e4c commit 7171e48

3 files changed

Lines changed: 51 additions & 8 deletions

File tree

source/const.inc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ const
105105
TextInvalidColumn: String = '';
106106
FILEFILTER_SQLITEDB = '*.sqlite3;*.sqlite;*.db;*.s3db';
107107
FILEEXT_SQLITEDB = 'sqlite3';
108+
FILEEXT_SNIPPET = '.sql';
108109
PROPOSAL_ITEM_HEIGHT = 18;
109110
// Note the following should be in sync to what MySQL returns from SHOW WARNINGS
110111
SLogPrefixWarning = 'Warning';

source/main.lfm

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21008,6 +21008,12 @@ object MainForm: TMainForm
2100821008
ImageIndex = 52
2100921009
OnClick = menuLoadSnippetClick
2101021010
end
21011+
object menuRenameSnippet: TMenuItem
21012+
Caption = 'Rename'
21013+
Enabled = False
21014+
ImageIndex = 58
21015+
OnClick = menuRenameSnippetClick
21016+
end
2101121017
object menuDeleteSnippet: TMenuItem
2101221018
Caption = 'Delete ...'
2101321019
Enabled = False

source/main.pas

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ TMainForm = class(TExtForm)
224224
FollowForeignKey: TMenuItem;
225225
menuColorScheme: TMenuItem;
226226
MenuItem3: TMenuItem;
227+
menuRenameSnippet: TMenuItem;
227228
menuSQLpreferences: TMenuItem;
228229
menuQFdummy: TMenuItem;
229230
N1: TMenuItem;
@@ -944,6 +945,7 @@ TMainForm = class(TExtForm)
944945
TColumnIndex; NewText: String);
945946
procedure AnyGridPaintText(Sender: TBaseVirtualTree; const TargetCanvas:
946947
TCanvas; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType);
948+
procedure menuRenameSnippetClick(Sender: TObject);
947949
procedure menuDeleteSnippetClick(Sender: TObject);
948950
procedure menuExploreClick(Sender: TObject);
949951
procedure menuInsertAtCursorClick(Sender: TObject);
@@ -5232,7 +5234,7 @@ procedure TMainform.popupQueryLoadClick(Sender: TObject);
52325234
Filename := (Sender as TMenuItem).Caption;
52335235
Filename := StripHotkey(Filename);
52345236
if Pos('\', Filename) = 0 then // assuming we load a snippet
5235-
Filename := AppSettings.DirnameSnippets + Filename + '.sql'
5237+
Filename := AppSettings.DirnameSnippets + Filename + FILEEXT_SNIPPET
52365238
else begin // assuming we load a file from the recent-list
52375239
p := Pos(' ', Filename) + 1;
52385240
filename := Copy(Filename, p, Length(Filename));
@@ -7750,7 +7752,7 @@ procedure TMainForm.SynMemoQueryDragDrop(Sender, Source: TObject; X,
77507752
1:
77517753
case Tree.FocusedNode.Parent.Index of
77527754
TQueryTab.HelperNodeSnippets:
7753-
Text := ReadTextFile(AppSettings.DirnameSnippets + Tree.Text[Tree.FocusedNode, 0] + '.sql', nil);
7755+
Text := ReadTextFile(AppSettings.DirnameSnippets + Tree.Text[Tree.FocusedNode, 0] + FILEEXT_SNIPPET, nil);
77547756
TQueryTab.HelperNodeHistory:
77557757
Text := '';
77567758
else begin
@@ -8512,27 +8514,59 @@ procedure TMainForm.insertFunction(Sender: TObject);
85128514
end;
85138515

85148516

8517+
procedure TMainForm.menuRenameSnippetClick(Sender: TObject);
8518+
var
8519+
OldName, NewName: String;
8520+
begin
8521+
if not Assigned(QueryTabs.ActiveHelpersTree.FocusedNode) then
8522+
Exit;
8523+
8524+
OldName := QueryTabs.ActiveHelpersTree.Text[QueryTabs.ActiveHelpersTree.FocusedNode, 0];
8525+
NewName := OldName;
8526+
if InputQuery(_('Rename'), 'Rename snippet "'+OldName+'"', NewName) then
8527+
begin
8528+
Screen.Cursor := crHourGlass;
8529+
if NewName.IsEmpty then begin
8530+
Screen.Cursor := crDefault;
8531+
ErrorDialog(f_('Failed renaming %s', ['"' + OldName + '" => "' + NewName + '"']));
8532+
end
8533+
else begin
8534+
OldName := ChangeFileExt(AppSettings.DirnameSnippets + OldName, FILEEXT_SNIPPET);
8535+
NewName := ChangeFileExt(AppSettings.DirnameSnippets + NewName, FILEEXT_SNIPPET);
8536+
LogSQL(Format('Rename snippet "%s" to "%s"', [OldName, NewName]), lcDebug);
8537+
if RenameFile(OldName, NewName) then begin
8538+
// Refresh list with snippets
8539+
SetSnippetFilenames;
8540+
end else begin
8541+
Screen.Cursor := crDefault;
8542+
ErrorDialog(f_('Failed renaming %s', ['"' + OldName + '" => "' + NewName + '"']));
8543+
end;
8544+
end;
8545+
Screen.Cursor := crDefault;
8546+
end;
8547+
end;
8548+
85158549
{**
85168550
Delete a snippet file
85178551
}
85188552
procedure TMainForm.menuDeleteSnippetClick(Sender: TObject);
85198553
var
8520-
snippetfile : String;
8554+
SnippetFile : String;
85218555
begin
85228556
// Don't do anything if no item was selected
85238557
if not Assigned(QueryTabs.ActiveHelpersTree.FocusedNode) then
85248558
Exit;
85258559

8526-
snippetfile := AppSettings.DirnameSnippets + QueryTabs.ActiveHelpersTree.Text[QueryTabs.ActiveHelpersTree.FocusedNode, 0] + '.sql';
8527-
if MessageDialog(_('Delete snippet file?'), snippetfile, mtConfirmation, [mbOk, mbCancel]) = mrOk then
8560+
SnippetFile := AppSettings.DirnameSnippets + QueryTabs.ActiveHelpersTree.Text[QueryTabs.ActiveHelpersTree.FocusedNode, 0] + FILEEXT_SNIPPET;
8561+
if MessageDialog(_('Delete snippet file?'), SnippetFile, mtConfirmation, [mbOk, mbCancel]) = mrOk then
85288562
begin
85298563
Screen.Cursor := crHourGlass;
8530-
if DeleteFileWithUndo(snippetfile) then begin
8564+
if DeleteFileWithUndo(SnippetFile) then begin
85318565
// Refresh list with snippets
85328566
SetSnippetFilenames;
85338567
end else begin
85348568
Screen.Cursor := crDefault;
8535-
ErrorDialog(f_('Failed deleting %s', [snippetfile]));
8569+
ErrorDialog(f_('Failed deleting %s', [SnippetFile]));
85368570
end;
85378571
Screen.Cursor := crDefault;
85388572
end;
@@ -8569,7 +8603,7 @@ procedure TMainForm.menuInsertAtCursorClick(Sender: TObject);
85698603
}
85708604
procedure TMainForm.menuLoadSnippetClick(Sender: TObject);
85718605
begin
8572-
QueryTabs.ActiveTab.LoadContents(AppSettings.DirnameSnippets + QueryTabs.ActiveHelpersTree.Text[QueryTabs.ActiveHelpersTree.FocusedNode, 0] + '.sql', True, nil);
8606+
QueryTabs.ActiveTab.LoadContents(AppSettings.DirnameSnippets + QueryTabs.ActiveHelpersTree.Text[QueryTabs.ActiveHelpersTree.FocusedNode, 0] + FILEEXT_SNIPPET, True, nil);
85738607
end;
85748608

85758609

@@ -14481,6 +14515,7 @@ procedure TMainForm.treeQueryHelpersContextPopup(Sender: TObject; MousePos: TPoi
1448114515
menuQueryHelpersGenerateDelete.Enabled := False;
1448214516
menuInsertAtCursor.Enabled := False;
1448314517
menuLoadSnippet.Enabled := False;
14518+
menuRenameSnippet.Enabled := False;
1448414519
menuDeleteSnippet.Enabled := False;
1448514520
menuExplore.Enabled := False;
1448614521
menuHelp.Enabled := False;
@@ -14508,6 +14543,7 @@ procedure TMainForm.treeQueryHelpersContextPopup(Sender: TObject; MousePos: TPoi
1450814543
menuInsertAtCursor.Enabled := True;
1450914544
end;
1451014545
TQueryTab.HelperNodeSnippets: begin
14546+
menuRenameSnippet.Enabled := True;
1451114547
menuDeleteSnippet.Enabled := True;
1451214548
menuInsertAtCursor.Enabled := True;
1451314549
menuLoadSnippet.Enabled := True;

0 commit comments

Comments
 (0)