Issue #1906: add preference option for grayscale/color icons on inactive tabs

This commit is contained in:
Ansgar Becker
2024-02-10 15:37:21 +01:00
parent 8f099dcfe2
commit 04c2d949a0
5 changed files with 47 additions and 7 deletions

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: HeidiSQL\n" "Project-Id-Version: HeidiSQL\n"
"POT-Creation-Date: 2012-11-05 21:40\n" "POT-Creation-Date: 2012-11-05 21:40\n"
"PO-Revision-Date: 2024-02-07 07:28+0100\n" "PO-Revision-Date: 2024-02-10 15:35+0100\n"
"Last-Translator: Ansgar Becker <anse@heidisql.com>\n" "Last-Translator: Ansgar Becker <anse@heidisql.com>\n"
"Language-Team: English (http://www.transifex.com/projects/p/heidisql/language/en/)\n" "Language-Team: English (http://www.transifex.com/projects/p/heidisql/language/en/)\n"
"Language: en\n" "Language: en\n"
@ -2776,6 +2776,18 @@ msgstr "Close tab on doubleclick"
msgid "Close tab on middleclick" msgid "Close tab on middleclick"
msgstr "Close tab on middleclick" msgstr "Close tab on middleclick"
msgid "Grayscale inactive tab icons"
msgstr "Grayscale inactive tab icons"
msgid "Color icons on all tabs"
msgstr "Color icons on all tabs"
msgid "Grayscale icons on inactive query tabs only"
msgstr "Grayscale icons on inactive query tabs only"
msgid "Grayscale icons on every inactive tab"
msgstr "Grayscale icons on every inactive tab"
msgid "Tabs in multiple lines" msgid "Tabs in multiple lines"
msgstr "Tabs in multiple lines" msgstr "Tabs in multiple lines"

View File

@ -212,7 +212,8 @@ type
asCopyTableData, asCopyTableRecentFilter, asServerVersion, asServerVersionFull, asLastConnect, asCopyTableData, asCopyTableRecentFilter, asServerVersion, asServerVersionFull, asLastConnect,
asConnectCount, asRefusedCount, asSessionCreated, asDoUsageStatistics, asConnectCount, asRefusedCount, asSessionCreated, asDoUsageStatistics,
asLastUsageStatisticCall, asWheelZoom, asDisplayBars, asMySQLBinaries, asCustomSnippetsDirectory, asLastUsageStatisticCall, asWheelZoom, asDisplayBars, asMySQLBinaries, asCustomSnippetsDirectory,
asPromptSaveFileOnTabClose, asRestoreTabs, asTabCloseOnDoubleClick, asTabCloseOnMiddleClick, asTabsInMultipleLines, asWarnUnsafeUpdates, asQueryWarningsMessage, asQueryGridLongSortRowNum, asPromptSaveFileOnTabClose, asRestoreTabs, asTabCloseOnDoubleClick, asTabCloseOnMiddleClick, asTabsInMultipleLines, asTabIconsGrayscaleMode,
asWarnUnsafeUpdates, asQueryWarningsMessage, asQueryGridLongSortRowNum,
asCompletionProposal, asCompletionProposalInterval, asCompletionProposalSearchOnMid, asCompletionProposalWidth, asCompletionProposalNbLinesInWindow, asAutoUppercase, asCompletionProposal, asCompletionProposalInterval, asCompletionProposalSearchOnMid, asCompletionProposalWidth, asCompletionProposalNbLinesInWindow, asAutoUppercase,
asTabsToSpaces, asFilterPanel, asAllowMultipleInstances, asFindDialogSearchHistory, asGUIFontName, asGUIFontSize, asTabsToSpaces, asFilterPanel, asAllowMultipleInstances, asFindDialogSearchHistory, asGUIFontName, asGUIFontSize,
asTheme, asIconPack, asWebSearchBaseUrl, asTheme, asIconPack, asWebSearchBaseUrl,
@ -3829,6 +3830,7 @@ begin
InitSetting(asTabCloseOnDoubleClick, 'TabCloseOnDoubleClick', 0, True); InitSetting(asTabCloseOnDoubleClick, 'TabCloseOnDoubleClick', 0, True);
InitSetting(asTabCloseOnMiddleClick, 'TabCloseOnMiddleClick', 0, True); InitSetting(asTabCloseOnMiddleClick, 'TabCloseOnMiddleClick', 0, True);
InitSetting(asTabsInMultipleLines, 'TabsInMultipleLines', 0, True); InitSetting(asTabsInMultipleLines, 'TabsInMultipleLines', 0, True);
InitSetting(asTabIconsGrayscaleMode, 'TabIconsGrayscaleMode', 2);
InitSetting(asWarnUnsafeUpdates, 'WarnUnsafeUpdates', 0, True); InitSetting(asWarnUnsafeUpdates, 'WarnUnsafeUpdates', 0, True);
InitSetting(asQueryWarningsMessage, 'QueryWarningsMessage', 0, True); InitSetting(asQueryWarningsMessage, 'QueryWarningsMessage', 0, True);
InitSetting(asQueryGridLongSortRowNum, 'QueryGridLongSortRowNum', 10000); InitSetting(asQueryGridLongSortRowNum, 'QueryGridLongSortRowNum', 10000);

View File

