(* ImageEn Build 7.0.0.06.2637 @ 7-4-17 14:58:42.679 *) (* Copyright (c) 1998-2017 by Carlotta Calandra. All rights reserved. Copyright (c) 2011-2017 by Xequte Software. This software comes without express or implied warranty. In no case shall the author be liable for any damage or unwanted behavior of any computer hardware and/or software. Author grants you the right to include the component in your application, whether COMMERCIAL, SHAREWARE, or FREEWARE. ImageEn, IEvolution and ImageEn ActiveX may not be included in any commercial, shareware or freeware libraries or components. www.ImageEn.com *) (* File: iexActionsFolder.pas Description: TActions for common TImageEnFolderMView functions File version: 1002 *) unit iexActionsFolder; {$I ie.inc} {$IFDEF IEINCLUDEACTIONS} {$DEFINE INCLUDE_MULTIVIEWACTIONS} {$ENDIF} {$IFDEF IEINCLUDEMULTIVIEW} {$DEFINE INCLUDE_MULTIVIEWACTIONS} {$ELSE} {$UNDEF INCLUDE_MULTIVIEWACTIONS} {$ENDIF} {$IFDEF INCLUDE_MULTIVIEWACTIONS} interface Uses {$ifdef IEHASUITYPES} System.UITypes, {$endif} ActnList, Classes, ieMIO, imageenproc, hyiedefs, iemview, iexFolderMView, imageenio; Type TIEFolderMViewAction = class(TAction) private protected function ActiveIEFolderMView : TImageEnFolderMView; function HaveActiveIEFolderMView : boolean; function HaveSelection : boolean; public fIEFolderMView : TImageEnFolderMView; fRequireSelection : Boolean; fRequireImages : Boolean; constructor Create(AOwner: TComponent); override; function HandlesTarget(Target: TObject): Boolean; Override; procedure UpdateTarget(Target: TObject); override; function BaseEnabled : Boolean; published property ImageEnFolderMView: TImageEnFolderMView read fIEFolderMView write fIEFolderMView; end; TIEFolderMViewPromptForFolder = class(TIEFolderMViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIEFolderMViewCreateNewFolder = class(TIEFolderMViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIEFolderMViewRefreshFileList = class(TIEFolderMViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIEFolderMViewExecuteSelectedFile = class(TIEFolderMViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIEFolderMViewOpenParentFolder = class(TIEFolderMViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIEFolderMViewMoveSelectedFilesToFolder = class(TIEFolderMViewAction, IIELanguageUpdatable) private fLastMoveDirectory : string; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIEFolderMViewCopySelectedFilesToFolder = class(TIEFolderMViewAction, IIELanguageUpdatable) private fLastCopyDirectory : string; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIEFolderMViewDeleteSelectedFilesFromFolder = class(TIEFolderMViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIEFolderMViewCopySelectedFilesToClipboard = class(TIEFolderMViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIEFolderMViewCutSelectedFilesToClipboard = class(TIEFolderMViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIEFolderMViewPasteFilesFromClipboard = class(TIEFolderMViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIEFolderMViewRenameSelectedFile = class(TIEFolderMViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIEFolderMViewIncludeSubFolders = class(TIEFolderMViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; implementation uses Forms, SysUtils, iewords, iesettings, iexWindowsFunctions, dialogs, hyieutils; const CTRL_C_SHORTCUT = 16451; CTRL_V_SHORTCUT = 16470; CTRL_X_SHORTCUT = 16472; CTRL_DELETE_SHORTCUT = 16430; F5_SHORTCUT = 116 ; F2_ShortCut = 113 ; constructor TIEFolderMViewAction.Create(AOwner: TComponent); begin inherited Create(AOwner); fRequireImages := True; fRequireSelection := True; Caption := 'ImageEn Action'; DisableIfNoHandler := false; end; function TIEFolderMViewAction.HandlesTarget(Target: TObject): Boolean; begin Result := True; end; function TIEFolderMViewAction.HaveActiveIEFolderMView: boolean; begin Result := ActiveIEFolderMView <> nil; end; function TIEFolderMViewAction.HaveSelection: boolean; begin Result := HaveActiveIEFolderMView and (ActiveIEFolderMView.SelectedFilename <> ''); end; function TIEFolderMViewAction.BaseEnabled : boolean; begin Result := HaveActiveIEFolderMView and (ActiveIEFolderMView.Folder <> ''); if Result and fRequireImages then begin Result := ActiveIEFolderMView.ImageCount > 0; // fRequireSelection assumes fRequireImages if Result and fRequireSelection then Result := HaveSelection; end; end; procedure TIEFolderMViewAction.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled; end; // Return the speciifed or selected ImageEnMView function TIEFolderMViewAction.ActiveIEFolderMView: TImageEnFolderMView; begin Result := fIEFolderMView; if (Result = nil) and Assigned(Screen.ActiveControl) and (Screen.ActiveControl is TImageEnFolderMView) then Result := TImageEnFolderMView(Screen.ActiveControl); end; { TIEFolderMViewRefreshFileList } constructor TIEFolderMViewRefreshFileList.Create(AOwner: TComponent); begin inherited; fRequireImages := False; Shortcut := F5_SHORTCUT; ImageIndex := 99; UpdateLanguage(); end; procedure TIEFolderMViewRefreshFileList.UpdateLanguage(); begin Caption := iemsg(IEMsg_Refresh); Hint := iemsg(IEMsg_RefreshTheFileListing); end; procedure TIEFolderMViewRefreshFileList.ExecuteTarget(Target: TObject); begin if HaveActiveIEFolderMView then ActiveIEFolderMView.RefreshFileList; end; { TIEFolderMViewExecuteSelectedFile } constructor TIEFolderMViewExecuteSelectedFile.Create(AOwner: TComponent); begin inherited; ImageIndex := 100; UpdateLanguage(); end; procedure TIEFolderMViewExecuteSelectedFile.UpdateLanguage(); begin Caption := iemsg(IEMsg_OpenFile); Hint := iemsg(IEMsg_OpenTheSelectedFileInTheDefaultViewer); end; procedure TIEFolderMViewExecuteSelectedFile.ExecuteTarget(Target: TObject); begin if HaveActiveIEFolderMView then ActiveIEFolderMView.ExecuteFile(IEF_CURRENT_FILE); end; { TIEFolderMViewMoveSelectedFilesToFolder } constructor TIEFolderMViewMoveSelectedFilesToFolder.Create(AOwner: TComponent); begin inherited; ImageIndex := 102; UpdateLanguage(); end; procedure TIEFolderMViewMoveSelectedFilesToFolder.UpdateLanguage(); begin Caption := iemsg(IEMsg_MoveFiles) + Menu_Ellipses; Hint := iemsg(IEMsg_MoveTheSelectedFilesToANewFolder); end; procedure TIEFolderMViewMoveSelectedFilesToFolder.ExecuteTarget(Target: TObject); begin if HaveActiveIEFolderMView = False then exit; if fLastMoveDirectory = '' then fLastMoveDirectory := ActiveIEFolderMView.Folder; if WindowsSelectDirectory(iemsg(IEMsg_WhereDoYouWantToMoveTheseFiles), fLastMoveDirectory, ActiveIEFolderMView) then ActiveIEFolderMView.MoveSelectedFilesToFolder(fLastMoveDirectory); end; { TIEFolderMViewOpenParentFolder } constructor TIEFolderMViewOpenParentFolder.Create(AOwner: TComponent); begin inherited; fRequireImages := False; ImageIndex := 101; UpdateLanguage(); end; procedure TIEFolderMViewOpenParentFolder.UpdateLanguage(); begin Caption := iemsg(IEMsg_GoUp); Hint := iemsg(IEMsg_OpenTheParentOfTheCurrentFolder); end; procedure TIEFolderMViewOpenParentFolder.ExecuteTarget(Target: TObject); begin if HaveActiveIEFolderMView then ActiveIEFolderMView.OpenParentFolder; end; procedure TIEFolderMViewOpenParentFolder.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled then bEnabled := ActiveIEFolderMView.CanOpenParentFolder; Enabled := bEnabled; end; { TIEFolderMViewCopySelectedFilesToFolder } constructor TIEFolderMViewCopySelectedFilesToFolder.Create(AOwner: TComponent); begin inherited; ImageIndex := 103; UpdateLanguage(); end; procedure TIEFolderMViewCopySelectedFilesToFolder.UpdateLanguage(); begin Caption := iemsg(IEMsg_CopyFiles) + Menu_Ellipses; Hint := iemsg(IEMsg_CopyTheSelectedFilesToANewFolder); end; procedure TIEFolderMViewCopySelectedFilesToFolder.ExecuteTarget(Target: TObject); begin if HaveActiveIEFolderMView = False then exit; if fLastCopyDirectory = '' then fLastCopyDirectory := ActiveIEFolderMView.Folder; if WindowsSelectDirectory(iemsg(IEMsg_WhereDoYouWantToCopyTheseFiles), fLastCopyDirectory, ActiveIEFolderMView) then ActiveIEFolderMView.CopySelectedFilesToFolder(fLastCopyDirectory); end; { TIEFolderMViewDeleteSelectedFilesFromFolder } constructor TIEFolderMViewDeleteSelectedFilesFromFolder.Create(AOwner: TComponent); begin inherited; ImageIndex := 104; Shortcut := CTRL_DELETE_SHORTCUT; UpdateLanguage(); end; procedure TIEFolderMViewDeleteSelectedFilesFromFolder.UpdateLanguage(); begin Caption := iemsg(IEMsg_DeleteFiles); Hint := iemsg(IEMsg_DeleteTheSelectedFilesFromTheFolder); end; procedure TIEFolderMViewDeleteSelectedFilesFromFolder.ExecuteTarget(Target: TObject); begin if HaveActiveIEFolderMView then ActiveIEFolderMView.DeleteSelectedFilesFromFolder; end; { TIEFolderMViewCopySelectedFilesToClipboard } constructor TIEFolderMViewCopySelectedFilesToClipboard.Create(AOwner: TComponent); begin inherited; ImageIndex := 105; Shortcut := Ctrl_C_SHORTCUT; UpdateLanguage(); end; procedure TIEFolderMViewCopySelectedFilesToClipboard.UpdateLanguage(); begin Caption := iemsg(IEMsg_CopyFilesToClipboard); Hint := iemsg(IEMsg_CopyTheSelectedFilesToTheClipboard); end; procedure TIEFolderMViewCopySelectedFilesToClipboard.ExecuteTarget(Target: TObject); begin try if HaveActiveIEFolderMView then ActiveIEFolderMView.CopySelectedFilesToClipboard; except MessageDlg('Unable to copy your selection to the clipboard.', mtError, [mbOK], 0); end; end; { TIEFolderMViewCutSelectedFilesToClipboard } constructor TIEFolderMViewCutSelectedFilesToClipboard.Create(AOwner: TComponent); begin inherited; ImageIndex := 105; Shortcut := Ctrl_X_SHORTCUT; UpdateLanguage(); end; procedure TIEFolderMViewCutSelectedFilesToClipboard.UpdateLanguage(); begin Caption := iemsg(IEMsg_CutFilesToClipboard); Hint := iemsg(IEMsg_CutTheSelectedFilesToTheClipboard); end; procedure TIEFolderMViewCutSelectedFilesToClipboard.ExecuteTarget(Target: TObject); begin try if HaveActiveIEFolderMView then ActiveIEFolderMView.CutSelectedFilesToClipboard; except MessageDlg('Unable to cut your selection to the clipboard.', mtError, [mbOK], 0); end; end; { TIEFolderMViewPasteFilesFromClipboard } constructor TIEFolderMViewPasteFilesFromClipboard.Create(AOwner: TComponent); begin inherited; fRequireImages := False; ImageIndex := 106; Shortcut := Ctrl_V_SHORTCUT; UpdateLanguage(); end; procedure TIEFolderMViewPasteFilesFromClipboard.UpdateLanguage(); begin Caption := iemsg(IEMsg_PasteFilesFromClipboard); Hint := iemsg(IEMsg_PasteFilesFromTheClipboardToThisFolder); end; procedure TIEFolderMViewPasteFilesFromClipboard.ExecuteTarget(Target: TObject); begin if HaveActiveIEFolderMView then ActiveIEFolderMView.PasteFilesFromClipboard; end; procedure TIEFolderMViewPasteFilesFromClipboard.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled then bEnabled := ActiveIEFolderMView.CanPasteFilesFromClipboard; Enabled := bEnabled; end; { TIEFolderMViewRenameSelectedFile } constructor TIEFolderMViewRenameSelectedFile.Create(AOwner: TComponent); begin inherited; ImageIndex := 107; UpdateLanguage(); end; procedure TIEFolderMViewRenameSelectedFile.UpdateLanguage(); begin Caption := iemsg(IEMsg_RenameFile) + '...'; Hint := iemsg(IEMsg_SpecifyANewNameForTheSelectedFile); end; procedure TIEFolderMViewRenameSelectedFile.ExecuteTarget(Target: TObject); var sNewName: string; begin if HaveActiveIEFolderMView = False then exit; sNewName := InputBox(iemsg(IEMsg_RenameFile), Format(iemsg(IEMsg_SpecifyANewNameForX), [ExtractFilename(ActiveIEFolderMView.SelectedFilename)]), ''); sNewName := Trim(sNewName); if sNewName = '' then exit; if ExtractFileExt(sNewName) = '' then sNewName := sNewName + ExtractFileExt(ActiveIEFolderMView.SelectedFilename); ActiveIEFolderMView.RenameFile(IEF_CURRENT_FILE, sNewName); end; { TIEFolderMViewPromptForFolder } constructor TIEFolderMViewPromptForFolder.Create(AOwner: TComponent); begin inherited; ImageIndex := 108; UpdateLanguage(); end; procedure TIEFolderMViewPromptForFolder.UpdateLanguage(); begin Caption := iemsg(IEMsg_SelectFolder) + Menu_Ellipses; Hint := iemsg(IEMsg_SelectAFolderToOpen); end; procedure TIEFolderMViewPromptForFolder.ExecuteTarget(Target: TObject); begin if HaveActiveIEFolderMView then ActiveIEFolderMView.PromptForFolder; end; procedure TIEFolderMViewPromptForFolder.UpdateTarget(Target: TObject); begin Enabled := HaveActiveIEFolderMView; end; { TIEFolderMViewCreateNewFolder } constructor TIEFolderMViewCreateNewFolder.Create(AOwner: TComponent); begin inherited; fRequireImages := False; ImageIndex := 109; UpdateLanguage(); end; procedure TIEFolderMViewCreateNewFolder.UpdateLanguage(); begin Caption := iemsg(IEMSG_CreateFolder) + '...'; Hint := iemsg(IEMSG_CreateANewFolderAtTheCurrentLocation); end; procedure TIEFolderMViewCreateNewFolder.ExecuteTarget(Target: TObject); var sNewName: string; begin if (HaveActiveIEFolderMView = False) or (ActiveIEFolderMView.Folder = '') then exit; sNewName := InputBox(iemsg(IEMSG_CreateFolder), iemsg(IEMsg_SpecifyTheNameOfYourNewFolder), ''); sNewName := Trim(sNewName); if sNewName = '' then exit; ActiveIEFolderMView.CreateNewFolder(sNewName); end; { TIEFolderMViewIncludeSubFolders } constructor TIEFolderMViewIncludeSubFolders.Create(AOwner: TComponent); begin inherited; fRequireImages := False; ImageIndex := 137; UpdateLanguage(); end; procedure TIEFolderMViewIncludeSubFolders.UpdateLanguage(); begin Caption := iemsg(IEMsg_IncludeSubFolders); Hint := iemsg(IEMsg_AlsoDisplayFilesFoundInSubfoldersOfThisFolder); end; procedure TIEFolderMViewIncludeSubFolders.ExecuteTarget(Target: TObject); begin if HaveActiveIEFolderMView then ActiveIEFolderMView.IncludeSubFolders := not ActiveIEFolderMView.IncludeSubFolders; end; procedure TIEFolderMViewIncludeSubFolders.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled; if HaveActiveIEFolderMView then Checked := ActiveIEFolderMView.IncludeSubFolders else Checked := False; end; {$ELSE} // {$IFDEF INCLUDE_MULTIVIEWACTIONS} interface implementation {$ENDIF} {!! TImageEnFolderMView Actions When using a you can use both the TImageEnFolderMView specific actions which follow, as well as all the actions of TImageEnMView to rapidly develop your UI. To use actions: 1. Add a TActionList component to your form 2. Double-click your TActionList to open it 3. Select "New Standard Action" 4. Scroll down to the ImageEnMView actions, select the ones you require and click OK 5. Select your actions and set the IEFolderMView property to your component 6. Assign the actions to menu items and buttons Demo Demos\Other\Actions_Folder\FolderMViewActions.dpr Notes: - You must set the ImageEnFolderMView property of the actions - You can set to localize the actions - See the list of the default ImageIndexes if you are planning to add graphics to your actions Folder Actions Action Name Description Associated Method Extra Properties TIEFolderMViewPromptForFolder Select Folder Select a folder to open - TIEFolderMViewOpenParentFolder Go Up Open the parent of the current folder - TIEFolderMViewRefreshFileList Refresh Refresh the file listing - TIEFolderMViewCreateNewFolder Create Folder Create a new folder at the current location - TIEFolderMViewExecuteSelectedFile Open File Open the selected file in the default viewer - TIEFolderMViewIncludeSubFolders Include Subfolders Also display files found in subfolders of this folder - TIEFolderMViewMoveSelectedFilesToFolder Move Files Move the selected files to a new folder - TIEFolderMViewCopySelectedFilesToFolder Copy Files Copy the selected files to a new folder - TIEFolderMViewDeleteSelectedFilesFromFolder Delete Files Delete the selected files from the folder - TIEFolderMViewCopySelectedFilesToClipboard Copy Files to Clipboard Copy the selected files to the clipboard - TIEFolderMViewPasteFilesFromClipboard Paste Files from Clipboard Paste files from the clipboard to this folder - TIEFolderMViewRenameSelectedFile Rename File Specify a new name for the selected file - TIEFolderMViewPromptForFolder Select Folder Select a folder to open - TIEFolderMViewCreateNewFolder Create Folder Create a new folder at the current location -
!!} end.