PageRenderTime 52ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/ExtLibs/wxWidgets/src/richtext/richtextborderspage.cpp

https://bitbucket.org/lennonchan/cafu
C++ | 912 lines | 600 code | 212 blank | 100 comment | 64 complexity | 7e6b310b017b27281e8061f53c76db48 MD5 | raw file
  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name: src/richtext/richtextborderspage.cpp
  3. // Purpose:
  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. ////@begin includes
  12. #include "wx/imaglist.h"
  13. ////@end includes
  14. #include "wx/richtext/richtextborderspage.h"
  15. ////@begin XPM images
  16. ////@end XPM images
  17. /*!
  18. * wxRichTextBordersPage type definition
  19. */
  20. IMPLEMENT_DYNAMIC_CLASS( wxRichTextBordersPage, wxRichTextDialogPage )
  21. /*!
  22. * wxRichTextBordersPage event table definition
  23. */
  24. BEGIN_EVENT_TABLE( wxRichTextBordersPage, wxRichTextDialogPage )
  25. EVT_CHECKBOX(wxID_ANY, wxRichTextBordersPage::OnCommand)
  26. EVT_TEXT(wxID_ANY, wxRichTextBordersPage::OnCommand)
  27. EVT_TEXT_ENTER(wxID_ANY, wxRichTextBordersPage::OnCommand)
  28. EVT_COMBOBOX(wxID_ANY, wxRichTextBordersPage::OnCommand)
  29. EVT_BUTTON(wxID_ANY, wxRichTextBordersPage::OnCommand)
  30. ////@begin wxRichTextBordersPage event table entries
  31. EVT_CHECKBOX( ID_RICHTEXT_BORDER_LEFT_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
  32. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_LEFT, wxRichTextBordersPage::OnRichtextBorderLeftUpdate )
  33. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_LEFT_UNITS, wxRichTextBordersPage::OnRichtextBorderLeftUpdate )
  34. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_LEFT_STYLE, wxRichTextBordersPage::OnRichtextBorderLeftUpdate )
  35. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_LEFT_COLOUR, wxRichTextBordersPage::OnRichtextBorderLeftUpdate )
  36. EVT_CHECKBOX( ID_RICHTEXT_BORDER_RIGHT_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
  37. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_RIGHT, wxRichTextBordersPage::OnRichtextBorderRightUpdate )
  38. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_RIGHT_UNITS, wxRichTextBordersPage::OnRichtextBorderRightUpdate )
  39. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_RIGHT_STYLE, wxRichTextBordersPage::OnRichtextBorderRightUpdate )
  40. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_RIGHT_COLOUR, wxRichTextBordersPage::OnRichtextBorderRightUpdate )
  41. EVT_CHECKBOX( ID_RICHTEXT_BORDER_TOP_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
  42. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_TOP, wxRichTextBordersPage::OnRichtextBorderTopUpdate )
  43. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_TOP_UNITS, wxRichTextBordersPage::OnRichtextBorderTopUpdate )
  44. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_TOP_STYLE, wxRichTextBordersPage::OnRichtextBorderTopUpdate )
  45. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_TOP_COLOUR, wxRichTextBordersPage::OnRichtextBorderTopUpdate )
  46. EVT_CHECKBOX( ID_RICHTEXT_BORDER_BOTTOM_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
  47. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_BOTTOM, wxRichTextBordersPage::OnRichtextBorderBottomUpdate )
  48. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_BOTTOM_UNITS, wxRichTextBordersPage::OnRichtextBorderBottomUpdate )
  49. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_BOTTOM_STYLE, wxRichTextBordersPage::OnRichtextBorderBottomUpdate )
  50. EVT_UPDATE_UI( ID_RICHTEXT_BORDER_BOTTOM_COLOUR, wxRichTextBordersPage::OnRichtextBorderBottomUpdate )
  51. EVT_CHECKBOX( ID_RICHTEXT_OUTLINE_LEFT_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
  52. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_LEFT, wxRichTextBordersPage::OnRichtextOutlineLeftUpdate )
  53. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_LEFT_UNITS, wxRichTextBordersPage::OnRichtextOutlineLeftUpdate )
  54. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_LEFT_STYLE, wxRichTextBordersPage::OnRichtextOutlineLeftUpdate )
  55. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_LEFT_COLOUR, wxRichTextBordersPage::OnRichtextOutlineLeftUpdate )
  56. EVT_CHECKBOX( ID_RICHTEXT_OUTLINE_RIGHT_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
  57. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_RIGHT, wxRichTextBordersPage::OnRichtextOutlineRightUpdate )
  58. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_RIGHT_UNITS, wxRichTextBordersPage::OnRichtextOutlineRightUpdate )
  59. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_RIGHT_STYLE, wxRichTextBordersPage::OnRichtextOutlineRightUpdate )
  60. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_RIGHT_COLOUR, wxRichTextBordersPage::OnRichtextOutlineRightUpdate )
  61. EVT_CHECKBOX( ID_RICHTEXT_OUTLINE_TOP_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
  62. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_TOP, wxRichTextBordersPage::OnRichtextOutlineTopUpdate )
  63. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_TOP_UNITS, wxRichTextBordersPage::OnRichtextOutlineTopUpdate )
  64. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_TOP_STYLE, wxRichTextBordersPage::OnRichtextOutlineTopUpdate )
  65. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_TOP_COLOUR, wxRichTextBordersPage::OnRichtextOutlineTopUpdate )
  66. EVT_CHECKBOX( ID_RICHTEXT_OUTLINE_BOTTOM_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
  67. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_BOTTOM, wxRichTextBordersPage::OnRichtextOutlineBottomUpdate )
  68. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_BOTTOM_UNITS, wxRichTextBordersPage::OnRichtextOutlineBottomUpdate )
  69. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_BOTTOM_STYLE, wxRichTextBordersPage::OnRichtextOutlineBottomUpdate )
  70. EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_BOTTOM_COLOUR, wxRichTextBordersPage::OnRichtextOutlineBottomUpdate )
  71. ////@end wxRichTextBordersPage event table entries
  72. END_EVENT_TABLE()
  73. IMPLEMENT_HELP_PROVISION(wxRichTextBordersPage)
  74. /*!
  75. * wxRichTextBordersPage constructors
  76. */
  77. wxRichTextBordersPage::wxRichTextBordersPage()
  78. {
  79. Init();
  80. }
  81. wxRichTextBordersPage::wxRichTextBordersPage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
  82. {
  83. Init();
  84. Create(parent, id, pos, size, style);
  85. }
  86. /*!
  87. * wxRichTextBordersPage creator
  88. */
  89. bool wxRichTextBordersPage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
  90. {
  91. ////@begin wxRichTextBordersPage creation
  92. SetExtraStyle(wxWS_EX_VALIDATE_RECURSIVELY);
  93. wxRichTextDialogPage::Create( parent, id, pos, size, style );
  94. CreateControls();
  95. if (GetSizer())
  96. {
  97. GetSizer()->SetSizeHints(this);
  98. }
  99. Centre();
  100. ////@end wxRichTextBordersPage creation
  101. return true;
  102. }
  103. /*!
  104. * wxRichTextBordersPage destructor
  105. */
  106. wxRichTextBordersPage::~wxRichTextBordersPage()
  107. {
  108. ////@begin wxRichTextBordersPage destruction
  109. ////@end wxRichTextBordersPage destruction
  110. }
  111. /*!
  112. * Member initialisation
  113. */
  114. void wxRichTextBordersPage::Init()
  115. {
  116. m_ignoreUpdates = false;
  117. ////@begin wxRichTextBordersPage member initialisation
  118. m_leftBorderCheckbox = NULL;
  119. m_leftBorderWidth = NULL;
  120. m_leftBorderWidthUnits = NULL;
  121. m_leftBorderStyle = NULL;
  122. m_leftBorderColour = NULL;
  123. m_rightBorderCheckbox = NULL;
  124. m_rightBorderWidth = NULL;
  125. m_rightBorderWidthUnits = NULL;
  126. m_rightBorderStyle = NULL;
  127. m_rightBorderColour = NULL;
  128. m_topBorderCheckbox = NULL;
  129. m_topBorderWidth = NULL;
  130. m_topBorderWidthUnits = NULL;
  131. m_topBorderStyle = NULL;
  132. m_topBorderColour = NULL;
  133. m_bottomBorderCheckbox = NULL;
  134. m_bottomBorderWidth = NULL;
  135. m_bottomBorderWidthUnits = NULL;
  136. m_bottomBorderStyle = NULL;
  137. m_bottomBorderColour = NULL;
  138. m_leftOutlineCheckbox = NULL;
  139. m_leftOutlineWidth = NULL;
  140. m_leftOutlineWidthUnits = NULL;
  141. m_leftOutlineStyle = NULL;
  142. m_leftOutlineColour = NULL;
  143. m_rightOutlineCheckbox = NULL;
  144. m_rightOutlineWidth = NULL;
  145. m_rightOutlineWidthUnits = NULL;
  146. m_rightOutlineStyle = NULL;
  147. m_rightOutlineColour = NULL;
  148. m_topOutlineCheckbox = NULL;
  149. m_topOutlineWidth = NULL;
  150. m_topOutlineWidthUnits = NULL;
  151. m_topOutlineStyle = NULL;
  152. m_topOutlineColour = NULL;
  153. m_bottomOutlineCheckbox = NULL;
  154. m_bottomOutlineWidth = NULL;
  155. m_bottomOutlineWidthUnits = NULL;
  156. m_bottomOutlineStyle = NULL;
  157. m_bottomOutlineColour = NULL;
  158. m_borderPreviewCtrl = NULL;
  159. ////@end wxRichTextBordersPage member initialisation
  160. }
  161. /*!
  162. * Control creation for wxRichTextBordersPage
  163. */
  164. void wxRichTextBordersPage::CreateControls()
  165. {
  166. ////@begin wxRichTextBordersPage content construction
  167. wxRichTextBordersPage* itemRichTextDialogPage1 = this;
  168. wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
  169. itemRichTextDialogPage1->SetSizer(itemBoxSizer2);
  170. wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
  171. itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
  172. wxNotebook* itemNotebook4 = new wxNotebook( itemRichTextDialogPage1, ID_RICHTEXTBORDERSPAGE_NOTEBOOK, wxDefaultPosition, wxDefaultSize, wxBK_DEFAULT );
  173. wxPanel* itemPanel5 = new wxPanel( itemNotebook4, ID_RICHTEXTBORDERSPAGE_BORDERS, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
  174. itemPanel5->SetExtraStyle(wxWS_EX_VALIDATE_RECURSIVELY);
  175. wxBoxSizer* itemBoxSizer6 = new wxBoxSizer(wxVERTICAL);
  176. itemPanel5->SetSizer(itemBoxSizer6);
  177. wxBoxSizer* itemBoxSizer7 = new wxBoxSizer(wxVERTICAL);
  178. itemBoxSizer6->Add(itemBoxSizer7, 0, wxGROW|wxALL, 5);
  179. wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxHORIZONTAL);
  180. itemBoxSizer7->Add(itemBoxSizer8, 0, wxGROW, 5);
  181. wxStaticText* itemStaticText9 = new wxStaticText( itemPanel5, wxID_STATIC, _("Border"), wxDefaultPosition, wxDefaultSize, 0 );
  182. itemStaticText9->SetFont(wxFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetPointSize(), wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetFamily(), wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetStyle(), wxBOLD, false, wxT("")));
  183. itemBoxSizer8->Add(itemStaticText9, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  184. wxStaticLine* itemStaticLine10 = new wxStaticLine( itemPanel5, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
  185. itemBoxSizer8->Add(itemStaticLine10, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  186. wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxHORIZONTAL);
  187. itemBoxSizer7->Add(itemBoxSizer11, 0, wxGROW, 5);
  188. itemBoxSizer11->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  189. wxFlexGridSizer* itemFlexGridSizer13 = new wxFlexGridSizer(0, 2, 0, 0);
  190. itemBoxSizer11->Add(itemFlexGridSizer13, 0, wxGROW, 5);
  191. m_leftBorderCheckbox = new wxCheckBox( itemPanel5, ID_RICHTEXT_BORDER_LEFT_CHECKBOX, _("&Left:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
  192. m_leftBorderCheckbox->SetValue(false);
  193. itemFlexGridSizer13->Add(m_leftBorderCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
  194. wxBoxSizer* itemBoxSizer15 = new wxBoxSizer(wxHORIZONTAL);
  195. itemFlexGridSizer13->Add(itemBoxSizer15, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
  196. m_leftBorderWidth = new wxTextCtrl( itemPanel5, ID_RICHTEXT_BORDER_LEFT, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
  197. itemBoxSizer15->Add(m_leftBorderWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
  198. wxArrayString m_leftBorderWidthUnitsStrings;
  199. m_leftBorderWidthUnitsStrings.Add(_("px"));
  200. m_leftBorderWidthUnitsStrings.Add(_("cm"));
  201. m_leftBorderWidthUnits = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_LEFT_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_leftBorderWidthUnitsStrings, wxCB_READONLY );
  202. m_leftBorderWidthUnits->SetStringSelection(_("px"));
  203. m_leftBorderWidthUnits->SetHelpText(_("Units for the left border width."));
  204. if (wxRichTextBordersPage::ShowToolTips())
  205. m_leftBorderWidthUnits->SetToolTip(_("Units for the left border width."));
  206. itemBoxSizer15->Add(m_leftBorderWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  207. itemBoxSizer15->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  208. wxArrayString m_leftBorderStyleStrings;
  209. m_leftBorderStyle = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_LEFT_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_leftBorderStyleStrings, wxCB_READONLY );
  210. itemBoxSizer15->Add(m_leftBorderStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  211. itemBoxSizer15->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  212. m_leftBorderColour = new wxRichTextColourSwatchCtrl( itemPanel5, ID_RICHTEXT_BORDER_LEFT_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
  213. itemBoxSizer15->Add(m_leftBorderColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  214. m_rightBorderCheckbox = new wxCheckBox( itemPanel5, ID_RICHTEXT_BORDER_RIGHT_CHECKBOX, _("&Right:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
  215. m_rightBorderCheckbox->SetValue(false);
  216. itemFlexGridSizer13->Add(m_rightBorderCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
  217. wxBoxSizer* itemBoxSizer23 = new wxBoxSizer(wxHORIZONTAL);
  218. itemFlexGridSizer13->Add(itemBoxSizer23, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
  219. m_rightBorderWidth = new wxTextCtrl( itemPanel5, ID_RICHTEXT_BORDER_RIGHT, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
  220. itemBoxSizer23->Add(m_rightBorderWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
  221. wxArrayString m_rightBorderWidthUnitsStrings;
  222. m_rightBorderWidthUnitsStrings.Add(_("px"));
  223. m_rightBorderWidthUnitsStrings.Add(_("cm"));
  224. m_rightBorderWidthUnits = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_RIGHT_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_rightBorderWidthUnitsStrings, wxCB_READONLY );
  225. m_rightBorderWidthUnits->SetStringSelection(_("px"));
  226. m_rightBorderWidthUnits->SetHelpText(_("Units for the right border width."));
  227. if (wxRichTextBordersPage::ShowToolTips())
  228. m_rightBorderWidthUnits->SetToolTip(_("Units for the right border width."));
  229. itemBoxSizer23->Add(m_rightBorderWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  230. itemBoxSizer23->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  231. wxArrayString m_rightBorderStyleStrings;
  232. m_rightBorderStyle = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_RIGHT_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_rightBorderStyleStrings, wxCB_READONLY );
  233. itemBoxSizer23->Add(m_rightBorderStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  234. itemBoxSizer23->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  235. m_rightBorderColour = new wxRichTextColourSwatchCtrl( itemPanel5, ID_RICHTEXT_BORDER_RIGHT_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
  236. itemBoxSizer23->Add(m_rightBorderColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  237. m_topBorderCheckbox = new wxCheckBox( itemPanel5, ID_RICHTEXT_BORDER_TOP_CHECKBOX, _("&Top:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
  238. m_topBorderCheckbox->SetValue(false);
  239. itemFlexGridSizer13->Add(m_topBorderCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
  240. wxBoxSizer* itemBoxSizer31 = new wxBoxSizer(wxHORIZONTAL);
  241. itemFlexGridSizer13->Add(itemBoxSizer31, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
  242. m_topBorderWidth = new wxTextCtrl( itemPanel5, ID_RICHTEXT_BORDER_TOP, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
  243. itemBoxSizer31->Add(m_topBorderWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
  244. wxArrayString m_topBorderWidthUnitsStrings;
  245. m_topBorderWidthUnitsStrings.Add(_("px"));
  246. m_topBorderWidthUnitsStrings.Add(_("cm"));
  247. m_topBorderWidthUnits = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_TOP_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_topBorderWidthUnitsStrings, wxCB_READONLY );
  248. m_topBorderWidthUnits->SetStringSelection(_("px"));
  249. m_topBorderWidthUnits->SetHelpText(_("Units for the top border width."));
  250. if (wxRichTextBordersPage::ShowToolTips())
  251. m_topBorderWidthUnits->SetToolTip(_("Units for the top border width."));
  252. itemBoxSizer31->Add(m_topBorderWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  253. itemBoxSizer31->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  254. wxArrayString m_topBorderStyleStrings;
  255. m_topBorderStyle = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_TOP_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_topBorderStyleStrings, wxCB_READONLY );
  256. itemBoxSizer31->Add(m_topBorderStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  257. itemBoxSizer31->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  258. m_topBorderColour = new wxRichTextColourSwatchCtrl( itemPanel5, ID_RICHTEXT_BORDER_TOP_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
  259. itemBoxSizer31->Add(m_topBorderColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  260. m_bottomBorderCheckbox = new wxCheckBox( itemPanel5, ID_RICHTEXT_BORDER_BOTTOM_CHECKBOX, _("&Bottom:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
  261. m_bottomBorderCheckbox->SetValue(false);
  262. itemFlexGridSizer13->Add(m_bottomBorderCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
  263. wxBoxSizer* itemBoxSizer39 = new wxBoxSizer(wxHORIZONTAL);
  264. itemFlexGridSizer13->Add(itemBoxSizer39, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
  265. m_bottomBorderWidth = new wxTextCtrl( itemPanel5, ID_RICHTEXT_BORDER_BOTTOM, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
  266. itemBoxSizer39->Add(m_bottomBorderWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
  267. wxArrayString m_bottomBorderWidthUnitsStrings;
  268. m_bottomBorderWidthUnitsStrings.Add(_("px"));
  269. m_bottomBorderWidthUnitsStrings.Add(_("cm"));
  270. m_bottomBorderWidthUnits = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_BOTTOM_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_bottomBorderWidthUnitsStrings, wxCB_READONLY );
  271. m_bottomBorderWidthUnits->SetStringSelection(_("px"));
  272. m_bottomBorderWidthUnits->SetHelpText(_("Units for the bottom border width."));
  273. if (wxRichTextBordersPage::ShowToolTips())
  274. m_bottomBorderWidthUnits->SetToolTip(_("Units for the bottom border width."));
  275. itemBoxSizer39->Add(m_bottomBorderWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  276. itemBoxSizer39->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  277. wxArrayString m_bottomBorderStyleStrings;
  278. m_bottomBorderStyle = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_BOTTOM_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_bottomBorderStyleStrings, wxCB_READONLY );
  279. itemBoxSizer39->Add(m_bottomBorderStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  280. itemBoxSizer39->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  281. m_bottomBorderColour = new wxRichTextColourSwatchCtrl( itemPanel5, ID_RICHTEXT_BORDER_BOTTOM_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
  282. itemBoxSizer39->Add(m_bottomBorderColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  283. itemNotebook4->AddPage(itemPanel5, _("Border"));
  284. wxPanel* itemPanel46 = new wxPanel( itemNotebook4, ID_RICHTEXTBORDERSPAGE_OUTLINE, wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxTAB_TRAVERSAL );
  285. itemPanel46->SetExtraStyle(wxWS_EX_VALIDATE_RECURSIVELY);
  286. wxBoxSizer* itemBoxSizer47 = new wxBoxSizer(wxVERTICAL);
  287. itemPanel46->SetSizer(itemBoxSizer47);
  288. wxBoxSizer* itemBoxSizer48 = new wxBoxSizer(wxVERTICAL);
  289. itemBoxSizer47->Add(itemBoxSizer48, 0, wxGROW|wxALL, 5);
  290. wxBoxSizer* itemBoxSizer49 = new wxBoxSizer(wxHORIZONTAL);
  291. itemBoxSizer48->Add(itemBoxSizer49, 0, wxGROW, 5);
  292. wxStaticText* itemStaticText50 = new wxStaticText( itemPanel46, wxID_STATIC, _("Outline"), wxDefaultPosition, wxDefaultSize, 0 );
  293. itemStaticText50->SetFont(wxFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetPointSize(), wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetFamily(), wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetStyle(), wxBOLD, false, wxT("")));
  294. itemBoxSizer49->Add(itemStaticText50, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  295. wxStaticLine* itemStaticLine51 = new wxStaticLine( itemPanel46, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
  296. itemBoxSizer49->Add(itemStaticLine51, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  297. wxBoxSizer* itemBoxSizer52 = new wxBoxSizer(wxHORIZONTAL);
  298. itemBoxSizer48->Add(itemBoxSizer52, 0, wxGROW, 5);
  299. itemBoxSizer52->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  300. wxFlexGridSizer* itemFlexGridSizer54 = new wxFlexGridSizer(0, 2, 0, 0);
  301. itemBoxSizer52->Add(itemFlexGridSizer54, 0, wxGROW, 5);
  302. m_leftOutlineCheckbox = new wxCheckBox( itemPanel46, ID_RICHTEXT_OUTLINE_LEFT_CHECKBOX, _("&Left:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
  303. m_leftOutlineCheckbox->SetValue(false);
  304. itemFlexGridSizer54->Add(m_leftOutlineCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
  305. wxBoxSizer* itemBoxSizer56 = new wxBoxSizer(wxHORIZONTAL);
  306. itemFlexGridSizer54->Add(itemBoxSizer56, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
  307. m_leftOutlineWidth = new wxTextCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_LEFT, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
  308. itemBoxSizer56->Add(m_leftOutlineWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
  309. wxArrayString m_leftOutlineWidthUnitsStrings;
  310. m_leftOutlineWidthUnitsStrings.Add(_("px"));
  311. m_leftOutlineWidthUnitsStrings.Add(_("cm"));
  312. m_leftOutlineWidthUnits = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_LEFT_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_leftOutlineWidthUnitsStrings, wxCB_READONLY );
  313. m_leftOutlineWidthUnits->SetStringSelection(_("px"));
  314. m_leftOutlineWidthUnits->SetHelpText(_("Units for the left outline width."));
  315. if (wxRichTextBordersPage::ShowToolTips())
  316. m_leftOutlineWidthUnits->SetToolTip(_("Units for the left outline width."));
  317. itemBoxSizer56->Add(m_leftOutlineWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  318. itemBoxSizer56->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  319. wxArrayString m_leftOutlineStyleStrings;
  320. m_leftOutlineStyle = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_LEFT_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_leftOutlineStyleStrings, wxCB_READONLY );
  321. itemBoxSizer56->Add(m_leftOutlineStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  322. itemBoxSizer56->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  323. m_leftOutlineColour = new wxRichTextColourSwatchCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_LEFT_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
  324. itemBoxSizer56->Add(m_leftOutlineColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  325. m_rightOutlineCheckbox = new wxCheckBox( itemPanel46, ID_RICHTEXT_OUTLINE_RIGHT_CHECKBOX, _("&Right:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
  326. m_rightOutlineCheckbox->SetValue(false);
  327. itemFlexGridSizer54->Add(m_rightOutlineCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
  328. wxBoxSizer* itemBoxSizer64 = new wxBoxSizer(wxHORIZONTAL);
  329. itemFlexGridSizer54->Add(itemBoxSizer64, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
  330. m_rightOutlineWidth = new wxTextCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_RIGHT, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
  331. itemBoxSizer64->Add(m_rightOutlineWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
  332. wxArrayString m_rightOutlineWidthUnitsStrings;
  333. m_rightOutlineWidthUnitsStrings.Add(_("px"));
  334. m_rightOutlineWidthUnitsStrings.Add(_("cm"));
  335. m_rightOutlineWidthUnits = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_RIGHT_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_rightOutlineWidthUnitsStrings, wxCB_READONLY );
  336. m_rightOutlineWidthUnits->SetStringSelection(_("px"));
  337. m_rightOutlineWidthUnits->SetHelpText(_("Units for the right outline width."));
  338. if (wxRichTextBordersPage::ShowToolTips())
  339. m_rightOutlineWidthUnits->SetToolTip(_("Units for the right outline width."));
  340. itemBoxSizer64->Add(m_rightOutlineWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  341. itemBoxSizer64->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  342. wxArrayString m_rightOutlineStyleStrings;
  343. m_rightOutlineStyle = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_RIGHT_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_rightOutlineStyleStrings, wxCB_READONLY );
  344. itemBoxSizer64->Add(m_rightOutlineStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  345. itemBoxSizer64->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  346. m_rightOutlineColour = new wxRichTextColourSwatchCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_RIGHT_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
  347. itemBoxSizer64->Add(m_rightOutlineColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  348. m_topOutlineCheckbox = new wxCheckBox( itemPanel46, ID_RICHTEXT_OUTLINE_TOP_CHECKBOX, _("&Top:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
  349. m_topOutlineCheckbox->SetValue(false);
  350. itemFlexGridSizer54->Add(m_topOutlineCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
  351. wxBoxSizer* itemBoxSizer72 = new wxBoxSizer(wxHORIZONTAL);
  352. itemFlexGridSizer54->Add(itemBoxSizer72, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
  353. m_topOutlineWidth = new wxTextCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_TOP, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
  354. itemBoxSizer72->Add(m_topOutlineWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
  355. wxArrayString m_topOutlineWidthUnitsStrings;
  356. m_topOutlineWidthUnitsStrings.Add(_("px"));
  357. m_topOutlineWidthUnitsStrings.Add(_("cm"));
  358. m_topOutlineWidthUnits = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_TOP_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_topOutlineWidthUnitsStrings, wxCB_READONLY );
  359. m_topOutlineWidthUnits->SetStringSelection(_("px"));
  360. m_topOutlineWidthUnits->SetHelpText(_("Units for the top outline width."));
  361. if (wxRichTextBordersPage::ShowToolTips())
  362. m_topOutlineWidthUnits->SetToolTip(_("Units for the top outline width."));
  363. itemBoxSizer72->Add(m_topOutlineWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  364. itemBoxSizer72->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  365. wxArrayString m_topOutlineStyleStrings;
  366. m_topOutlineStyle = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_TOP_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_topOutlineStyleStrings, wxCB_READONLY );
  367. itemBoxSizer72->Add(m_topOutlineStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  368. itemBoxSizer72->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  369. m_topOutlineColour = new wxRichTextColourSwatchCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_TOP_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
  370. itemBoxSizer72->Add(m_topOutlineColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  371. m_bottomOutlineCheckbox = new wxCheckBox( itemPanel46, ID_RICHTEXT_OUTLINE_BOTTOM_CHECKBOX, _("&Bottom:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
  372. m_bottomOutlineCheckbox->SetValue(false);
  373. itemFlexGridSizer54->Add(m_bottomOutlineCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
  374. wxBoxSizer* itemBoxSizer80 = new wxBoxSizer(wxHORIZONTAL);
  375. itemFlexGridSizer54->Add(itemBoxSizer80, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
  376. m_bottomOutlineWidth = new wxTextCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_BOTTOM, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
  377. itemBoxSizer80->Add(m_bottomOutlineWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
  378. wxArrayString m_bottomOutlineWidthUnitsStrings;
  379. m_bottomOutlineWidthUnitsStrings.Add(_("px"));
  380. m_bottomOutlineWidthUnitsStrings.Add(_("cm"));
  381. m_bottomOutlineWidthUnits = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_BOTTOM_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_bottomOutlineWidthUnitsStrings, wxCB_READONLY );
  382. m_bottomOutlineWidthUnits->SetStringSelection(_("px"));
  383. m_bottomOutlineWidthUnits->SetHelpText(_("Units for the bottom outline width."));
  384. if (wxRichTextBordersPage::ShowToolTips())
  385. m_bottomOutlineWidthUnits->SetToolTip(_("Units for the bottom outline width."));
  386. itemBoxSizer80->Add(m_bottomOutlineWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  387. itemBoxSizer80->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  388. wxArrayString m_bottomOutlineStyleStrings;
  389. m_bottomOutlineStyle = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_BOTTOM_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_bottomOutlineStyleStrings, wxCB_READONLY );
  390. itemBoxSizer80->Add(m_bottomOutlineStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  391. itemBoxSizer80->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
  392. m_bottomOutlineColour = new wxRichTextColourSwatchCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_BOTTOM_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
  393. itemBoxSizer80->Add(m_bottomOutlineColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
  394. itemNotebook4->AddPage(itemPanel46, _("Outline"));
  395. itemBoxSizer3->Add(itemNotebook4, 0, wxGROW|wxALL, 5);
  396. m_borderPreviewCtrl = new wxRichTextBorderPreviewCtrl( itemRichTextDialogPage1, ID_RICHTEXT_BORDER_PREVIEW, wxDefaultPosition, wxSize(60, 60), wxBORDER_THEME );
  397. itemBoxSizer3->Add(m_borderPreviewCtrl, 1, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
  398. ////@end wxRichTextBordersPage content construction
  399. m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_NONE); m_borderStyleNames.Add(_("None"));
  400. m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_SOLID); m_borderStyleNames.Add(_("Solid"));
  401. m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_DOTTED); m_borderStyleNames.Add(_("Dotted"));
  402. m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_DASHED); m_borderStyleNames.Add(_("Dashed"));
  403. m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_DOUBLE); m_borderStyleNames.Add(_("Double"));
  404. m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_GROOVE); m_borderStyleNames.Add(_("Groove"));
  405. m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_RIDGE); m_borderStyleNames.Add(_("Ridge"));
  406. m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_INSET); m_borderStyleNames.Add(_("Inset"));
  407. m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_OUTSET); m_borderStyleNames.Add(_("Outset"));
  408. m_ignoreUpdates = true;
  409. FillStyleComboBox(m_leftBorderStyle);
  410. FillStyleComboBox(m_rightBorderStyle);
  411. FillStyleComboBox(m_topBorderStyle);
  412. FillStyleComboBox(m_bottomBorderStyle);
  413. FillStyleComboBox(m_leftOutlineStyle);
  414. FillStyleComboBox(m_rightOutlineStyle);
  415. FillStyleComboBox(m_topOutlineStyle);
  416. FillStyleComboBox(m_bottomOutlineStyle);
  417. m_borderPreviewCtrl->SetAttributes(GetAttributes());
  418. m_ignoreUpdates = false;
  419. }
  420. /*!
  421. * Should we show tooltips?
  422. */
  423. bool wxRichTextBordersPage::ShowToolTips()
  424. {
  425. return true;
  426. }
  427. // Updates the preview
  428. void wxRichTextBordersPage::OnCommand(wxCommandEvent& event)
  429. {
  430. event.Skip();
  431. if (m_ignoreUpdates)
  432. return;
  433. if (m_borderPreviewCtrl)
  434. {
  435. TransferDataFromWindow();
  436. m_borderPreviewCtrl->Refresh();
  437. }
  438. }
  439. wxRichTextAttr* wxRichTextBordersPage::GetAttributes()
  440. {
  441. return wxRichTextFormattingDialog::GetDialogAttributes(this);
  442. }
  443. // Fill style combo
  444. void wxRichTextBordersPage::FillStyleComboBox(wxComboBox* styleComboBox)
  445. {
  446. styleComboBox->Freeze();
  447. styleComboBox->Append(m_borderStyleNames);
  448. styleComboBox->Thaw();
  449. }
  450. bool wxRichTextBordersPage::TransferDataToWindow()
  451. {
  452. m_ignoreUpdates = true;
  453. // Border
  454. SetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetLeft(), m_leftBorderWidth, m_leftBorderWidthUnits, m_leftBorderCheckbox, m_leftBorderStyle, m_leftBorderColour, m_borderStyles);
  455. SetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetRight(), m_rightBorderWidth, m_rightBorderWidthUnits, m_rightBorderCheckbox, m_rightBorderStyle, m_rightBorderColour, m_borderStyles);
  456. SetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetTop(), m_topBorderWidth, m_topBorderWidthUnits, m_topBorderCheckbox, m_topBorderStyle, m_topBorderColour, m_borderStyles);
  457. SetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetBottom(), m_bottomBorderWidth, m_bottomBorderWidthUnits, m_bottomBorderCheckbox, m_bottomBorderStyle, m_bottomBorderColour, m_borderStyles);
  458. // Outline
  459. SetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetLeft(), m_leftOutlineWidth, m_leftOutlineWidthUnits, m_leftOutlineCheckbox, m_leftOutlineStyle, m_leftOutlineColour, m_borderStyles);
  460. SetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetRight(), m_rightOutlineWidth, m_rightOutlineWidthUnits, m_rightOutlineCheckbox, m_rightOutlineStyle, m_rightOutlineColour, m_borderStyles);
  461. SetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetTop(), m_topOutlineWidth, m_topOutlineWidthUnits, m_topOutlineCheckbox, m_topOutlineStyle, m_topOutlineColour, m_borderStyles);
  462. SetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetBottom(), m_bottomOutlineWidth, m_bottomOutlineWidthUnits, m_bottomOutlineCheckbox, m_bottomOutlineStyle, m_bottomOutlineColour, m_borderStyles);
  463. m_ignoreUpdates = false;
  464. return true;
  465. }
  466. bool wxRichTextBordersPage::TransferDataFromWindow()
  467. {
  468. // Border
  469. GetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetLeft(), m_leftBorderWidth, m_leftBorderWidthUnits, m_leftBorderCheckbox, m_leftBorderStyle, m_leftBorderColour, m_borderStyles);
  470. GetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetRight(), m_rightBorderWidth, m_rightBorderWidthUnits, m_rightBorderCheckbox, m_rightBorderStyle, m_rightBorderColour, m_borderStyles);
  471. GetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetTop(), m_topBorderWidth, m_topBorderWidthUnits, m_topBorderCheckbox, m_topBorderStyle, m_topBorderColour, m_borderStyles);
  472. GetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetBottom(), m_bottomBorderWidth, m_bottomBorderWidthUnits, m_bottomBorderCheckbox, m_bottomBorderStyle, m_bottomBorderColour, m_borderStyles);
  473. // Outline
  474. GetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetLeft(), m_leftOutlineWidth, m_leftOutlineWidthUnits, m_leftOutlineCheckbox, m_leftOutlineStyle, m_leftOutlineColour, m_borderStyles);
  475. GetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetRight(), m_rightOutlineWidth, m_rightOutlineWidthUnits, m_rightOutlineCheckbox, m_rightOutlineStyle, m_rightOutlineColour, m_borderStyles);
  476. GetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetTop(), m_topOutlineWidth, m_topOutlineWidthUnits, m_topOutlineCheckbox, m_topOutlineStyle, m_topOutlineColour, m_borderStyles);
  477. GetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetBottom(), m_bottomOutlineWidth, m_bottomOutlineWidthUnits, m_bottomOutlineCheckbox, m_bottomOutlineStyle, m_bottomOutlineColour, m_borderStyles);
  478. return true;
  479. }
  480. // Set the border controls
  481. void wxRichTextBordersPage::SetBorderValue(wxTextAttrBorder& border, /* wxTextAttrBorder& borderToReset, */ wxTextCtrl* widthValueCtrl, wxComboBox* widthUnitsCtrl, wxCheckBox* checkBox,
  482. wxComboBox* styleCtrl, wxRichTextColourSwatchCtrl* colourCtrl, const wxArrayInt& borderStyles)
  483. {
  484. if (!border.IsValid())
  485. {
  486. checkBox->Set3StateValue(wxCHK_UNDETERMINED);
  487. widthValueCtrl->SetValue(wxT("1"));
  488. widthUnitsCtrl->SetSelection(0);
  489. colourCtrl->SetColour(*wxBLACK);
  490. styleCtrl->SetSelection(0);
  491. }
  492. else
  493. {
  494. wxRichTextFormattingDialog::SetDimensionValue(border.GetWidth(), widthValueCtrl, widthUnitsCtrl, checkBox);
  495. int sel = borderStyles.Index(border.GetStyle());
  496. if (sel == -1)
  497. sel = 1;
  498. styleCtrl->SetSelection(sel);
  499. colourCtrl->SetColour(border.GetColour());
  500. if (sel == 0)
  501. checkBox->Set3StateValue(wxCHK_UNCHECKED);
  502. else
  503. checkBox->Set3StateValue(wxCHK_CHECKED);
  504. }
  505. }
  506. // Get data from the border controls
  507. void wxRichTextBordersPage::GetBorderValue(wxTextAttrBorder& border, /* wxTextAttrBorder& borderToReset, */ wxTextCtrl* widthValueCtrl, wxComboBox* widthUnitsCtrl, wxCheckBox* checkBox,
  508. wxComboBox* styleCtrl, wxRichTextColourSwatchCtrl* colourCtrl, const wxArrayInt& borderStyles)
  509. {
  510. wxRichTextFormattingDialog::GetDimensionValue(border.GetWidth(), widthValueCtrl, widthUnitsCtrl, checkBox);
  511. int sel = styleCtrl->GetSelection();
  512. border.SetColour(colourCtrl->GetColour());
  513. if (checkBox->Get3StateValue() == wxCHK_UNDETERMINED)
  514. {
  515. // When we apply the attributes, we won't apply this one, to leave the original unchanged.
  516. border.Reset();
  517. // borderToReset.Reset();
  518. }
  519. else if (checkBox->Get3StateValue() == wxCHK_UNCHECKED)
  520. {
  521. // We make a note to reset this attribute.
  522. // borderToReset.GetWidth().MakeValid();
  523. border.SetStyle(wxTEXT_BOX_ATTR_BORDER_NONE);
  524. }
  525. else
  526. {
  527. // borderToReset.Reset(); // Don't reset this, in case we were going to previously.
  528. if (sel != -1)
  529. border.SetStyle(borderStyles[sel]);
  530. }
  531. }
  532. /*!
  533. * Get bitmap resources
  534. */
  535. wxBitmap wxRichTextBordersPage::GetBitmapResource( const wxString& name )
  536. {
  537. // Bitmap retrieval
  538. ////@begin wxRichTextBordersPage bitmap retrieval
  539. wxUnusedVar(name);
  540. return wxNullBitmap;
  541. ////@end wxRichTextBordersPage bitmap retrieval
  542. }
  543. /*!
  544. * Get icon resources
  545. */
  546. wxIcon wxRichTextBordersPage::GetIconResource( const wxString& name )
  547. {
  548. // Icon retrieval
  549. ////@begin wxRichTextBordersPage icon retrieval
  550. wxUnusedVar(name);
  551. return wxNullIcon;
  552. ////@end wxRichTextBordersPage icon retrieval
  553. }
  554. /*!
  555. * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_LEFT
  556. */
  557. void wxRichTextBordersPage::OnRichtextBorderLeftUpdate( wxUpdateUIEvent& event )
  558. {
  559. event.Enable(m_leftBorderCheckbox->Get3StateValue() == wxCHK_CHECKED);
  560. }
  561. /*!
  562. * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_RIGHT
  563. */
  564. void wxRichTextBordersPage::OnRichtextBorderRightUpdate( wxUpdateUIEvent& event )
  565. {
  566. event.Enable(m_rightBorderCheckbox->Get3StateValue() == wxCHK_CHECKED);
  567. }
  568. /*!
  569. * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_TOP
  570. */
  571. void wxRichTextBordersPage::OnRichtextBorderTopUpdate( wxUpdateUIEvent& event )
  572. {
  573. event.Enable(m_topBorderCheckbox->Get3StateValue() == wxCHK_CHECKED);
  574. }
  575. /*!
  576. * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_BOTTOM
  577. */
  578. void wxRichTextBordersPage::OnRichtextBorderBottomUpdate( wxUpdateUIEvent& event )
  579. {
  580. event.Enable(m_bottomBorderCheckbox->Get3StateValue() == wxCHK_CHECKED);
  581. }
  582. /*!
  583. * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_OUTLINE_LEFT
  584. */
  585. void wxRichTextBordersPage::OnRichtextOutlineLeftUpdate( wxUpdateUIEvent& event )
  586. {
  587. event.Enable(m_leftOutlineCheckbox->Get3StateValue() == wxCHK_CHECKED);
  588. }
  589. /*!
  590. * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_OUTLINE_RIGHT
  591. */
  592. void wxRichTextBordersPage::OnRichtextOutlineRightUpdate( wxUpdateUIEvent& event )
  593. {
  594. event.Enable(m_rightOutlineCheckbox->Get3StateValue() == wxCHK_CHECKED);
  595. }
  596. /*!
  597. * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_OUTLINE_TOP
  598. */
  599. void wxRichTextBordersPage::OnRichtextOutlineTopUpdate( wxUpdateUIEvent& event )
  600. {
  601. event.Enable(m_topOutlineCheckbox->Get3StateValue() == wxCHK_CHECKED);
  602. }
  603. /*!
  604. * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_OUTLINE_BOTTOM
  605. */
  606. void wxRichTextBordersPage::OnRichtextOutlineBottomUpdate( wxUpdateUIEvent& event )
  607. {
  608. event.Enable(m_bottomOutlineCheckbox->Get3StateValue() == wxCHK_CHECKED);
  609. }
  610. /*!
  611. * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXT_BORDER_LEFT_CHECKBOX
  612. */
  613. void wxRichTextBordersPage::OnRichtextBorderCheckboxClick( wxCommandEvent& event )
  614. {
  615. if (m_ignoreUpdates)
  616. return;
  617. m_ignoreUpdates = true;
  618. wxCheckBox* checkBox = NULL;
  619. wxComboBox* comboBox = NULL;
  620. if (event.GetId() == ID_RICHTEXT_OUTLINE_LEFT_CHECKBOX)
  621. {
  622. checkBox = m_leftOutlineCheckbox;
  623. comboBox = m_leftOutlineStyle;
  624. }
  625. else if (event.GetId() == ID_RICHTEXT_OUTLINE_TOP_CHECKBOX)
  626. {
  627. checkBox = m_topOutlineCheckbox;
  628. comboBox = m_topOutlineStyle;
  629. }
  630. else if (event.GetId() == ID_RICHTEXT_OUTLINE_RIGHT_CHECKBOX)
  631. {
  632. checkBox = m_rightOutlineCheckbox;
  633. comboBox = m_rightOutlineStyle;
  634. }
  635. else if (event.GetId() == ID_RICHTEXT_OUTLINE_BOTTOM_CHECKBOX)
  636. {
  637. checkBox = m_bottomOutlineCheckbox;
  638. comboBox = m_bottomOutlineStyle;
  639. }
  640. else if (event.GetId() == ID_RICHTEXT_BORDER_LEFT_CHECKBOX)
  641. {
  642. checkBox = m_leftBorderCheckbox;
  643. comboBox = m_leftBorderStyle;
  644. }
  645. else if (event.GetId() == ID_RICHTEXT_BORDER_TOP_CHECKBOX)
  646. {
  647. checkBox = m_topBorderCheckbox;
  648. comboBox = m_topBorderStyle;
  649. }
  650. else if (event.GetId() == ID_RICHTEXT_BORDER_RIGHT_CHECKBOX)
  651. {
  652. checkBox = m_rightBorderCheckbox;
  653. comboBox = m_rightBorderStyle;
  654. }
  655. else if (event.GetId() == ID_RICHTEXT_BORDER_BOTTOM_CHECKBOX)
  656. {
  657. checkBox = m_bottomBorderCheckbox;
  658. comboBox = m_bottomBorderStyle;
  659. }
  660. if (checkBox && comboBox)
  661. {
  662. if (checkBox->Get3StateValue() == wxCHK_UNCHECKED || checkBox->Get3StateValue() == wxCHK_UNDETERMINED)
  663. comboBox->SetSelection(0);
  664. else
  665. comboBox->SetSelection(1);
  666. TransferDataFromWindow();
  667. m_borderPreviewCtrl->Refresh();
  668. }
  669. m_ignoreUpdates = false;
  670. }
  671. BEGIN_EVENT_TABLE(wxRichTextBorderPreviewCtrl, wxWindow)
  672. EVT_PAINT(wxRichTextBorderPreviewCtrl::OnPaint)
  673. END_EVENT_TABLE()
  674. wxRichTextBorderPreviewCtrl::wxRichTextBorderPreviewCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& sz, long style)
  675. {
  676. if ((style & wxBORDER_MASK) == wxBORDER_DEFAULT)
  677. style |= wxBORDER_THEME;
  678. m_attributes = NULL;
  679. wxWindow::Create(parent, id, pos, sz, style);
  680. SetBackgroundColour(*wxWHITE);
  681. }
  682. void wxRichTextBorderPreviewCtrl::OnPaint(wxPaintEvent& WXUNUSED(event))
  683. {
  684. wxPaintDC dc(this);
  685. if (m_attributes)
  686. {
  687. wxRect rect = GetClientRect();
  688. int margin = 10;
  689. rect.x += margin;
  690. rect.y += margin;
  691. rect.width -= 2*margin;
  692. rect.height -= 2*margin;
  693. wxRichTextObject::DrawBorder(dc, NULL, m_attributes->GetTextBoxAttr().GetOutline(), rect);
  694. rect.x += margin;
  695. rect.y += margin;
  696. rect.width -= 2*margin;
  697. rect.height -= 2*margin;
  698. wxRichTextObject::DrawBorder(dc, NULL, m_attributes->GetTextBoxAttr().GetBorder(), rect);
  699. }
  700. }