305 lines
10 KiB
Plaintext
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.
|