From a0f6fd68a56068a20e7186e2dd2d7daccfbce4aa Mon Sep 17 00:00:00 2001 From: Pavel Perminov Date: Wed, 26 Sep 2012 19:02:53 +0000 Subject: Chess4Net_MI 2010.0 release (106 rev. truncated adjusted copy) git-svn-id: http://svn.miranda-ng.org/main/trunk@1666 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- .../lib/TntUnicodeControls/Source/TntExtDlgs.pas | 317 +++++++++++++++++++++ 1 file changed, 317 insertions(+) create mode 100644 plugins/Chess4Net/lib/TntUnicodeControls/Source/TntExtDlgs.pas (limited to 'plugins/Chess4Net/lib/TntUnicodeControls/Source/TntExtDlgs.pas') diff --git a/plugins/Chess4Net/lib/TntUnicodeControls/Source/TntExtDlgs.pas b/plugins/Chess4Net/lib/TntUnicodeControls/Source/TntExtDlgs.pas new file mode 100644 index 0000000000..528c4f9f8f --- /dev/null +++ b/plugins/Chess4Net/lib/TntUnicodeControls/Source/TntExtDlgs.pas @@ -0,0 +1,317 @@ + +{*****************************************************************************} +{ } +{ Tnt Delphi Unicode Controls } +{ http://www.tntware.com/delphicontrols/unicode/ } +{ Version: 2.3.0 } +{ } +{ Copyright (c) 2002-2007, Troy Wolbrink (troy.wolbrink@tntware.com) } +{ } +{*****************************************************************************} + +unit TntExtDlgs; + +{$INCLUDE TntCompilers.inc} + +interface + +uses + Classes, Windows, TntDialogs, TntExtCtrls, TntStdCtrls, TntButtons; + +type +{TNT-WARN TOpenPictureDialog} + TTntOpenPictureDialog = class(TTntOpenDialog) + private + FPicturePanel: TTntPanel; + FPictureLabel: TTntLabel; + FPreviewButton: TTntSpeedButton; + FPaintPanel: TTntPanel; + FImageCtrl: TTntImage; + FSavedFilename: WideString; + function IsFilterStored: Boolean; + procedure PreviewKeyPress(Sender: TObject; var Key: Char{TNT-ALLOW Char}); + protected + procedure PreviewClick(Sender: TObject); virtual; + procedure DoClose; override; + procedure DoSelectionChange; override; + procedure DoShow; override; + property ImageCtrl: TTntImage read FImageCtrl; + property PictureLabel: TTntLabel read FPictureLabel; + published + property Filter stored IsFilterStored; + public + constructor Create(AOwner: TComponent); override; + function Execute: Boolean; override; + {$IFDEF COMPILER_9_UP} + function Execute(ParentWnd: HWND): Boolean; override; + {$ENDIF} + end; + +{TNT-WARN TSavePictureDialog} + TTntSavePictureDialog = class(TTntOpenPictureDialog) + public + function Execute: Boolean; override; + {$IFDEF COMPILER_9_UP} + function Execute(ParentWnd: HWND): Boolean; override; + {$ENDIF} + end; + +implementation + +uses + ExtDlgs, {ExtDlgs is needed for a linked resource} Dialogs, Consts, Messages, + Graphics, Math, Controls, Forms, SysUtils, CommDlg, TntSysUtils, TntForms; + +{ TTntSilentPaintPanel } + +type + TTntSilentPaintPanel = class(TTntPanel) + protected + procedure WMPaint(var Msg: TWMPaint); message WM_PAINT; + end; + +procedure TTntSilentPaintPanel.WMPaint(var Msg: TWMPaint); +begin + try + inherited; + except + Caption := SInvalidImage; + end; +end; + +{ TTntOpenPictureDialog } + +constructor TTntOpenPictureDialog.Create(AOwner: TComponent); +begin + inherited; + Filter := GraphicFilter(TGraphic); + FPicturePanel := TTntPanel.Create(Self); + with FPicturePanel do + begin + Name := 'PicturePanel'; + Caption := ''; + SetBounds(204, 5, 169, 200); + BevelOuter := bvNone; + BorderWidth := 6; + TabOrder := 1; + FPictureLabel := TTntLabel.Create(Self); + with FPictureLabel do + begin + Name := 'PictureLabel'; + Caption := ''; + SetBounds(6, 6, 157, 23); + Align := alTop; + AutoSize := False; + Parent := FPicturePanel; + end; + FPreviewButton := TTntSpeedButton.Create(Self); + with FPreviewButton do + begin + Name := 'PreviewButton'; + SetBounds(77, 1, 23, 22); + Enabled := False; + Glyph.LoadFromResourceName(FindClassHInstance(TOpenPictureDialog{TNT-ALLOW TOpenPictureDialog}), 'PREVIEWGLYPH'); + Hint := SPreviewLabel; + ParentShowHint := False; + ShowHint := True; + OnClick := PreviewClick; + Parent := FPicturePanel; + end; + FPaintPanel := TTntSilentPaintPanel.Create(Self); + with FPaintPanel do + begin + Name := 'PaintPanel'; + Caption := ''; + SetBounds(6, 29, 157, 145); + Align := alClient; + BevelInner := bvRaised; + BevelOuter := bvLowered; + TabOrder := 0; + FImageCtrl := TTntImage.Create(Self); + Parent := FPicturePanel; + with FImageCtrl do + begin + Name := 'PaintBox'; + Align := alClient; + OnDblClick := PreviewClick; + Parent := FPaintPanel; + Proportional := True; + Stretch := True; + Center := True; + IncrementalDisplay := True; + end; + end; + end; +end; + +procedure TTntOpenPictureDialog.DoClose; +begin + inherited; + { Hide any hint windows left behind } + Application.HideHint; +end; + +procedure TTntOpenPictureDialog.DoSelectionChange; +var + FullName: WideString; + ValidPicture: Boolean; + + function ValidFile(const FileName: WideString): Boolean; + begin + Result := WideFileGetAttr(FileName) <> $FFFFFFFF; + end; + +begin + FullName := FileName; + if FullName <> FSavedFilename then + begin + FSavedFilename := FullName; + ValidPicture := WideFileExists(FullName) and ValidFile(FullName); + if ValidPicture then + try + FImageCtrl.Picture.LoadFromFile(FullName); + FPictureLabel.Caption := WideFormat(SPictureDesc, + [FImageCtrl.Picture.Width, FImageCtrl.Picture.Height]); + FPreviewButton.Enabled := True; + FPaintPanel.Caption := ''; + except + ValidPicture := False; + end; + if not ValidPicture then + begin + FPictureLabel.Caption := SPictureLabel; + FPreviewButton.Enabled := False; + FImageCtrl.Picture := nil; + FPaintPanel.Caption := srNone; + end; + end; + inherited; +end; + +procedure TTntOpenPictureDialog.DoShow; +var + PreviewRect, StaticRect: TRect; +begin + { Set preview area to entire dialog } + GetClientRect(Handle, PreviewRect); + StaticRect := GetStaticRect; + { Move preview area to right of static area } + PreviewRect.Left := StaticRect.Left + (StaticRect.Right - StaticRect.Left); + Inc(PreviewRect.Top, 4); + FPicturePanel.BoundsRect := PreviewRect; + FPreviewButton.Left := FPaintPanel.BoundsRect.Right - FPreviewButton.Width - 2; + FImageCtrl.Picture := nil; + FSavedFilename := ''; + FPaintPanel.Caption := srNone; + FPicturePanel.ParentWindow := Handle; + inherited; +end; + +function TTntOpenPictureDialog.Execute: Boolean; +begin + if NewStyleControls and not (ofOldStyleDialog in Options) then + Template := 'DLGTEMPLATE' else + Template := nil; + Result := inherited Execute; +end; + +{$IFDEF COMPILER_9_UP} +function TTntOpenPictureDialog.Execute(ParentWnd: HWND): Boolean; +begin + if NewStyleControls and not (ofOldStyleDialog in Options) then + Template := 'DLGTEMPLATE' else + Template := nil; + Result := inherited Execute(ParentWnd); +end; +{$ENDIF} + +function TTntOpenPictureDialog.IsFilterStored: Boolean; +begin + Result := not (Filter = GraphicFilter(TGraphic)); +end; + +procedure TTntOpenPictureDialog.PreviewClick(Sender: TObject); +var + PreviewForm: TTntForm; + Panel: TTntPanel; +begin + PreviewForm := TTntForm.Create(Self); + with PreviewForm do + try + Name := 'PreviewForm'; + BorderStyle := bsSizeToolWin; // By doing this first, it will work on WINE. + Visible := False; + Caption := SPreviewLabel; + KeyPreview := True; + Position := poScreenCenter; + OnKeyPress := PreviewKeyPress; + Panel := TTntPanel.Create(PreviewForm); + with Panel do + begin + Name := 'Panel'; + Caption := ''; + Align := alClient; + BevelOuter := bvNone; + BorderStyle := bsSingle; + BorderWidth := 5; + Color := clWindow; + Parent := PreviewForm; + DoubleBuffered := True; + with TTntImage.Create(PreviewForm) do + begin + Name := 'Image'; + Align := alClient; + Stretch := True; + Proportional := True; + Center := True; + Picture.Assign(FImageCtrl.Picture); + Parent := Panel; + end; + end; + if FImageCtrl.Picture.Width > 0 then + begin + ClientWidth := Min(Monitor.Width * 3 div 4, + FImageCtrl.Picture.Width + (ClientWidth - Panel.ClientWidth)+ 10); + ClientHeight := Min(Monitor.Height * 3 div 4, + FImageCtrl.Picture.Height + (ClientHeight - Panel.ClientHeight) + 10); + end; + ShowModal; + finally + Free; + end; +end; + +procedure TTntOpenPictureDialog.PreviewKeyPress(Sender: TObject; var Key: Char{TNT-ALLOW Char}); +begin + if Key = Char{TNT-ALLOW Char}(VK_ESCAPE) then + (Sender as TTntForm).Close; +end; + +{ TSavePictureDialog } +function TTntSavePictureDialog.Execute: Boolean; +begin + if NewStyleControls and not (ofOldStyleDialog in Options) then + Template := 'DLGTEMPLATE' else + Template := nil; + + if (not Win32PlatformIsUnicode) then + Result := DoExecute(@GetSaveFileNameA) + else + Result := DoExecuteW(@GetSaveFileNameW); +end; + +{$IFDEF COMPILER_9_UP} +function TTntSavePictureDialog.Execute(ParentWnd: HWND): Boolean; +begin + if NewStyleControls and not (ofOldStyleDialog in Options) then + Template := 'DLGTEMPLATE' else + Template := nil; + + if (not Win32PlatformIsUnicode) then + Result := DoExecute(@GetSaveFileNameA, ParentWnd) + else + Result := DoExecuteW(@GetSaveFileNameW, ParentWnd); +end; +{$ENDIF} + +end. -- cgit v1.2.3