const ID_CHOICE_SEL_STR = 122;
const ID_CHOICE_CLEAR = 123;
const ID_CHOICE_APPEND = 124;
+const ID_CHOICE_DELETE = 125;
const ID_COMBO = 140;
const ID_COMBO_SEL_NUM = 141;
const ID_COMBO_SEL_STR = 142;
const ID_COMBO_CLEAR = 143;
const ID_COMBO_APPEND = 144;
+const ID_COMBO_DELETE = 145;
const ID_TEXT = 150;
EVT_BUTTON (ID_CHOICE_SEL_STR, MyPanel::OnChoiceButtons)
EVT_BUTTON (ID_CHOICE_CLEAR, MyPanel::OnChoiceButtons)
EVT_BUTTON (ID_CHOICE_APPEND, MyPanel::OnChoiceButtons)
+ EVT_BUTTON (ID_CHOICE_DELETE, MyPanel::OnChoiceButtons)
EVT_CHOICE (ID_COMBO, MyPanel::OnCombo)
EVT_BUTTON (ID_COMBO_SEL_NUM, MyPanel::OnComboButtons)
EVT_BUTTON (ID_COMBO_SEL_STR, MyPanel::OnComboButtons)
EVT_BUTTON (ID_COMBO_CLEAR, MyPanel::OnComboButtons)
EVT_BUTTON (ID_COMBO_APPEND, MyPanel::OnComboButtons)
+ EVT_BUTTON (ID_COMBO_DELETE, MyPanel::OnComboButtons)
EVT_RADIOBOX (ID_RADIOBOX, MyPanel::OnRadio)
EVT_BUTTON (ID_RADIOBOX_SEL_NUM, MyPanel::OnRadioButtons)
EVT_BUTTON (ID_RADIOBOX_SEL_STR, MyPanel::OnRadioButtons)
(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_DELETE, "Delete selected item", wxPoint(180,130), wxSize(140,30) );
m_notebook->AddPage(panel, "wxChoice");
panel = new wxPanel(m_notebook);
(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_DELETE, "Delete selected item", wxPoint(180,130), wxSize(140,30) );
m_notebook->AddPage(panel, "wxComboBox");
wxTextCtrl *text = new wxTextCtrl( m_notebook, ID_TEXT, "Write text here.", wxPoint(10,10), wxSize(120,100), wxTE_MULTILINE );
int y = 0;
GetClientSize( &x, &y );
- if (m_notebook) m_notebook->SetSize( 2, 2, x-4, y/2-4 );
- if (m_text) m_text->SetSize( 2, y/2+2, x-4, y/2-4 );
+ if (m_notebook) m_notebook->SetSize( 2, 2, x-4, y*2/3-4 );
+ if (m_text) m_text->SetSize( 2, y*2/3+2, x-4, y/3-4 );
}
void MyPanel::OnListBox( wxCommandEvent &event )
m_choice->Append( "Hi!" );
break;
}
+ case ID_CHOICE_DELETE:
+ {
+ int idx = m_choice->GetSelection();
+ m_choice->Delete( idx );
+ break;
+ }
}
}
m_combo->Append( "Hi!" );
break;
}
+ case ID_COMBO_DELETE:
+ {
+ int idx = m_combo->GetSelection();
+ m_combo->Delete( idx );
+ break;
+ }
}
}
gtk_signal_connect( GTK_OBJECT(list_item), "select",
GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this );
+ m_clientData.Append( (wxObject*)clientData );
+
gtk_container_add( GTK_CONTAINER(list), list_item );
gtk_widget_show( list_item );
-
- m_clientData.Append( (wxObject*)clientData );
}
void wxComboBox::Delete( int n )
{
- GtkWidget *list = GTK_COMBO(m_widget)->list;
- gtk_list_clear_items( GTK_LIST(list), n, n );
+ GtkList *listbox = GTK_LIST( GTK_COMBO(m_widget)->list );
+
+ GList *child = g_list_nth( listbox->children, n );
+
+ if (!child)
+ {
+ wxFAIL_MSG("wrong index");
+ return;
+ }
+
+ GList *list = g_list_append( NULL, child->data );
+ gtk_list_remove_items( listbox, list );
+ g_list_free( list );
wxNode *node = m_clientData.Nth( n );
if (!node)
{
- wxFAIL_MSG( "wxComboBox: wrong index" );
+ wxFAIL_MSG( "wrong index" );
}
else
m_clientData.DeleteNode( node );
gtk_signal_connect( GTK_OBJECT(list_item), "select",
GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this );
+ m_clientData.Append( (wxObject*)clientData );
+
gtk_container_add( GTK_CONTAINER(list), list_item );
gtk_widget_show( list_item );
-
- m_clientData.Append( (wxObject*)clientData );
}
void wxComboBox::Delete( int n )
{
- GtkWidget *list = GTK_COMBO(m_widget)->list;
- gtk_list_clear_items( GTK_LIST(list), n, n );
+ GtkList *listbox = GTK_LIST( GTK_COMBO(m_widget)->list );
+
+ GList *child = g_list_nth( listbox->children, n );
+
+ if (!child)
+ {
+ wxFAIL_MSG("wrong index");
+ return;
+ }
+
+ GList *list = g_list_append( NULL, child->data );
+ gtk_list_remove_items( listbox, list );
+ g_list_free( list );
wxNode *node = m_clientData.Nth( n );
if (!node)
{
- wxFAIL_MSG( "wxComboBox: wrong index" );
+ wxFAIL_MSG( "wrong index" );
}
else
m_clientData.DeleteNode( node );