void MyFrame::OnColourGalleryButton(wxCommandEvent& evt) { wxRibbonGallery *gallery = wxDynamicCast(evt.GetEventObject(), wxRibbonGallery); if(gallery == NULL) return; m_ribbon->DismissExpandedPanel(); if(gallery->GetSelection()) m_colour_data.SetColour(GetGalleryColour(gallery, gallery->GetSelection(), NULL)); wxColourDialog dlg(this, &m_colour_data); if(dlg.ShowModal() == wxID_OK) { m_colour_data = dlg.GetColourData(); wxColour clr = m_colour_data.GetColour(); // Try to find colour in gallery wxRibbonGalleryItem *item = NULL; for(unsigned int i = 0; i < gallery->GetCount(); ++i) { item = gallery->GetItem(i); if(GetGalleryColour(gallery, item, NULL) == clr) break; else item = NULL; } // Colour not in gallery - add it if(item == NULL) { item = AddColourToGallery(gallery, clr.GetAsString(wxC2S_HTML_SYNTAX), m_bitmap_creation_dc, &clr); gallery->Realise(); } // Set selection gallery->EnsureVisible(item); gallery->SetSelection(item); // Send an event to respond to the selection change wxRibbonGalleryEvent dummy(wxEVT_RIBBONGALLERY_SELECTED, gallery->GetId()); dummy.SetEventObject(gallery); dummy.SetGallery(gallery); dummy.SetGalleryItem(item); ProcessWindowEvent(dummy); } }
wxColour wxGetColourFromUser(wxWindow *parent, const wxColour& colInit, const wxString& caption) { static wxColourData data; data.SetChooseFull(true); if ( colInit.Ok() ) { data.SetColour((wxColour &)colInit); // const_cast } wxColour colRet; wxColourDialog dialog(parent, &data); if (!caption.empty()) dialog.SetTitle(caption); if ( dialog.ShowModal() == wxID_OK ) { colRet = dialog.GetColourData().GetColour(); } //else: leave it invalid return colRet; }