mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
ADD: actions to the Slide Modern ToolBar Items in ViewerForm on macOS 11+
This commit is contained in:
parent
e4931b1235
commit
ae48e071ca
3 changed files with 84 additions and 5 deletions
|
|
@ -657,7 +657,7 @@ object frmViewer: TfrmViewer
|
|||
ShowCaption = False
|
||||
end
|
||||
object btnSlideShow: TToolButton
|
||||
Tag = 1
|
||||
Tag = 3
|
||||
Left = 232
|
||||
Top = 66
|
||||
AutoSize = True
|
||||
|
|
|
|||
|
|
@ -294,6 +294,7 @@ type
|
|||
procedure btnPrevGifFrameClick(Sender: TObject);
|
||||
procedure btnRedEyeClick(Sender: TObject);
|
||||
procedure btnResizeClick(Sender: TObject);
|
||||
procedure btnSlideShowSetState(const state: Boolean);
|
||||
procedure btnSlideShowClick(Sender: TObject);
|
||||
procedure DrawPreviewSelection(Sender: TObject; aCol, aRow: Integer);
|
||||
procedure DrawPreviewTopleftChanged(Sender: TObject);
|
||||
|
|
@ -545,6 +546,8 @@ type
|
|||
const states: TViewerGifStates ); virtual;
|
||||
procedure onImageEditStateChanged(
|
||||
const viewer: TfrmViewer ); virtual;
|
||||
procedure onSlideStateChanged(
|
||||
const viewer: TfrmViewer ); virtual;
|
||||
end;
|
||||
|
||||
procedure ShowViewer(const FilesToView: TStringList; WaitData: TWaitData = nil); overload;
|
||||
|
|
@ -2212,7 +2215,7 @@ begin
|
|||
end;
|
||||
end;
|
||||
Inc(i_timer);
|
||||
if (btnSlideShow.Down) and (i_timer = 60 * btnSlideShow.Tag) then
|
||||
if (btnSlideShow.Down) and (i_timer >= 60 * btnSlideShow.Tag) then
|
||||
begin
|
||||
if (ToolBar1.Visible) and (not ToolBar1.MouseInClient) then
|
||||
begin
|
||||
|
|
@ -2649,9 +2652,15 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmViewer.btnSlideShowSetState(const state: Boolean);
|
||||
begin
|
||||
btnSlideShow.Down:= state;
|
||||
viewerFormHandler.onSlideStateChanged( self );
|
||||
end;
|
||||
|
||||
procedure TfrmViewer.btnSlideShowClick(Sender: TObject);
|
||||
begin
|
||||
btnSlideShow.Down:= not btnSlideShow.Down;
|
||||
btnSlideShowSetState( not btnSlideShow.Down );
|
||||
end;
|
||||
|
||||
procedure TfrmViewer.FormDestroy(Sender: TObject);
|
||||
|
|
@ -4272,6 +4281,10 @@ procedure TViewerFormHandler.onImageEditStateChanged(
|
|||
begin
|
||||
end;
|
||||
|
||||
procedure TViewerFormHandler.onSlideStateChanged( const viewer: TfrmViewer );
|
||||
begin
|
||||
end;
|
||||
|
||||
initialization
|
||||
viewerFormHandler:= TViewerFormHandler.Create;
|
||||
TFormCommands.RegisterCommandsForm(TfrmViewer, HotkeysCategory, @rsHotkeyCategoryViewer);
|
||||
|
|
|
|||
|
|
@ -42,8 +42,11 @@ type
|
|||
const states: TViewerGifStates ); override;
|
||||
procedure onImageEditStateChanged(
|
||||
const viewer: TfrmViewer ); override;
|
||||
procedure onSlideStateChanged(
|
||||
const viewer: TfrmViewer ); override;
|
||||
|
||||
procedure onPenWidthChanged( Sender: TObject );
|
||||
procedure onSlideStart( Sender: TObject );
|
||||
end;
|
||||
|
||||
function getCurrentViewerForm: TfrmViewer;
|
||||
|
|
@ -302,6 +305,15 @@ begin
|
|||
form.btnResizeClick( nil );
|
||||
end;
|
||||
|
||||
procedure viewerSlideAction( const Sender: id );
|
||||
var
|
||||
form: TfrmViewer;
|
||||
begin
|
||||
form:= getCurrentViewerForm;
|
||||
if Assigned(form) then
|
||||
form.btnSlideShowClick( nil );
|
||||
end;
|
||||
|
||||
procedure onViewerGetPenWidthMenu( const menu: TMenu );
|
||||
var
|
||||
i: Integer;
|
||||
|
|
@ -316,6 +328,20 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
procedure onViewerGetSlideMenu( const menu: TMenu );
|
||||
var
|
||||
i: Integer;
|
||||
item: TMenuItem;
|
||||
begin
|
||||
for i:= 1 to 25 do begin
|
||||
item:= TMenuItem.Create( menu );
|
||||
item.Caption:= i.ToString;
|
||||
item.Tag:= i;
|
||||
item.OnClick:= @TCocoaViewerFormHandler(viewerFormHandler).onSlideStart;
|
||||
menu.Items.Add( item );
|
||||
end;
|
||||
end;
|
||||
|
||||
const
|
||||
viewerReloadItemConfig: TCocoaConfigToolBarItem = (
|
||||
identifier: 'ViewerForm.Reload';
|
||||
|
|
@ -617,7 +643,7 @@ const
|
|||
onAction: @viewerResizeAction;
|
||||
);
|
||||
|
||||
viewerSlideItemConfig: TCocoaConfigToolBarItem = (
|
||||
viewerSlideItemConfig: TCocoaConfigToolBarItemMenu = (
|
||||
identifier: 'ViewerForm.Slide';
|
||||
priority: NSToolbarItemVisibilityPriorityStandard;
|
||||
navigational: False;
|
||||
|
|
@ -625,7 +651,11 @@ const
|
|||
title: 'Slide Show';
|
||||
tips: 'Slide Show';
|
||||
bordered: True;
|
||||
onAction: nil;
|
||||
onAction: @viewerSlideAction;
|
||||
|
||||
showsIndicator: True;
|
||||
menu: nil;
|
||||
onGetMenu: @onViewerGetSlideMenu;
|
||||
);
|
||||
|
||||
viewerFormConfig: TCocoaConfigForm = (
|
||||
|
|
@ -860,6 +890,28 @@ begin
|
|||
updatePaintState;
|
||||
end;
|
||||
|
||||
procedure TCocoaViewerFormHandler.onSlideStateChanged(const viewer: TfrmViewer);
|
||||
var
|
||||
form: TfrmViewer;
|
||||
item: NSToolBarItem;
|
||||
imageName: String;
|
||||
image: NSImage;
|
||||
begin
|
||||
form:= getCurrentViewerForm;
|
||||
if Assigned(form) then begin
|
||||
if form.btnSlideShow.Down then
|
||||
imageName:= 'pause'
|
||||
else
|
||||
imageName:= 'play';
|
||||
image:= NSImage.imageWithSystemSymbolName_accessibilityDescription(
|
||||
StringToNSString(imageName), nil );
|
||||
item:= TCocoaToolBarUtils.findItemByIdentifier( form, 'ViewerForm.Slide' );
|
||||
item.setImage( image );
|
||||
|
||||
form.TimerViewer.Enabled:= form.btnSlideShow.Down;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCocoaViewerFormHandler.onPenWidthChanged( Sender: TObject );
|
||||
var
|
||||
toolBarMenuItem: TMenuItem absolute Sender;
|
||||
|
|
@ -873,3 +925,17 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
procedure TCocoaViewerFormHandler.onSlideStart( Sender: TObject );
|
||||
var
|
||||
toolBarMenuItem: TMenuItem absolute Sender;
|
||||
viewerMenuItem: TMenuItem;
|
||||
form: TfrmViewer;
|
||||
begin
|
||||
form:= getCurrentViewerForm;
|
||||
if Assigned(form) then begin
|
||||
viewerMenuItem:= form.pmTimeShow.Items[toolBarMenuItem.Tag-1];
|
||||
form.miPaintClick( viewerMenuItem );
|
||||
form.btnSlideShowSetState( True );
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue