From d3904ceb9a02934a8d1ab7034f368b103a699d99 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Sun, 6 Sep 1998 20:27:21 +0000 Subject: [PATCH] Fillid in many more missing functions (such as Enable()) There are still things to fix when compiling sockets .. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@687 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/gtk/checkbox.h | 1 + include/wx/gtk/control.h | 6 +-- include/wx/gtk/radiobox.h | 3 +- include/wx/gtk/radiobut.h | 1 + include/wx/gtk/statbox.h | 1 + include/wx/gtk1/checkbox.h | 1 + include/wx/gtk1/control.h | 6 +-- include/wx/gtk1/radiobox.h | 3 +- include/wx/gtk1/radiobut.h | 1 + include/wx/gtk1/statbox.h | 1 + samples/controls/controls.cpp | 72 ++++++++++++++++++-------- src/gtk.inc | 6 --- src/gtk/checkbox.cpp | 8 +++ src/gtk/radiobox.cpp | 96 +++++++++++++++++++++++++++-------- src/gtk/radiobut.cpp | 8 +++ src/gtk/statbox.cpp | 7 +++ src/gtk1/checkbox.cpp | 8 +++ src/gtk1/radiobox.cpp | 96 +++++++++++++++++++++++++++-------- src/gtk1/radiobut.cpp | 8 +++ src/gtk1/statbox.cpp | 7 +++ 20 files changed, 258 insertions(+), 82 deletions(-) diff --git a/include/wx/gtk/checkbox.h b/include/wx/gtk/checkbox.h index 43327e3f26..8022f9c419 100644 --- a/include/wx/gtk/checkbox.h +++ b/include/wx/gtk/checkbox.h @@ -60,6 +60,7 @@ class wxCheckBox: public wxControl void SetValue( bool state ); bool GetValue(void) const; void SetFont( const wxFont &font ); + void Enable( bool enable ); }; #endif // __GTKCHECKBOXH__ diff --git a/include/wx/gtk/control.h b/include/wx/gtk/control.h index 5aa8a1b39a..3e874707d0 100644 --- a/include/wx/gtk/control.h +++ b/include/wx/gtk/control.h @@ -36,16 +36,13 @@ class wxControl: public wxWindow DECLARE_DYNAMIC_CLASS(wxControl) public: - // construction wxControl(); wxControl( wxWindow *parent, wxWindowID id, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = 0, const wxString &name = wxPanelNameStr ); - // overridables virtual void Command( wxCommandEvent &event ); - // accessors // this function will filter out '&' characters and will put the accelerator // char (the one immediately after '&') into m_chAccel (@@ not yet) virtual void SetLabel( const wxString &label ); @@ -53,8 +50,7 @@ public: protected: wxString m_label; - // when we implement keyboard interface we will make use of this, but not yet - //char m_chAccel; + char m_chAccel; // enabled to avoid breaking binary compatibility later on }; #endif // __GTKCONTROLH__ diff --git a/include/wx/gtk/radiobox.h b/include/wx/gtk/radiobox.h index 1da4e3d979..3ba68d40d9 100644 --- a/include/wx/gtk/radiobox.h +++ b/include/wx/gtk/radiobox.h @@ -65,7 +65,6 @@ class wxRadioBox: public wxControl void SetSelection( int n ); int GetSelection(void) const; wxString GetString( int n ) const; - wxString GetLabel(void) const; void SetLabel( const wxString& label ); void SetLabel( int item, const wxString& label ); void SetLabel( int item, wxBitmap *bitmap ); @@ -79,8 +78,8 @@ class wxRadioBox: public wxControl virtual int Number(void) const; int GetNumberOfRowsOrCols(void) const; void SetNumberOfRowsOrCols( int n ); + void SetFont( const wxFont &font ); - void OnSize( wxSizeEvent &event ); // implementation diff --git a/include/wx/gtk/radiobut.h b/include/wx/gtk/radiobut.h index 3e0705a7a8..659ef322c7 100644 --- a/include/wx/gtk/radiobut.h +++ b/include/wx/gtk/radiobut.h @@ -62,6 +62,7 @@ class wxRadioButton: public wxControl virtual void SetValue(bool val); virtual bool GetValue(void) const; void SetFont( const wxFont &font ); + void Enable( bool enable ); }; #endif // __GTKRADIOBUTTONH__ diff --git a/include/wx/gtk/statbox.h b/include/wx/gtk/statbox.h index a6248a6bc9..d6c8314bc0 100644 --- a/include/wx/gtk/statbox.h +++ b/include/wx/gtk/statbox.h @@ -50,6 +50,7 @@ class wxStaticBox: public wxControl bool Create( wxWindow *parent, wxWindowID id, const wxString &label, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = 0, const wxString &name = wxStaticBoxNameStr ); + void SetLabel( const wxString &label ); }; #endif // __GTKSTATICBOXH__ diff --git a/include/wx/gtk1/checkbox.h b/include/wx/gtk1/checkbox.h index 43327e3f26..8022f9c419 100644 --- a/include/wx/gtk1/checkbox.h +++ b/include/wx/gtk1/checkbox.h @@ -60,6 +60,7 @@ class wxCheckBox: public wxControl void SetValue( bool state ); bool GetValue(void) const; void SetFont( const wxFont &font ); + void Enable( bool enable ); }; #endif // __GTKCHECKBOXH__ diff --git a/include/wx/gtk1/control.h b/include/wx/gtk1/control.h index 5aa8a1b39a..3e874707d0 100644 --- a/include/wx/gtk1/control.h +++ b/include/wx/gtk1/control.h @@ -36,16 +36,13 @@ class wxControl: public wxWindow DECLARE_DYNAMIC_CLASS(wxControl) public: - // construction wxControl(); wxControl( wxWindow *parent, wxWindowID id, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = 0, const wxString &name = wxPanelNameStr ); - // overridables virtual void Command( wxCommandEvent &event ); - // accessors // this function will filter out '&' characters and will put the accelerator // char (the one immediately after '&') into m_chAccel (@@ not yet) virtual void SetLabel( const wxString &label ); @@ -53,8 +50,7 @@ public: protected: wxString m_label; - // when we implement keyboard interface we will make use of this, but not yet - //char m_chAccel; + char m_chAccel; // enabled to avoid breaking binary compatibility later on }; #endif // __GTKCONTROLH__ diff --git a/include/wx/gtk1/radiobox.h b/include/wx/gtk1/radiobox.h index 1da4e3d979..3ba68d40d9 100644 --- a/include/wx/gtk1/radiobox.h +++ b/include/wx/gtk1/radiobox.h @@ -65,7 +65,6 @@ class wxRadioBox: public wxControl void SetSelection( int n ); int GetSelection(void) const; wxString GetString( int n ) const; - wxString GetLabel(void) const; void SetLabel( const wxString& label ); void SetLabel( int item, const wxString& label ); void SetLabel( int item, wxBitmap *bitmap ); @@ -79,8 +78,8 @@ class wxRadioBox: public wxControl virtual int Number(void) const; int GetNumberOfRowsOrCols(void) const; void SetNumberOfRowsOrCols( int n ); + void SetFont( const wxFont &font ); - void OnSize( wxSizeEvent &event ); // implementation diff --git a/include/wx/gtk1/radiobut.h b/include/wx/gtk1/radiobut.h index 3e0705a7a8..659ef322c7 100644 --- a/include/wx/gtk1/radiobut.h +++ b/include/wx/gtk1/radiobut.h @@ -62,6 +62,7 @@ class wxRadioButton: public wxControl virtual void SetValue(bool val); virtual bool GetValue(void) const; void SetFont( const wxFont &font ); + void Enable( bool enable ); }; #endif // __GTKRADIOBUTTONH__ diff --git a/include/wx/gtk1/statbox.h b/include/wx/gtk1/statbox.h index a6248a6bc9..d6c8314bc0 100644 --- a/include/wx/gtk1/statbox.h +++ b/include/wx/gtk1/statbox.h @@ -50,6 +50,7 @@ class wxStaticBox: public wxControl bool Create( wxWindow *parent, wxWindowID id, const wxString &label, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = 0, const wxString &name = wxStaticBoxNameStr ); + void SetLabel( const wxString &label ); }; #endif // __GTKSTATICBOXH__ diff --git a/samples/controls/controls.cpp b/samples/controls/controls.cpp index 385a294f95..04c892b4c3 100644 --- a/samples/controls/controls.cpp +++ b/samples/controls/controls.cpp @@ -103,7 +103,7 @@ const int MINIMAL_ABOUT = 102; bool MyApp::OnInit(void) { // Create the main frame window - MyFrame *frame = new MyFrame((wxFrame *) NULL, (char *) "Controls wxWindows App", 50, 50, 500, 420 ); + MyFrame *frame = new MyFrame((wxFrame *) NULL, (char *) "Controls wxWindows App", 50, 50, 530, 420 ); // Give it an icon #ifdef __WXMSW__ @@ -140,6 +140,7 @@ const ID_LISTBOX_CLEAR = 133; const ID_LISTBOX_APPEND = 134; const ID_LISTBOX_DELETE = 135; const ID_LISTBOX_FONT = 136; +const ID_LISTBOX_ENABLE = 137; const ID_CHOICE = 120; const ID_CHOICE_SEL_NUM = 121; @@ -148,6 +149,7 @@ const ID_CHOICE_CLEAR = 123; const ID_CHOICE_APPEND = 124; const ID_CHOICE_DELETE = 125; const ID_CHOICE_FONT = 126; +const ID_CHOICE_ENABLE = 127; const ID_COMBO = 140; const ID_COMBO_SEL_NUM = 141; @@ -156,6 +158,7 @@ const ID_COMBO_CLEAR = 143; const ID_COMBO_APPEND = 144; const ID_COMBO_DELETE = 145; const ID_COMBO_FONT = 146; +const ID_COMBO_ENABLE = 147; const ID_TEXT = 150; @@ -163,6 +166,7 @@ const ID_RADIOBOX = 160; const ID_RADIOBOX_SEL_NUM = 161; const ID_RADIOBOX_SEL_STR = 162; const ID_RADIOBOX_FONT = 163; +const ID_RADIOBOX_ENABLE = 164; const ID_SET_FONT = 170; @@ -175,6 +179,7 @@ BEGIN_EVENT_TABLE(MyPanel, wxPanel) EVT_BUTTON (ID_LISTBOX_APPEND, MyPanel::OnListBoxButtons) EVT_BUTTON (ID_LISTBOX_DELETE, MyPanel::OnListBoxButtons) EVT_BUTTON (ID_LISTBOX_FONT, MyPanel::OnListBoxButtons) + EVT_CHECKBOX (ID_LISTBOX_ENABLE, MyPanel::OnListBoxButtons) EVT_CHOICE (ID_CHOICE, MyPanel::OnChoice) EVT_BUTTON (ID_CHOICE_SEL_NUM, MyPanel::OnChoiceButtons) EVT_BUTTON (ID_CHOICE_SEL_STR, MyPanel::OnChoiceButtons) @@ -182,6 +187,7 @@ BEGIN_EVENT_TABLE(MyPanel, wxPanel) EVT_BUTTON (ID_CHOICE_APPEND, MyPanel::OnChoiceButtons) EVT_BUTTON (ID_CHOICE_DELETE, MyPanel::OnChoiceButtons) EVT_BUTTON (ID_CHOICE_FONT, MyPanel::OnChoiceButtons) + EVT_CHECKBOX (ID_CHOICE_ENABLE, MyPanel::OnChoiceButtons) EVT_CHOICE (ID_COMBO, MyPanel::OnCombo) EVT_BUTTON (ID_COMBO_SEL_NUM, MyPanel::OnComboButtons) EVT_BUTTON (ID_COMBO_SEL_STR, MyPanel::OnComboButtons) @@ -189,10 +195,12 @@ BEGIN_EVENT_TABLE(MyPanel, wxPanel) EVT_BUTTON (ID_COMBO_APPEND, MyPanel::OnComboButtons) EVT_BUTTON (ID_COMBO_DELETE, MyPanel::OnComboButtons) EVT_BUTTON (ID_COMBO_FONT, MyPanel::OnComboButtons) + EVT_CHECKBOX (ID_COMBO_ENABLE, MyPanel::OnComboButtons) EVT_RADIOBOX (ID_RADIOBOX, MyPanel::OnRadio) EVT_BUTTON (ID_RADIOBOX_SEL_NUM, MyPanel::OnRadioButtons) EVT_BUTTON (ID_RADIOBOX_SEL_STR, MyPanel::OnRadioButtons) EVT_BUTTON (ID_RADIOBOX_FONT, MyPanel::OnRadioButtons) + EVT_CHECKBOX (ID_RADIOBOX_ENABLE, MyPanel::OnRadioButtons) EVT_BUTTON (ID_SET_FONT, MyPanel::OnSetFont) END_EVENT_TABLE() @@ -241,32 +249,35 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) : wxPanel *panel = new wxPanel(m_notebook); m_listbox = new wxListBox( panel, ID_LISTBOX, wxPoint(10,10), wxSize(120,70), 4, choices ); - (void)new wxButton( panel, ID_LISTBOX_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(100,30) ); - (void)new wxButton( panel, ID_LISTBOX_SEL_STR, "Select 'This'", wxPoint(300,30), wxSize(100,30) ); - (void)new wxButton( panel, ID_LISTBOX_CLEAR, "Clear", wxPoint(180,80), wxSize(100,30) ); - (void)new wxButton( panel, ID_LISTBOX_APPEND, "Append 'Hi!'", wxPoint(300,80), wxSize(100,30) ); + (void)new wxButton( panel, ID_LISTBOX_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(140,30) ); + (void)new wxButton( panel, ID_LISTBOX_SEL_STR, "Select 'This'", wxPoint(340,30), wxSize(140,30) ); + (void)new wxButton( panel, ID_LISTBOX_CLEAR, "Clear", wxPoint(180,80), wxSize(140,30) ); + (void)new wxButton( panel, ID_LISTBOX_APPEND, "Append 'Hi!'", wxPoint(340,80), wxSize(140,30) ); (void)new wxButton( panel, ID_LISTBOX_DELETE, "Delete selected item", wxPoint(180,130), wxSize(140,30) ); - (void)new wxButton( panel, ID_LISTBOX_FONT, "Set Italic font", wxPoint(180,180), wxSize(140,30) ); + (void)new wxButton( panel, ID_LISTBOX_FONT, "Set Italic font", wxPoint(340,130), wxSize(140,30) ); + (void)new wxCheckBox( panel, ID_LISTBOX_ENABLE, "Disable", wxPoint(20,130), wxSize(140,30) ); m_notebook->AddPage(panel, "wxList", FALSE, Image_List); panel = new wxPanel(m_notebook); m_choice = new wxChoice( panel, ID_CHOICE, wxPoint(10,10), wxSize(120,-1), 4, choices ); - (void)new wxButton( panel, ID_CHOICE_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(100,30) ); - (void)new wxButton( panel, ID_CHOICE_SEL_STR, "Select 'This'", wxPoint(300,30), wxSize(100,30) ); - (void)new wxButton( panel, ID_CHOICE_CLEAR, "Clear", wxPoint(180,80), wxSize(100,30) ); - (void)new wxButton( panel, ID_CHOICE_APPEND, "Append 'Hi!'", wxPoint(300,80), wxSize(100,30) ); + (void)new wxButton( panel, ID_CHOICE_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(140,30) ); + (void)new wxButton( panel, ID_CHOICE_SEL_STR, "Select 'This'", wxPoint(340,30), wxSize(140,30) ); + (void)new wxButton( panel, ID_CHOICE_CLEAR, "Clear", wxPoint(180,80), wxSize(140,30) ); + (void)new wxButton( panel, ID_CHOICE_APPEND, "Append 'Hi!'", wxPoint(340,80), wxSize(140,30) ); (void)new wxButton( panel, ID_CHOICE_DELETE, "Delete selected item", wxPoint(180,130), wxSize(140,30) ); - (void)new wxButton( panel, ID_CHOICE_FONT, "Set Italic font", wxPoint(180,180), wxSize(140,30) ); + (void)new wxButton( panel, ID_CHOICE_FONT, "Set Italic font", wxPoint(340,130), wxSize(140,30) ); + (void)new wxCheckBox( panel, ID_CHOICE_ENABLE, "Disable", wxPoint(20,130), wxSize(140,30) ); m_notebook->AddPage(panel, "wxChoice", FALSE, Image_Choice); panel = new wxPanel(m_notebook); m_combo = new wxComboBox( panel, ID_COMBO, "This", wxPoint(10,10), wxSize(170,-1), 4, choices ); - (void)new wxButton( panel, ID_COMBO_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(100,30) ); - (void)new wxButton( panel, ID_COMBO_SEL_STR, "Select 'This'", wxPoint(300,30), wxSize(100,30) ); - (void)new wxButton( panel, ID_COMBO_CLEAR, "Clear", wxPoint(180,80), wxSize(100,30) ); - (void)new wxButton( panel, ID_COMBO_APPEND, "Append 'Hi!'", wxPoint(300,80), wxSize(100,30) ); + (void)new wxButton( panel, ID_COMBO_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(140,30) ); + (void)new wxButton( panel, ID_COMBO_SEL_STR, "Select 'This'", wxPoint(340,30), wxSize(140,30) ); + (void)new wxButton( panel, ID_COMBO_CLEAR, "Clear", wxPoint(180,80), wxSize(140,30) ); + (void)new wxButton( panel, ID_COMBO_APPEND, "Append 'Hi!'", wxPoint(340,80), wxSize(140,30) ); (void)new wxButton( panel, ID_COMBO_DELETE, "Delete selected item", wxPoint(180,130), wxSize(140,30) ); - (void)new wxButton( panel, ID_COMBO_FONT, "Set Italic font", wxPoint(180,180), wxSize(140,30) ); + (void)new wxButton( panel, ID_COMBO_FONT, "Set Italic font", wxPoint(340,130), wxSize(140,30) ); + (void)new wxCheckBox( panel, ID_COMBO_ENABLE, "Disable", wxPoint(20,130), wxSize(140,30) ); m_notebook->AddPage(panel, "wxComboBox", FALSE, Image_Combo); wxTextCtrl *text = new wxTextCtrl( m_notebook, ID_TEXT, "Write text here.", wxPoint(10,10), wxSize(120,100), wxTE_MULTILINE ); @@ -274,10 +285,11 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) : panel = new wxPanel(m_notebook); m_radio = new wxRadioBox( panel, ID_RADIOBOX, "This", wxPoint(10,10), wxSize(-1,-1), 4, choices ); - (void)new wxButton( panel, ID_RADIOBOX_SEL_NUM, "Select #2", wxPoint(200,30), wxSize(100,30) ); - (void)new wxButton( panel, ID_RADIOBOX_SEL_STR, "Select 'This'", wxPoint(200,80), wxSize(100,30) ); - (void)new wxButton( panel, ID_RADIOBOX_FONT, "Set Italic font", wxPoint(200,130), wxSize(160,30) ); - m_fontButton = new wxButton( panel, ID_SET_FONT, "Set more Italic font", wxPoint(200,180), wxSize(160,30) ); + (void)new wxButton( panel, ID_RADIOBOX_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(140,30) ); + (void)new wxButton( panel, ID_RADIOBOX_SEL_STR, "Select 'This'", wxPoint(180,80), wxSize(140,30) ); + (void)new wxButton( panel, ID_RADIOBOX_FONT, "Set Italic font", wxPoint(180,130), wxSize(140,30) ); + (void)new wxCheckBox( panel, ID_RADIOBOX_ENABLE, "Disable", wxPoint(20,130), wxSize(140,30) ); + m_fontButton = new wxButton( panel, ID_SET_FONT, "Set more Italic font", wxPoint(340,30), wxSize(160,30) ); m_notebook->AddPage(panel, "wxRadioBox", FALSE, Image_Radio); } @@ -302,6 +314,11 @@ void MyPanel::OnListBoxButtons( wxCommandEvent &event ) { switch (event.GetId()) { + case ID_LISTBOX_ENABLE: + { + m_listbox->Enable( !((bool)event.GetInt()) ); + break; + } case ID_LISTBOX_SEL_NUM: { m_listbox->SetSelection( 2 ); @@ -347,6 +364,11 @@ void MyPanel::OnChoiceButtons( wxCommandEvent &event ) { switch (event.GetId()) { + case ID_CHOICE_ENABLE: + { + m_choice->Enable( !((bool)event.GetInt()) ); + break; + } case ID_CHOICE_SEL_NUM: { m_choice->SetSelection( 2 ); @@ -392,6 +414,11 @@ void MyPanel::OnComboButtons( wxCommandEvent &event ) { switch (event.GetId()) { + case ID_COMBO_ENABLE: + { + m_combo->Enable( !((bool)event.GetInt()) ); + break; + } case ID_COMBO_SEL_NUM: { m_combo->SetSelection( 2 ); @@ -437,6 +464,11 @@ void MyPanel::OnRadioButtons( wxCommandEvent &event ) { switch (event.GetId()) { + case ID_RADIOBOX_ENABLE: + { + m_radio->Enable( !((bool)event.GetInt()) ); + break; + } case ID_RADIOBOX_SEL_NUM: { m_radio->SetSelection( 2 ); diff --git a/src/gtk.inc b/src/gtk.inc index 8465dc4630..dd40309ee0 100644 --- a/src/gtk.inc +++ b/src/gtk.inc @@ -55,14 +55,8 @@ LIB_CPP_SRC=\ common/validate.cpp \ common/valtext.cpp \ common/wxexpr.cpp \ - common/tokenzr.cpp \ common/socket.cpp \ common/sckaddr.cpp \ - common/protocol.cpp \ - common/url.cpp \ - common/http.cpp \ - common/ftp.cpp \ - common/sckfile.cpp \ common/sckipc.cpp \ \ gtk/accel.cpp \ diff --git a/src/gtk/checkbox.cpp b/src/gtk/checkbox.cpp index e5b2beb157..d710aa4fcf 100644 --- a/src/gtk/checkbox.cpp +++ b/src/gtk/checkbox.cpp @@ -89,6 +89,14 @@ bool wxCheckBox::GetValue(void) const return tb->active; } +void wxCheckBox::Enable( bool enable ) +{ + wxControl::Enable( enable ); + GtkButton *bin = GTK_BUTTON( m_widget ); + GtkWidget *label = bin->child; + gtk_widget_set_sensitive( label, enable ); +} + void wxCheckBox::SetFont( const wxFont &font ) { if (((wxFont*)&font)->Ok()) diff --git a/src/gtk/radiobox.cpp b/src/gtk/radiobox.cpp index 31e9a8e856..96e417570f 100644 --- a/src/gtk/radiobox.cpp +++ b/src/gtk/radiobox.cpp @@ -177,7 +177,12 @@ void wxRadioBox::SetSelection( int n ) { GSList *item = gtk_radio_button_group( m_radio ); item = g_slist_nth( item, g_slist_length(item)-n-1 ); - if (!item) return; + + if (!item) + { + wxFAIL_MSG( "wxRadioBox wrong index" ); + return; + } GtkToggleButton *button = GTK_TOGGLE_BUTTON( item->data ); @@ -205,28 +210,46 @@ wxString wxRadioBox::GetString( int n ) const GSList *item = gtk_radio_button_group( m_radio ); item = g_slist_nth( item, g_slist_length(item)-n-1 ); - if (!item) return ""; - GtkToggleButton *button = GTK_TOGGLE_BUTTON( item->data ); + if (!item) + { + wxFAIL_MSG( "wxRadioBox wrong index" ); + return ""; + } - GtkLabel *label = GTK_LABEL( GTK_BUTTON(button)->child ); + GtkButton *button = GTK_BUTTON( item->data ); + GtkLabel *label = GTK_LABEL( button->child ); return wxString( label->label ); } -wxString wxRadioBox::GetLabel(void) const +wxString wxRadioBox::GetLabel( int item ) const { - return wxControl::GetLabel(); + return GetString( item ); } -void wxRadioBox::SetLabel( const wxString& WXUNUSED(label) ) +void wxRadioBox::SetLabel( const wxString& label ) { - wxFAIL_MSG("wxRadioBox::SetLabel not implemented."); + wxControl::SetLabel( label ); + GtkFrame *frame = GTK_FRAME( m_widget ); + gtk_frame_set_label( frame, wxControl::GetLabel() ); } -void wxRadioBox::SetLabel( int WXUNUSED(item), const wxString& WXUNUSED(label) ) +void wxRadioBox::SetLabel( int item, const wxString& label ) { - wxFAIL_MSG("wxRadioBox::SetLabel not implemented."); + GSList *list = gtk_radio_button_group( m_radio ); + list = g_slist_nth( list, g_slist_length(list)-item-1 ); + + if (!list) + { + wxFAIL_MSG( "wxRadioBox wrong index" ); + return; + } + + GtkButton *button = GTK_BUTTON( list->data ); + GtkLabel *g_label = GTK_LABEL( button->child ); + + gtk_label_set( g_label, label ); } void wxRadioBox::SetLabel( int WXUNUSED(item), wxBitmap *WXUNUSED(bitmap) ) @@ -234,25 +257,56 @@ void wxRadioBox::SetLabel( int WXUNUSED(item), wxBitmap *WXUNUSED(bitmap) ) wxFAIL_MSG("wxRadioBox::SetLabel not implemented."); } -wxString wxRadioBox::GetLabel( int WXUNUSED(item) ) const +void wxRadioBox::Enable( bool enable ) { - wxFAIL_MSG("wxRadioBox::GetLabel not implemented."); - return ""; + wxControl::Enable( enable ); + + GSList *item = gtk_radio_button_group( m_radio ); + while (item) + { + GtkButton *button = GTK_BUTTON( item->data ); + GtkWidget *label = button->child; + gtk_widget_set_sensitive( GTK_WIDGET(button), enable ); + gtk_widget_set_sensitive( label, enable ); + item = item->next; + } } -void wxRadioBox::Enable( bool WXUNUSED(enable) ) +void wxRadioBox::Enable( int item, bool enable ) { - wxFAIL_MSG("wxRadioBox::Enable not implemented."); + GSList *list = gtk_radio_button_group( m_radio ); + list = g_slist_nth( list, g_slist_length(list)-item-1 ); + + if (!list) + { + wxFAIL_MSG( "wxRadioBox wrong index" ); + return; + } + + GtkButton *button = GTK_BUTTON( list->data ); + + GtkWidget *label = button->child; + gtk_widget_set_sensitive( GTK_WIDGET(button), enable ); + gtk_widget_set_sensitive( label, enable ); } -void wxRadioBox::Enable( int WXUNUSED(item), bool WXUNUSED(enable) ) +void wxRadioBox::Show( int item, bool show ) { - wxFAIL_MSG("wxRadioBox::Enable not implemented."); -} + GSList *list = gtk_radio_button_group( m_radio ); + list = g_slist_nth( list, g_slist_length(list)-item-1 ); + + if (!list) + { + wxFAIL_MSG( "wxRadioBox wrong index" ); + return; + } + + GtkWidget *button = GTK_WIDGET( list->data ); -void wxRadioBox::Show( int WXUNUSED(item), bool WXUNUSED(show) ) -{ - wxFAIL_MSG("wxRadioBox::Show not implemented."); + if (show) + gtk_widget_show( button ); + else + gtk_widget_hide( button ); } wxString wxRadioBox::GetStringSelection(void) const diff --git a/src/gtk/radiobut.cpp b/src/gtk/radiobut.cpp index 42fddad8e6..a9a81ed5ab 100644 --- a/src/gtk/radiobut.cpp +++ b/src/gtk/radiobut.cpp @@ -86,6 +86,14 @@ bool wxRadioButton::GetValue(void) const return GTK_TOGGLE_BUTTON(m_widget)->active; } +void wxRadioButton::Enable( bool enable ) +{ + wxControl::Enable( enable ); + GtkButton *bin = GTK_BUTTON( m_widget ); + GtkWidget *label = bin->child; + gtk_widget_set_sensitive( label, enable ); +} + void wxRadioButton::SetFont( const wxFont &font ) { if (((wxFont*)&font)->Ok()) diff --git a/src/gtk/statbox.cpp b/src/gtk/statbox.cpp index 3f28b07a58..abf8e8ce57 100644 --- a/src/gtk/statbox.cpp +++ b/src/gtk/statbox.cpp @@ -48,3 +48,10 @@ bool wxStaticBox::Create( wxWindow *parent, wxWindowID id, const wxString &label return TRUE; } + +void wxStaticBox::SetLabel( const wxString &label ) +{ + wxControl::SetLabel( label ); + GtkFrame *frame = GTK_FRAME( m_widget ); + gtk_frame_set_label( frame, GetLabel() ); +} diff --git a/src/gtk1/checkbox.cpp b/src/gtk1/checkbox.cpp index e5b2beb157..d710aa4fcf 100644 --- a/src/gtk1/checkbox.cpp +++ b/src/gtk1/checkbox.cpp @@ -89,6 +89,14 @@ bool wxCheckBox::GetValue(void) const return tb->active; } +void wxCheckBox::Enable( bool enable ) +{ + wxControl::Enable( enable ); + GtkButton *bin = GTK_BUTTON( m_widget ); + GtkWidget *label = bin->child; + gtk_widget_set_sensitive( label, enable ); +} + void wxCheckBox::SetFont( const wxFont &font ) { if (((wxFont*)&font)->Ok()) diff --git a/src/gtk1/radiobox.cpp b/src/gtk1/radiobox.cpp index 31e9a8e856..96e417570f 100644 --- a/src/gtk1/radiobox.cpp +++ b/src/gtk1/radiobox.cpp @@ -177,7 +177,12 @@ void wxRadioBox::SetSelection( int n ) { GSList *item = gtk_radio_button_group( m_radio ); item = g_slist_nth( item, g_slist_length(item)-n-1 ); - if (!item) return; + + if (!item) + { + wxFAIL_MSG( "wxRadioBox wrong index" ); + return; + } GtkToggleButton *button = GTK_TOGGLE_BUTTON( item->data ); @@ -205,28 +210,46 @@ wxString wxRadioBox::GetString( int n ) const GSList *item = gtk_radio_button_group( m_radio ); item = g_slist_nth( item, g_slist_length(item)-n-1 ); - if (!item) return ""; - GtkToggleButton *button = GTK_TOGGLE_BUTTON( item->data ); + if (!item) + { + wxFAIL_MSG( "wxRadioBox wrong index" ); + return ""; + } - GtkLabel *label = GTK_LABEL( GTK_BUTTON(button)->child ); + GtkButton *button = GTK_BUTTON( item->data ); + GtkLabel *label = GTK_LABEL( button->child ); return wxString( label->label ); } -wxString wxRadioBox::GetLabel(void) const +wxString wxRadioBox::GetLabel( int item ) const { - return wxControl::GetLabel(); + return GetString( item ); } -void wxRadioBox::SetLabel( const wxString& WXUNUSED(label) ) +void wxRadioBox::SetLabel( const wxString& label ) { - wxFAIL_MSG("wxRadioBox::SetLabel not implemented."); + wxControl::SetLabel( label ); + GtkFrame *frame = GTK_FRAME( m_widget ); + gtk_frame_set_label( frame, wxControl::GetLabel() ); } -void wxRadioBox::SetLabel( int WXUNUSED(item), const wxString& WXUNUSED(label) ) +void wxRadioBox::SetLabel( int item, const wxString& label ) { - wxFAIL_MSG("wxRadioBox::SetLabel not implemented."); + GSList *list = gtk_radio_button_group( m_radio ); + list = g_slist_nth( list, g_slist_length(list)-item-1 ); + + if (!list) + { + wxFAIL_MSG( "wxRadioBox wrong index" ); + return; + } + + GtkButton *button = GTK_BUTTON( list->data ); + GtkLabel *g_label = GTK_LABEL( button->child ); + + gtk_label_set( g_label, label ); } void wxRadioBox::SetLabel( int WXUNUSED(item), wxBitmap *WXUNUSED(bitmap) ) @@ -234,25 +257,56 @@ void wxRadioBox::SetLabel( int WXUNUSED(item), wxBitmap *WXUNUSED(bitmap) ) wxFAIL_MSG("wxRadioBox::SetLabel not implemented."); } -wxString wxRadioBox::GetLabel( int WXUNUSED(item) ) const +void wxRadioBox::Enable( bool enable ) { - wxFAIL_MSG("wxRadioBox::GetLabel not implemented."); - return ""; + wxControl::Enable( enable ); + + GSList *item = gtk_radio_button_group( m_radio ); + while (item) + { + GtkButton *button = GTK_BUTTON( item->data ); + GtkWidget *label = button->child; + gtk_widget_set_sensitive( GTK_WIDGET(button), enable ); + gtk_widget_set_sensitive( label, enable ); + item = item->next; + } } -void wxRadioBox::Enable( bool WXUNUSED(enable) ) +void wxRadioBox::Enable( int item, bool enable ) { - wxFAIL_MSG("wxRadioBox::Enable not implemented."); + GSList *list = gtk_radio_button_group( m_radio ); + list = g_slist_nth( list, g_slist_length(list)-item-1 ); + + if (!list) + { + wxFAIL_MSG( "wxRadioBox wrong index" ); + return; + } + + GtkButton *button = GTK_BUTTON( list->data ); + + GtkWidget *label = button->child; + gtk_widget_set_sensitive( GTK_WIDGET(button), enable ); + gtk_widget_set_sensitive( label, enable ); } -void wxRadioBox::Enable( int WXUNUSED(item), bool WXUNUSED(enable) ) +void wxRadioBox::Show( int item, bool show ) { - wxFAIL_MSG("wxRadioBox::Enable not implemented."); -} + GSList *list = gtk_radio_button_group( m_radio ); + list = g_slist_nth( list, g_slist_length(list)-item-1 ); + + if (!list) + { + wxFAIL_MSG( "wxRadioBox wrong index" ); + return; + } + + GtkWidget *button = GTK_WIDGET( list->data ); -void wxRadioBox::Show( int WXUNUSED(item), bool WXUNUSED(show) ) -{ - wxFAIL_MSG("wxRadioBox::Show not implemented."); + if (show) + gtk_widget_show( button ); + else + gtk_widget_hide( button ); } wxString wxRadioBox::GetStringSelection(void) const diff --git a/src/gtk1/radiobut.cpp b/src/gtk1/radiobut.cpp index 42fddad8e6..a9a81ed5ab 100644 --- a/src/gtk1/radiobut.cpp +++ b/src/gtk1/radiobut.cpp @@ -86,6 +86,14 @@ bool wxRadioButton::GetValue(void) const return GTK_TOGGLE_BUTTON(m_widget)->active; } +void wxRadioButton::Enable( bool enable ) +{ + wxControl::Enable( enable ); + GtkButton *bin = GTK_BUTTON( m_widget ); + GtkWidget *label = bin->child; + gtk_widget_set_sensitive( label, enable ); +} + void wxRadioButton::SetFont( const wxFont &font ) { if (((wxFont*)&font)->Ok()) diff --git a/src/gtk1/statbox.cpp b/src/gtk1/statbox.cpp index 3f28b07a58..abf8e8ce57 100644 --- a/src/gtk1/statbox.cpp +++ b/src/gtk1/statbox.cpp @@ -48,3 +48,10 @@ bool wxStaticBox::Create( wxWindow *parent, wxWindowID id, const wxString &label return TRUE; } + +void wxStaticBox::SetLabel( const wxString &label ) +{ + wxControl::SetLabel( label ); + GtkFrame *frame = GTK_FRAME( m_widget ); + gtk_frame_set_label( frame, GetLabel() ); +} -- 2.47.2