]> git.saurik.com Git - wxWidgets.git/commitdiff
Small fixes to wxChoice, wxComboBox and wxListBox
authorRobert Roebling <robert@roebling.de>
Tue, 1 Sep 1998 15:41:45 +0000 (15:41 +0000)
committerRobert Roebling <robert@roebling.de>
Tue, 1 Sep 1998 15:41:45 +0000 (15:41 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@644 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/choice.h
include/wx/gtk1/choice.h
samples/controls/controls.cpp
src/gtk/choice.cpp
src/gtk/combobox.cpp
src/gtk/listbox.cpp
src/gtk1/choice.cpp
src/gtk1/combobox.cpp
src/gtk1/listbox.cpp

index fe5586752b1b0ec050e1849842dffff2311a4317..36f403bb7414c214b2ea511f00a6627c05ae489f 100644 (file)
@@ -63,6 +63,7 @@ class wxChoice: public wxControl
            const wxString& name = wxChoiceNameStr );
     void Append( const wxString &item );
     void Clear(void);
+    void Delete(int n);
     int FindString( const wxString &string ) const;
     int GetColumns(void) const;
     int GetSelection(void);
index fe5586752b1b0ec050e1849842dffff2311a4317..36f403bb7414c214b2ea511f00a6627c05ae489f 100644 (file)
@@ -63,6 +63,7 @@ class wxChoice: public wxControl
            const wxString& name = wxChoiceNameStr );
     void Append( const wxString &item );
     void Clear(void);
+    void Delete(int n);
     int FindString( const wxString &string ) const;
     int GetColumns(void) const;
     int GetSelection(void);
index f2c28e5dfd72facae61b0459316218f3c9556b0f..e0e3ea5cc165418d9533c04af0cb270c4f4e695a 100644 (file)
@@ -141,12 +141,14 @@ const  ID_CHOICE_SEL_NUM    = 121;
 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;
 
@@ -167,11 +169,13 @@ BEGIN_EVENT_TABLE(MyPanel, wxPanel)
   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)
@@ -207,6 +211,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) :
   (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);
@@ -215,6 +220,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) :
   (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 );
@@ -233,8 +239,8 @@ void MyPanel::OnSize( wxSizeEvent& WXUNUSED(event) )
   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 )
@@ -308,6 +314,12 @@ void MyPanel::OnChoiceButtons( wxCommandEvent &event )
       m_choice->Append( "Hi!" );
       break;
     }
+    case ID_CHOICE_DELETE:
+    {
+      int idx = m_choice->GetSelection();
+      m_choice->Delete( idx );
+      break;
+    }
   }
 }
 
@@ -342,6 +354,12 @@ void MyPanel::OnComboButtons( wxCommandEvent &event )
       m_combo->Append( "Hi!" );
       break;
     }
+    case ID_COMBO_DELETE:
+    {
+      int idx = m_combo->GetSelection();
+      m_combo->Delete( idx );
+      break;
+    }
   }
 }
 
index b7d2e26e2e8dec53ba7a6e41ce10de3870524e4a..4fec00cb30952ca66583cb9edd5e40f0f94b2aaa 100644 (file)
@@ -103,6 +103,11 @@ void wxChoice::Clear(void)
   gtk_option_menu_set_menu( GTK_OPTION_MENU(m_widget), menu );
 }
 
+void wxChoice::Delete( int WXUNUSED(n) )
+{
+  wxFAIL_MSG( "wxChoice:Delete not implemented" );
+}
+
 int wxChoice::FindString( const wxString &string ) const
 {
   // If you read this code once and you think you understand
index 4bcce99f9f3e8d1a197df5a0179897dc4052467e..302cf3abda986047292eb01fe594abe275a54e07 100644 (file)
@@ -143,22 +143,33 @@ void wxComboBox::Append( const wxString &item, char *clientData )
   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 );
index 00cb2e6ba5044d58d4a64ce42fdc86fa38a209cf..916d8490ada206c340b12d5d0ab9fbaa68eecdd5 100644 (file)
@@ -140,10 +140,10 @@ void wxListBox::Append( const wxString &item, char *clientData )
     gtk_signal_connect( GTK_OBJECT(list_item), "deselect", 
       GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
   
-  gtk_container_add( GTK_CONTAINER(m_list), list_item );
-  
   m_clientData.Append( (wxObject*)clientData );
   
+  gtk_container_add( GTK_CONTAINER(m_list), list_item );
+  
   gtk_widget_show( list_item );
 }
 
index b7d2e26e2e8dec53ba7a6e41ce10de3870524e4a..4fec00cb30952ca66583cb9edd5e40f0f94b2aaa 100644 (file)
@@ -103,6 +103,11 @@ void wxChoice::Clear(void)
   gtk_option_menu_set_menu( GTK_OPTION_MENU(m_widget), menu );
 }
 
+void wxChoice::Delete( int WXUNUSED(n) )
+{
+  wxFAIL_MSG( "wxChoice:Delete not implemented" );
+}
+
 int wxChoice::FindString( const wxString &string ) const
 {
   // If you read this code once and you think you understand
index 4bcce99f9f3e8d1a197df5a0179897dc4052467e..302cf3abda986047292eb01fe594abe275a54e07 100644 (file)
@@ -143,22 +143,33 @@ void wxComboBox::Append( const wxString &item, char *clientData )
   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 );
index 00cb2e6ba5044d58d4a64ce42fdc86fa38a209cf..916d8490ada206c340b12d5d0ab9fbaa68eecdd5 100644 (file)
@@ -140,10 +140,10 @@ void wxListBox::Append( const wxString &item, char *clientData )
     gtk_signal_connect( GTK_OBJECT(list_item), "deselect", 
       GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
   
-  gtk_container_add( GTK_CONTAINER(m_list), list_item );
-  
   m_clientData.Append( (wxObject*)clientData );
   
+  gtk_container_add( GTK_CONTAINER(m_list), list_item );
+  
   gtk_widget_show( list_item );
 }