352 lines
11 KiB
Plaintext
352 lines
11 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,
|
|
ieSettings, hyieutils, iexBitmaps, AppEvnts, iexLayers, iexRulers;
|
|
|
|
type
|
|
TMainForm = class(TForm)
|
|
MainMenu1: TMainMenu;
|
|
StatusBar: TStatusBar;
|
|
ActionList1: TActionList;
|
|
ImageEnMView1: TImageEnMView;
|
|
mnuView: TMenuItem;
|
|
mnuEdit: TMenuItem;
|
|
DeSelect: TImageEnMViewDeSelect;
|
|
FitImage1: TMenuItem;
|
|
Delect1: TMenuItem;
|
|
N13: TMenuItem;
|
|
miDeleteImage: TMenuItem;
|
|
miPromptToAdd: TMenuItem;
|
|
miClear: TMenuItem;
|
|
N15: TMenuItem;
|
|
CopyToClipboard: TImageEnMViewCopyToClipboard;
|
|
FlipHorizontal: TImageEnMViewFlipHorizontal;
|
|
FlipVertical: TImageEnMViewFlipVertical;
|
|
PasteFromClipboard: TImageEnMViewPasteFromClipboard;
|
|
Rotate180: TImageEnMViewRotate180;
|
|
mnuImage: TMenuItem;
|
|
CopytoClipboard1: TMenuItem;
|
|
AdjustImageColors1: TMenuItem;
|
|
FlipHorizontal1: TMenuItem;
|
|
FlipVertical1: TMenuItem;
|
|
PastefromClipboard1: TMenuItem;
|
|
RotateRight1: TMenuItem;
|
|
Rotate1801: TMenuItem;
|
|
RotateLeft1: TMenuItem;
|
|
CopySelectiontoClipboard1: TMenuItem;
|
|
N19: TMenuItem;
|
|
N21: TMenuItem;
|
|
N23: TMenuItem;
|
|
N24: TMenuItem;
|
|
CroptoSelection1: TMenuItem;
|
|
Acquire: TImageEnMViewAcquire;
|
|
DoIOPreviews: TImageEnMViewDoIOPreviews;
|
|
DoPrintPreviewDialog: TImageEnMViewDoPrintPreviewDialog;
|
|
Save: TImageEnMViewSave;
|
|
PromptToOpen: TImageEnMViewPromptToOpen;
|
|
PromptToSave: TImageEnMViewPromptToSave;
|
|
SeekFirst: TImageEnMViewSeekFirst;
|
|
SeekLast: TImageEnMViewSeekLast;
|
|
SeekNext: TImageEnMViewSeekNext;
|
|
SeekPrior: TImageEnMViewSeekPrior;
|
|
SelectAcquireSource: TImageEnMViewSelectAcquireSource;
|
|
mnuFile: TMenuItem;
|
|
Acquire2: TMenuItem;
|
|
SaveProperties1: TMenuItem;
|
|
PrintPreview2: TMenuItem;
|
|
PrinttoPage1: TMenuItem;
|
|
Print2: TMenuItem;
|
|
Save1: TMenuItem;
|
|
Open1: TMenuItem;
|
|
Saveas1: TMenuItem;
|
|
FirstFrame1: TMenuItem;
|
|
LastFrame1: TMenuItem;
|
|
NextFrame1: TMenuItem;
|
|
PreviousFrame1: TMenuItem;
|
|
SelectAcquisitionSource1: TMenuItem;
|
|
N25: TMenuItem;
|
|
N26: TMenuItem;
|
|
N27: TMenuItem;
|
|
N28: TMenuItem;
|
|
DoAdjustPreviews: TImageEnMViewDoAdjustPreviews;
|
|
DoEffectPreviews: TImageEnMViewDoEffectPreviews;
|
|
DoEditPreviews: TImageEnMViewDoEditPreviews;
|
|
ImageEffects1: TMenuItem;
|
|
N2: TMenuItem;
|
|
Exit1: TMenuItem;
|
|
Playing: TImageEnMViewPlaying;
|
|
PlayLoop: TImageEnMViewPlayLoop;
|
|
Animateimage1: TMenuItem;
|
|
LoopPlayback1: TMenuItem;
|
|
N4: TMenuItem;
|
|
RotateLeft: TImageEnMViewRotateLeft;
|
|
RotateRight: TImageEnMViewRotateRight;
|
|
DeleteImage: TImageEnMViewDeleteImage;
|
|
DisplayModeSingle: TImageEnMViewDisplayModeSingle;
|
|
SelectAll: TImageEnMViewSelectAll;
|
|
CutToClipboard: TImageEnMViewCutToClipboard;
|
|
PrintAllThumbnails: TImageEnMViewPrintAllThumbnails;
|
|
PrintImageFitToPage: TImageEnMViewPrintImageFitToPage;
|
|
PrintImageNormal: TImageEnMViewPrintImageNormal;
|
|
PrintSelectedThumbnails: TImageEnMViewPrintSelectedThumbnails;
|
|
PromptToAdd: TImageEnMViewPromptToAdd;
|
|
PrintAllThumbnails1: TMenuItem;
|
|
PrintThumbnails1: TMenuItem;
|
|
N3: TMenuItem;
|
|
Clear: TImageEnMViewClear;
|
|
FillfromFolder1: TMenuItem;
|
|
DoIOPreviewsSelected: TImageEnMViewDoIOPreviewsSelected;
|
|
N5: TMenuItem;
|
|
ImageSaveProperties1: TMenuItem;
|
|
muiAutosaveChanges: TMenuItem;
|
|
ImageList1: TImageList;
|
|
EnableAdjustOrientation: TImageEnMViewEnableAdjustOrientation;
|
|
AutoRotateDisplay1: TMenuItem;
|
|
N6: TMenuItem;
|
|
ExitApp: TFileExit;
|
|
mnuLanguage: TMenuItem;
|
|
PromptToRotate: TImageEnMViewPromptToRotate;
|
|
EditImage1: TMenuItem;
|
|
CustomRotate1: TMenuItem;
|
|
StyleShowThumbs: TImageEnMViewStyleShowThumbs;
|
|
StyleShowDetails: TImageEnMViewStyleShowDetails;
|
|
DetailView1: TMenuItem;
|
|
ThumbnailView1: TMenuItem;
|
|
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;
|
|
StyleShowColumns: TImageEnMViewStyleShowColumns;
|
|
ColumnView1: TMenuItem;
|
|
StyleShowLargeThumbs: TImageEnMViewStyleShowLargeThumbs;
|
|
StyleShowFileList: TImageEnMViewStyleShowFileList;
|
|
N7: TMenuItem;
|
|
LargethumbnailView1: TMenuItem;
|
|
FileListView1: TMenuItem;
|
|
ShowColumnFilename: TImageEnMViewShowColumn;
|
|
ShowColumnFilePath: TImageEnMViewShowColumn;
|
|
ShowColumnImageDimensions: TImageEnMViewShowColumn;
|
|
ShowColumnFileSize: TImageEnMViewShowColumn;
|
|
ShowColumnFileCreateDateTime: TImageEnMViewShowColumn;
|
|
ShowColumnFileEditDateTime: TImageEnMViewShowColumn;
|
|
ShowColumnFileType: TImageEnMViewShowColumn;
|
|
mnuColumns: TMenuItem;
|
|
CreateDate2: TMenuItem;
|
|
Filename2: TMenuItem;
|
|
EditDate2: TMenuItem;
|
|
FileType2: TMenuItem;
|
|
Dimensions1: TMenuItem;
|
|
Size1: TMenuItem;
|
|
Path1: TMenuItem;
|
|
ShowColumnProperties: TImageEnMViewShowColumn;
|
|
ImageProperties1: TMenuItem;
|
|
ApplicationEvents1: TApplicationEvents;
|
|
procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure AutoSaveError(Sender: TObject; Filename, ErrorMsg: string);
|
|
procedure FillfromFolder1Click(Sender: TObject);
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure mnuImageClick(Sender: TObject);
|
|
procedure ImageEnMView1ImageDeselect(Sender: TObject; idx: Integer);
|
|
procedure ImageEnMView1ImageSelect(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, iexWindowsFunctions;
|
|
|
|
const
|
|
// Enable to store the settings
|
|
Save_Settings_To_Registry = False;
|
|
Demo_Registry_Path ='\Software\ImageEn\MViewActionsDemo\';
|
|
|
|
|
|
procedure TMainForm.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
|
|
begin
|
|
mnuColumns.Enabled := ImageEnMView1.Style = iemsColumns;
|
|
end;
|
|
|
|
procedure TMainForm.FormCreate(Sender: TObject);
|
|
begin
|
|
if Save_Settings_To_Registry then
|
|
ImageEnMView1.LoadFromRegistry(Demo_Registry_Path);
|
|
|
|
CreateLanguageMenuItems;
|
|
|
|
// Recommended settings for TImageEnMView
|
|
with ImageEnMView1 do
|
|
begin
|
|
LockUpdate;
|
|
|
|
SetModernStyling( True, 140, 140 );
|
|
|
|
// 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];
|
|
|
|
// Default to thumbnail view
|
|
StyleShowThumbs.ExecuteTarget( nil );
|
|
|
|
UnlockUpdate;
|
|
end;
|
|
|
|
ImageEnMView1.FillFromDirectory( WindowsMyPicturesFolder, -1, False, '', False, '', True, True, iedtNone, iedtNone, iedtNone );
|
|
ImageEnMView1.SelectSeek(iskFirst);
|
|
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;
|
|
PromptToRotate .AutoSaveChanges := value;
|
|
end;
|
|
|
|
procedure TMainForm.FillfromFolder1Click(Sender: TObject);
|
|
var
|
|
sPath: string;
|
|
begin
|
|
sPath := '';
|
|
if SelectDirectory(sPath, [], 0) then
|
|
begin
|
|
ImageEnMView1.Clear;
|
|
ImageEnMView1.FillFromDirectory( sPath, -1, False, '', False, '', True, True, iedtNone, iedtNone, iedtNone );
|
|
ImageEnMView1.SelectSeek(iskFirst);
|
|
end;
|
|
end;
|
|
|
|
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
if Save_Settings_To_Registry then
|
|
ImageEnMView1.SaveToRegistry(Demo_Registry_Path);
|
|
end;
|
|
|
|
function TMainForm.GetAutoSaveChanges: Boolean;
|
|
begin
|
|
result := DoEffectPreviews.AutoSaveChanges;
|
|
end;
|
|
|
|
function TMainForm.GetSelectedImageIndex: Integer;
|
|
begin
|
|
if ImageEnMView1.DisplayMode = mdSingle then
|
|
Result := ImageEnMView1.VisibleFrame
|
|
else
|
|
Result := ImageEnMView1.SelectedImage;
|
|
end;
|
|
|
|
procedure TMainForm.mnuImageClick(Sender: TObject);
|
|
begin
|
|
muiAutosaveChanges.Enabled := DoEffectPreviews.CanAutoSaveChanges;
|
|
muiAutosaveChanges.Checked := muiAutosaveChanges.Enabled and
|
|
AutoSaveChanges;
|
|
end;
|
|
|
|
procedure TMainForm.ImageEnMView1ImageDeselect(Sender: TObject; idx: Integer);
|
|
begin
|
|
StatusBar.Panels[0].Text := '';
|
|
end;
|
|
|
|
procedure TMainForm.ImageEnMView1ImageSelect(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, ImageEnMView1.ImageCount, ImageEnMView1.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.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.
|