1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: src/ribbon/gallery.cpp
3 // Purpose: Ribbon control which displays a gallery of items to choose from
4 // Author: Peter Cawley
8 // Copyright: (C) Peter Cawley
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
12 #include "wx/wxprec.h"
20 #include "wx/ribbon/gallery.h"
21 #include "wx/ribbon/art.h"
22 #include "wx/ribbon/bar.h"
23 #include "wx/dcbuffer.h"
24 #include "wx/clntdata.h"
30 #include "wx/msw/private.h"
33 wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONGALLERY_HOVER_CHANGED
, wxRibbonGalleryEvent
);
34 wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONGALLERY_SELECTED
, wxRibbonGalleryEvent
);
35 wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONGALLERY_CLICKED
, wxRibbonGalleryEvent
);
37 IMPLEMENT_DYNAMIC_CLASS(wxRibbonGalleryEvent
, wxCommandEvent
)
38 IMPLEMENT_CLASS(wxRibbonGallery
, wxRibbonControl
)
40 class wxRibbonGalleryItem
49 void SetId(int id
) {m_id
= id
;}
50 void SetBitmap(const wxBitmap
& bitmap
) {m_bitmap
= bitmap
;}
51 const wxBitmap
& GetBitmap() const {return m_bitmap
;}
52 void SetIsVisible(bool visible
) {m_is_visible
= visible
;}
53 void SetPosition(int x
, int y
, const wxSize
& size
)
55 m_position
= wxRect(wxPoint(x
, y
), size
);
57 bool IsVisible() const {return m_is_visible
;}
58 const wxRect
& GetPosition() const {return m_position
;}
60 void SetClientObject(wxClientData
*data
) {m_client_data
.SetClientObject(data
);}
61 wxClientData
*GetClientObject() const {return m_client_data
.GetClientObject();}
62 void SetClientData(void *data
) {m_client_data
.SetClientData(data
);}
63 void *GetClientData() const {return m_client_data
.GetClientData();}
67 wxClientDataContainer m_client_data
;
73 BEGIN_EVENT_TABLE(wxRibbonGallery
, wxRibbonControl
)
74 EVT_ENTER_WINDOW(wxRibbonGallery::OnMouseEnter
)
75 EVT_ERASE_BACKGROUND(wxRibbonGallery::OnEraseBackground
)
76 EVT_LEAVE_WINDOW(wxRibbonGallery::OnMouseLeave
)
77 EVT_LEFT_DOWN(wxRibbonGallery::OnMouseDown
)
78 EVT_LEFT_UP(wxRibbonGallery::OnMouseUp
)
79 EVT_MOTION(wxRibbonGallery::OnMouseMove
)
80 EVT_PAINT(wxRibbonGallery::OnPaint
)
81 EVT_SIZE(wxRibbonGallery::OnSize
)
84 wxRibbonGallery::wxRibbonGallery()
88 wxRibbonGallery::wxRibbonGallery(wxWindow
* parent
,
93 : wxRibbonControl(parent
, id
, pos
, size
, wxBORDER_NONE
)
98 wxRibbonGallery::~wxRibbonGallery()
103 bool wxRibbonGallery::Create(wxWindow
* parent
,
109 if(!wxRibbonControl::Create(parent
, id
, pos
, size
, wxBORDER_NONE
))
118 void wxRibbonGallery::CommonInit(long WXUNUSED(style
))
120 m_selected_item
= NULL
;
121 m_hovered_item
= NULL
;
122 m_active_item
= NULL
;
123 m_scroll_up_button_rect
= wxRect(0, 0, 0, 0);
124 m_scroll_down_button_rect
= wxRect(0, 0, 0, 0);
125 m_extension_button_rect
= wxRect(0, 0, 0, 0);
126 m_mouse_active_rect
= NULL
;
127 m_bitmap_size
= wxSize(64, 32);
128 m_bitmap_padded_size
= m_bitmap_size
;
129 m_item_separation_x
= 0;
130 m_item_separation_y
= 0;
133 m_up_button_state
= wxRIBBON_GALLERY_BUTTON_DISABLED
;
134 m_down_button_state
= wxRIBBON_GALLERY_BUTTON_NORMAL
;
135 m_extension_button_state
= wxRIBBON_GALLERY_BUTTON_NORMAL
;
138 SetBackgroundStyle(wxBG_STYLE_CUSTOM
);
141 void wxRibbonGallery::OnMouseEnter(wxMouseEvent
& evt
)
144 if(m_mouse_active_rect
!= NULL
&& !evt
.LeftIsDown())
146 m_mouse_active_rect
= NULL
;
147 m_active_item
= NULL
;
152 void wxRibbonGallery::OnMouseMove(wxMouseEvent
& evt
)
154 bool refresh
= false;
155 wxPoint pos
= evt
.GetPosition();
157 if(TestButtonHover(m_scroll_up_button_rect
, pos
, &m_up_button_state
))
159 if(TestButtonHover(m_scroll_down_button_rect
, pos
, &m_down_button_state
))
161 if(TestButtonHover(m_extension_button_rect
, pos
, &m_extension_button_state
))
164 wxRibbonGalleryItem
*hovered_item
= NULL
;
165 wxRibbonGalleryItem
*active_item
= NULL
;
166 if(m_client_rect
.Contains(pos
))
168 if(m_art
&& m_art
->GetFlags() & wxRIBBON_BAR_FLOW_VERTICAL
)
169 pos
.x
+= m_scroll_amount
;
171 pos
.y
+= m_scroll_amount
;
173 size_t item_count
= m_items
.Count();
175 for(item_i
= 0; item_i
< item_count
; ++item_i
)
177 wxRibbonGalleryItem
*item
= m_items
.Item(item_i
);
178 if(!item
->IsVisible())
181 if(item
->GetPosition().Contains(pos
))
183 if(m_mouse_active_rect
== &item
->GetPosition())
190 if(active_item
!= m_active_item
)
192 m_active_item
= active_item
;
195 if(hovered_item
!= m_hovered_item
)
197 m_hovered_item
= hovered_item
;
198 wxRibbonGalleryEvent
notification(
199 wxEVT_COMMAND_RIBBONGALLERY_HOVER_CHANGED
, GetId());
200 notification
.SetEventObject(this);
201 notification
.SetGallery(this);
202 notification
.SetGalleryItem(hovered_item
);
203 ProcessWindowEvent(notification
);
211 bool wxRibbonGallery::TestButtonHover(const wxRect
& rect
, wxPoint pos
,
212 wxRibbonGalleryButtonState
* state
)
214 if(*state
== wxRIBBON_GALLERY_BUTTON_DISABLED
)
217 wxRibbonGalleryButtonState new_state
;
218 if(rect
.Contains(pos
))
220 if(m_mouse_active_rect
== &rect
)
221 new_state
= wxRIBBON_GALLERY_BUTTON_ACTIVE
;
223 new_state
= wxRIBBON_GALLERY_BUTTON_HOVERED
;
226 new_state
= wxRIBBON_GALLERY_BUTTON_NORMAL
;
228 if(new_state
!= *state
)
239 void wxRibbonGallery::OnMouseLeave(wxMouseEvent
& WXUNUSED(evt
))
242 m_active_item
= NULL
;
243 if(m_up_button_state
!= wxRIBBON_GALLERY_BUTTON_DISABLED
)
244 m_up_button_state
= wxRIBBON_GALLERY_BUTTON_NORMAL
;
245 if(m_down_button_state
!= wxRIBBON_GALLERY_BUTTON_DISABLED
)
246 m_down_button_state
= wxRIBBON_GALLERY_BUTTON_NORMAL
;
247 if(m_extension_button_state
!= wxRIBBON_GALLERY_BUTTON_DISABLED
)
248 m_extension_button_state
= wxRIBBON_GALLERY_BUTTON_NORMAL
;
249 if(m_hovered_item
!= NULL
)
251 m_hovered_item
= NULL
;
252 wxRibbonGalleryEvent
notification(
253 wxEVT_COMMAND_RIBBONGALLERY_HOVER_CHANGED
, GetId());
254 notification
.SetEventObject(this);
255 notification
.SetGallery(this);
256 ProcessWindowEvent(notification
);
261 void wxRibbonGallery::OnMouseDown(wxMouseEvent
& evt
)
263 wxPoint pos
= evt
.GetPosition();
264 m_mouse_active_rect
= NULL
;
265 if(m_client_rect
.Contains(pos
))
267 if(m_art
&& m_art
->GetFlags() & wxRIBBON_BAR_FLOW_VERTICAL
)
268 pos
.x
+= m_scroll_amount
;
270 pos
.y
+= m_scroll_amount
;
271 size_t item_count
= m_items
.Count();
273 for(item_i
= 0; item_i
< item_count
; ++item_i
)
275 wxRibbonGalleryItem
*item
= m_items
.Item(item_i
);
276 if(!item
->IsVisible())
279 const wxRect
& rect
= item
->GetPosition();
280 if(rect
.Contains(pos
))
282 m_active_item
= item
;
283 m_mouse_active_rect
= &rect
;
288 else if(m_scroll_up_button_rect
.Contains(pos
))
290 if(m_up_button_state
!= wxRIBBON_GALLERY_BUTTON_DISABLED
)
292 m_mouse_active_rect
= &m_scroll_up_button_rect
;
293 m_up_button_state
= wxRIBBON_GALLERY_BUTTON_ACTIVE
;
296 else if(m_scroll_down_button_rect
.Contains(pos
))
298 if(m_down_button_state
!= wxRIBBON_GALLERY_BUTTON_DISABLED
)
300 m_mouse_active_rect
= &m_scroll_down_button_rect
;
301 m_down_button_state
= wxRIBBON_GALLERY_BUTTON_ACTIVE
;
304 else if(m_extension_button_rect
.Contains(pos
))
306 if(m_extension_button_state
!= wxRIBBON_GALLERY_BUTTON_DISABLED
)
308 m_mouse_active_rect
= &m_extension_button_rect
;
309 m_extension_button_state
= wxRIBBON_GALLERY_BUTTON_ACTIVE
;
312 if(m_mouse_active_rect
!= NULL
)
316 void wxRibbonGallery::OnMouseUp(wxMouseEvent
& evt
)
318 if(m_mouse_active_rect
!= NULL
)
320 wxPoint pos
= evt
.GetPosition();
323 if(m_art
&& m_art
->GetFlags() & wxRIBBON_BAR_FLOW_VERTICAL
)
324 pos
.x
+= m_scroll_amount
;
326 pos
.y
+= m_scroll_amount
;
328 if(m_mouse_active_rect
->Contains(pos
))
330 if(m_mouse_active_rect
== &m_scroll_up_button_rect
)
332 m_up_button_state
= wxRIBBON_GALLERY_BUTTON_HOVERED
;
335 else if(m_mouse_active_rect
== &m_scroll_down_button_rect
)
337 m_down_button_state
= wxRIBBON_GALLERY_BUTTON_HOVERED
;
340 else if(m_mouse_active_rect
== &m_extension_button_rect
)
342 m_extension_button_state
= wxRIBBON_GALLERY_BUTTON_HOVERED
;
343 wxCommandEvent
notification(wxEVT_COMMAND_BUTTON_CLICKED
,
345 notification
.SetEventObject(this);
346 ProcessWindowEvent(notification
);
348 else if(m_active_item
!= NULL
)
350 if(m_selected_item
!= m_active_item
)
352 m_selected_item
= m_active_item
;
353 wxRibbonGalleryEvent
notification(
354 wxEVT_COMMAND_RIBBONGALLERY_SELECTED
, GetId());
355 notification
.SetEventObject(this);
356 notification
.SetGallery(this);
357 notification
.SetGalleryItem(m_selected_item
);
358 ProcessWindowEvent(notification
);
361 wxRibbonGalleryEvent
notification(
362 wxEVT_COMMAND_RIBBONGALLERY_CLICKED
, GetId());
363 notification
.SetEventObject(this);
364 notification
.SetGallery(this);
365 notification
.SetGalleryItem(m_selected_item
);
366 ProcessWindowEvent(notification
);
369 m_mouse_active_rect
= NULL
;
370 m_active_item
= NULL
;
375 void wxRibbonGallery::SetItemClientObject(wxRibbonGalleryItem
* itm
,
378 itm
->SetClientObject(data
);
381 wxClientData
* wxRibbonGallery::GetItemClientObject(const wxRibbonGalleryItem
* itm
) const
383 return itm
->GetClientObject();
386 void wxRibbonGallery::SetItemClientData(wxRibbonGalleryItem
* itm
, void* data
)
388 itm
->SetClientData(data
);
391 void* wxRibbonGallery::GetItemClientData(const wxRibbonGalleryItem
* itm
) const
393 return itm
->GetClientData();
396 bool wxRibbonGallery::ScrollLines(int lines
)
398 if(m_scroll_limit
== 0 || m_art
== NULL
)
401 int line_size
= m_bitmap_padded_size
.GetHeight();
402 if(m_art
->GetFlags() & wxRIBBON_BAR_FLOW_VERTICAL
)
403 line_size
= m_bitmap_padded_size
.GetWidth();
406 if(m_scroll_amount
> 0)
408 m_scroll_amount
+= lines
* line_size
;
409 if(m_scroll_amount
<= 0)
412 m_up_button_state
= wxRIBBON_GALLERY_BUTTON_DISABLED
;
414 else if(m_up_button_state
== wxRIBBON_GALLERY_BUTTON_DISABLED
)
415 m_up_button_state
= wxRIBBON_GALLERY_BUTTON_NORMAL
;
416 if(m_down_button_state
== wxRIBBON_GALLERY_BUTTON_DISABLED
)
417 m_down_button_state
= wxRIBBON_GALLERY_BUTTON_NORMAL
;
423 if(m_scroll_amount
< m_scroll_limit
)
425 m_scroll_amount
+= lines
* line_size
;
426 if(m_scroll_amount
>= m_scroll_limit
)
428 m_scroll_amount
= m_scroll_limit
;
429 m_down_button_state
= wxRIBBON_GALLERY_BUTTON_DISABLED
;
431 else if(m_down_button_state
== wxRIBBON_GALLERY_BUTTON_DISABLED
)
432 m_down_button_state
= wxRIBBON_GALLERY_BUTTON_NORMAL
;
433 if(m_up_button_state
== wxRIBBON_GALLERY_BUTTON_DISABLED
)
434 m_up_button_state
= wxRIBBON_GALLERY_BUTTON_NORMAL
;
441 void wxRibbonGallery::EnsureVisible(const wxRibbonGalleryItem
* item
)
443 if(item
== NULL
|| !item
->IsVisible() || IsEmpty())
446 if(m_art
->GetFlags() & wxRIBBON_BAR_FLOW_VERTICAL
)
448 int x
= item
->GetPosition().GetLeft();
449 int base_x
= m_items
.Item(0)->GetPosition().GetLeft();
450 int delta
= x
- base_x
- m_scroll_amount
;
451 ScrollLines(delta
/ m_bitmap_padded_size
.GetWidth());
455 int y
= item
->GetPosition().GetTop();
456 int base_y
= m_items
.Item(0)->GetPosition().GetTop();
457 int delta
= y
- base_y
- m_scroll_amount
;
458 ScrollLines(delta
/ m_bitmap_padded_size
.GetHeight());
462 bool wxRibbonGallery::IsHovered() const
467 void wxRibbonGallery::OnEraseBackground(wxEraseEvent
& WXUNUSED(evt
))
469 // All painting done in main paint handler to minimise flicker
472 void wxRibbonGallery::OnPaint(wxPaintEvent
& WXUNUSED(evt
))
474 wxAutoBufferedPaintDC
dc(this);
478 m_art
->DrawGalleryBackground(dc
, this, GetSize());
480 int padding_top
= m_art
->GetMetric(wxRIBBON_ART_GALLERY_BITMAP_PADDING_TOP_SIZE
);
481 int padding_left
= m_art
->GetMetric(wxRIBBON_ART_GALLERY_BITMAP_PADDING_LEFT_SIZE
);
483 dc
.SetClippingRegion(m_client_rect
);
485 bool offset_vertical
= true;
486 if(m_art
->GetFlags() & wxRIBBON_BAR_FLOW_VERTICAL
)
487 offset_vertical
= false;
488 size_t item_count
= m_items
.Count();
490 for(item_i
= 0; item_i
< item_count
; ++item_i
)
492 wxRibbonGalleryItem
*item
= m_items
.Item(item_i
);
493 if(!item
->IsVisible())
496 const wxRect
& pos
= item
->GetPosition();
497 wxRect
offset_pos(pos
);
499 offset_pos
.SetTop(offset_pos
.GetTop() - m_scroll_amount
);
501 offset_pos
.SetLeft(offset_pos
.GetLeft() - m_scroll_amount
);
502 m_art
->DrawGalleryItemBackground(dc
, this, offset_pos
, item
);
503 dc
.DrawBitmap(item
->GetBitmap(), offset_pos
.GetLeft() + padding_left
,
504 offset_pos
.GetTop() + padding_top
);
508 void wxRibbonGallery::OnSize(wxSizeEvent
& WXUNUSED(evt
))
513 wxRibbonGalleryItem
* wxRibbonGallery::Append(const wxBitmap
& bitmap
, int id
)
515 wxASSERT(bitmap
.IsOk());
516 if(m_items
.IsEmpty())
518 m_bitmap_size
= bitmap
.GetSize();
523 wxASSERT(bitmap
.GetSize() == m_bitmap_size
);
526 wxRibbonGalleryItem
*item
= new wxRibbonGalleryItem
;
528 item
->SetBitmap(bitmap
);
533 wxRibbonGalleryItem
* wxRibbonGallery::Append(const wxBitmap
& bitmap
, int id
,
536 wxRibbonGalleryItem
*item
= Append(bitmap
, id
);
537 item
->SetClientData(clientData
);
541 wxRibbonGalleryItem
* wxRibbonGallery::Append(const wxBitmap
& bitmap
, int id
,
542 wxClientData
* clientData
)
544 wxRibbonGalleryItem
*item
= Append(bitmap
, id
);
545 item
->SetClientObject(clientData
);
549 void wxRibbonGallery::Clear()
551 size_t item_count
= m_items
.Count();
553 for(item_i
= 0; item_i
< item_count
; ++item_i
)
555 wxRibbonGalleryItem
*item
= m_items
.Item(item_i
);
561 bool wxRibbonGallery::IsSizingContinuous() const
566 void wxRibbonGallery::CalculateMinSize()
568 if(m_art
== NULL
|| !m_bitmap_size
.IsFullySpecified())
570 SetMinSize(wxSize(20, 20));
574 m_bitmap_padded_size
= m_bitmap_size
;
575 m_bitmap_padded_size
.IncBy(
576 m_art
->GetMetric(wxRIBBON_ART_GALLERY_BITMAP_PADDING_LEFT_SIZE
) +
577 m_art
->GetMetric(wxRIBBON_ART_GALLERY_BITMAP_PADDING_RIGHT_SIZE
),
578 m_art
->GetMetric(wxRIBBON_ART_GALLERY_BITMAP_PADDING_TOP_SIZE
) +
579 m_art
->GetMetric(wxRIBBON_ART_GALLERY_BITMAP_PADDING_BOTTOM_SIZE
));
582 SetMinSize(m_art
->GetGallerySize(dc
, this, m_bitmap_padded_size
));
584 // The best size is displaying several items
585 m_best_size
= m_bitmap_padded_size
;
587 m_best_size
= m_art
->GetGallerySize(dc
, this, m_best_size
);
591 bool wxRibbonGallery::Realize()
597 bool wxRibbonGallery::Layout()
604 wxSize client_size
= m_art
->GetGalleryClientSize(dc
, this, GetSize(),
605 &origin
, &m_scroll_up_button_rect
, &m_scroll_down_button_rect
,
606 &m_extension_button_rect
);
607 m_client_rect
= wxRect(origin
, client_size
);
612 size_t item_count
= m_items
.Count();
614 long art_flags
= m_art
->GetFlags();
615 for(item_i
= 0; item_i
< item_count
; ++item_i
)
617 wxRibbonGalleryItem
*item
= m_items
.Item(item_i
);
618 item
->SetIsVisible(true);
619 if(art_flags
& wxRIBBON_BAR_FLOW_VERTICAL
)
621 if(y_cursor
+ m_bitmap_padded_size
.y
> client_size
.GetHeight())
626 x_cursor
+= m_bitmap_padded_size
.x
;
628 item
->SetPosition(origin
.x
+ x_cursor
, origin
.y
+ y_cursor
,
629 m_bitmap_padded_size
);
630 y_cursor
+= m_bitmap_padded_size
.y
;
634 if(x_cursor
+ m_bitmap_padded_size
.x
> client_size
.GetWidth())
639 y_cursor
+= m_bitmap_padded_size
.y
;
641 item
->SetPosition(origin
.x
+ x_cursor
, origin
.y
+ y_cursor
,
642 m_bitmap_padded_size
);
643 x_cursor
+= m_bitmap_padded_size
.x
;
646 for(; item_i
< item_count
; ++item_i
)
648 wxRibbonGalleryItem
*item
= m_items
.Item(item_i
);
649 item
->SetIsVisible(false);
651 if(art_flags
& wxRIBBON_BAR_FLOW_VERTICAL
)
652 m_scroll_limit
= x_cursor
;
654 m_scroll_limit
= y_cursor
;
655 if(m_scroll_amount
>= m_scroll_limit
)
657 m_scroll_amount
= m_scroll_limit
;
658 m_down_button_state
= wxRIBBON_GALLERY_BUTTON_DISABLED
;
660 else if(m_down_button_state
== wxRIBBON_GALLERY_BUTTON_DISABLED
)
661 m_down_button_state
= wxRIBBON_GALLERY_BUTTON_NORMAL
;
663 if(m_scroll_amount
<= 0)
666 m_up_button_state
= wxRIBBON_GALLERY_BUTTON_DISABLED
;
668 else if(m_up_button_state
== wxRIBBON_GALLERY_BUTTON_DISABLED
)
669 m_up_button_state
= wxRIBBON_GALLERY_BUTTON_NORMAL
;
674 wxSize
wxRibbonGallery::DoGetBestSize() const
679 wxSize
wxRibbonGallery::DoGetNextSmallerSize(wxOrientation direction
,
680 wxSize relative_to
) const
687 wxSize client
= m_art
->GetGalleryClientSize(dc
, this, relative_to
, NULL
,
701 if(client
.GetWidth() < 0 || client
.GetHeight() < 0)
704 client
.x
= (client
.x
/ m_bitmap_padded_size
.x
) * m_bitmap_padded_size
.x
;
705 client
.y
= (client
.y
/ m_bitmap_padded_size
.y
) * m_bitmap_padded_size
.y
;
707 wxSize size
= m_art
->GetGallerySize(dc
, this, client
);
708 wxSize minimum
= GetMinSize();
710 if(size
.GetWidth() < minimum
.GetWidth() ||
711 size
.GetHeight() < minimum
.GetHeight())
719 size
.SetHeight(relative_to
.GetHeight());
722 size
.SetWidth(relative_to
.GetWidth());
731 wxSize
wxRibbonGallery::DoGetNextLargerSize(wxOrientation direction
,
732 wxSize relative_to
) const
739 wxSize client
= m_art
->GetGalleryClientSize(dc
, this, relative_to
, NULL
,
742 // No need to grow if the given size can already display every item
743 int nitems
= (client
.GetWidth() / m_bitmap_padded_size
.x
) *
744 (client
.GetHeight() / m_bitmap_padded_size
.y
);
745 if(nitems
>= (int)m_items
.GetCount())
751 client
.IncBy(m_bitmap_padded_size
.x
, 0);
754 client
.IncBy(0, m_bitmap_padded_size
.y
);
757 client
.IncBy(m_bitmap_padded_size
);
761 client
.x
= (client
.x
/ m_bitmap_padded_size
.x
) * m_bitmap_padded_size
.x
;
762 client
.y
= (client
.y
/ m_bitmap_padded_size
.y
) * m_bitmap_padded_size
.y
;
764 wxSize size
= m_art
->GetGallerySize(dc
, this, client
);
765 wxSize minimum
= GetMinSize();
767 if(size
.GetWidth() < minimum
.GetWidth() ||
768 size
.GetHeight() < minimum
.GetHeight())
776 size
.SetHeight(relative_to
.GetHeight());
779 size
.SetWidth(relative_to
.GetWidth());
788 bool wxRibbonGallery::IsEmpty() const
790 return m_items
.IsEmpty();
793 unsigned int wxRibbonGallery::GetCount() const
795 return (unsigned int)m_items
.GetCount();
798 wxRibbonGalleryItem
* wxRibbonGallery::GetItem(unsigned int n
)
802 return m_items
.Item(n
);
805 void wxRibbonGallery::SetSelection(wxRibbonGalleryItem
* item
)
807 if(item
!= m_selected_item
)
809 m_selected_item
= item
;
814 wxRibbonGalleryItem
* wxRibbonGallery::GetSelection() const
816 return m_selected_item
;
819 wxRibbonGalleryItem
* wxRibbonGallery::GetHoveredItem() const
821 return m_hovered_item
;
824 wxRibbonGalleryItem
* wxRibbonGallery::GetActiveItem() const
826 return m_active_item
;
829 wxRibbonGalleryButtonState
wxRibbonGallery::GetUpButtonState() const
831 return m_up_button_state
;
834 wxRibbonGalleryButtonState
wxRibbonGallery::GetDownButtonState() const
836 return m_down_button_state
;
839 wxRibbonGalleryButtonState
wxRibbonGallery::GetExtensionButtonState() const
841 return m_extension_button_state
;
844 #endif // wxUSE_RIBBON