Use the same hotkey (Ctrl+S) for saving a table/trigger/... as for saving a query file. Closes #1619

This commit is contained in:
Ansgar Becker
2023-11-03 12:43:07 +01:00
parent aa2e93a801
commit f9297d4c7d
6 changed files with 40 additions and 15 deletions

View File

@@ -4,7 +4,7 @@ interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms,
Vcl.Dialogs, Vcl.StdCtrls, SynEdit, SynMemo, SynRegExpr, Vcl.ComCtrls, Vcl.ExtCtrls, System.WideStrUtils,
Vcl.Dialogs, Vcl.StdCtrls, Vcl.Menus, SynEdit, SynMemo, SynRegExpr, Vcl.ComCtrls, Vcl.ExtCtrls, System.WideStrUtils,
apphelpers, dbconnection, dbstructures, gnugettext, extra_controls;
type
@@ -81,6 +81,7 @@ begin
'DAY_HOUR|DAY_MINUTE|DAY_SECOND|HOUR_MINUTE|HOUR_SECOND|MINUTE_SECOND');
grpState.Items := Explode('|', 'Enable|Disable|Disable on slave');
FMainSynMemo := SynMemoBody;
btnSave.Hint := ShortCutToText(MainForm.actSaveSQL.ShortCut);
end;

View File

@@ -5023,18 +5023,37 @@ end;
procedure TMainForm.actSaveSQLExecute(Sender: TObject);
var
i: Integer;
ObjEditor: TDBObjectEditor;
Handled: Boolean;
begin
if QueryTabs.ActiveTab.MemoFilename <> '' then begin
QueryTabs.ActiveTab.SaveContents(QueryTabs.ActiveTab.MemoFilename, False);
for i:=0 to QueryTabs.Count-1 do begin
if QueryTabs[i] = QueryTabs.ActiveTab then
continue;
if QueryTabs[i].MemoFilename = QueryTabs.ActiveTab.MemoFilename then
QueryTabs[i].Memo.Modified := True;
Handled := False;
if QueryTabs.HasActiveTab then begin
// Save SQL tab contents to file
if QueryTabs.ActiveTab.MemoFilename <> '' then begin
QueryTabs.ActiveTab.SaveContents(QueryTabs.ActiveTab.MemoFilename, False);
for i:=0 to QueryTabs.Count-1 do begin
if QueryTabs[i] = QueryTabs.ActiveTab then
continue;
if QueryTabs[i].MemoFilename = QueryTabs.ActiveTab.MemoFilename then
QueryTabs[i].Memo.Modified := True;
end;
ValidateQueryControls(Sender);
end else
actSaveSQLAsExecute(Sender);
Handled := True;
end
else if PageControlMain.ActivePage = tabEditor then begin
// Save table, procedure, etc.
ObjEditor := ActiveObjectEditor;
if Assigned(ObjEditor) and ObjEditor.Modified then begin
ObjEditor.ApplyModifications;
Handled := True;
end;
ValidateQueryControls(Sender);
end else
actSaveSQLAsExecute(Sender);
end;
if not Handled then begin
MessageBeep(MB_ICONASTERISK);
end;
end;
@@ -6585,7 +6604,7 @@ var
NotEmpty, HasSelection, HasConnection: Boolean;
Tab: TQueryTab;
cap: String;
InQueryTab: Boolean;
InQueryTab, InEditorTab: Boolean;
Conn: TDBConnection;
begin
// Enable/disable TActions, according to the current window/connection state
@@ -6604,6 +6623,7 @@ begin
SetTabCaption(Tab.TabSheet.PageIndex, cap);
end;
InQueryTab := QueryTabs.HasActiveTab;
InEditorTab := PageControlMain.ActivePage = tabEditor;
Tab := QueryTabs.ActiveTab;
NotEmpty := InQueryTab and (Tab.Memo.GetTextLen > 0);
HasSelection := InQueryTab and Tab.Memo.SelAvail;
@@ -6614,7 +6634,7 @@ begin
actExecuteCurrentQuery.Enabled := actExecuteQuery.Enabled;
actExplainCurrentQuery.Enabled := actExecuteQuery.Enabled and (Conn.Parameters.NetTypeGroup in [ngMySQL, ngPgSQL, ngSQLite]);
actSaveSQLAs.Enabled := InQueryTab and NotEmpty;
actSaveSQL.Enabled := actSaveSQLAs.Enabled and Tab.Memo.Modified;
actSaveSQL.Enabled := (actSaveSQLAs.Enabled and Tab.Memo.Modified) or InEditorTab;
actSaveSQLselection.Enabled := InQueryTab and HasSelection;
actSaveSQLSnippet.Enabled := InQueryTab and NotEmpty;
actSaveSQLSelectionSnippet.Enabled := InQueryTab and HasSelection;

View File

@@ -116,6 +116,7 @@ begin
Parameters := TRoutineParamList.Create;
editName.MaxLength := NAME_LEN;
FMainSynMemo := SynMemoBody;
btnSave.Hint := ShortCutToText(MainForm.actSaveSQL.ShortCut);
end;

View File

@@ -255,6 +255,7 @@ begin
FDeletedCheckConstraints.Duplicates := dupIgnore;
editName.MaxLength := NAME_LEN;
FAlterRestrictedMessageDisplayed := False;
btnSave.Hint := ShortCutToText(MainForm.actSaveSQL.ShortCut);
end;

View File

@@ -3,7 +3,7 @@ unit trigger_editor;
interface
uses
Winapi.Windows, System.SysUtils, System.Classes, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, SynEdit, SynMemo,
Winapi.Windows, System.SysUtils, System.Classes, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Menus, SynEdit, SynMemo,
SynCompletionProposal, SynRegExpr,
dbconnection, dbstructures, dbstructures.mysql, apphelpers, gnugettext, Vcl.ComCtrls, extra_controls;
@@ -78,6 +78,7 @@ begin
SynCompletionProposalStatement.TimerInterval := Mainform.SynCompletionProposal.TimerInterval;
SynCompletionProposalStatement.Margin := Mainform.SynCompletionProposal.Margin;
FMainSynMemo := SynMemoBody;
btnSave.Hint := ShortCutToText(MainForm.actSaveSQL.ShortCut);
end;

View File

@@ -4,7 +4,7 @@ interface
uses
Winapi.Windows, System.SysUtils, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, SynEdit, SynMemo,
Vcl.ExtCtrls,
Vcl.ExtCtrls, Vcl.Menus,
dbconnection, dbstructures, dbstructures.mysql, apphelpers, gnugettext, Vcl.ComCtrls, extra_controls;
type
@@ -66,6 +66,7 @@ begin
comboSecurity.Items.Add('Definer');
comboSecurity.Items.Add('Invoker');
FMainSynMemo := SynMemoBody;
btnSave.Hint := ShortCutToText(MainForm.actSaveSQL.ShortCut);
end;