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

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.