+
+int wxChoice::DoAppend( const wxString &item )
+{
+ wxCHECK_MSG( m_widget != NULL, -1, wxT("invalid choice control") );
+
+ GtkWidget *menu = gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) );
+
+ return GtkAddHelper(menu, GetCount(), item);
+}
+
+int wxChoice::DoInsert( const wxString &item, int pos )
+{
+ wxCHECK_MSG( m_widget != NULL, -1, wxT("invalid choice control") );
+ wxCHECK_MSG( (pos>=0) && (pos<=GetCount()), -1, wxT("invalid index"));
+
+ if (pos == GetCount())
+ return DoAppend(item);
+
+ GtkWidget *menu = gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) );
+
+ return GtkAddHelper(menu, pos, item);
+}
+
+void wxChoice::DoSetItemClientData( int n, void* clientData )
+{
+ wxCHECK_RET( m_widget != NULL, wxT("invalid choice control") );
+
+ wxList::compatibility_iterator node = m_clientList.Item( n );
+ wxCHECK_RET( node, wxT("invalid index in wxChoice::DoSetItemClientData") );
+
+ node->SetData( (wxObject*) clientData );
+}
+
+void* wxChoice::DoGetItemClientData( int n ) const
+{
+ wxCHECK_MSG( m_widget != NULL, NULL, wxT("invalid choice control") );
+
+ wxList::compatibility_iterator node = m_clientList.Item( n );
+ wxCHECK_MSG( node, NULL, wxT("invalid index in wxChoice::DoGetItemClientData") );
+
+ return node->GetData();
+}
+
+void wxChoice::DoSetItemClientObject( int n, wxClientData* clientData )
+{
+ wxCHECK_RET( m_widget != NULL, wxT("invalid choice control") );
+
+ wxList::compatibility_iterator node = m_clientList.Item( n );
+ wxCHECK_RET( node, wxT("invalid index in wxChoice::DoSetItemClientObject") );
+
+ // wxItemContainer already deletes data for us
+
+ node->SetData( (wxObject*) clientData );
+}
+
+wxClientData* wxChoice::DoGetItemClientObject( int n ) const