feat: add "Display" main menu, move some spread items there, and add two items for toggling log panel and tree filters

Refs #1891
This commit is contained in:
Ansgar Becker
2026-02-22 16:58:34 +01:00
parent 0ccb1acf35
commit c0fbcff3ef
4 changed files with 113 additions and 29 deletions

View File

@@ -234,7 +234,7 @@ type
asCreateDbCollation, asRealTrailingZeros,
asSequalSuggestWindowWidth, asSequalSuggestWindowHeight, asSequalSuggestPrompt, asSequalSuggestRecentPrompts,
asReformatter, asReformatterNoDialog, asAlwaysGenerateFilter,
asGenerateDataNumRows, asGenerateDataNullAmount, asWebOnceAction,
asGenerateDataNumRows, asGenerateDataNullAmount, asWebOnceAction, asDisplayLogPanel, asDisplayTreeFilters,
asUnused);
TAppSetting = record
Name: String;
@@ -3840,6 +3840,8 @@ begin
InitSetting(asRowBackgroundOdd, 'RowBackgroundOdd', clNone);
InitSetting(asGroupTreeObjects, 'GroupTreeObjects', 0, False);
InitSetting(asDisplayObjectSizeColumn, 'DisplayObjectSizeColumn', 0, True);
InitSetting(asDisplayLogPanel, 'DisplayLogPanel', 0, True);
InitSetting(asDisplayTreeFilters, 'DisplayTreeFilters', 0, True);
InitSetting(asActionShortcut1, 'Shortcut1_%s', 0);
InitSetting(asActionShortcut2, 'Shortcut2_%s', 0);
InitSetting(asHighlighterForeground, 'SQL Attr %s Foreground', 0);

View File

@@ -3677,10 +3677,35 @@ object MainForm: TMainForm
object Inverseselection1: TMenuItem
Action = actSelectInverse
end
object actFindInVT1: TMenuItem
end
object MainMenuDisplay: TMenuItem
Caption = 'Display'
object menuDisplaysizeofobjects1: TMenuItem
Action = actDisplayObjectSize
AutoCheck = True
end
object menuShowonlyfavorites1: TMenuItem
Action = actFavoriteObjectsOnly
AutoCheck = True
end
object menuFilterpanel1: TMenuItem
Action = actFilterPanel
AutoCheck = True
end
object menuDisplayLogPanel1: TMenuItem
Action = actDisplayLogPanel
AutoCheck = True
end
object menuTreefilters1: TMenuItem
Action = actDisplayTreeFilters
AutoCheck = True
end
object Separator1: TMenuItem
Caption = '-'
end
object menuResetpaneldimensions1: TMenuItem
Action = actResetPanelDimensions
end
end
object MainMenuSearch: TMenuItem
Caption = 'Search'
@@ -3847,9 +3872,6 @@ object MainForm: TMainForm
object N4: TMenuItem
Caption = '-'
end
object Resetpaneldimensions1: TMenuItem
Action = actResetPanelDimensions
end
object menuColorScheme: TMenuItem
Caption = 'Color scheme'
ImageIndex = 115
@@ -4553,7 +4575,6 @@ object MainForm: TMainForm
AutoCheck = True
Caption = 'Filter panel'
Hint = 'Activates the filter panel'
ImageIndex = 30
ShortCut = 49222
OnExecute = actFilterPanelExecute
end
@@ -5066,6 +5087,24 @@ object MainForm: TMainForm
Caption = 'SQL editor preferences'
DisableIfNoHandler = False
end
object actDisplayObjectSize: TAction
Category = 'Various'
AutoCheck = True
Caption = 'Display size of objects'
OnExecute = actDisplayObjectSizeExecute
end
object actDisplayLogPanel: TAction
Category = 'Various'
AutoCheck = True
Caption = 'Log panel'
OnExecute = actDisplayLogPanelExecute
end
object actDisplayTreeFilters: TAction
Category = 'Various'
AutoCheck = True
Caption = 'Tree filters'
OnExecute = actDisplayTreeFiltersExecute
end
end
object ImageListMain: TImageList
Scaled = True
@@ -20475,9 +20514,8 @@ object MainForm: TMainForm
AutoCheck = True
end
object menuShowSizeColumn: TMenuItem
Action = actDisplayObjectSize
AutoCheck = True
Caption = 'Display size of objects'
OnClick = menuShowSizeColumnClick
end
object menuAutoExpand: TMenuItem
Caption = 'Auto expand on click'

View File

