485 lines
16 KiB
Plaintext
485 lines
16 KiB
Plaintext
unit Main;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ieview,
|
|
iexFolderMView, iemView, StdCtrls, ExtCtrls, iemio, imageenview, iexActionsFolder, ActiveX,
|
|
ComCtrls, ShlObj, Menus, ActnList, hyieutils, iexBitmaps, hyiedefs, iesettings,
|
|
iexLayers, iexRulers;
|
|
|
|
type
|
|
TForm1 = class(TForm)
|
|
IEFolderMView: TImageEnFolderMView;
|
|
pnlRight: TPanel;
|
|
tmrUpdatePreview: TTimer;
|
|
Splitter1: TSplitter;
|
|
grpFolder: TGroupBox;
|
|
edtFolder: TEdit;
|
|
grpThumbSettings: TGroupBox;
|
|
chkSoftShadow: TCheckBox;
|
|
lblThumbnailClipping: TLabel;
|
|
lblPercent: TLabel;
|
|
btnSetClipping: TButton;
|
|
lblTopText: TLabel;
|
|
lblFileTypes: TLabel;
|
|
cmbFileTypes: TComboBox;
|
|
lblMask: TLabel;
|
|
edtFileMask: TEdit;
|
|
cmbTopText: TComboBox;
|
|
lblInfoText: TLabel;
|
|
cmbInfoText: TComboBox;
|
|
lblBottomText: TLabel;
|
|
cmbBottomText: TComboBox;
|
|
btnRefresh: TButton;
|
|
grpPreview: TGroupBox;
|
|
chkShowHiddenFiles: TCheckBox;
|
|
lblThumbSize: TLabel;
|
|
lblX: TLabel;
|
|
chkShowFileHint: TCheckBox;
|
|
chkShowFolders: TCheckBox;
|
|
btnSelectFolder: TButton;
|
|
lblExample: TLabel;
|
|
grpFolderSettings: TGroupBox;
|
|
chkAscending: TCheckBox;
|
|
lblSorting: TLabel;
|
|
chkMonitorFolder: TCheckBox;
|
|
chkUseSystemPopup: TCheckBox;
|
|
chkDragDrop: TCheckBox;
|
|
cmbSorting: TComboBox;
|
|
grpFileOpSettings: TGroupBox;
|
|
chkShowConfirmation: TCheckBox;
|
|
chkShowProgress: TCheckBox;
|
|
chkVerboseErrors: TCheckBox;
|
|
chkSendToRecycleBin: TCheckBox;
|
|
popSettings: TPopupMenu;
|
|
pupLoadSettings: TMenuItem;
|
|
popSaveSettings: TMenuItem;
|
|
pnlPreview: TPanel;
|
|
chkPreview: TCheckBox;
|
|
ImageEnView1: TImageEnView;
|
|
edtThumbWidth: TEdit;
|
|
updThumbWidth: TUpDown;
|
|
edtThumbHeight: TEdit;
|
|
updThumbHeight: TUpDown;
|
|
edtClipping: TEdit;
|
|
updClipping: TUpDown;
|
|
popThumbOptionsEx: TPopupMenu;
|
|
pitShowIconForUnknownFormat: TMenuItem;
|
|
pitShowIconWhileLoading: TMenuItem;
|
|
pitShowShadowForIcons: TMenuItem;
|
|
pitShowShadowForFolders: TMenuItem;
|
|
lblThumbOptionsEx: TLabel;
|
|
chkEnableSpecialFolders: TCheckBox;
|
|
lblAlso: TLabel;
|
|
btnOpenParent: TButton;
|
|
N2: TMenuItem;
|
|
pupIncludeSubFolders: TMenuItem;
|
|
procedure btnOpenParentClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure btnRefreshClick(Sender: TObject);
|
|
procedure btnSelectFolderClick(Sender: TObject);
|
|
procedure btnSetClippingClick(Sender: TObject);
|
|
procedure chkAscendingClick(Sender: TObject);
|
|
procedure chkDragDropClick(Sender: TObject);
|
|
procedure chkEnableSpecialFoldersClick(Sender: TObject);
|
|
procedure chkMonitorFolderClick(Sender: TObject);
|
|
procedure chkPreviewClick(Sender: TObject);
|
|
procedure chkShowFileHintClick(Sender: TObject);
|
|
procedure chkShowFoldersClick(Sender: TObject);
|
|
procedure chkShowHiddenFilesClick(Sender: TObject);
|
|
procedure chkSoftShadowClick(Sender: TObject);
|
|
procedure chkUseSystemPopupClick(Sender: TObject);
|
|
procedure cmbBottomTextChange(Sender: TObject);
|
|
procedure cmbFileTypesChange(Sender: TObject);
|
|
procedure cmbInfoTextChange(Sender: TObject);
|
|
procedure cmbSortingChange(Sender: TObject);
|
|
procedure cmbTopTextChange(Sender: TObject);
|
|
procedure FileOpCtrlClick(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure IEFolderMViewFolderChanged(Sender: TObject);
|
|
procedure IEFolderMViewImageSelect(Sender: TObject; idx: Integer);
|
|
procedure lblThumbOptionsExMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
procedure pitShowShadowForFoldersClick(Sender: TObject);
|
|
procedure popSaveSettingsClick(Sender: TObject);
|
|
procedure popThumbOptionsExPopup(Sender: TObject);
|
|
procedure pupIncludeSubFoldersClick(Sender: TObject);
|
|
procedure pupLoadSettingsClick(Sender: TObject);
|
|
procedure spnClippingChange(Sender: TObject);
|
|
procedure tmrUpdatePreviewTimer(Sender: TObject);
|
|
private
|
|
fSettingOps : Boolean;
|
|
procedure ReadFolderSettings;
|
|
procedure UpdateSelection;
|
|
procedure InitializeControls;
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
{$R WindowsTheme.res}
|
|
|
|
|
|
uses
|
|
iexHelperfunctions, iexRegistryFunctions;
|
|
|
|
|
|
procedure TForm1.btnOpenParentClick(Sender: TObject);
|
|
begin
|
|
IEFolderMView.OpenParentFolder;
|
|
end;
|
|
|
|
procedure TForm1.FormCreate(Sender: TObject);
|
|
begin
|
|
// The folder that will be shown on start up
|
|
IEFolderMView.DefaultFolder := iedfMyPictures;
|
|
// Or display a specific folder: IEFolderMView.Folder := 'C:\My Folder\';
|
|
|
|
// Allow dragging and dropping to/from Windows Explorer
|
|
IEFolderMView.AutoDragFiles := [iedaMove, iedaCopy];
|
|
IEFolderMView.AutoDropFiles := [iedaMove, iedaCopy];
|
|
|
|
// Options for moving, copying, deleting and pasting files
|
|
IEFolderMView.FileOperationOptions := [ieioShowConfirmation, ieioSendToRecycleBin, ieioShowProgress, ieioVerboseErrors];
|
|
|
|
// Quality of displayed thumbnails
|
|
IEFolderMView.ThumbnailResampleFilter := rfNone;
|
|
IEFolderMView.ThumbnailDisplayFilter := rfFastLinear;
|
|
|
|
// What common folder behaviours should ImageEnFolderMView handle itself?
|
|
IEFolderMView.FolderInteract := [ieboOpenFoldersOnDblClick, ieboLaunchImagesOnDblClick, ieboLaunchFilesOnDblClick, ieboEnableFolderShortcuts, ieboEnableFileShortcuts, ieboClickToSortColumns];
|
|
|
|
// Size of thumbnail
|
|
IEFolderMView.ThumbWidth := 130;
|
|
IEFolderMView.ThumbHeight := 130;
|
|
|
|
// Gives best quality when loading files on demand
|
|
IEFolderMView.StoreType := ietFastThumb;
|
|
|
|
// Any files types to exlude, e.g. 'DOC'
|
|
IEFolderMView.ExclusionMask := '';
|
|
|
|
// EXIF thumbnails can be faster, but quality cannot be guaranteed
|
|
IEFolderMView.EnableLoadEXIFThumbnails := False;
|
|
|
|
IEFolderMView.MultiSelectionOptions := [iemoRegion, iemoSelectOnRightClick, iemoOptimizeForDragging];
|
|
|
|
// File extensions to display if FileTypes = iefCustom
|
|
IEFolderMView.FileTypesMask := 'jpg,jpeg,jpe';
|
|
|
|
// Sort order
|
|
IEFolderMView.SortOrder := iesbFilenameWithoutPath;
|
|
|
|
// Showing Folders, but not hidden files
|
|
IEFolderMView.ShowFolders := True;
|
|
IEFolderMView.ShowHiddenFiles := False;
|
|
|
|
// Allow navigation up to desktop
|
|
IEFolderMView.EnableSpecialFolders := True;
|
|
|
|
// Use Windows Explorer Thumbnails for speed and caching
|
|
IEFolderMView.EnableLoadExplorerThumbnails := True;
|
|
|
|
// But ensure we have file params in case user display the image info
|
|
IEFolderMView.IOOptionsEx := IEFolderMView.IOOptionsEx + [ ieixWantParams ];
|
|
|
|
// Speed up loading and filling by using the file extension rather than analyzing the content to determine its type
|
|
IEFolderMView.IOOptionsEx := IEFolderMView.IOOptionsEx + [ ieixLoadOnlyByFileExt ];
|
|
|
|
// Make mouse wheel behave like Windows Explorer. Scrolls the control, or if Ctrl is pressed it changes the view
|
|
IEFolderMView.MouseWheelParams.Action := iemwVScroll;
|
|
IEFolderMView.MouseWheelParamsAlt.Action := iemwZoomView;
|
|
end;
|
|
|
|
procedure TForm1.btnRefreshClick(Sender: TObject);
|
|
begin
|
|
ReadFolderSettings;
|
|
IEFolderMView.RefreshFileList;
|
|
end;
|
|
|
|
procedure TForm1.btnSelectFolderClick(Sender: TObject);
|
|
begin
|
|
ReadFolderSettings;
|
|
IEFolderMView.PromptForFolder;
|
|
end;
|
|
|
|
procedure TForm1.btnSetClippingClick(Sender: TObject);
|
|
begin
|
|
IEFolderMView.ThumbWidth := StrToIntDef(edtThumbWidth.Text , IEFolderMView.ThumbWidth );
|
|
IEFolderMView.ThumbHeight := StrToIntDef(edtThumbHeight.Text , IEFolderMView.ThumbHeight );
|
|
IEFolderMView.ThumbnailClipping := StrToIntDef(edtClipping.Text , IEFolderMView.ThumbnailClipping );
|
|
btnSetClipping.Enabled := False;
|
|
end;
|
|
|
|
procedure TForm1.chkAscendingClick(Sender: TObject);
|
|
begin
|
|
IEFolderMView.SortAscending := chkAscending.checked;
|
|
end;
|
|
|
|
procedure TForm1.chkDragDropClick(Sender: TObject);
|
|
begin
|
|
if chkDragDrop.checked then
|
|
begin
|
|
IEFolderMView.AutoDragFiles := [iedaMove, iedaCopy];
|
|
IEFolderMView.AutoDropFiles := [iedaMove, iedaCopy];
|
|
end
|
|
else
|
|
begin
|
|
IEFolderMView.AutoDragFiles := [];
|
|
IEFolderMView.AutoDropFiles := [];
|
|
end
|
|
end;
|
|
|
|
procedure TForm1.chkEnableSpecialFoldersClick(Sender: TObject);
|
|
begin
|
|
IEFolderMView.EnableSpecialFolders := chkEnableSpecialFolders.checked;
|
|
end;
|
|
|
|
procedure TForm1.chkMonitorFolderClick(Sender: TObject);
|
|
begin
|
|
IEFolderMView.AutoRefresh := chkMonitorFolder.checked;
|
|
end;
|
|
|
|
procedure TForm1.chkPreviewClick(Sender: TObject);
|
|
begin
|
|
if chkPreview.checked then
|
|
IEFolderMView.FolderInteract := IEFolderMView.FolderInteract - [ieboLaunchImagesOnDblClick]
|
|
else
|
|
IEFolderMView.FolderInteract := IEFolderMView.FolderInteract + [ieboLaunchImagesOnDblClick];
|
|
UpdateSelection;
|
|
end;
|
|
|
|
procedure TForm1.chkShowFileHintClick(Sender: TObject);
|
|
begin
|
|
IEFolderMView.ShowThumbnailHint := chkShowFileHint.checked;
|
|
end;
|
|
|
|
procedure TForm1.chkShowFoldersClick(Sender: TObject);
|
|
begin
|
|
IEFolderMView.ShowFolders := chkShowFolders.checked;
|
|
end;
|
|
|
|
procedure TForm1.chkShowHiddenFilesClick(Sender: TObject);
|
|
begin
|
|
IEFolderMView.ShowHiddenFiles := chkShowHiddenFiles.checked;
|
|
end;
|
|
|
|
procedure TForm1.chkSoftShadowClick(Sender: TObject);
|
|
begin
|
|
IEFolderMView.SoftShadow.Enabled := chkSoftShadow.checked;
|
|
if IEFolderMView.SoftShadow.Enabled then
|
|
begin
|
|
IEFolderMView.SideGap := 0;
|
|
IEFolderMView.UpperGap := 0;
|
|
IEFolderMView.BottomGap := 0;
|
|
end
|
|
else
|
|
begin
|
|
IEFolderMView.SideGap := 6;
|
|
IEFolderMView.UpperGap := 6;
|
|
IEFolderMView.BottomGap := 6;
|
|
end;
|
|
IEFolderMView.RefreshFileList;
|
|
end;
|
|
|
|
procedure TForm1.chkUseSystemPopupClick(Sender: TObject);
|
|
begin
|
|
IEFolderMView.PopupMenuUseSystem := chkUseSystemPopup.Checked;
|
|
end;
|
|
|
|
procedure TForm1.cmbBottomTextChange(Sender: TObject);
|
|
begin
|
|
IEFolderMView.DefaultBottomText := TIEImageEnMViewDefaultText(cmbBottomText.ItemIndex);
|
|
end;
|
|
|
|
procedure TForm1.cmbFileTypesChange(Sender: TObject);
|
|
begin
|
|
edtFileMask.Enabled := TIEFolderFileTypes(cmbFileTypes.ItemIndex) = iefCustom;
|
|
lblMask.Enabled := edtFileMask.Enabled;
|
|
IEFolderMView.FileTypes := TIEFolderFileTypes(cmbFileTypes.ItemIndex);
|
|
end;
|
|
|
|
procedure TForm1.cmbInfoTextChange(Sender: TObject);
|
|
begin
|
|
IEFolderMView.DefaultInfoText := TIEImageEnMViewDefaultText(cmbInfoText.ItemIndex);
|
|
end;
|
|
|
|
procedure TForm1.cmbSortingChange(Sender: TObject);
|
|
begin
|
|
IEFolderMView.SortOrder := TIEImageEnMViewSortBy(cmbSorting.ItemIndex);
|
|
end;
|
|
|
|
procedure TForm1.cmbTopTextChange(Sender: TObject);
|
|
begin
|
|
IEFolderMView.DefaultTopText := TIEImageEnMViewDefaultText(cmbTopText.ItemIndex);
|
|
end;
|
|
|
|
|
|
procedure TForm1.FileOpCtrlClick(Sender: TObject);
|
|
var
|
|
FileOps : TIEFileOperationOptions;
|
|
begin
|
|
if fSettingOps then
|
|
exit;
|
|
FileOps := [];
|
|
if chkShowConfirmation.checked then
|
|
FileOps := FileOps + [ieioShowConfirmation];
|
|
if chkSendToRecycleBin.checked then
|
|
FileOps := FileOps + [ieioSendToRecycleBin];
|
|
if chkShowProgress.checked then
|
|
FileOps := FileOps + [ieioShowProgress];
|
|
if chkVerboseErrors.checked then
|
|
FileOps := FileOps + [ieioVerboseErrors];
|
|
|
|
IEFolderMView.FileOperationOptions := FileOps;
|
|
end;
|
|
|
|
|
|
procedure TForm1.FormShow(Sender: TObject);
|
|
begin
|
|
InitializeControls;
|
|
end;
|
|
|
|
|
|
procedure TForm1.InitializeControls;
|
|
begin
|
|
fSettingOps := True;
|
|
try
|
|
chkMonitorFolder.checked := IEFolderMView.AutoRefresh;
|
|
chkUseSystemPopup.Checked := IEFolderMView.PopupMenuUseSystem;
|
|
chkAscending.checked := IEFolderMView.SortAscending;
|
|
cmbBottomText.ItemIndex := Ord(IEFolderMView.DefaultBottomText);
|
|
cmbInfoText.ItemIndex := Ord(IEFolderMView.DefaultInfoText);
|
|
cmbTopText.ItemIndex := Ord(IEFolderMView.DefaultTopText);
|
|
cmbSorting.ItemIndex := Ord(IEFolderMView.SortOrder);
|
|
cmbFileTypes.ItemIndex := Ord(IEFolderMView.FileTypes);
|
|
edtFileMask.Text := IEFolderMView.FileTypesMask;
|
|
chkShowHiddenFiles.checked := IEFolderMView.ShowHiddenFiles;
|
|
edtThumbWidth.Text := IntToStr(IEFolderMView.ThumbWidth);
|
|
edtThumbHeight.Text := IntToStr(IEFolderMView.ThumbHeight);
|
|
edtClipping.Text := IntToStr(IEFolderMView.ThumbnailClipping);
|
|
chkShowFileHint.checked := IEFolderMView.ShowThumbnailHint;
|
|
chkShowFolders.checked := IEFolderMView.ShowFolders;
|
|
chkDragDrop.checked := IEFolderMView.AutoDragFiles <> [];
|
|
|
|
chkShowConfirmation.checked := ieioShowConfirmation in IEFolderMView.FileOperationOptions;
|
|
chkSendToRecycleBin.checked := ieioSendToRecycleBin in IEFolderMView.FileOperationOptions;
|
|
chkShowProgress.checked := ieioShowProgress in IEFolderMView.FileOperationOptions;
|
|
chkVerboseErrors.checked := ieioVerboseErrors in IEFolderMView.FileOperationOptions;
|
|
|
|
btnSetClipping.Enabled := False;
|
|
finally
|
|
fSettingOps := False;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TForm1.IEFolderMViewFolderChanged(Sender: TObject);
|
|
begin
|
|
edtFolder.Text := IEFolderMView.Folder;
|
|
btnOpenParent.Enabled := IEFolderMView.CanOpenParentFolder;
|
|
end;
|
|
|
|
|
|
procedure TForm1.IEFolderMViewImageSelect(Sender: TObject; idx: Integer);
|
|
begin
|
|
UpdateSelection;
|
|
end;
|
|
|
|
procedure TForm1.lblThumbOptionsExMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
var
|
|
lPoint: TPoint;
|
|
begin
|
|
lPoint := lblThumbOptionsEx.ClientToScreen(Point(0, lblThumbOptionsEx.Height));
|
|
popThumbOptionsEx.PopUp(lPoint.X, lPoint.Y);
|
|
end;
|
|
|
|
procedure TForm1.pitShowShadowForFoldersClick(Sender: TObject);
|
|
var
|
|
AItem : TIEMThumbnailOptionsExItems;
|
|
begin
|
|
AItem := TIEMThumbnailOptionsExItems(TControl(Sender).Tag);
|
|
if AItem in IEFolderMView.ThumbnailOptionsEx then
|
|
IEFolderMView.ThumbnailOptionsEx := IEFolderMView.ThumbnailOptionsEx - [AItem]
|
|
else
|
|
IEFolderMView.ThumbnailOptionsEx := IEFolderMView.ThumbnailOptionsEx + [AItem];
|
|
IEFolderMView.Update;
|
|
end;
|
|
|
|
|
|
procedure TForm1.popSaveSettingsClick(Sender: TObject);
|
|
begin
|
|
{$IFDEF Delphi2005orNewer}
|
|
IEFolderMView.SaveToRegistry('Software\ImageEn\IEFolderMViewDemo');
|
|
{$ENDIF}
|
|
end;
|
|
|
|
procedure TForm1.popThumbOptionsExPopup(Sender: TObject);
|
|
begin
|
|
pitShowIconForUnknownFormat .Tag := ord(ietxShowIconForUnknownFormat);
|
|
pitShowIconWhileLoading .Tag := ord(ietxShowIconWhileLoading );
|
|
pitShowShadowForIcons .Tag := ord(ietxShowShadowForIcons );
|
|
pitShowShadowForFolders .Tag := ord(ietxShowShadowForFolders );
|
|
|
|
pitShowIconForUnknownFormat .Checked := TIEMThumbnailOptionsExItems(pitShowIconForUnknownFormat.Tag) in IEFolderMView.ThumbnailOptionsEx;
|
|
pitShowIconWhileLoading .Checked := TIEMThumbnailOptionsExItems(pitShowIconWhileLoading .Tag) in IEFolderMView.ThumbnailOptionsEx;
|
|
pitShowShadowForIcons .Checked := TIEMThumbnailOptionsExItems(pitShowShadowForIcons .Tag) in IEFolderMView.ThumbnailOptionsEx;
|
|
pitShowShadowForFolders .Checked := TIEMThumbnailOptionsExItems(pitShowShadowForFolders .Tag) in IEFolderMView.ThumbnailOptionsEx;
|
|
|
|
pitShowShadowForIcons .Enabled := chkSoftShadow.checked;
|
|
pitShowShadowForFolders .Enabled := chkSoftShadow.checked;
|
|
end;
|
|
|
|
procedure TForm1.pupIncludeSubFoldersClick(Sender: TObject);
|
|
begin
|
|
pupIncludeSubFolders.checked := not pupIncludeSubFolders.checked;
|
|
IEFolderMView.IncludeSubFolders := pupIncludeSubFolders.checked;
|
|
end;
|
|
|
|
procedure TForm1.pupLoadSettingsClick(Sender: TObject);
|
|
begin
|
|
{$IFDEF Delphi2005orNewer}
|
|
IEFolderMView.LoadFromRegistry('Software\ImageEn\IEFolderMViewDemo');
|
|
InitializeControls;
|
|
{$ENDIF}
|
|
end;
|
|
|
|
procedure TForm1.ReadFolderSettings;
|
|
begin
|
|
IEFolderMView.FileTypesMask := edtFileMask.Text;
|
|
end;
|
|
|
|
procedure TForm1.spnClippingChange(Sender: TObject);
|
|
begin
|
|
btnSetClipping.Enabled := True;
|
|
end;
|
|
|
|
procedure TForm1.tmrUpdatePreviewTimer(Sender: TObject);
|
|
begin
|
|
tmrUpdatePreview.Enabled := False;
|
|
if chkPreview.checked = False then
|
|
ImageEnView1.Blank
|
|
else
|
|
if ImageEnView1.IO.Params.Filename <> IEFolderMView.SelectedFilename then
|
|
begin
|
|
if IEFolderMView.SelectedFilename = '' then
|
|
ImageEnView1.Blank
|
|
else
|
|
ImageEnView1.IO.LoadFromFile(IEFolderMView.SelectedFilename);
|
|
end;
|
|
end;
|
|
|
|
procedure TForm1.UpdateSelection;
|
|
begin
|
|
tmrUpdatePreview.Enabled := False;
|
|
tmrUpdatePreview.Enabled := True;
|
|
end;
|
|
|
|
end.
|
|
|