@ -422,24 +422,34 @@ class procedure TExtForm.PageControlTabHighlight(PageControl: TPageControl);
var var
i, CurrentImage, CountOriginals: Integer; i, CurrentImage, CountOriginals: Integer;
Images: TVirtualImageList; Images: TVirtualImageList;
GrayscaleMode: Integer;
IsQueryTab, DoGrayscale: Boolean;
begin begin
// Set grayscale icon on inactive tabs // Set grayscale icon on inactive tabs
if not (PageControl.Images is TVirtualImageList) then if not (PageControl.Images is TVirtualImageList) then
Exit; Exit;
GrayscaleMode := AppSettings.ReadInt(asTabIconsGrayscaleMode);
Images := PageControl.Images as TVirtualImageList; Images := PageControl.Images as TVirtualImageList;
CountOriginals := Images.ImageCollection.Count; CountOriginals := Images.ImageCollection.Count;
for i:=0 to PageControl.PageCount-1 do begin for i:=0 to PageControl.PageCount-1 do begin
CurrentImage := PageControl.Pages[i].ImageIndex; CurrentImage := PageControl.Pages[i].ImageIndex;
if PageControl.ActivePageIndex = i then begin if PageControl.ActivePageIndex = i then begin
if CurrentImage >= CountOriginals then if CurrentImage >= CountOriginals then begin
// Grayscaled => Color
PageControl.Pages[i].ImageIndex := CurrentImage - CountOriginals; PageControl.Pages[i].ImageIndex := CurrentImage - CountOriginals;
end;
end end
else begin else begin
if CurrentImage < CountOriginals then if CurrentImage < CountOriginals then begin
// Color => Grayscaled
IsQueryTab := (PageControl.Owner.Name = 'MainForm') and ExecRegExpr('^tabQuery\d*$', PageControl.Pages[i].Name);
if ((GrayscaleMode = 1) and IsQueryTab) or (GrayscaleMode = 2) then
PageControl.Pages[i].ImageIndex := CurrentImage + CountOriginals; PageControl.Pages[i].ImageIndex := CurrentImage + CountOriginals;
end; end;
end; end;
end;
end; end;

View File

@ -4,7 +4,7 @@ object frmPreferences: TfrmPreferences
BorderIcons = [biSystemMenu] BorderIcons = [biSystemMenu]
Caption = 'Preferences' Caption = 'Preferences'
ClientHeight = 482 ClientHeight = 482
ClientWidth = 708 ClientWidth = 712
Color = clBtnFace Color = clBtnFace
Constraints.MinHeight = 480 Constraints.MinHeight = 480
Constraints.MinWidth = 600 Constraints.MinWidth = 600
@ -18,7 +18,7 @@ object frmPreferences: TfrmPreferences
OnCreate = FormCreate OnCreate = FormCreate
OnShow = FormShow OnShow = FormShow
DesignSize = ( DesignSize = (
708 712
482) 482)
TextHeight = 14 TextHeight = 14
object pagecontrolMain: TPageControl object pagecontrolMain: TPageControl
@ -1431,6 +1431,19 @@ object frmPreferences: TfrmPreferences
TabOrder = 3 TabOrder = 3
OnClick = Modified OnClick = Modified
end end
object radioGroupTabIconsGrayscaleMode: TRadioGroup
Left = 220
Top = 100
Width = 457
Height = 101
Caption = 'Grayscale inactive tab icons'
Items.Strings = (
'Color icons on all tabs'
'Grayscale icons on inactive query tabs only'
'Grayscale icons on every inactive tab')
TabOrder = 4
OnClick = Modified
end
end end
end end
object btnCancel: TButton object btnCancel: TButton

View File

@ -189,6 +189,7 @@ type
chkTabCloseOnMiddleClick: TCheckBox; chkTabCloseOnMiddleClick: TCheckBox;
btnRemoveHotKey1: TButton; btnRemoveHotKey1: TButton;
btnRemoveHotKey2: TButton; btnRemoveHotKey2: TButton;
radioGroupTabIconsGrayscaleMode: TRadioGroup;
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
procedure Modified(Sender: TObject); procedure Modified(Sender: TObject);
procedure Apply(Sender: TObject); procedure Apply(Sender: TObject);
@ -441,6 +442,7 @@ begin
AppSettings.WriteBool(asRestoreTabs, chkRestoreTabs.Checked); AppSettings.WriteBool(asRestoreTabs, chkRestoreTabs.Checked);
AppSettings.WriteBool(asTabCloseOnDoubleClick, chkTabCloseOnDoubleClick.Checked); AppSettings.WriteBool(asTabCloseOnDoubleClick, chkTabCloseOnDoubleClick.Checked);
AppSettings.WriteBool(asTabCloseOnMiddleClick, chkTabCloseOnMiddleClick.Checked); AppSettings.WriteBool(asTabCloseOnMiddleClick, chkTabCloseOnMiddleClick.Checked);
AppSettings.WriteInt(asTabIconsGrayscaleMode, radioGroupTabIconsGrayscaleMode.ItemIndex);
// Set relevant properties in mainform // Set relevant properties in mainform
MainForm.ApplyFontToGrids; MainForm.ApplyFontToGrids;
@ -805,6 +807,7 @@ begin
chkRestoreTabs.Checked := AppSettings.ReadBool(asRestoreTabs); chkRestoreTabs.Checked := AppSettings.ReadBool(asRestoreTabs);
chkTabCloseOnDoubleClick.Checked := AppSettings.ReadBool(asTabCloseOnDoubleClick); chkTabCloseOnDoubleClick.Checked := AppSettings.ReadBool(asTabCloseOnDoubleClick);
chkTabCloseOnMiddleClick.Checked := AppSettings.ReadBool(asTabCloseOnMiddleClick); chkTabCloseOnMiddleClick.Checked := AppSettings.ReadBool(asTabCloseOnMiddleClick);
radioGroupTabIconsGrayscaleMode.ItemIndex := AppSettings.ReadInt(asTabIconsGrayscaleMode);
// Disable global shortcuts // Disable global shortcuts
MainForm.ActionList1.State := asSuspended; MainForm.ActionList1.State := asSuspended;