BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/Other/Actions_Folder/MAIN.PAS

305 lines
10 KiB
Plaintext

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.