/
GUITools.h
159 lines (150 loc) · 7.41 KB
/
GUITools.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
//---------------------------------------------------------------------------
#ifndef GUIToolsH
#define GUIToolsH
//---------------------------------------------------------------------------
// from shlobj.h
#define CSIDL_DESKTOP 0x0000 // <desktop>
#define CSIDL_SENDTO 0x0009 // <user name>\SendTo
#define CSIDL_DESKTOPDIRECTORY 0x0010 // <user name>\Desktop
#define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019 // All Users\Desktop
#define CSIDL_APPDATA 0x001a // <user name>\Application Data
#define CSIDL_PROGRAM_FILES 0x0026 // C:\Program Files
#define CSIDL_PERSONAL 0x0005 // My Documents
//---------------------------------------------------------------------------
#include <FileMasks.H>
#include <Tbx.hpp>
//---------------------------------------------------------------------------
class TSessionData;
//---------------------------------------------------------------------------
typedef void __fastcall (__closure* TProcessMessagesEvent)();
//---------------------------------------------------------------------------
bool __fastcall FindFile(UnicodeString & Path);
bool __fastcall FindTool(const UnicodeString & Name, UnicodeString & Path);
bool __fastcall ExecuteShell(const UnicodeString Path, const UnicodeString Params, bool ChangeWorkingDirectory = false);
bool __fastcall ExecuteShell(const UnicodeString Command);
bool __fastcall ExecuteShell(const UnicodeString Path, const UnicodeString Params,
HANDLE & Handle);
bool __fastcall ExecuteShellAndWait(HWND Handle, const UnicodeString Path,
const UnicodeString Params, TProcessMessagesEvent ProcessMessages);
bool __fastcall ExecuteShellAndWait(HWND Handle, const UnicodeString Command,
TProcessMessagesEvent ProcessMessages);
void __fastcall OpenSessionInPutty(const UnicodeString PuttyPath,
TSessionData * SessionData);
bool __fastcall SpecialFolderLocation(int PathID, UnicodeString & Path);
UnicodeString __fastcall GetPersonalFolder();
UnicodeString __fastcall GetDesktopFolder();
UnicodeString __fastcall UniqTempDir(const UnicodeString BaseDir,
const UnicodeString Identity, bool Mask = false);
bool __fastcall DeleteDirectory(const UnicodeString DirName);
UnicodeString __fastcall FormatDateTimeSpan(const UnicodeString TimeFormat, TDateTime DateTime);
void __fastcall AddSessionColorImage(TCustomImageList * ImageList, TColor Color, int MaskIndex);
void __fastcall SetSubmenu(TTBXCustomItem * Item);
typedef int __fastcall (*TCalculateWidth)(UnicodeString Text, void * Arg);
void __fastcall ApplyTabs(
UnicodeString & Text, wchar_t Padding,
TCalculateWidth CalculateWidth, void * CalculateWidthArg);
TPanel * __fastcall CreateLabelPanel(TPanel * Parent, const UnicodeString & Label);
void __fastcall SelectScaledImageList(TImageList * ImageList);
void __fastcall CopyDataModule(TDataModule * TargetModule, TDataModule * SourceModule);
void __fastcall CopyImageList(TImageList * TargetList, TImageList * SourceList);
void __fastcall LoadDialogImage(TImage * Image, const UnicodeString & ImageName);
int __fastcall DialogImageSize();
void __fastcall HideComponentsPanel(TForm * Form);
namespace Webbrowserex
{
class TWebBrowserEx;
}
using namespace Webbrowserex;
TWebBrowserEx * __fastcall CreateBrowserViewer(TPanel * Parent, const UnicodeString & LoadingLabel);
void __fastcall SetBrowserDesignModeOff(TWebBrowserEx * WebBrowser);
void __fastcall AddBrowserLinkHandler(TWebBrowserEx * WebBrowser,
const UnicodeString & Url, TNotifyEvent Handler);
void __fastcall NavigateBrowserToUrl(TWebBrowserEx * WebBrowser, const UnicodeString & Url);
TComponent * __fastcall FindComponentRecursively(TComponent * Root, const UnicodeString & Name);
//---------------------------------------------------------------------------
class TLocalCustomCommand : public TFileCustomCommand
{
public:
TLocalCustomCommand();
TLocalCustomCommand(
const TCustomCommandData & Data, const UnicodeString & RemotePath, const UnicodeString & LocalPath);
TLocalCustomCommand(
const TCustomCommandData & Data, const UnicodeString & RemotePath, const UnicodeString & LocalPath,
const UnicodeString & FileName, const UnicodeString & LocalFileName,
const UnicodeString & FileList);
virtual bool __fastcall IsFileCommand(const UnicodeString & Command);
bool __fastcall HasLocalFileName(const UnicodeString & Command);
protected:
virtual int __fastcall PatternLen(const UnicodeString & Command, int Index);
virtual bool __fastcall PatternReplacement(int Index, const UnicodeString & Pattern,
UnicodeString & Replacement, bool & Delimit);
virtual void __fastcall DelimitReplacement(UnicodeString & Replacement, wchar_t Quote);
private:
UnicodeString FLocalPath;
UnicodeString FLocalFileName;
};
//---------------------------------------------------------------------------
namespace Pngimagelist
{
class TPngImageList;
class TPngImageCollectionItem;
}
using namespace Pngimagelist;
//---------------------------------------------------------------------------
class TFrameAnimation
{
public:
__fastcall TFrameAnimation();
void __fastcall Init(TPaintBox * PaintBox, const UnicodeString & Name);
void __fastcall Start();
void __fastcall Stop();
private:
TPaintBox * FPaintBox;
TPngImageList * FImageList;
int FFirstFrame;
int FFirstLoopFrame;
int FLastFrame;
int FCurrentFrame;
DWORD FNextFrameTick;
TTimer * FTimer;
bool FPainted;
void __fastcall DoInit(TPaintBox * PaintBox, TPngImageList * ImageList, const UnicodeString & Name, bool Null);
void __fastcall PaintBoxPaint(TObject * Sender);
void __fastcall CalculateNextFrameTick();
TPngImageCollectionItem * __fastcall GetCurrentImage();
void __fastcall Animate();
void __fastcall Timer(TObject * Sender);
void __fastcall Repaint();
};
//---------------------------------------------------------------------------
class TScreenTipHintWindow : public THintWindow
{
public:
__fastcall TScreenTipHintWindow(TComponent * Owner);
virtual TRect __fastcall CalcHintRect(int MaxWidth, const UnicodeString AHint, void * AData);
virtual void __fastcall ActivateHintData(const TRect & Rect, const UnicodeString AHint, void * AData);
static void __fastcall CalcHintTextRect(TControl * Control, TCanvas * Canvas, TRect & Rect, const UnicodeString & Hint);
protected:
virtual void __fastcall Paint();
virtual void __fastcall Dispatch(void * AMessage);
private:
bool FParentPainting;
int FMargin;
UnicodeString FShortHint;
UnicodeString FLongHint;
TControl * FHintControl;
bool FHintPopup;
UnicodeString __fastcall GetLongHintIfAny(const UnicodeString & AHint);
static int __fastcall GetTextFlags(TControl * Control);
bool __fastcall IsHintPopup(TControl * HintControl, const UnicodeString & Hint);
bool __fastcall IsPathLabel(TControl * HintControl);
bool __fastcall UseBoldShortHint(TControl * HintControl);
int __fastcall GetMargin(TControl * HintControl, const UnicodeString & Hint);
TFont * __fastcall GetFont(TControl * HintControl, const UnicodeString & Hint);
TControl * __fastcall GetHintControl(void * Data);
};
//---------------------------------------------------------------------------
extern const UnicodeString PageantTool;
extern const UnicodeString PuttygenTool;
//---------------------------------------------------------------------------
#endif