UPD: support dynamic search menu(sidebar finder tags) in Modern Form Style Tool Bar

This commit is contained in:
rich2014 2024-10-31 21:40:21 +08:00
commit d28cd151f6
2 changed files with 56 additions and 59 deletions

View file

@ -216,9 +216,9 @@ begin
Result:= displayName.UTF8String;
end;
function onGetFolderMenu: TMenuItem;
procedure onGetFolderMenu( const menu: TMenu );
var
menu: TMenuItem;
items: TMenuItem;
tag: PtrInt = 0;
procedure newItem( imageName: String );
@ -233,7 +233,7 @@ var
lclItem.Caption:= folderName;
lclItem.onClick:= @toolBarMenuHandler.goToFolder;
lclItem.Tag:= tag;
menu.Add( lclItem );
items.Add( lclItem );
cocoaImage:= NSImage.imageWithSystemSymbolName_accessibilityDescription(
NSSTR(imageName), nil );
@ -244,7 +244,7 @@ var
end;
begin
menu:= TMenuItem.Create( frmMain );
items:= menu.Items;
newItem('doc');
newItem('menubar.dock.rectangle');
newItem('arrow.down.circle');
@ -255,9 +255,8 @@ begin
newItem('wrench.and.screwdriver.fill');
newItem('l.circle');
newItem('a.circle');
menu.AddSeparator;
items.AddSeparator;
newItem('trash');
Result:= menu;
end;
function copyMenuItem( owner: TComponent; source: TMenuItem ): TMenuItem;
@ -267,10 +266,7 @@ begin
Result.Action:= source.Action;
end;
function onGetCommandMenu: TMenuItem;
var
menu: TMenuItem;
procedure onGetCommandMenu( const menu: TMenu );
function toItem( source: TMenuItem ): TMenuItem;
begin
Result:= copyMenuItem( menu, source );
@ -305,45 +301,46 @@ var
Result.OnClick:= @toolBarMenuHandler.showEditTagPanel;
end;
begin
menu:= TMenuItem.Create( frmMain );
menu.Add( toItem(frmMain.miMultiRename) );
menu.Add( toItem(frmMain.mnuFilesCmpCnt) );
menu.Add( toItem(frmMain.mnuCmdSyncDirs) );
menu.AddSeparator;
menu.Add( toItem(frmMain.mnuCmdSearch) );
menu.Add( toItem(frmMain.mnuCmdAddNewSearch) );
menu.Add( toItem(frmMain.mnuCmdViewSearches) );
menu.AddSeparator;
menu.Add( createShowHotlistMenuItem );
menu.Add( toItem(frmMain.mnuCmdConfigDirHotlist) );
menu.AddSeparator;
menu.Add( createShowFavoriteMenuItem );
menu.Add( toItem(frmMain.mnuConfigFavoriteTabs) );
menu.AddSeparator;
menu.Add( createQuickLookMenuItem );
menu.Add( toItem(frmMain.mnuQuickView) );
menu.Add( toItem(frmMain.mnuFilesShwSysFiles) );
menu.Add( toItem(frmMain.mnuShowOperations) );
menu.AddSeparator;
menu.Add( toItem(frmMain.miEditComment) );
menu.Add( createTagMenuItem );
menu.AddSeparator;
menu.Add( toItem(frmMain.mnuFilesSymLink) );
menu.Add( toItem(frmMain.mnuFilesHardLink) );
menu.AddSeparator;
menu.Add( toItem(frmMain.mnuSetFileProperties) );
menu.Add( toItem(frmMain.mnuFilesProperties) );
menu.AddSeparator;
menu.Add( toItem(frmMain.mnuCheckSumCalc) );
menu.Add( toItem(frmMain.mnuCheckSumVerify) );
var
items: TMenuItem;
Result:= menu;
begin
items:= menu.Items;
items.Add( toItem(frmMain.miMultiRename) );
items.Add( toItem(frmMain.mnuFilesCmpCnt) );
items.Add( toItem(frmMain.mnuCmdSyncDirs) );
items.AddSeparator;
items.Add( toItem(frmMain.mnuCmdSearch) );
items.Add( toItem(frmMain.mnuCmdAddNewSearch) );
items.Add( toItem(frmMain.mnuCmdViewSearches) );
items.AddSeparator;
items.Add( createShowHotlistMenuItem );
items.Add( toItem(frmMain.mnuCmdConfigDirHotlist) );
items.AddSeparator;
items.Add( createShowFavoriteMenuItem );
items.Add( toItem(frmMain.mnuConfigFavoriteTabs) );
items.AddSeparator;
items.Add( createQuickLookMenuItem );
items.Add( toItem(frmMain.mnuQuickView) );
items.Add( toItem(frmMain.mnuFilesShwSysFiles) );
items.Add( toItem(frmMain.mnuShowOperations) );
items.AddSeparator;
items.Add( toItem(frmMain.miEditComment) );
items.Add( createTagMenuItem );
items.AddSeparator;
items.Add( toItem(frmMain.mnuFilesSymLink) );
items.Add( toItem(frmMain.mnuFilesHardLink) );
items.AddSeparator;
items.Add( toItem(frmMain.mnuSetFileProperties) );
items.Add( toItem(frmMain.mnuFilesProperties) );
items.AddSeparator;
items.Add( toItem(frmMain.mnuCheckSumCalc) );
items.Add( toItem(frmMain.mnuCheckSumVerify) );
end;
function onGetSearchMenu: TMenuItem;
procedure onGetSearchMenu( const menu: TMenu );
var
menu: TMenuItem;
items: TMenuItem;
procedure createSidebarTagMenuItem;
var
@ -356,7 +353,7 @@ var
menuItem:= TMenuItem.Create( menu );
menuItem.Caption:= tagName.UTF8String;
menuItem.OnClick:= @toolBarMenuHandler.searchOneFinderTagAction;
menu.Add( menuItem );
items.Add( menuItem );
end;
uDarwinFinderUtil.attachSearchForTagsMenu( menu );
end;
@ -368,7 +365,7 @@ var
menuItem:= TMenuItem.Create( menu );
menuItem.Caption:= rsMFSTBISearchCombinedTags;
menuItem.OnClick:= @toolBarMenuHandler.showFinderTagSelectorPanel;
menu.Add( menuItem );
items.Add( menuItem );
end;
procedure createSearchFileMenuItem;
@ -376,17 +373,16 @@ var
menuItem: TMenuItem;
begin
menuItem:= copyMenuItem( menu, frmMain.mnuCmdSearch );
menu.Add( menuItem );
items.Add( menuItem );
end;
begin
menu:= TMenuItem.Create( frmMain );
items:= menu.Items;
createSidebarTagMenuItem;
menu.AddSeparator;
items.AddSeparator;
createCombinedTagMenuItem;
menu.AddSeparator;
items.AddSeparator;
createSearchFileMenuItem;
Result:= menu;
end;
procedure terminalAction( const Sender: id );
@ -608,6 +604,7 @@ const
onAction: nil;
showsIndicator: False;
dynamic: True;
menu: nil;
onGetMenu: @onGetSearchMenu;
);

View file

@ -52,7 +52,7 @@ type
const positioningView: NSView; const edge: NSRectEdge );
class procedure attachFinderTagsMenu( const path: String; const lclMenu: TPopupMenu );
class procedure attachSearchForTagsMenu( const lclMenu: TMenuItem );
class procedure attachSearchForTagsMenu( const lclMenu: TMenu );
private
class procedure drawTagName( const tagName: NSString;
const fontSize: CGFloat; const color: NSColor; const rect: NSRect );
@ -914,7 +914,7 @@ begin
menuView.release;
end;
class procedure uDarwinFinderUtil.attachSearchForTagsMenu(const lclMenu: TMenuItem);
class procedure uDarwinFinderUtil.attachSearchForTagsMenu(const lclMenu: TMenu);
procedure setColorImage( const lclMenuItem: TMenuItem );
var
cocoaItem: NSMenuItem;
@ -931,9 +931,9 @@ var
i: Integer;
count: Integer;
begin
count:= lclMenu.Count;
count:= lclMenu.Items.Count;
for i:=0 to count-1 do begin
setColorImage( lclMenu[i] );
setColorImage( lclMenu.Items[i] );
end;
end;