@@ -524,7 +524,6 @@ type
pnlRight: TPanel;
btnCloseFilterPanel: TSpeedButton;
actFilterPanel: TAction;
actFindInVT1: TMenuItem;
TimerFilterVT: TTimer;
actFindTextOnServer: TAction;
actFindTextOnServer1: TMenuItem;
@@ -806,7 +805,6 @@ type
btnDonate: TToolButton;
ToolButton2: TToolButton;
actResetPanelDimensions: TAction;
Resetpaneldimensions1: TMenuItem;
popupApplyFilter: TPopupMenu;
menuAlwaysGenerateFilter: TMenuItem;
actGenerateData: TAction;
@@ -816,6 +814,17 @@ type
actCopyGridNodes1: TMenuItem;
actQueryTable: TAction;
Selecttop1000rows1: TMenuItem;
MainMenuDisplay: TMenuItem;
actDisplayObjectSize: TAction;
menuDisplaysizeofobjects1: TMenuItem;
menuShowonlyfavorites1: TMenuItem;
menuFilterpanel1: TMenuItem;
menuResetpaneldimensions1: TMenuItem;
actDisplayLogPanel: TAction;
actDisplayTreeFilters: TAction;
menuDisplayLogPanel1: TMenuItem;
menuTreefilters1: TMenuItem;
Separator1: TMenuItem;
procedure actCreateDBObjectExecute(Sender: TObject);
procedure actNextTabExecute(Sender: TObject);
procedure actPreviousTabExecute(Sender: TObject);
@@ -981,7 +990,7 @@ type
procedure AnyGridAfterCellPaint(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
CellRect: TRect);
procedure menuShowSizeColumnClick(Sender: TObject);
procedure actDisplayObjectSizeExecute(Sender: TObject);
procedure AnyGridBeforeCellPaint(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect);
@@ -1217,6 +1226,8 @@ type
procedure actCopyGridNodesExecute(Sender: TObject);
procedure ApplicationException(Sender: TObject; E: Exception);
procedure actQueryTableExecute(Sender: TObject);
procedure actDisplayLogPanelExecute(Sender: TObject);
procedure actDisplayTreeFiltersExecute(Sender: TObject);
private
// Executable file details
FAppVerMajor: Integer;
@@ -1993,10 +2004,14 @@ begin
DataGridTable := nil;
FActiveDbObj := nil;
// Database tree options
// Display options, and database tree options
actGroupObjects.Checked := AppSettings.ReadBool(asGroupTreeObjects);
if AppSettings.ReadBool(asDisplayObjectSizeColumn) then
menuShowSizeColumn.Click;
actDisplayObjectSize.Checked := AppSettings.ReadBool(asDisplayObjectSizeColumn);
actDisplayObjectSizeExecute(nil);
actDisplayLogPanel.Checked := AppSettings.ReadBool(asDisplayLogPanel);
actDisplayLogPanelExecute(nil);
actDisplayTreeFilters.Checked := AppSettings.ReadBool(asDisplayTreeFilters);
actDisplayTreeFiltersExecute(nil);
if AppSettings.ReadBool(asAutoExpand) then
menuAutoExpand.Click;
if AppSettings.ReadBool(asDoubleClickInsertsNodeText) then
@@ -10883,20 +10898,43 @@ begin
end;
procedure TMainForm.menuShowSizeColumnClick(Sender: TObject);
var
Item: TMenuItem;
procedure TMainForm.actDisplayLogPanelExecute(Sender: TObject);
begin
if coVisible in DBtree.Header.Columns[1].Options then
DBtree.Header.Columns[1].Options := DBtree.Header.Columns[1].Options - [coVisible]
else
DBtree.Header.Columns[1].Options := DBtree.Header.Columns[1].Options + [coVisible];
Item := Sender as TMenuItem;
Item.Checked := coVisible in DBtree.Header.Columns[1].Options;
if actDisplayLogPanel.Checked then begin
SynMemoSQLLog.Visible := True;
spltTopBottom.Visible := True;
// ensure z-order: top panel, splitter, memo
spltTopBottom.BringToFront;
SynMemoSQLLog.BringToFront;
end
else begin
spltTopBottom.Visible := False;
SynMemoSQLLog.Visible := False;
end;
AppSettings.ResetPath;
AppSettings.WriteBool(asDisplayObjectSizeColumn, Item.Checked);
AppSettings.WriteBool(asDisplayLogPanel, actDisplayLogPanel.Checked);
end;
procedure TMainForm.actDisplayObjectSizeExecute(Sender: TObject);
var
ColOptions: TVTColumnOptions;
begin
ColOptions := DBtree.Header.Columns[1].Options;
if actDisplayObjectSize.Checked then
ColOptions := ColOptions + [coVisible]
else
ColOptions := ColOptions - [coVisible];
DBtree.Header.Columns[1].Options := ColOptions;
AppSettings.ResetPath;
AppSettings.WriteBool(asDisplayObjectSizeColumn, actDisplayObjectSize.Checked);
end;
procedure TMainForm.actDisplayTreeFiltersExecute(Sender: TObject);
begin
ToolBarTree.Visible := actDisplayTreeFilters.Checked;
AppSettings.ResetPath;
AppSettings.WriteBool(asDisplayTreeFilters, actDisplayTreeFilters.Checked);
end;
procedure TMainForm.menuAlwaysGenerateFilterClick(Sender: TObject);
begin
@@ -12540,10 +12578,7 @@ begin
// Click on "tree favorites" main button
// Note: a TSpeedButton connected to an auto-checked TAction needs AllowAllUp + GroupIndex>0
editDatabaseTableFilterChange(Sender);
if actFavoriteObjectsOnly.Checked then
actFavoriteObjectsOnly.ImageIndex := 112
else
actFavoriteObjectsOnly.ImageIndex := 113;
actFavoriteObjectsOnly.ImageIndex := IfThen(actFavoriteObjectsOnly.Checked, 112, 113);
end;