richtextborderspage.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name: wx/richtext/richtextborderspage.h
  3. // Purpose: A border editing page for the wxRTC formatting dialog.
  4. // Author: Julian Smart
  5. // Modified by:
  6. // Created: 21/10/2010 11:34:24
  7. // RCS-ID:
  8. // Copyright: (c) Julian Smart
  9. // Licence:
  10. /////////////////////////////////////////////////////////////////////////////
  11. #ifndef _RICHTEXTBORDERSPAGE_H_
  12. #define _RICHTEXTBORDERSPAGE_H_
  13. /*!
  14. * Includes
  15. */
  16. #include "wx/richtext/richtextdialogpage.h"
  17. ////@begin includes
  18. #include "wx/notebook.h"
  19. #include "wx/statline.h"
  20. ////@end includes
  21. /*!
  22. * Forward declarations
  23. */
  24. class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextColourSwatchCtrl;
  25. class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextBorderPreviewCtrl;
  26. /*!
  27. * Control identifiers
  28. */
  29. ////@begin control identifiers
  30. #define SYMBOL_WXRICHTEXTBORDERSPAGE_STYLE wxTAB_TRAVERSAL
  31. #define SYMBOL_WXRICHTEXTBORDERSPAGE_TITLE wxEmptyString
  32. #define SYMBOL_WXRICHTEXTBORDERSPAGE_IDNAME ID_RICHTEXTBORDERSPAGE
  33. #define SYMBOL_WXRICHTEXTBORDERSPAGE_SIZE wxSize(400, 300)
  34. #define SYMBOL_WXRICHTEXTBORDERSPAGE_POSITION wxDefaultPosition
  35. ////@end control identifiers
  36. /*!
  37. * wxRichTextBordersPage class declaration
  38. */
  39. class WXDLLIMPEXP_RICHTEXT wxRichTextBordersPage: public wxRichTextDialogPage
  40. {
  41. DECLARE_DYNAMIC_CLASS( wxRichTextBordersPage )
  42. DECLARE_EVENT_TABLE()
  43. DECLARE_HELP_PROVISION()
  44. public:
  45. /// Constructors
  46. wxRichTextBordersPage();
  47. wxRichTextBordersPage( wxWindow* parent, wxWindowID id = SYMBOL_WXRICHTEXTBORDERSPAGE_IDNAME, const wxPoint& pos = SYMBOL_WXRICHTEXTBORDERSPAGE_POSITION, const wxSize& size = SYMBOL_WXRICHTEXTBORDERSPAGE_SIZE, long style = SYMBOL_WXRICHTEXTBORDERSPAGE_STYLE );
  48. /// Creation
  49. bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WXRICHTEXTBORDERSPAGE_IDNAME, const wxPoint& pos = SYMBOL_WXRICHTEXTBORDERSPAGE_POSITION, const wxSize& size = SYMBOL_WXRICHTEXTBORDERSPAGE_SIZE, long style = SYMBOL_WXRICHTEXTBORDERSPAGE_STYLE );
  50. /// Destructor
  51. ~wxRichTextBordersPage();
  52. /// Initialises member variables
  53. void Init();
  54. /// Creates the controls and sizers
  55. void CreateControls();
  56. /// Gets the attributes from the formatting dialog
  57. wxRichTextAttr* GetAttributes();
  58. /// Data transfer
  59. virtual bool TransferDataToWindow();
  60. virtual bool TransferDataFromWindow();
  61. /// Updates the synchronization checkboxes to reflect the state of the attributes
  62. void UpdateSyncControls();
  63. /// Updates the preview
  64. void OnCommand(wxCommandEvent& event);
  65. /// Fill style combo
  66. virtual void FillStyleComboBox(wxComboBox* styleComboBox);
  67. /// Set the border controls
  68. static void SetBorderValue(wxTextAttrBorder& border, wxTextCtrl* widthValueCtrl, wxComboBox* widthUnitsCtrl, wxCheckBox* checkBox,
  69. wxComboBox* styleCtrl, wxRichTextColourSwatchCtrl* colourCtrl, const wxArrayInt& borderStyles);
  70. /// Get data from the border controls
  71. static void GetBorderValue(wxTextAttrBorder& border, wxTextCtrl* widthValueCtrl, wxComboBox* widthUnitsCtrl, wxCheckBox* checkBox,
  72. wxComboBox* styleCtrl, wxRichTextColourSwatchCtrl* colourCtrl, const wxArrayInt& borderStyles);
  73. ////@begin wxRichTextBordersPage event handler declarations
  74. /// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXT_BORDER_LEFT_CHECKBOX
  75. void OnRichtextBorderCheckboxClick( wxCommandEvent& event );
  76. /// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXT_BORDER_LEFT
  77. void OnRichtextBorderLeftValueTextUpdated( wxCommandEvent& event );
  78. /// wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_LEFT
  79. void OnRichtextBorderLeftUpdate( wxUpdateUIEvent& event );
  80. /// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXT_BORDER_LEFT_UNITS
  81. void OnRichtextBorderLeftUnitsSelected( wxCommandEvent& event );
  82. /// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXT_BORDER_LEFT_STYLE
  83. void OnRichtextBorderLeftStyleSelected( wxCommandEvent& event );
  84. /// wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_RIGHT_CHECKBOX
  85. void OnRichtextBorderOtherCheckboxUpdate( wxUpdateUIEvent& event );
  86. /// wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_RIGHT
  87. void OnRichtextBorderRightUpdate( wxUpdateUIEvent& event );
  88. /// wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_TOP
  89. void OnRichtextBorderTopUpdate( wxUpdateUIEvent& event );
  90. /// wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_BOTTOM
  91. void OnRichtextBorderBottomUpdate( wxUpdateUIEvent& event );
  92. /// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXT_BORDER_SYNCHRONIZE
  93. void OnRichtextBorderSynchronizeClick( wxCommandEvent& event );
  94. /// wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_SYNCHRONIZE
  95. void OnRichtextBorderSynchronizeUpdate( wxUpdateUIEvent& event );
  96. /// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXT_OUTLINE_LEFT
  97. void OnRichtextOutlineLeftTextUpdated( wxCommandEvent& event );
  98. /// wxEVT_UPDATE_UI event handler for ID_RICHTEXT_OUTLINE_LEFT
  99. void OnRichtextOutlineLeftUpdate( wxUpdateUIEvent& event );
  100. /// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXT_OUTLINE_LEFT_UNITS
  101. void OnRichtextOutlineLeftUnitsSelected( wxCommandEvent& event );
  102. /// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXT_OUTLINE_LEFT_STYLE
  103. void OnRichtextOutlineLeftStyleSelected( wxCommandEvent& event );
  104. /// wxEVT_UPDATE_UI event handler for ID_RICHTEXT_OUTLINE_RIGHT_CHECKBOX
  105. void OnRichtextOutlineOtherCheckboxUpdate( wxUpdateUIEvent& event );
  106. /// wxEVT_UPDATE_UI event handler for ID_RICHTEXT_OUTLINE_RIGHT
  107. void OnRichtextOutlineRightUpdate( wxUpdateUIEvent& event );
  108. /// wxEVT_UPDATE_UI event handler for ID_RICHTEXT_OUTLINE_TOP
  109. void OnRichtextOutlineTopUpdate( wxUpdateUIEvent& event );
  110. /// wxEVT_UPDATE_UI event handler for ID_RICHTEXT_OUTLINE_BOTTOM
  111. void OnRichtextOutlineBottomUpdate( wxUpdateUIEvent& event );
  112. /// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXT_OUTLINE_SYNCHRONIZE
  113. void OnRichtextOutlineSynchronizeClick( wxCommandEvent& event );
  114. /// wxEVT_UPDATE_UI event handler for ID_RICHTEXT_OUTLINE_SYNCHRONIZE
  115. void OnRichtextOutlineSynchronizeUpdate( wxUpdateUIEvent& event );
  116. ////@end wxRichTextBordersPage event handler declarations
  117. ////@begin wxRichTextBordersPage member function declarations
  118. /// Retrieves bitmap resources
  119. wxBitmap GetBitmapResource( const wxString& name );
  120. /// Retrieves icon resources
  121. wxIcon GetIconResource( const wxString& name );
  122. ////@end wxRichTextBordersPage member function declarations
  123. /// Should we show tooltips?
  124. static bool ShowToolTips();
  125. ////@begin wxRichTextBordersPage member variables
  126. wxCheckBox* m_leftBorderCheckbox;
  127. wxTextCtrl* m_leftBorderWidth;
  128. wxComboBox* m_leftBorderWidthUnits;
  129. wxComboBox* m_leftBorderStyle;
  130. wxRichTextColourSwatchCtrl* m_leftBorderColour;
  131. wxCheckBox* m_rightBorderCheckbox;
  132. wxTextCtrl* m_rightBorderWidth;
  133. wxComboBox* m_rightBorderWidthUnits;
  134. wxComboBox* m_rightBorderStyle;
  135. wxRichTextColourSwatchCtrl* m_rightBorderColour;
  136. wxCheckBox* m_topBorderCheckbox;
  137. wxTextCtrl* m_topBorderWidth;
  138. wxComboBox* m_topBorderWidthUnits;
  139. wxComboBox* m_topBorderStyle;
  140. wxRichTextColourSwatchCtrl* m_topBorderColour;
  141. wxCheckBox* m_bottomBorderCheckbox;
  142. wxTextCtrl* m_bottomBorderWidth;
  143. wxComboBox* m_bottomBorderWidthUnits;
  144. wxComboBox* m_bottomBorderStyle;
  145. wxRichTextColourSwatchCtrl* m_bottomBorderColour;
  146. wxCheckBox* m_borderSyncCtrl;
  147. wxCheckBox* m_leftOutlineCheckbox;
  148. wxTextCtrl* m_leftOutlineWidth;
  149. wxComboBox* m_leftOutlineWidthUnits;
  150. wxComboBox* m_leftOutlineStyle;
  151. wxRichTextColourSwatchCtrl* m_leftOutlineColour;
  152. wxCheckBox* m_rightOutlineCheckbox;
  153. wxTextCtrl* m_rightOutlineWidth;
  154. wxComboBox* m_rightOutlineWidthUnits;
  155. wxComboBox* m_rightOutlineStyle;
  156. wxRichTextColourSwatchCtrl* m_rightOutlineColour;
  157. wxCheckBox* m_topOutlineCheckbox;
  158. wxTextCtrl* m_topOutlineWidth;
  159. wxComboBox* m_topOutlineWidthUnits;
  160. wxComboBox* m_topOutlineStyle;
  161. wxRichTextColourSwatchCtrl* m_topOutlineColour;
  162. wxCheckBox* m_bottomOutlineCheckbox;
  163. wxTextCtrl* m_bottomOutlineWidth;
  164. wxComboBox* m_bottomOutlineWidthUnits;
  165. wxComboBox* m_bottomOutlineStyle;
  166. wxRichTextColourSwatchCtrl* m_bottomOutlineColour;
  167. wxCheckBox* m_outlineSyncCtrl;
  168. wxRichTextBorderPreviewCtrl* m_borderPreviewCtrl;
  169. /// Control identifiers
  170. enum {
  171. ID_RICHTEXTBORDERSPAGE = 10800,
  172. ID_RICHTEXTBORDERSPAGE_NOTEBOOK = 10801,
  173. ID_RICHTEXTBORDERSPAGE_BORDERS = 10802,
  174. ID_RICHTEXT_BORDER_LEFT_CHECKBOX = 10803,
  175. ID_RICHTEXT_BORDER_LEFT = 10804,
  176. ID_RICHTEXT_BORDER_LEFT_UNITS = 10805,
  177. ID_RICHTEXT_BORDER_LEFT_STYLE = 10806,
  178. ID_RICHTEXT_BORDER_LEFT_COLOUR = 10807,
  179. ID_RICHTEXT_BORDER_RIGHT_CHECKBOX = 10808,
  180. ID_RICHTEXT_BORDER_RIGHT = 10809,
  181. ID_RICHTEXT_BORDER_RIGHT_UNITS = 10810,
  182. ID_RICHTEXT_BORDER_RIGHT_STYLE = 10811,
  183. ID_RICHTEXT_BORDER_RIGHT_COLOUR = 10812,
  184. ID_RICHTEXT_BORDER_TOP_CHECKBOX = 10813,
  185. ID_RICHTEXT_BORDER_TOP = 10814,
  186. ID_RICHTEXT_BORDER_TOP_UNITS = 10815,
  187. ID_RICHTEXT_BORDER_TOP_STYLE = 10816,
  188. ID_RICHTEXT_BORDER_TOP_COLOUR = 10817,
  189. ID_RICHTEXT_BORDER_BOTTOM_CHECKBOX = 10818,
  190. ID_RICHTEXT_BORDER_BOTTOM = 10819,
  191. ID_RICHTEXT_BORDER_BOTTOM_UNITS = 10820,
  192. ID_RICHTEXT_BORDER_BOTTOM_STYLE = 10821,
  193. ID_RICHTEXT_BORDER_BOTTOM_COLOUR = 10822,
  194. ID_RICHTEXT_BORDER_SYNCHRONIZE = 10845,
  195. ID_RICHTEXTBORDERSPAGE_OUTLINE = 10823,
  196. ID_RICHTEXT_OUTLINE_LEFT_CHECKBOX = 10824,
  197. ID_RICHTEXT_OUTLINE_LEFT = 10825,
  198. ID_RICHTEXT_OUTLINE_LEFT_UNITS = 10826,
  199. ID_RICHTEXT_OUTLINE_LEFT_STYLE = 10827,
  200. ID_RICHTEXT_OUTLINE_LEFT_COLOUR = 10828,
  201. ID_RICHTEXT_OUTLINE_RIGHT_CHECKBOX = 10829,
  202. ID_RICHTEXT_OUTLINE_RIGHT = 10830,
  203. ID_RICHTEXT_OUTLINE_RIGHT_UNITS = 10831,
  204. ID_RICHTEXT_OUTLINE_RIGHT_STYLE = 10832,
  205. ID_RICHTEXT_OUTLINE_RIGHT_COLOUR = 10833,
  206. ID_RICHTEXT_OUTLINE_TOP_CHECKBOX = 10834,
  207. ID_RICHTEXT_OUTLINE_TOP = 10835,
  208. ID_RICHTEXT_OUTLINE_TOP_UNITS = 10836,
  209. ID_RICHTEXT_OUTLINE_TOP_STYLE = 10837,
  210. ID_RICHTEXT_OUTLINE_TOP_COLOUR = 10838,
  211. ID_RICHTEXT_OUTLINE_BOTTOM_CHECKBOX = 10839,
  212. ID_RICHTEXT_OUTLINE_BOTTOM = 10840,
  213. ID_RICHTEXT_OUTLINE_BOTTOM_UNITS = 10841,
  214. ID_RICHTEXT_OUTLINE_BOTTOM_STYLE = 10842,
  215. ID_RICHTEXT_OUTLINE_BOTTOM_COLOUR = 10843,
  216. ID_RICHTEXT_OUTLINE_SYNCHRONIZE = 10846,
  217. ID_RICHTEXT_BORDER_PREVIEW = 10844
  218. };
  219. ////@end wxRichTextBordersPage member variables
  220. wxArrayInt m_borderStyles;
  221. wxArrayString m_borderStyleNames;
  222. bool m_ignoreUpdates;
  223. };
  224. class WXDLLIMPEXP_RICHTEXT wxRichTextBorderPreviewCtrl : public wxWindow
  225. {
  226. public:
  227. wxRichTextBorderPreviewCtrl(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& sz = wxDefaultSize, long style = 0);
  228. void SetAttributes(wxRichTextAttr* attr) { m_attributes = attr; }
  229. wxRichTextAttr* GetAttributes() const { return m_attributes; }
  230. private:
  231. wxRichTextAttr* m_attributes;
  232. void OnPaint(wxPaintEvent& event);
  233. DECLARE_EVENT_TABLE()
  234. };
  235. #endif
  236. // _RICHTEXTBORDERSPAGE_H_