]> git.saurik.com Git - wxWidgets.git/commitdiff
implemented wxChoice::Delete
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 12 Apr 2002 09:31:12 +0000 (09:31 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 12 Apr 2002 09:31:12 +0000 (09:31 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15108 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
docs/latex/wx/choice.tex
src/gtk/choice.cpp
src/gtk1/choice.cpp

index 76070a7260df9bc804ee31d01ab081408061049b..ce40ad753b83129ca187ccc9276665098cfcde66 100644 (file)
@@ -192,6 +192,7 @@ wxGTK:
 - fixed wxDC::Blit() to honour source DC's logical coordinates
 - implemented wxIdleEvent::RequestMore() for simple background tasks
   (unlike thread work)
+- implemented wxChoice::Delete()
 
 wxHTML:
 
index d09ec492a4eeae6eca542bb6e045496931fb8318..7f909cc8aebcc60cfd4de509332fd0a2c131e304 100644 (file)
@@ -119,6 +119,16 @@ Clears the strings from the choice item.
 
 Creates the choice for two-step construction. See \helpref{wxChoice::wxChoice}{wxchoiceconstr}.
 
+\membersection{wxChoice::Delete}\label{wxchoicedelete}
+
+\func{void}{Delete}{\param{int }{n}}
+
+Deletes the item with the given index from the control.
+
+\wxheading{Parameters}
+
+\docparam{n}{The item to delete.}
+
 \membersection{wxChoice::FindString}\label{wxchoicefindstring}
 
 \constfunc{int}{FindString}{\param{const wxString\& }{string}}
index 103ebf3901cd60fb5f12811f981d7b2d475d4192..f62387d9b5832a748c85cb5a5a07e8a94b88273f 100644 (file)
@@ -209,9 +209,31 @@ void wxChoice::Clear()
         m_strings->Clear();
 }
 
-void wxChoice::Delete( int WXUNUSED(n) )
+void wxChoice::Delete( int n )
 {
-    wxFAIL_MSG( wxT("wxChoice:Delete not implemented") );
+    wxCHECK_RET( m_widget != NULL, wxT("invalid choice") );
+
+    // VZ: apparently GTK+ doesn't have a built-in function to do it (not even
+    //     in 2.0), hence this dump implementation - still better than nothing
+    int i,
+        count = GetCount();
+
+    wxCHECK_RET( n >= 0 && n < count, _T("invalid index in wxChoice::Delete") );
+
+    wxArrayString items;
+    items.Alloc(count);
+    for ( i = 0; i < count; i++ )
+    {
+        if ( i != n )
+            items.Add(GetString(i));
+    }
+
+    Clear();
+
+    for ( i = 0; i < count - 1; i++ )
+    {
+        Append(items[i]);
+    }
 }
 
 int wxChoice::FindString( const wxString &string ) const
index 103ebf3901cd60fb5f12811f981d7b2d475d4192..f62387d9b5832a748c85cb5a5a07e8a94b88273f 100644 (file)
@@ -209,9 +209,31 @@ void wxChoice::Clear()
         m_strings->Clear();
 }
 
-void wxChoice::Delete( int WXUNUSED(n) )
+void wxChoice::Delete( int n )
 {
-    wxFAIL_MSG( wxT("wxChoice:Delete not implemented") );
+    wxCHECK_RET( m_widget != NULL, wxT("invalid choice") );
+
+    // VZ: apparently GTK+ doesn't have a built-in function to do it (not even
+    //     in 2.0), hence this dump implementation - still better than nothing
+    int i,
+        count = GetCount();
+
+    wxCHECK_RET( n >= 0 && n < count, _T("invalid index in wxChoice::Delete") );
+
+    wxArrayString items;
+    items.Alloc(count);
+    for ( i = 0; i < count; i++ )
+    {
+        if ( i != n )
+            items.Add(GetString(i));
+    }
+
+    Clear();
+
+    for ( i = 0; i < count - 1; i++ )
+    {
+        Append(items[i]);
+    }
 }
 
 int wxChoice::FindString( const wxString &string ) const