unit Main; interface uses Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus, StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, ToolWin, ImageEnProc, ImageEnIO, hyiedefs, IEOpenSaveDlg, ActnList, ieview, iexActionsMulti, iemview, ImgList, StdActns, iexFolderMView, iexActionsFolder, ieSettings, hyieutils, iexBitmaps, iexLayers, iexRulers; type TMainForm = class(TForm) MainMenu1: TMainMenu; StatusBar: TStatusBar; ActionList1: TActionList; IEFolderMView1: TImageEnFolderMView; mnuView: TMenuItem; mnuEdit: TMenuItem; DeSelect: TImageEnMViewDeSelect; Delect1: TMenuItem; FlipHorizontal: TImageEnMViewFlipHorizontal; FlipVertical: TImageEnMViewFlipVertical; Rotate180: TImageEnMViewRotate180; mnuImage: TMenuItem; AdjustImageColors1: TMenuItem; FlipHorizontal1: TMenuItem; FlipVertical1: TMenuItem; RotateRight1: TMenuItem; Rotate1801: TMenuItem; RotateLeft1: TMenuItem; N19: TMenuItem; N21: TMenuItem; N23: TMenuItem; CroptoSelection1: TMenuItem; DoPrintPreviewDialog: TImageEnMViewDoPrintPreviewDialog; SeekFirst: TImageEnMViewSeekFirst; SeekLast: TImageEnMViewSeekLast; SeekNext: TImageEnMViewSeekNext; SeekPrior: TImageEnMViewSeekPrior; mnuFile: TMenuItem; PrintPreview2: TMenuItem; PrinttoPage1: TMenuItem; Print2: TMenuItem; FirstFrame1: TMenuItem; LastFrame1: TMenuItem; NextFrame1: TMenuItem; PreviousFrame1: TMenuItem; DoAdjustPreviews: TImageEnMViewDoAdjustPreviews; DoEffectPreviews: TImageEnMViewDoEffectPreviews; DoEditPreviews: TImageEnMViewDoEditPreviews; ImageEffects1: TMenuItem; N2: TMenuItem; Exit1: TMenuItem; N4: TMenuItem; RotateLeft: TImageEnMViewRotateLeft; RotateRight: TImageEnMViewRotateRight; SelectAll: TImageEnMViewSelectAll; PrintAllThumbnails: TImageEnMViewPrintAllThumbnails; PrintImageFitToPage: TImageEnMViewPrintImageFitToPage; PrintImageNormal: TImageEnMViewPrintImageNormal; PrintSelectedThumbnails: TImageEnMViewPrintSelectedThumbnails; PrintAllThumbnails1: TMenuItem; PrintThumbnails1: TMenuItem; N3: TMenuItem; N5: TMenuItem; muiAutosaveChanges: TMenuItem; ImageList1: TImageList; EnableAdjustOrientation: TImageEnMViewEnableAdjustOrientation; AutoRotateDisplay1: TMenuItem; N6: TMenuItem; ExitApp: TFileExit; mnuLanguage: TMenuItem; EditImage1: TMenuItem; StyleShowThumbs: TImageEnMViewStyleShowThumbs; StyleShowDetails: TImageEnMViewStyleShowDetails; DetailView1: TMenuItem; ThumbnailView1: TMenuItem; PromptForFolder: TIEFolderMViewPromptForFolder; OpenParentFolder: TIEFolderMViewOpenParentFolder; RefreshFileList: TIEFolderMViewRefreshFileList; CreateNewFolder: TIEFolderMViewCreateNewFolder; ExecuteSelectedFile: TIEFolderMViewExecuteSelectedFile; MoveSelectedFilesToFolder: TIEFolderMViewMoveSelectedFilesToFolder; CopySelectedFilesToFolder: TIEFolderMViewCopySelectedFilesToFolder; DeleteSelectedFilesFromFolder: TIEFolderMViewDeleteSelectedFilesFromFolder; CopySelectedFilesToClipboard: TIEFolderMViewCopySelectedFilesToClipboard; CutSelectedFilesToClipboard: TIEFolderMViewCutSelectedFilesToClipboard; PasteFilesFromClipboard: TIEFolderMViewPasteFilesFromClipboard; RenameSelectedFile: TIEFolderMViewRenameSelectedFile; SortByFilename: TImageEnMViewSortByFilename; SortByFileType: TImageEnMViewSortByFileType; SortByFileSize: TImageEnMViewSortByFileSize; SortByCreateDate: TImageEnMViewSortByCreateDate; SortByEditDate: TImageEnMViewSortByEditDate; SortByImageSize: TImageEnMViewSortByImageSize; SortAscending: TImageEnMViewSortAscending; SortDescending: TImageEnMViewSortDescending; mnuSorting: TMenuItem; Filename1: TMenuItem; FileType1: TMenuItem; FileSize1: TMenuItem; CreateDate1: TMenuItem; EditDate1: TMenuItem; ImageSize1: TMenuItem; N1: TMenuItem; Ascending1: TMenuItem; Descending1: TMenuItem; pnlTop: TPanel; lblFolder: TLabel; edtFolder: TEdit; btnOpenFolder: TButton; btnGoUp: TButton; SelectFolder1: TMenuItem; N7: TMenuItem; Refresh1: TMenuItem; CreateFolder1: TMenuItem; N8: TMenuItem; OpenFile1: TMenuItem; MovetoFolder1: TMenuItem; CopyFilestoClipboard1: TMenuItem; CopytoFolder1: TMenuItem; DeleteFiles1: TMenuItem; CutFilestoClipboard1: TMenuItem; PasteFilesfromClipboard1: TMenuItem; RenameFile1: TMenuItem; N9: TMenuItem; IncludeSubFolders: TIEFolderMViewIncludeSubFolders; IncludeSubfolders1: TMenuItem; procedure FormCreate(Sender: TObject); procedure AutoSaveError(Sender: TObject; Filename, ErrorMsg: string); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure IEFolderMView1FolderChanged(Sender: TObject); procedure mnuImageClick(Sender: TObject); procedure IEFolderMView1ImageDeselect(Sender: TObject; idx: Integer); procedure IEFolderMView1ImageSelect(Sender: TObject; idx: Integer); procedure muiAutosaveChangesClick(Sender: TObject); private procedure SetAutoSaveChanges(const Value: Boolean); function GetAutoSaveChanges: Boolean; function GetSelectedImageIndex: Integer; procedure CreateLanguageMenuItems; procedure LanguageClick(Sender: TObject); public { Public declarations } property AutoSaveChanges : Boolean read GetAutoSaveChanges write SetAutoSaveChanges; property SelectedImageIndex : Integer read GetSelectedImageIndex; end; var MainForm: TMainForm; implementation {$R *.DFM} {$R WindowsTheme.res} uses FileCtrl, iexRegistryFunctions; const // Enable to store the settings Save_Settings_To_Registry = False; Demo_Registry_Path ='\Software\ImageEn\MViewActionsDemo\'; procedure TMainForm.FormCreate(Sender: TObject); begin if Save_Settings_To_Registry then IEFolderMView1.LoadFromRegistry(Demo_Registry_Path); // Recommended settings for TImageEnMView with IEFolderMView1 do begin Style := iemsFlat; // Modern style Background := clWindow; // Normal window color ThumbnailsBackground := clWindow; // Match the windows background BorderStyle := bsNone; // Normally don't require a 3D border GridWidth := -1; // Auto-column widths ThumbnailsBorderColor := clWindow; ThumbnailsInternalBorderColor := clWindow; ThumbnailsInternalBorder := True; ThumbnailsBorderWidth := 5; ThumbWidth := 140; // Make thumbnail bigger ThumbHeight := 140; HorizBorder := 8; // Better spacing VertBorder := 8; // Use better quality thumbnail drawing, Use rfFastLinear for best speed or rfLanczos3 for best quality ThumbnailDisplayFilter := rfFastLinear; SelectedImageAlwaysVisible := True; // When setting selected image, ensure that is it onscreen // Lock preview Proc.PreviewsParams := Proc.PreviewsParams + [prppDefaultLockPreview]; end; CreateLanguageMenuItems; end; procedure TMainForm.AutoSaveError(Sender: TObject; Filename, ErrorMsg: string); begin MessageDlg(format('Error encountered saving changes to %s: %s', [Filename, ErrorMsg]), mtError, [mbOK], 0); end; procedure TMainForm.SetAutoSaveChanges(const Value: Boolean); begin FlipHorizontal .AutoSaveChanges := value; FlipVertical .AutoSaveChanges := value; RotateLeft .AutoSaveChanges := value; Rotate180 .AutoSaveChanges := value; RotateRight .AutoSaveChanges := value; DoAdjustPreviews .AutoSaveChanges := value; DoEffectPreviews .AutoSaveChanges := value; DoEditPreviews .AutoSaveChanges := value; end; procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); begin if Save_Settings_To_Registry then IEFolderMView1.SaveToRegistry(Demo_Registry_Path); end; function TMainForm.GetAutoSaveChanges: Boolean; begin result := DoEffectPreviews.AutoSaveChanges; end; function TMainForm.GetSelectedImageIndex: Integer; begin if IEFolderMView1.DisplayMode = mdSingle then Result := IEFolderMView1.VisibleFrame else Result := IEFolderMView1.SelectedImage; end; procedure TMainForm.mnuImageClick(Sender: TObject); begin muiAutosaveChanges.Enabled := DoEffectPreviews.CanAutoSaveChanges; muiAutosaveChanges.Checked := muiAutosaveChanges.Enabled and AutoSaveChanges; end; procedure TMainForm.IEFolderMView1ImageDeselect(Sender: TObject; idx: Integer); begin StatusBar.Panels[0].Text := ''; end; procedure TMainForm.IEFolderMView1ImageSelect(Sender: TObject; idx: Integer); begin if SelectedImageIndex < 0 then StatusBar.Panels[0].Text := '' else StatusBar.Panels[0].Text := format('%d of %d: %s', [SelectedImageIndex + 1, IEFolderMView1.ImageCount, IEFolderMView1.ImageFilename[SelectedImageIndex]]); end; procedure TMainForm.muiAutosaveChangesClick(Sender: TObject); var bEnable: Boolean; begin bEnable := not AutoSaveChanges; if bEnable and (MessageDlg('If you enable this option your ORIGINAL IMAGES WILL BE MODIFIED without confirmation. Are you sure you want to do this?', mtConfirmation, [mbYes,mbNo], 0) = mrNo) then exit; AutoSaveChanges := bEnable; end; procedure TMainForm.CreateLanguageMenuItems; var aLang : TMsgLanguage; NewItem: TMenuItem; begin mnuLanguage.Clear; for aLang := Low(TMsgLanguage) to High(TMsgLanguage) do begin NewItem := TMenuItem.Create(Self); NewItem.Caption := LanguageToStr(aLang); NewItem.Checked := IEGlobalSettings.MsgLanguage = aLang; NewItem.Tag := ord(aLang); NewItem.OnClick := LanguageClick; mnuLanguage.Add(NewItem) end; end; procedure TMainForm.IEFolderMView1FolderChanged(Sender: TObject); begin edtFolder.Text := IEFolderMView1.Folder; end; procedure TMainForm.LanguageClick(Sender: TObject); var aLang : TMsgLanguage; I: Integer; begin MessageDlg('You can view translated actions on the drop down menus.' + #13#10 + #13#10 + 'Note: Translation of some languages is not yet complete. Email sales@xequte.com to assist.', mtInformation, [mbOK], 0); for I := 0 to mnuLanguage.Count - 1 do mnuLanguage.Items[I].Checked := False; aLang := TMsgLanguage(TMenuItem(Sender).Tag); IEGlobalSettings.MsgLanguage := aLang; TMenuItem(Sender).Checked := True; end; end.