GUITools.h 7.3 KB

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