1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: ribbondemo.cpp
3 // Purpose: wxRibbon: Ribbon user interface - sample/test program
4 // Author: Peter Cawley
8 // Copyright: (C) Copyright 2009, Peter Cawley
9 // Licence: wxWindows Library Licence
10 ///////////////////////////////////////////////////////////////////////////////
12 #include "wx/wxprec.h"
20 #include "wx/textctrl.h"
21 #include "wx/ribbon/bar.h"
22 #include "wx/ribbon/buttonbar.h"
23 #include "wx/ribbon/gallery.h"
24 #include "wx/ribbon/toolbar.h"
27 #include "wx/msgdlg.h"
28 #include "wx/dcbuffer.h"
29 #include "wx/colordlg.h"
30 #include "wx/artprov.h"
31 #include "wx/combobox.h"
32 #include "wx/tglbtn.h"
33 #include "wx/wrapsizer.h"
37 class MyApp
: public wxApp
48 class MyFrame
: public wxFrame
56 ID_CIRCLE
= wxID_HIGHEST
+ 1,
61 ID_SELECTION_EXPAND_H
,
62 ID_SELECTION_EXPAND_V
,
63 ID_SELECTION_CONTRACT
,
71 ID_POSITION_TOP_ICONS
,
74 ID_POSITION_LEFT_LABELS
,
75 ID_POSITION_LEFT_BOTH
,
85 ID_UI_CHANGE_TEXT_UPDATED
,
91 void OnEnableUpdateUI(wxUpdateUIEvent
& evt
);
92 void OnCheckUpdateUI(wxUpdateUIEvent
& evt
);
93 void OnChangeTextUpdateUI(wxUpdateUIEvent
& evt
);
94 void OnCheck(wxRibbonButtonBarEvent
& evt
);
95 void OnEnable(wxRibbonButtonBarEvent
& evt
);
96 void OnDisable(wxRibbonButtonBarEvent
& evt
);
97 void OnChangeText1(wxRibbonButtonBarEvent
& evt
);
98 void OnChangeText2(wxRibbonButtonBarEvent
& evt
);
99 void OnCircleButton(wxRibbonButtonBarEvent
& evt
);
100 void OnCrossButton(wxRibbonButtonBarEvent
& evt
);
101 void OnTriangleButton(wxRibbonButtonBarEvent
& evt
);
102 void OnTriangleDropdown(wxRibbonButtonBarEvent
& evt
);
103 void OnSquareButton(wxRibbonButtonBarEvent
& evt
);
104 void OnPolygonDropdown(wxRibbonButtonBarEvent
& evt
);
105 void OnSelectionExpandVButton(wxRibbonButtonBarEvent
& evt
);
106 void OnSelectionExpandHButton(wxRibbonButtonBarEvent
& evt
);
107 void OnSelectionContractButton(wxRibbonButtonBarEvent
& evt
);
108 void OnHoveredColourChange(wxRibbonGalleryEvent
& evt
);
109 void OnPrimaryColourSelect(wxRibbonGalleryEvent
& evt
);
110 void OnSecondaryColourSelect(wxRibbonGalleryEvent
& evt
);
111 void OnColourGalleryButton(wxCommandEvent
& evt
);
112 void OnDefaultProvider(wxRibbonButtonBarEvent
& evt
);
113 void OnAUIProvider(wxRibbonButtonBarEvent
& evt
);
114 void OnMSWProvider(wxRibbonButtonBarEvent
& evt
);
115 void OnJustify(wxRibbonToolBarEvent
& evt
);
116 void OnJustifyUpdateUI(wxUpdateUIEvent
& evt
);
117 void OnNew(wxRibbonToolBarEvent
& evt
);
118 void OnNewDropdown(wxRibbonToolBarEvent
& evt
);
119 void OnPrint(wxRibbonToolBarEvent
& evt
);
120 void OnPrintDropdown(wxRibbonToolBarEvent
& evt
);
121 void OnRedoDropdown(wxRibbonToolBarEvent
& evt
);
122 void OnUndoDropdown(wxRibbonToolBarEvent
& evt
);
123 void OnPositionTop(wxRibbonToolBarEvent
& evt
);
124 void OnPositionTopLabels(wxCommandEvent
& evt
);
125 void OnPositionTopIcons(wxCommandEvent
& evt
);
126 void OnPositionTopBoth(wxCommandEvent
& evt
);
127 void OnPositionTopDropdown(wxRibbonToolBarEvent
& evt
);
128 void OnPositionLeft(wxRibbonToolBarEvent
& evt
);
129 void OnPositionLeftLabels(wxCommandEvent
& evt
);
130 void OnPositionLeftIcons(wxCommandEvent
& evt
);
131 void OnPositionLeftBoth(wxCommandEvent
& evt
);
132 void OnPositionLeftDropdown(wxRibbonToolBarEvent
& evt
);
133 void OnRemovePage(wxRibbonButtonBarEvent
& evt
);
134 void OnHidePages(wxRibbonButtonBarEvent
& evt
);
135 void OnShowPages(wxRibbonButtonBarEvent
& evt
);
136 void OnTogglePanels(wxCommandEvent
& evt
);
137 void OnRibbonBarToggled(wxRibbonBarEvent
& evt
);
138 void OnRibbonBarHelpClicked(wxRibbonBarEvent
& evt
);
140 void OnSizeEvent(wxSizeEvent
& evt
);
142 void OnExtButton(wxRibbonPanelEvent
& evt
);
145 wxRibbonGallery
* PopulateColoursPanel(wxWindow
* panel
, wxColour def
,
147 void AddText(wxString msg
);
148 wxRibbonGalleryItem
* AddColourToGallery(wxRibbonGallery
*gallery
,
149 wxString name
, wxMemoryDC
& dc
, wxColour
* value
= NULL
);
150 wxColour
GetGalleryColour(wxRibbonGallery
*gallery
,
151 wxRibbonGalleryItem
* item
, wxString
* name
);
152 void ResetGalleryArtProviders();
153 void SetArtProvider(wxRibbonArtProvider
* prov
);
154 void SetBarStyle(long style
);
156 wxRibbonBar
* m_ribbon
;
157 wxRibbonGallery
* m_primary_gallery
;
158 wxRibbonGallery
* m_secondary_gallery
;
159 wxTextCtrl
* m_logwindow
;
160 wxToggleButton
* m_togglePanels
;
162 wxColourData m_colour_data
;
163 wxColour m_default_primary
;
164 wxColour m_default_secondary
;
165 wxColour m_default_tertiary
;
166 wxMemoryDC m_bitmap_creation_dc
;
171 DECLARE_EVENT_TABLE()
174 // -- implementations --
181 wxFrame
* frame
= new MyFrame
;
187 BEGIN_EVENT_TABLE(MyFrame
, wxFrame
)
188 EVT_RIBBONBUTTONBAR_CLICKED(ID_ENABLE
, MyFrame
::OnEnable
)
189 EVT_RIBBONBUTTONBAR_CLICKED(ID_DISABLE
, MyFrame
::OnDisable
)
190 EVT_UPDATE_UI(ID_UI_ENABLE_UPDATED
, MyFrame
::OnEnableUpdateUI
)
191 EVT_RIBBONBUTTONBAR_CLICKED(ID_CHECK
, MyFrame
::OnCheck
)
192 EVT_UPDATE_UI(ID_UI_CHECK_UPDATED
, MyFrame
::OnCheckUpdateUI
)
193 EVT_RIBBONBUTTONBAR_CLICKED(ID_CHANGE_TEXT1
, MyFrame
::OnChangeText1
)
194 EVT_RIBBONBUTTONBAR_CLICKED(ID_CHANGE_TEXT2
, MyFrame
::OnChangeText2
)
195 EVT_UPDATE_UI(ID_UI_CHANGE_TEXT_UPDATED
, MyFrame
::OnChangeTextUpdateUI
)
196 EVT_RIBBONBUTTONBAR_CLICKED(ID_DEFAULT_PROVIDER
, MyFrame
::OnDefaultProvider
)
197 EVT_RIBBONBUTTONBAR_CLICKED(ID_AUI_PROVIDER
, MyFrame
::OnAUIProvider
)
198 EVT_RIBBONBUTTONBAR_CLICKED(ID_MSW_PROVIDER
, MyFrame
::OnMSWProvider
)
199 EVT_RIBBONBUTTONBAR_CLICKED(ID_SELECTION_EXPAND_H
, MyFrame
::OnSelectionExpandHButton
)
200 EVT_RIBBONBUTTONBAR_CLICKED(ID_SELECTION_EXPAND_V
, MyFrame
::OnSelectionExpandVButton
)
201 EVT_RIBBONBUTTONBAR_CLICKED(ID_SELECTION_CONTRACT
, MyFrame
::OnSelectionContractButton
)
202 EVT_RIBBONBUTTONBAR_CLICKED(ID_CIRCLE
, MyFrame
::OnCircleButton
)
203 EVT_RIBBONBUTTONBAR_CLICKED(ID_CROSS
, MyFrame
::OnCrossButton
)
204 EVT_RIBBONBUTTONBAR_CLICKED(ID_TRIANGLE
, MyFrame
::OnTriangleButton
)
205 EVT_RIBBONBUTTONBAR_CLICKED(ID_SQUARE
, MyFrame
::OnSquareButton
)
206 EVT_RIBBONBUTTONBAR_DROPDOWN_CLICKED(ID_TRIANGLE
, MyFrame
::OnTriangleDropdown
)
207 EVT_RIBBONBUTTONBAR_DROPDOWN_CLICKED(ID_POLYGON
, MyFrame
::OnPolygonDropdown
)
208 EVT_RIBBONGALLERY_HOVER_CHANGED(ID_PRIMARY_COLOUR
, MyFrame
::OnHoveredColourChange
)
209 EVT_RIBBONGALLERY_HOVER_CHANGED(ID_SECONDARY_COLOUR
, MyFrame
::OnHoveredColourChange
)
210 EVT_RIBBONGALLERY_SELECTED(ID_PRIMARY_COLOUR
, MyFrame
::OnPrimaryColourSelect
)
211 EVT_RIBBONGALLERY_SELECTED(ID_SECONDARY_COLOUR
, MyFrame
::OnSecondaryColourSelect
)
212 EVT_RIBBONTOOLBAR_CLICKED(wxID_JUSTIFY_LEFT
, MyFrame
::OnJustify
)
213 EVT_RIBBONTOOLBAR_CLICKED(wxID_JUSTIFY_CENTER
, MyFrame
::OnJustify
)
214 EVT_RIBBONTOOLBAR_CLICKED(wxID_JUSTIFY_RIGHT
, MyFrame
::OnJustify
)
215 EVT_UPDATE_UI(wxID_JUSTIFY_LEFT
, MyFrame
::OnJustifyUpdateUI
)
216 EVT_UPDATE_UI(wxID_JUSTIFY_CENTER
, MyFrame
::OnJustifyUpdateUI
)
217 EVT_UPDATE_UI(wxID_JUSTIFY_RIGHT
, MyFrame
::OnJustifyUpdateUI
)
218 EVT_RIBBONTOOLBAR_CLICKED(wxID_NEW
, MyFrame
::OnNew
)
219 EVT_RIBBONTOOLBAR_DROPDOWN_CLICKED(wxID_NEW
, MyFrame
::OnNewDropdown
)
220 EVT_RIBBONTOOLBAR_CLICKED(wxID_PRINT
, MyFrame
::OnPrint
)
221 EVT_RIBBONTOOLBAR_DROPDOWN_CLICKED(wxID_PRINT
, MyFrame
::OnPrintDropdown
)
222 EVT_RIBBONTOOLBAR_DROPDOWN_CLICKED(wxID_REDO
, MyFrame
::OnRedoDropdown
)
223 EVT_RIBBONTOOLBAR_DROPDOWN_CLICKED(wxID_UNDO
, MyFrame
::OnUndoDropdown
)
224 EVT_RIBBONTOOLBAR_CLICKED(ID_POSITION_LEFT
, MyFrame
::OnPositionLeft
)
225 EVT_RIBBONTOOLBAR_DROPDOWN_CLICKED(ID_POSITION_LEFT
, MyFrame
::OnPositionLeftDropdown
)
226 EVT_RIBBONTOOLBAR_CLICKED(ID_POSITION_TOP
, MyFrame
::OnPositionTop
)
227 EVT_RIBBONTOOLBAR_DROPDOWN_CLICKED(ID_POSITION_TOP
, MyFrame
::OnPositionTopDropdown
)
228 EVT_BUTTON(ID_PRIMARY_COLOUR
, MyFrame
::OnColourGalleryButton
)
229 EVT_BUTTON(ID_SECONDARY_COLOUR
, MyFrame
::OnColourGalleryButton
)
230 EVT_MENU(ID_POSITION_LEFT
, MyFrame
::OnPositionLeftIcons
)
231 EVT_MENU(ID_POSITION_LEFT_LABELS
, MyFrame
::OnPositionLeftLabels
)
232 EVT_MENU(ID_POSITION_LEFT_BOTH
, MyFrame
::OnPositionLeftBoth
)
233 EVT_MENU(ID_POSITION_TOP
, MyFrame
::OnPositionTopLabels
)
234 EVT_MENU(ID_POSITION_TOP_ICONS
, MyFrame
::OnPositionTopIcons
)
235 EVT_MENU(ID_POSITION_TOP_BOTH
, MyFrame
::OnPositionTopBoth
)
236 EVT_TOGGLEBUTTON(ID_TOGGLE_PANELS
, MyFrame
::OnTogglePanels
)
237 EVT_RIBBONPANEL_EXTBUTTON_ACTIVATED(wxID_ANY
, MyFrame
::OnExtButton
)
238 EVT_RIBBONBUTTONBAR_CLICKED(ID_REMOVE_PAGE
, MyFrame
::OnRemovePage
)
239 EVT_RIBBONBUTTONBAR_CLICKED(ID_HIDE_PAGES
, MyFrame
::OnHidePages
)
240 EVT_RIBBONBUTTONBAR_CLICKED(ID_SHOW_PAGES
, MyFrame
::OnShowPages
)
241 EVT_RIBBONBAR_TOGGLED(wxID_ANY
, MyFrame
::OnRibbonBarToggled
)
242 EVT_RIBBONBAR_HELP_CLICK(wxID_ANY
, MyFrame
::OnRibbonBarHelpClicked
)
243 EVT_SIZE(MyFrame
::OnSizeEvent
)
246 #include "align_center.xpm"
247 #include "align_left.xpm"
248 #include "align_right.xpm"
249 #include "aui_style.xpm"
250 #include "auto_crop_selection.xpm"
251 #include "auto_crop_selection_small.xpm"
252 #include "circle.xpm"
253 #include "circle_small.xpm"
254 #include "colours.xpm"
257 #include "expand_selection_v.xpm"
258 #include "expand_selection_h.xpm"
260 #include "hexagon.xpm"
261 #include "msw_style.xpm"
262 #include "position_left_small.xpm"
263 #include "position_top_small.xpm"
264 #include "ribbon.xpm"
265 #include "selection_panel.xpm"
266 #include "square.xpm"
267 #include "triangle.xpm"
270 : wxFrame(NULL
, wxID_ANY
, wxT("wxRibbon Sample Application"), wxDefaultPosition
, wxSize(800, 600), wxDEFAULT_FRAME_STYLE
)
272 m_ribbon
= new wxRibbonBar(this,-1,wxDefaultPosition
, wxDefaultSize
, wxRIBBON_BAR_FLOW_HORIZONTAL
273 | wxRIBBON_BAR_SHOW_PAGE_LABELS
274 | wxRIBBON_BAR_SHOW_PANEL_EXT_BUTTONS
275 | wxRIBBON_BAR_SHOW_TOGGLE_BUTTON
276 | wxRIBBON_BAR_SHOW_HELP_BUTTON
280 wxRibbonPage
* home
= new wxRibbonPage(m_ribbon
, wxID_ANY
, wxT("Examples"), ribbon_xpm
);
281 wxRibbonPanel
*toolbar_panel
= new wxRibbonPanel(home
, wxID_ANY
, wxT("Toolbar"),
282 wxNullBitmap
, wxDefaultPosition
, wxDefaultSize
,
283 wxRIBBON_PANEL_NO_AUTO_MINIMISE
|
284 wxRIBBON_PANEL_EXT_BUTTON
);
285 wxRibbonToolBar
*toolbar
= new wxRibbonToolBar(toolbar_panel
, ID_MAIN_TOOLBAR
);
286 toolbar
->AddToggleTool(wxID_JUSTIFY_LEFT
, align_left_xpm
);
287 toolbar
->AddToggleTool(wxID_JUSTIFY_CENTER
, align_center_xpm
);
288 toolbar
->AddToggleTool(wxID_JUSTIFY_RIGHT
, align_right_xpm
);
289 toolbar
->AddSeparator();
290 toolbar
->AddHybridTool(wxID_NEW
, wxArtProvider
::GetBitmap(wxART_NEW
, wxART_OTHER
, wxSize(16, 15)));
291 toolbar
->AddTool(wxID_OPEN
, wxArtProvider
::GetBitmap(wxART_FILE_OPEN
, wxART_OTHER
, wxSize(16, 15)), "Open something");
292 toolbar
->AddTool(wxID_SAVE
, wxArtProvider
::GetBitmap(wxART_FILE_SAVE
, wxART_OTHER
, wxSize(16, 15)), "Save something");
293 toolbar
->AddTool(wxID_SAVEAS
, wxArtProvider
::GetBitmap(wxART_FILE_SAVE_AS
, wxART_OTHER
, wxSize(16, 15)), "Save something as ...");
294 toolbar
->EnableTool(wxID_OPEN
, false);
295 toolbar
->EnableTool(wxID_SAVE
, false);
296 toolbar
->EnableTool(wxID_SAVEAS
, false);
297 toolbar
->AddSeparator();
298 toolbar
->AddDropdownTool(wxID_UNDO
, wxArtProvider
::GetBitmap(wxART_UNDO
, wxART_OTHER
, wxSize(16, 15)));
299 toolbar
->AddDropdownTool(wxID_REDO
, wxArtProvider
::GetBitmap(wxART_REDO
, wxART_OTHER
, wxSize(16, 15)));
300 toolbar
->AddSeparator();
301 toolbar
->AddTool(wxID_ANY
, wxArtProvider
::GetBitmap(wxART_REPORT_VIEW
, wxART_OTHER
, wxSize(16, 15)));
302 toolbar
->AddTool(wxID_ANY
, wxArtProvider
::GetBitmap(wxART_LIST_VIEW
, wxART_OTHER
, wxSize(16, 15)));
303 toolbar
->AddSeparator();
304 toolbar
->AddHybridTool(ID_POSITION_LEFT
, position_left_xpm
,
305 "Align ribbonbar vertically\non the left\nfor demonstration purposes");
306 toolbar
->AddHybridTool(ID_POSITION_TOP
, position_top_xpm
,
307 "Align the ribbonbar horizontally\nat the top\nfor demonstration purposes");
308 toolbar
->AddSeparator();
309 toolbar
->AddHybridTool(wxID_PRINT
, wxArtProvider
::GetBitmap(wxART_PRINT
, wxART_OTHER
, wxSize(16, 15)),
310 "This is the Print button tooltip\ndemonstrating a tooltip");
311 toolbar
->SetRows(2, 3);
313 wxRibbonPanel
*selection_panel
= new wxRibbonPanel(home
, wxID_ANY
, wxT("Selection"), wxBitmap(selection_panel_xpm
));
314 wxRibbonButtonBar
*selection
= new wxRibbonButtonBar(selection_panel
);
315 selection
->AddButton(ID_SELECTION_EXPAND_V
, wxT("Expand Vertically"), wxBitmap(expand_selection_v_xpm
),
316 "This is a tooltip for Expand Vertically\ndemonstrating a tooltip");
317 selection
->AddButton(ID_SELECTION_EXPAND_H
, wxT("Expand Horizontally"), wxBitmap(expand_selection_h_xpm
), wxEmptyString
);
318 selection
->AddButton(ID_SELECTION_CONTRACT
, wxT("Contract"), wxBitmap(auto_crop_selection_xpm
), wxBitmap(auto_crop_selection_small_xpm
));
320 wxRibbonPanel
*shapes_panel
= new wxRibbonPanel(home
, wxID_ANY
, wxT("Shapes"), wxBitmap(circle_small_xpm
));
321 wxRibbonButtonBar
*shapes
= new wxRibbonButtonBar(shapes_panel
);
322 shapes
->AddButton(ID_CIRCLE
, wxT("Circle"), wxBitmap(circle_xpm
), wxBitmap(circle_small_xpm
),
323 wxNullBitmap
, wxNullBitmap
, wxRIBBON_BUTTON_NORMAL
,
324 "This is a tooltip for the circle button\ndemonstrating another tooltip");
325 shapes
->AddButton(ID_CROSS
, wxT("Cross"), wxBitmap(cross_xpm
), wxEmptyString
);
326 shapes
->AddHybridButton(ID_TRIANGLE
, wxT("Triangle"), wxBitmap(triangle_xpm
));
327 shapes
->AddButton(ID_SQUARE
, wxT("Square"), wxBitmap(square_xpm
), wxEmptyString
);
328 shapes
->AddDropdownButton(ID_POLYGON
, wxT("Other Polygon"), wxBitmap(hexagon_xpm
), wxEmptyString
);
330 wxRibbonPanel
*sizer_panel
= new wxRibbonPanel(home
, wxID_ANY
, wxT("Panel with Sizer"),
331 wxNullBitmap
, wxDefaultPosition
, wxDefaultSize
,
332 wxRIBBON_PANEL_DEFAULT_STYLE
);
335 as
.Add("Item 1 using a box sizer now");
336 as
.Add("Item 2 using a box sizer now");
337 wxComboBox
* sizer_panelcombo
= new wxComboBox(sizer_panel
, wxID_ANY
,
339 wxDefaultPosition
, wxDefaultSize
,
342 wxComboBox
* sizer_panelcombo2
= new wxComboBox(sizer_panel
, wxID_ANY
,
344 wxDefaultPosition
, wxDefaultSize
,
347 sizer_panelcombo
->Select(0);
348 sizer_panelcombo2
->Select(1);
349 sizer_panelcombo
->SetMinSize(wxSize(150, -1));
350 sizer_panelcombo2
->SetMinSize(wxSize(150, -1));
352 //not using wxWrapSizer(wxHORIZONTAL) as it reports an incorrect min height
353 wxSizer
* sizer_panelsizer
= new wxBoxSizer(wxVERTICAL
);
354 sizer_panelsizer
->AddStretchSpacer(1);
355 sizer_panelsizer
->Add(sizer_panelcombo
, 0, wxALL
|wxEXPAND
, 2);
356 sizer_panelsizer
->Add(sizer_panelcombo2
, 0, wxALL
|wxEXPAND
, 2);
357 sizer_panelsizer
->AddStretchSpacer(1);
358 sizer_panel
->SetSizer(sizer_panelsizer
);
360 wxFont
label_font(8, wxFONTFAMILY_DEFAULT
, wxFONTSTYLE_NORMAL
, wxFONTWEIGHT_LIGHT
);
361 m_bitmap_creation_dc
.SetFont(label_font
);
363 wxRibbonPage
* scheme
= new wxRibbonPage(m_ribbon
, wxID_ANY
, wxT("Appearance"), eye_xpm
);
364 m_ribbon
->GetArtProvider()->GetColourScheme(&m_default_primary
,
365 &m_default_secondary
, &m_default_tertiary
);
366 wxRibbonPanel
*provider_panel
= new wxRibbonPanel(scheme
, wxID_ANY
,
367 wxT("Art"), wxNullBitmap
, wxDefaultPosition
, wxDefaultSize
, wxRIBBON_PANEL_NO_AUTO_MINIMISE
);
368 wxRibbonButtonBar
*provider_bar
= new wxRibbonButtonBar(provider_panel
, wxID_ANY
);
369 provider_bar
->AddButton(ID_DEFAULT_PROVIDER
, wxT("Default Provider"),
370 wxArtProvider
::GetBitmap(wxART_QUESTION
, wxART_OTHER
, wxSize(32, 32)));
371 provider_bar
->AddButton(ID_AUI_PROVIDER
, wxT("AUI Provider"), aui_style_xpm
);
372 provider_bar
->AddButton(ID_MSW_PROVIDER
, wxT("MSW Provider"), msw_style_xpm
);
373 wxRibbonPanel
*primary_panel
= new wxRibbonPanel(scheme
, wxID_ANY
,
374 wxT("Primary Colour"), colours_xpm
);
375 m_primary_gallery
= PopulateColoursPanel(primary_panel
,
376 m_default_primary
, ID_PRIMARY_COLOUR
);
377 wxRibbonPanel
*secondary_panel
= new wxRibbonPanel(scheme
, wxID_ANY
,
378 wxT("Secondary Colour"), colours_xpm
);
379 m_secondary_gallery
= PopulateColoursPanel(secondary_panel
,
380 m_default_secondary
, ID_SECONDARY_COLOUR
);
383 wxRibbonPage
* page
= new wxRibbonPage(m_ribbon
, wxID_ANY
, wxT("UI Updated"), ribbon_xpm
);
384 wxRibbonPanel
*panel
= new wxRibbonPanel(page
, wxID_ANY
, wxT("Enable/Disable"), ribbon_xpm
);
385 wxRibbonButtonBar
*bar
= new wxRibbonButtonBar(panel
, wxID_ANY
);
386 bar
->AddButton(ID_DISABLED
, wxT("Disabled"), ribbon_xpm
);
387 bar
->AddButton(ID_ENABLE
, wxT("Enable"), ribbon_xpm
);
388 bar
->AddButton(ID_DISABLE
, wxT("Disable"), ribbon_xpm
);
389 bar
->AddButton(ID_UI_ENABLE_UPDATED
, wxT("Enable UI updated"), ribbon_xpm
);
390 bar
->EnableButton(ID_DISABLED
, false);
393 panel
= new wxRibbonPanel(page
, wxID_ANY
, wxT("Toggle"), ribbon_xpm
);
394 bar
= new wxRibbonButtonBar(panel
, wxID_ANY
);
395 bar
->AddButton(ID_CHECK
, wxT("Toggle"), ribbon_xpm
);
396 bar
->AddToggleButton(ID_UI_CHECK_UPDATED
, wxT("Toggled UI updated"), ribbon_xpm
);
399 panel
= new wxRibbonPanel(page
, wxID_ANY
, wxT("Change text"), ribbon_xpm
);
400 bar
= new wxRibbonButtonBar(panel
, wxID_ANY
);
401 bar
->AddButton(ID_CHANGE_TEXT1
, wxT("One"), ribbon_xpm
);
402 bar
->AddButton(ID_CHANGE_TEXT2
, wxT("Two"), ribbon_xpm
);
403 bar
->AddButton(ID_UI_CHANGE_TEXT_UPDATED
, wxT("Zero"), ribbon_xpm
);
405 new wxRibbonPage(m_ribbon
, wxID_ANY
, wxT("Empty Page"), empty_xpm
);
407 wxRibbonPage
* page
= new wxRibbonPage(m_ribbon
, wxID_ANY
, wxT("Another Page"), empty_xpm
);
408 wxRibbonPanel
*panel
= new wxRibbonPanel(page
, wxID_ANY
, wxT("Page manipulation"), ribbon_xpm
);
409 wxRibbonButtonBar
*bar
= new wxRibbonButtonBar(panel
, wxID_ANY
);
410 bar
->AddButton(ID_REMOVE_PAGE
, wxT("Remove"), wxArtProvider
::GetBitmap(wxART_DELETE
, wxART_OTHER
, wxSize(24, 24)));
411 bar
->AddButton(ID_HIDE_PAGES
, wxT("Hide Pages"), ribbon_xpm
);
412 bar
->AddButton(ID_SHOW_PAGES
, wxT("Show Pages"), ribbon_xpm
);
414 new wxRibbonPage(m_ribbon
, wxID_ANY
, wxT("Highlight Page"), empty_xpm
);
415 m_ribbon
->AddPageHighlight(m_ribbon
->GetPageCount()-1);
419 m_logwindow
= new wxTextCtrl(this, wxID_ANY
, wxEmptyString
,
420 wxDefaultPosition
, wxDefaultSize
, wxTE_MULTILINE
| wxTE_READONLY
|
421 wxTE_LEFT
| wxTE_BESTWRAP
| wxBORDER_NONE
);
423 m_togglePanels
= new wxToggleButton(this, ID_TOGGLE_PANELS
, "&Toggle panels");
424 m_togglePanels
->SetValue(true);
426 wxSizer
*s
= new wxBoxSizer(wxVERTICAL
);
428 s
->Add(m_ribbon
, 0, wxEXPAND
);
429 s
->Add(m_logwindow
, 1, wxEXPAND
);
430 s
->Add(m_togglePanels
, wxSizerFlags().Border());
435 void MyFrame
::SetBarStyle(long style
)
438 m_ribbon
->SetWindowStyleFlag(style
);
439 wxBoxSizer
*pTopSize
= reinterpret_cast<wxBoxSizer
*>(GetSizer());
440 wxRibbonToolBar
*pToolbar
= wxDynamicCast(FindWindow(ID_MAIN_TOOLBAR
), wxRibbonToolBar
);
441 if(style
& wxRIBBON_BAR_FLOW_VERTICAL
)
443 m_ribbon
->SetTabCtrlMargins(10, 10);
444 pTopSize
->SetOrientation(wxHORIZONTAL
);
446 pToolbar
->SetRows(3, 5);
450 m_ribbon
->SetTabCtrlMargins(50, 20);
451 pTopSize
->SetOrientation(wxVERTICAL
);
453 pToolbar
->SetRows(2, 3);
464 class ColourClientData
: public wxClientData
467 ColourClientData(const wxString
& name
, const wxColour
& colour
)
468 : m_name(name
), m_colour(colour
) {}
470 const wxString
& GetName() const {return m_name
;}
471 const wxColour
& GetColour() const {return m_colour
;}
478 wxRibbonGallery
* MyFrame
::PopulateColoursPanel(wxWindow
* panel
,
479 wxColour def
, int gallery_id
)
481 wxRibbonGallery
*gallery
= wxDynamicCast(panel
->FindWindow(gallery_id
), wxRibbonGallery
);
485 gallery
= new wxRibbonGallery(panel
, gallery_id
);
486 wxMemoryDC
& dc
= m_bitmap_creation_dc
;
487 wxRibbonGalleryItem
*def_item
=
488 AddColourToGallery(gallery
, wxT("Default"), dc
, &def
);
489 gallery
->SetSelection(def_item
);
490 AddColourToGallery(gallery
, wxT("BLUE"), dc
);
491 AddColourToGallery(gallery
, wxT("BLUE VIOLET"), dc
);
492 AddColourToGallery(gallery
, wxT("BROWN"), dc
);
493 AddColourToGallery(gallery
, wxT("CADET BLUE"), dc
);
494 AddColourToGallery(gallery
, wxT("CORAL"), dc
);
495 AddColourToGallery(gallery
, wxT("CYAN"), dc
);
496 AddColourToGallery(gallery
, wxT("DARK GREEN"), dc
);
497 AddColourToGallery(gallery
, wxT("DARK ORCHID"), dc
);
498 AddColourToGallery(gallery
, wxT("FIREBRICK"), dc
);
499 AddColourToGallery(gallery
, wxT("GOLD"), dc
);
500 AddColourToGallery(gallery
, wxT("GOLDENROD"), dc
);
501 AddColourToGallery(gallery
, wxT("GREEN"), dc
);
502 AddColourToGallery(gallery
, wxT("INDIAN RED"), dc
);
503 AddColourToGallery(gallery
, wxT("KHAKI"), dc
);
504 AddColourToGallery(gallery
, wxT("LIGHT BLUE"), dc
);
505 AddColourToGallery(gallery
, wxT("LIME GREEN"), dc
);
506 AddColourToGallery(gallery
, wxT("MAGENTA"), dc
);
507 AddColourToGallery(gallery
, wxT("MAROON"), dc
);
508 AddColourToGallery(gallery
, wxT("NAVY"), dc
);
509 AddColourToGallery(gallery
, wxT("ORANGE"), dc
);
510 AddColourToGallery(gallery
, wxT("ORCHID"), dc
);
511 AddColourToGallery(gallery
, wxT("PINK"), dc
);
512 AddColourToGallery(gallery
, wxT("PLUM"), dc
);
513 AddColourToGallery(gallery
, wxT("PURPLE"), dc
);
514 AddColourToGallery(gallery
, wxT("RED"), dc
);
515 AddColourToGallery(gallery
, wxT("SALMON"), dc
);
516 AddColourToGallery(gallery
, wxT("SEA GREEN"), dc
);
517 AddColourToGallery(gallery
, wxT("SIENNA"), dc
);
518 AddColourToGallery(gallery
, wxT("SKY BLUE"), dc
);
519 AddColourToGallery(gallery
, wxT("TAN"), dc
);
520 AddColourToGallery(gallery
, wxT("THISTLE"), dc
);
521 AddColourToGallery(gallery
, wxT("TURQUOISE"), dc
);
522 AddColourToGallery(gallery
, wxT("VIOLET"), dc
);
523 AddColourToGallery(gallery
, wxT("VIOLET RED"), dc
);
524 AddColourToGallery(gallery
, wxT("WHEAT"), dc
);
525 AddColourToGallery(gallery
, wxT("WHITE"), dc
);
526 AddColourToGallery(gallery
, wxT("YELLOW"), dc
);
531 wxColour MyFrame
::GetGalleryColour(wxRibbonGallery
*gallery
,
532 wxRibbonGalleryItem
* item
, wxString
* name
)
534 ColourClientData
*data
= (ColourClientData
*)gallery
->GetItemClientObject(item
);
536 *name
= data
->GetName();
537 return data
->GetColour();
540 void MyFrame
::OnHoveredColourChange(wxRibbonGalleryEvent
& evt
)
542 // Set the background of the gallery to the hovered colour, or back to the
543 // default if there is no longer a hovered item.
545 wxRibbonGallery
*gallery
= evt
.GetGallery();
546 wxRibbonArtProvider
*provider
= gallery
->GetArtProvider();
548 if(evt
.GetGalleryItem() != NULL
)
550 if(provider
== m_ribbon
->GetArtProvider())
552 provider
= provider
->Clone();
553 gallery
->SetArtProvider(provider
);
555 provider
->SetColour(wxRIBBON_ART_GALLERY_HOVER_BACKGROUND_COLOUR
,
556 GetGalleryColour(evt
.GetGallery(), evt
.GetGalleryItem(), NULL
));
560 if(provider
!= m_ribbon
->GetArtProvider())
562 gallery
->SetArtProvider(m_ribbon
->GetArtProvider());
568 void MyFrame
::OnPrimaryColourSelect(wxRibbonGalleryEvent
& evt
)
571 wxColour colour
= GetGalleryColour(evt
.GetGallery(), evt
.GetGalleryItem(), &name
);
572 AddText(wxT("Colour \"") + name
+ wxT("\" selected as primary."));
573 wxColour secondary
, tertiary
;
574 m_ribbon
->GetArtProvider()->GetColourScheme(NULL
, &secondary
, &tertiary
);
575 m_ribbon
->GetArtProvider()->SetColourScheme(colour
, secondary
, tertiary
);
576 ResetGalleryArtProviders();
580 void MyFrame
::OnSecondaryColourSelect(wxRibbonGalleryEvent
& evt
)
583 wxColour colour
= GetGalleryColour(evt
.GetGallery(), evt
.GetGalleryItem(), &name
);
584 AddText(wxT("Colour \"") + name
+ wxT("\" selected as secondary."));
585 wxColour primary
, tertiary
;
586 m_ribbon
->GetArtProvider()->GetColourScheme(&primary
, NULL
, &tertiary
);
587 m_ribbon
->GetArtProvider()->SetColourScheme(primary
, colour
, tertiary
);
588 ResetGalleryArtProviders();
592 void MyFrame
::ResetGalleryArtProviders()
594 if(m_primary_gallery
->GetArtProvider() != m_ribbon
->GetArtProvider())
596 delete m_primary_gallery
->GetArtProvider();
597 m_primary_gallery
->SetArtProvider(m_ribbon
->GetArtProvider());
599 if(m_secondary_gallery
->GetArtProvider() != m_ribbon
->GetArtProvider())
601 delete m_secondary_gallery
->GetArtProvider();
602 m_secondary_gallery
->SetArtProvider(m_ribbon
->GetArtProvider());
606 void MyFrame
::OnChangeText1(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
608 m_new_text
= wxT("One");
611 void MyFrame
::OnChangeText2(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
613 m_new_text
= wxT("Two");
616 void MyFrame
::OnEnable(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
621 void MyFrame
::OnDisable(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
626 void MyFrame
::OnCheck(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
628 m_bChecked
= !m_bChecked
;
631 void MyFrame
::OnEnableUpdateUI(wxUpdateUIEvent
& evt
)
633 evt
.Enable(m_bEnabled
);
636 void MyFrame
::OnCheckUpdateUI(wxUpdateUIEvent
& evt
)
638 evt
.Check(m_bChecked
);
641 void MyFrame
::OnChangeTextUpdateUI(wxUpdateUIEvent
& evt
)
643 if ( !m_new_text
.IsEmpty() )
645 evt
.SetText(m_new_text
);
646 m_new_text
= wxT("");
650 void MyFrame
::OnSelectionExpandHButton(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
652 AddText(wxT("Expand selection horizontally button clicked."));
655 void MyFrame
::OnSelectionExpandVButton(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
657 AddText(wxT("Expand selection vertically button clicked."));
660 void MyFrame
::OnSelectionContractButton(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
662 AddText(wxT("Contract selection button clicked."));
665 void MyFrame
::OnCircleButton(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
667 AddText(wxT("Circle button clicked."));
670 void MyFrame
::OnCrossButton(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
672 AddText(wxT("Cross button clicked."));
675 void MyFrame
::OnTriangleButton(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
677 AddText(wxT("Triangle button clicked."));
680 void MyFrame
::OnTriangleDropdown(wxRibbonButtonBarEvent
& evt
)
683 menu
.Append(wxID_ANY
, wxT("Equilateral"));
684 menu
.Append(wxID_ANY
, wxT("Isosceles"));
685 menu
.Append(wxID_ANY
, wxT("Scalene"));
687 evt
.PopupMenu(&menu
);
690 void MyFrame
::OnSquareButton(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
692 AddText(wxT("Square button clicked."));
695 void MyFrame
::OnPolygonDropdown(wxRibbonButtonBarEvent
& evt
)
698 menu
.Append(wxID_ANY
, wxT("Pentagon (5 sided)"));
699 menu
.Append(wxID_ANY
, wxT("Hexagon (6 sided)"));
700 menu
.Append(wxID_ANY
, wxT("Heptagon (7 sided)"));
701 menu
.Append(wxID_ANY
, wxT("Octogon (8 sided)"));
702 menu
.Append(wxID_ANY
, wxT("Nonagon (9 sided)"));
703 menu
.Append(wxID_ANY
, wxT("Decagon (10 sided)"));
705 evt
.PopupMenu(&menu
);
708 void MyFrame
::OnJustify(wxRibbonToolBarEvent
& evt
)
710 long style
= m_logwindow
->GetWindowStyle() &
711 ~(wxTE_LEFT
| wxTE_CENTER
| wxTE_RIGHT
);
714 case wxID_JUSTIFY_LEFT
:
715 m_logwindow
->SetWindowStyle(style
| wxTE_LEFT
);
717 case wxID_JUSTIFY_CENTER
:
718 m_logwindow
->SetWindowStyle(style
| wxTE_CENTER
);
720 case wxID_JUSTIFY_RIGHT
:
721 m_logwindow
->SetWindowStyle(style
| wxTE_RIGHT
);
726 void MyFrame
::OnJustifyUpdateUI(wxUpdateUIEvent
& evt
)
730 case wxID_JUSTIFY_LEFT
:
731 evt
.Check(!m_logwindow
->HasFlag(wxTE_CENTER
| wxTE_RIGHT
));
733 case wxID_JUSTIFY_CENTER
:
734 evt
.Check(m_logwindow
->HasFlag(wxTE_CENTER
));
736 case wxID_JUSTIFY_RIGHT
:
737 evt
.Check(m_logwindow
->HasFlag(wxTE_RIGHT
));
742 void MyFrame
::OnNew(wxRibbonToolBarEvent
& WXUNUSED(evt
))
744 AddText(wxT("New button clicked."));
747 void MyFrame
::OnNewDropdown(wxRibbonToolBarEvent
& evt
)
750 menu
.Append(wxID_ANY
, wxT("New Document"));
751 menu
.Append(wxID_ANY
, wxT("New Template"));
752 menu
.Append(wxID_ANY
, wxT("New Mail"));
754 evt
.PopupMenu(&menu
);
757 void MyFrame
::OnPrint(wxRibbonToolBarEvent
& WXUNUSED(evt
))
759 AddText(wxT("Print button clicked."));
762 void MyFrame
::OnPrintDropdown(wxRibbonToolBarEvent
& evt
)
765 menu
.Append(wxID_ANY
, wxT("Print"));
766 menu
.Append(wxID_ANY
, wxT("Preview"));
767 menu
.Append(wxID_ANY
, wxT("Options"));
769 evt
.PopupMenu(&menu
);
772 void MyFrame
::OnRedoDropdown(wxRibbonToolBarEvent
& evt
)
775 menu
.Append(wxID_ANY
, wxT("Redo E"));
776 menu
.Append(wxID_ANY
, wxT("Redo F"));
777 menu
.Append(wxID_ANY
, wxT("Redo G"));
779 evt
.PopupMenu(&menu
);
782 void MyFrame
::OnUndoDropdown(wxRibbonToolBarEvent
& evt
)
785 menu
.Append(wxID_ANY
, wxT("Undo C"));
786 menu
.Append(wxID_ANY
, wxT("Undo B"));
787 menu
.Append(wxID_ANY
, wxT("Undo A"));
789 evt
.PopupMenu(&menu
);
792 void MyFrame
::OnPositionTopLabels(wxCommandEvent
& WXUNUSED(evt
))
794 SetBarStyle(wxRIBBON_BAR_DEFAULT_STYLE
);
797 void MyFrame
::OnPositionTopIcons(wxCommandEvent
& WXUNUSED(evt
))
799 SetBarStyle((wxRIBBON_BAR_DEFAULT_STYLE
&~wxRIBBON_BAR_SHOW_PAGE_LABELS
)
800 | wxRIBBON_BAR_SHOW_PAGE_ICONS
);
803 void MyFrame
::OnPositionTopBoth(wxCommandEvent
& WXUNUSED(evt
))
805 SetBarStyle(wxRIBBON_BAR_DEFAULT_STYLE
| wxRIBBON_BAR_SHOW_PAGE_ICONS
);
808 void MyFrame
::OnPositionLeftLabels(wxCommandEvent
& WXUNUSED(evt
))
810 SetBarStyle(wxRIBBON_BAR_DEFAULT_STYLE
| wxRIBBON_BAR_FLOW_VERTICAL
);
813 void MyFrame
::OnPositionLeftIcons(wxCommandEvent
& WXUNUSED(evt
))
815 SetBarStyle((wxRIBBON_BAR_DEFAULT_STYLE
&~wxRIBBON_BAR_SHOW_PAGE_LABELS
) |
816 wxRIBBON_BAR_SHOW_PAGE_ICONS
| wxRIBBON_BAR_FLOW_VERTICAL
);
819 void MyFrame
::OnPositionLeftBoth(wxCommandEvent
& WXUNUSED(evt
))
821 SetBarStyle(wxRIBBON_BAR_DEFAULT_STYLE
| wxRIBBON_BAR_SHOW_PAGE_ICONS
|
822 wxRIBBON_BAR_FLOW_VERTICAL
);
825 void MyFrame
::OnPositionTop(wxRibbonToolBarEvent
& evt
)
827 OnPositionTopLabels(evt
);
830 void MyFrame
::OnPositionTopDropdown(wxRibbonToolBarEvent
& evt
)
833 menu
.Append(ID_POSITION_TOP
, wxT("Top with Labels"));
834 menu
.Append(ID_POSITION_TOP_ICONS
, wxT("Top with Icons"));
835 menu
.Append(ID_POSITION_TOP_BOTH
, wxT("Top with Both"));
836 evt
.PopupMenu(&menu
);
839 void MyFrame
::OnPositionLeft(wxRibbonToolBarEvent
& evt
)
841 OnPositionLeftIcons(evt
);
844 void MyFrame
::OnPositionLeftDropdown(wxRibbonToolBarEvent
& evt
)
847 menu
.Append(ID_POSITION_LEFT
, wxT("Left with Icons"));
848 menu
.Append(ID_POSITION_LEFT_LABELS
, wxT("Left with Labels"));
849 menu
.Append(ID_POSITION_LEFT_BOTH
, wxT("Left with Both"));
850 evt
.PopupMenu(&menu
);
853 void MyFrame
::OnTogglePanels(wxCommandEvent
& WXUNUSED(evt
))
855 m_ribbon
->ShowPanels(m_togglePanels
->GetValue());
858 void MyFrame
::OnExtButton(wxRibbonPanelEvent
& WXUNUSED(evt
))
860 wxMessageBox("Extension button clicked");
863 void MyFrame
::AddText(wxString msg
)
865 m_logwindow
->AppendText(msg
);
866 m_logwindow
->AppendText(wxT("\n"));
867 m_ribbon
->DismissExpandedPanel();
870 wxRibbonGalleryItem
* MyFrame
::AddColourToGallery(wxRibbonGallery
*gallery
,
871 wxString colour
, wxMemoryDC
& dc
,
874 wxRibbonGalleryItem
* item
= NULL
;
876 if (colour
!= wxT("Default"))
877 c
= wxColour(colour
);
882 const int iWidth
= 64;
883 const int iHeight
= 40;
885 wxBitmap
bitmap(iWidth
, iHeight
);
886 dc
.SelectObject(bitmap
);
888 dc
.SetPen(*wxBLACK_PEN
);
890 dc
.DrawRectangle(0, 0, iWidth
, iHeight
);
892 colour
= colour
.Mid(0, 1) + colour
.Mid(1).Lower();
893 wxSize size
= dc
.GetTextExtent(colour
);
894 wxColour foreground
= wxColour(~c
.Red(), ~c
.Green(), ~c
.Blue());
895 if(abs(foreground
.Red() - c
.Red()) + abs(foreground
.Blue() - c
.Blue())
896 + abs(foreground
.Green() - c
.Green()) < 64)
898 // Foreground too similar to background - use a different
899 // strategy to find a contrasting colour
900 foreground
= wxColour((c
.Red() + 64) % 256, 255 - c
.Green(),
901 (c
.Blue() + 192) % 256);
903 dc
.SetTextForeground(foreground
);
904 dc
.DrawText(colour
, (iWidth
- size
.GetWidth() + 1) / 2,
905 (iHeight
- size
.GetHeight()) / 2);
906 dc
.SelectObjectAsSource(wxNullBitmap
);
908 item
= gallery
->Append(bitmap
, wxID_ANY
);
909 gallery
->SetItemClientObject(item
, new ColourClientData(colour
, c
));
914 void MyFrame
::OnColourGalleryButton(wxCommandEvent
& evt
)
916 wxRibbonGallery
*gallery
= wxDynamicCast(evt
.GetEventObject(), wxRibbonGallery
);
920 m_ribbon
->DismissExpandedPanel();
921 if(gallery
->GetSelection())
922 m_colour_data
.SetColour(GetGalleryColour(gallery
, gallery
->GetSelection(), NULL
));
923 wxColourDialog
dlg(this, &m_colour_data
);
924 if(dlg
.ShowModal() == wxID_OK
)
926 m_colour_data
= dlg
.GetColourData();
927 wxColour clr
= m_colour_data
.GetColour();
929 // Try to find colour in gallery
930 wxRibbonGalleryItem
*item
= NULL
;
931 for(unsigned int i
= 0; i
< gallery
->GetCount(); ++i
)
933 item
= gallery
->GetItem(i
);
934 if(GetGalleryColour(gallery
, item
, NULL
) == clr
)
940 // Colour not in gallery - add it
943 item
= AddColourToGallery(gallery
,
944 clr
.GetAsString(wxC2S_HTML_SYNTAX
), m_bitmap_creation_dc
,
950 gallery
->EnsureVisible(item
);
951 gallery
->SetSelection(item
);
953 // Send an event to respond to the selection change
954 wxRibbonGalleryEvent
dummy(wxEVT_COMMAND_RIBBONGALLERY_SELECTED
, gallery
->GetId());
955 dummy
.SetEventObject(gallery
);
956 dummy
.SetGallery(gallery
);
957 dummy
.SetGalleryItem(item
);
958 ProcessWindowEvent(dummy
);
962 void MyFrame
::OnDefaultProvider(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
964 m_ribbon
->DismissExpandedPanel();
965 SetArtProvider(new wxRibbonDefaultArtProvider
);
968 void MyFrame
::OnAUIProvider(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
970 m_ribbon
->DismissExpandedPanel();
971 SetArtProvider(new wxRibbonAUIArtProvider
);
974 void MyFrame
::OnMSWProvider(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
976 m_ribbon
->DismissExpandedPanel();
977 SetArtProvider(new wxRibbonMSWArtProvider
);
980 void MyFrame
::SetArtProvider(wxRibbonArtProvider
*prov
)
983 m_ribbon
->SetArtProvider(prov
);
985 prov
->GetColourScheme(&m_default_primary
, &m_default_secondary
,
986 &m_default_tertiary
);
987 PopulateColoursPanel(m_primary_gallery
->GetParent(), m_default_primary
,
989 PopulateColoursPanel(m_secondary_gallery
->GetParent(), m_default_secondary
,
990 ID_SECONDARY_COLOUR
);
994 GetSizer()->Layout();
997 void MyFrame
::OnRemovePage(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
999 size_t n
= m_ribbon
->GetPageCount();
1002 m_ribbon
->DeletePage(n
-1);
1003 m_ribbon
->Realize();
1007 void MyFrame
::OnHidePages(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
1009 m_ribbon
->HidePage(1);
1010 m_ribbon
->HidePage(2);
1011 m_ribbon
->HidePage(3);
1012 m_ribbon
->Realize();
1015 void MyFrame
::OnShowPages(wxRibbonButtonBarEvent
& WXUNUSED(evt
))
1017 m_ribbon
->ShowPage(1);
1018 m_ribbon
->ShowPage(2);
1019 m_ribbon
->ShowPage(3);
1020 m_ribbon
->Realize();
1023 void MyFrame
::OnRibbonBarToggled(wxRibbonBarEvent
& WXUNUSED(evt
))
1025 AddText(wxString
::Format("Ribbon bar %s.",
1026 m_ribbon
->ArePanelsShown()
1031 void MyFrame
::OnRibbonBarHelpClicked(wxRibbonBarEvent
& WXUNUSED(evt
))
1033 AddText("Ribbon bar help clicked");
1036 // This shows how to hide ribbon dynamically if there is not enough space.
1037 void MyFrame
::OnSizeEvent(wxSizeEvent
& evt
)
1039 if ( evt
.GetSize().GetWidth() < 200 )