Merge branch 'colour_dialogs_alpha' of https://github.com/a-wi/wxWidgets
Add support for alpha channel to wxColourPicker and wxColourDialog in wxGTK. Closes #14127.
This commit is contained in:
@@ -68,6 +68,7 @@ protected:
|
||||
// NOTE: this style is supported just by wxColourButtonGeneric and
|
||||
// thus is not exposed in wxColourPickerCtrl
|
||||
#define wxCLRP_SHOW_LABEL 0x0008
|
||||
#define wxCLRP_SHOW_ALPHA 0x0010
|
||||
|
||||
// map platform-dependent controls which implement the wxColourPickerWidgetBase
|
||||
// under the name "wxColourPickerWidget".
|
||||
@@ -146,7 +147,7 @@ public: // internal functions
|
||||
|
||||
protected:
|
||||
virtual long GetPickerStyle(long style) const wxOVERRIDE
|
||||
{ return (style & wxCLRP_SHOW_LABEL); }
|
||||
{ return (style & (wxCLRP_SHOW_LABEL | wxCLRP_SHOW_ALPHA)); }
|
||||
|
||||
private:
|
||||
wxDECLARE_DYNAMIC_CLASS(wxColourPickerCtrl);
|
||||
|
@@ -140,6 +140,7 @@ wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||
#endif // wxUSE_RICHMSGDLG
|
||||
#if wxUSE_COLOURDLG
|
||||
EVT_MENU(DIALOGS_CHOOSE_COLOUR, MyFrame::ChooseColour)
|
||||
EVT_MENU(DIALOGS_CHOOSE_COLOUR_ALPHA, MyFrame::ChooseColour)
|
||||
EVT_MENU(DIALOGS_GET_COLOUR, MyFrame::GetColour)
|
||||
#endif // wxUSE_COLOURDLG
|
||||
|
||||
@@ -375,7 +376,10 @@ bool MyApp::OnInit()
|
||||
wxMenu *choices_menu = new wxMenu;
|
||||
|
||||
#if wxUSE_COLOURDLG
|
||||
choices_menu->Append(DIALOGS_CHOOSE_COLOUR, wxT("&Choose bg colour"));
|
||||
wxMenu *choices_bg_colour = new wxMenu;
|
||||
choices_bg_colour->Append(DIALOGS_CHOOSE_COLOUR, wxT("&No opacity"));
|
||||
choices_bg_colour->Append(DIALOGS_CHOOSE_COLOUR_ALPHA, wxT("&With opacity"));
|
||||
choices_menu->Append(wxID_ANY, wxT("&Choose bg colour"), choices_bg_colour);
|
||||
choices_menu->Append(DIALOGS_GET_COLOUR, wxT("&Choose fg colour"));
|
||||
#endif // wxUSE_COLOURDLG
|
||||
|
||||
@@ -710,9 +714,10 @@ MyFrame::~MyFrame()
|
||||
|
||||
#if wxUSE_COLOURDLG
|
||||
|
||||
void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event))
|
||||
void MyFrame::ChooseColour(wxCommandEvent& event)
|
||||
{
|
||||
m_clrData.SetColour(m_canvas->GetBackgroundColour());
|
||||
m_clrData.SetChooseAlpha(event.GetId() == DIALOGS_CHOOSE_COLOUR_ALPHA);
|
||||
|
||||
wxColourDialog dialog(this, &m_clrData);
|
||||
dialog.SetTitle(_("Please choose the background colour"));
|
||||
|
@@ -65,8 +65,7 @@ of MSW, MAC and OS2
|
||||
#define USE_DIRDLG_GENERIC \
|
||||
((USE_WXMSW || USE_WXMAC) && USE_GENERIC_DIALOGS && wxUSE_DIRDLG)
|
||||
#define USE_FILEDLG_GENERIC \
|
||||
((((USE_WXMSW || USE_WXMAC || USE_WXGTK) \
|
||||
&& USE_GENERIC_DIALOGS) ) && wxUSE_FILEDLG)
|
||||
((USE_WXMSW || USE_WXMAC) && USE_GENERIC_DIALOGS && wxUSE_FILEDLG)
|
||||
#define USE_FONTDLG_GENERIC \
|
||||
((USE_WXMSW || USE_WXMACFONTDLG) && USE_GENERIC_DIALOGS && wxUSE_FONTDLG)
|
||||
|
||||
@@ -534,6 +533,7 @@ private:
|
||||
enum
|
||||
{
|
||||
DIALOGS_CHOOSE_COLOUR = wxID_HIGHEST,
|
||||
DIALOGS_CHOOSE_COLOUR_ALPHA,
|
||||
DIALOGS_GET_COLOUR,
|
||||
DIALOGS_CHOOSE_COLOUR_GENERIC,
|
||||
DIALOGS_CHOOSE_COLOUR_GENERIC_ALPHA,
|
||||
|
@@ -98,7 +98,8 @@ protected:
|
||||
// --------------
|
||||
|
||||
wxCheckBox *m_chkColourTextCtrl,
|
||||
*m_chkColourShowLabel;
|
||||
*m_chkColourShowLabel,
|
||||
*m_chkColourShowAlpha;
|
||||
wxBoxSizer *m_sizer;
|
||||
|
||||
private:
|
||||
@@ -145,6 +146,7 @@ void ColourPickerWidgetsPage::CreateContent()
|
||||
wxStaticBoxSizer *clrbox = new wxStaticBoxSizer(wxVERTICAL, this, wxT("&ColourPicker style"));
|
||||
m_chkColourTextCtrl = CreateCheckBoxAndAddToSizer(clrbox, wxT("With textctrl"));
|
||||
m_chkColourShowLabel = CreateCheckBoxAndAddToSizer(clrbox, wxT("With label"));
|
||||
m_chkColourShowAlpha = CreateCheckBoxAndAddToSizer(clrbox, wxT("With opacity"));
|
||||
boxleft->Add(clrbox, 0, wxALL|wxGROW, 5);
|
||||
|
||||
boxleft->Add(new wxButton(this, PickerPage_Reset, wxT("&Reset")),
|
||||
@@ -189,6 +191,9 @@ long ColourPickerWidgetsPage::GetPickerStyle()
|
||||
if ( m_chkColourShowLabel->GetValue() )
|
||||
style |= wxCLRP_SHOW_LABEL;
|
||||
|
||||
if ( m_chkColourShowAlpha->GetValue() )
|
||||
style |= wxCLRP_SHOW_ALPHA;
|
||||
|
||||
return style;
|
||||
}
|
||||
|
||||
@@ -227,7 +232,8 @@ void ColourPickerWidgetsPage::OnColourChange(wxColourPickerEvent& event)
|
||||
void ColourPickerWidgetsPage::OnCheckBox(wxCommandEvent &event)
|
||||
{
|
||||
if (event.GetEventObject() == m_chkColourTextCtrl ||
|
||||
event.GetEventObject() == m_chkColourShowLabel)
|
||||
event.GetEventObject() == m_chkColourShowLabel ||
|
||||
event.GetEventObject() == m_chkColourShowAlpha)
|
||||
RecreatePicker();
|
||||
}
|
||||
|
||||
|
@@ -78,6 +78,9 @@ bool wxColourButton::Create( wxWindow *parent, wxWindowID id,
|
||||
#endif
|
||||
g_object_ref(m_widget);
|
||||
|
||||
// Display opacity slider
|
||||
g_object_set(G_OBJECT(m_widget), "use-alpha",
|
||||
static_cast<bool>(style & wxCLRP_SHOW_ALPHA), NULL);
|
||||
// GtkColourButton signals
|
||||
g_signal_connect(m_widget, "color-set",
|
||||
G_CALLBACK(gtk_clrbutton_setcolor_callback), this);
|
||||
|
@@ -65,6 +65,7 @@ bool wxColourDialog::Create(wxWindow *parent, wxColourData *data)
|
||||
gtk_color_selection_dialog_get_color_selection(
|
||||
GTK_COLOR_SELECTION_DIALOG(m_widget)));
|
||||
gtk_color_selection_set_has_palette(sel, true);
|
||||
gtk_color_selection_set_has_opacity_control(sel, m_data.GetChooseAlpha());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user