From bb5d5add2381c332ea529fbb3ba2bfc7d3c77236 Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Sat, 11 Jan 2025 15:48:54 +0100 Subject: [PATCH] Issue #1975: add preference option to skip dialog for selecting the SQL reformatter --- out/locale/en/LC_MESSAGES/default.po | 8 +++++++- source/apphelpers.pas | 3 ++- source/main.pas | 10 +++++++++- source/preferences.dfm | 16 ++++++++++++++++ source/preferences.pas | 12 +++++++++++- source/reformatter.pas | 8 +++++++- 6 files changed, 52 insertions(+), 5 deletions(-) diff --git a/out/locale/en/LC_MESSAGES/default.po b/out/locale/en/LC_MESSAGES/default.po index a563d409..4de95a8c 100644 --- a/out/locale/en/LC_MESSAGES/default.po +++ b/out/locale/en/LC_MESSAGES/default.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: HeidiSQL\n" "POT-Creation-Date: 2012-11-05 21:40\n" -"PO-Revision-Date: 2025-01-05 13:46+0100\n" +"PO-Revision-Date: 2025-01-11 15:44+0100\n" "Last-Translator: Ansgar Becker \n" "Language-Team: English (http://www.transifex.com/projects/p/heidisql/language/en/)\n" "Language: en\n" @@ -6723,3 +6723,9 @@ msgstr "Generate" msgid "Generate data" msgstr "Generate data" + +msgid "Reformatter:" +msgstr "Reformatter:" + +msgid "Always ask" +msgstr "Always ask" diff --git a/source/apphelpers.pas b/source/apphelpers.pas index e85863d2..7db5d47b 100644 --- a/source/apphelpers.pas +++ b/source/apphelpers.pas @@ -234,7 +234,7 @@ type asThemePreviewWidth, asThemePreviewHeight, asThemePreviewTop, asThemePreviewLeft, asCreateDbCollation, asRealTrailingZeros, asSequalSuggestWindowWidth, asSequalSuggestWindowHeight, asSequalSuggestPrompt, asSequalSuggestRecentPrompts, - asReformatter, asAlwaysGenerateFilter, + asReformatter, asReformatterNoDialog, asAlwaysGenerateFilter, asGenerateDataNumRows, asGenerateDataNullAmount, asUnused); TAppSetting = record @@ -3857,6 +3857,7 @@ begin InitSetting(asSequalSuggestPrompt, 'SequalSuggestPrompt', 0, False, ''); InitSetting(asSequalSuggestRecentPrompts, 'SequalSuggestRecentPrompts', 0, False, ''); InitSetting(asReformatter, 'Reformatter', 0); + InitSetting(asReformatterNoDialog, 'ReformatterNoDialog', 0); InitSetting(asAlwaysGenerateFilter, 'AlwaysGenerateFilter', 0, False); InitSetting(asGenerateDataNumRows, 'GenerateDataNumRows', 1000); InitSetting(asGenerateDataNullAmount, 'GenerateDataNullAmount', 10); diff --git a/source/main.pas b/source/main.pas index bc25038f..d96f7000 100644 --- a/source/main.pas +++ b/source/main.pas @@ -13340,6 +13340,7 @@ procedure TMainForm.actReformatSQLExecute(Sender: TObject); var m: TCustomSynEdit; CursorPosStart, CursorPosEnd: Integer; + Done: Boolean; begin // Reformat SQL query m := ActiveSynMemo(False); @@ -13356,7 +13357,14 @@ begin else begin frmReformatter := TfrmReformatter.Create(Self); frmReformatter.InputCode := m.SelText; - if frmReformatter.ShowModal = mrOk then begin + if AppSettings.ReadInt(asReformatterNoDialog) <> 0 then begin + frmReformatter.btnOkClick(Self); + Done := True; + end + else begin + Done := frmReformatter.ShowModal = mrOk; + end; + if Done then begin Screen.Cursor := crHourglass; m.UndoList.AddGroupBreak; m.SelText := frmReformatter.OutputCode; diff --git a/source/preferences.dfm b/source/preferences.dfm index 5181aa53..ca227eb9 100644 --- a/source/preferences.dfm +++ b/source/preferences.dfm @@ -1405,6 +1405,13 @@ object frmPreferences: TfrmPreferences Height = 14 Caption = 'Grayscale inactive tab icons' end + object lblReformatter: TLabel + Left = 8 + Top = 131 + Width = 70 + Height = 14 + Caption = 'Reformatter:' + end object chkAskFileSave: TCheckBox Left = 220 Top = 8 @@ -1460,6 +1467,15 @@ object frmPreferences: TfrmPreferences 'Grayscale icons on inactive query tabs only' 'Grayscale icons on every inactive tab') end + object comboReformatter: TComboBox + Left = 220 + Top = 128 + Width = 451 + Height = 22 + Style = csDropDownList + Anchors = [akLeft, akTop, akRight] + TabOrder = 5 + end end end object btnCancel: TButton diff --git a/source/preferences.pas b/source/preferences.pas index 95b58490..6d89c46f 100644 --- a/source/preferences.pas +++ b/source/preferences.pas @@ -13,7 +13,7 @@ uses Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ExtCtrls, SynEditHighlighter, SynHighlighterSQL, SynEdit, SynMemo, VirtualTrees, SynEditKeyCmds, Vcl.ActnList, Vcl.StdActns, Vcl.Menus, dbstructures, gnugettext, Vcl.Themes, Vcl.Styles, SynRegExpr, System.Generics.Collections, - Vcl.ImageCollection, extra_controls, theme_preview, Vcl.Buttons, System.Actions, + Vcl.ImageCollection, extra_controls, theme_preview, reformatter, Vcl.Buttons, System.Actions, VirtualTrees.BaseAncestorVCL, VirtualTrees.BaseTree, VirtualTrees.AncestorVCL, VirtualTrees.Types; type @@ -190,6 +190,8 @@ type btnRemoveHotKey2: TButton; comboTabIconsGrayscaleMode: TComboBox; Label5: TLabel; + lblReformatter: TLabel; + comboReformatter: TComboBox; procedure FormShow(Sender: TObject); procedure Modified(Sender: TObject); procedure Apply(Sender: TObject); @@ -442,6 +444,7 @@ begin AppSettings.WriteBool(asTabCloseOnDoubleClick, chkTabCloseOnDoubleClick.Checked); AppSettings.WriteBool(asTabCloseOnMiddleClick, chkTabCloseOnMiddleClick.Checked); AppSettings.WriteInt(asTabIconsGrayscaleMode, comboTabIconsGrayscaleMode.ItemIndex); + AppSettings.WriteInt(asReformatterNoDialog, comboReformatter.ItemIndex); // Set relevant properties in mainform MainForm.ApplyFontToGrids; @@ -516,6 +519,7 @@ var Name: String; GridColorsPreset: TGridColorsPreset; IconPack: String; + Reformatter: TfrmReformatter; begin HasSizeGrip := True; @@ -673,6 +677,11 @@ begin FShortcutCategories.Add(_('SQL editing')); TreeShortcutItems.RootNodeCount := FShortcutCategories.Count; comboLineBreakStyle.Items := Explode(',', _('Windows linebreaks')+','+_('UNIX linebreaks')+','+_('Mac OS linebreaks')); + + comboReformatter.Items.Add(_('Always ask')); + Reformatter := TfrmReformatter.Create(Self); + comboReformatter.Items.AddStrings(Reformatter.grpReformatter.Items); + Reformatter.Free; end; @@ -806,6 +815,7 @@ begin chkTabCloseOnDoubleClick.Checked := AppSettings.ReadBool(asTabCloseOnDoubleClick); chkTabCloseOnMiddleClick.Checked := AppSettings.ReadBool(asTabCloseOnMiddleClick); comboTabIconsGrayscaleMode.ItemIndex := AppSettings.ReadInt(asTabIconsGrayscaleMode); + comboReformatter.ItemIndex := AppSettings.ReadInt(asReformatterNoDialog); // Disable global shortcuts MainForm.ActionList1.State := asSuspended; diff --git a/source/reformatter.pas b/source/reformatter.pas index 525f6fbc..38d5d45b 100644 --- a/source/reformatter.pas +++ b/source/reformatter.pas @@ -87,7 +87,13 @@ begin grpReformatter.Items.Add(_('Internal')); grpReformatter.Items.Add(f_('Online on %s', [APPDOMAIN])); grpReformatter.Items.Add(f_('Online on %s', ['sqlformat.org'])); - grpReformatter.ItemIndex := AppSettings.ReadInt(asReformatter); + if AppSettings.ReadInt(asReformatterNoDialog) = 0 then begin + grpReformatter.ItemIndex := AppSettings.ReadInt(asReformatter); + end + else begin + // asReformatterNoDialog has the same items with an additional "always ask" item at index 0 + grpReformatter.ItemIndex := AppSettings.ReadInt(asReformatterNoDialog) - 1; + end; end; procedure TfrmReformatter.FormDestroy(Sender: TObject);