// TODO auto-sorting is not supported by the code int wxChoice::DoInsertItems(const wxArrayStringsAdapter& items, unsigned int pos, void **clientData, wxClientDataType type) { #ifndef XmNpositionIndex wxCHECK_MSG( pos == GetCount(), -1, wxT("insert not implemented")); #endif const unsigned int numItems = items.GetCount(); AllocClientData(numItems); for( unsigned int i = 0; i < numItems; ++i, ++pos ) { Widget w = XtVaCreateManagedWidget (GetLabelText(items[i]), #if wxUSE_GADGETS xmPushButtonGadgetClass, (Widget) m_menuWidget, #else xmPushButtonWidgetClass, (Widget) m_menuWidget, #endif #ifdef XmNpositionIndex XmNpositionIndex, pos, #endif NULL); wxDoChangeBackgroundColour((WXWidget) w, m_backgroundColour); if( m_font.IsOk() ) wxDoChangeFont( w, m_font ); m_widgetArray.Insert(w, pos); char mnem = wxFindMnemonic (items[i]); if (mnem != 0) XtVaSetValues (w, XmNmnemonic, mnem, NULL); XtAddCallback (w, XmNactivateCallback, (XtCallbackProc) wxChoiceCallback, (XtPointer) this); if (m_stringArray.GetCount() == 0 && m_buttonWidget) { XtVaSetValues ((Widget) m_buttonWidget, XmNmenuHistory, w, NULL); Widget label = XmOptionButtonGadget ((Widget) m_buttonWidget); wxXmString text( items[i] ); XtVaSetValues (label, XmNlabelString, text(), NULL); } m_stringArray.Insert(items[i], pos); InsertNewItemClientData(pos, clientData, i, type); } return pos - 1; }
int wxChoice::DoInsert(const wxString& item, unsigned int pos) { #ifndef XmNpositionIndex wxCHECK_MSG( pos == GetCount(), -1, wxT("insert not implemented")); #endif Widget w = XtVaCreateManagedWidget (GetLabelText(item), #if wxUSE_GADGETS xmPushButtonGadgetClass, (Widget) m_menuWidget, #else xmPushButtonWidgetClass, (Widget) m_menuWidget, #endif #ifdef XmNpositionIndex XmNpositionIndex, pos, #endif NULL); wxDoChangeBackgroundColour((WXWidget) w, m_backgroundColour); if( m_font.Ok() ) wxDoChangeFont( w, m_font ); m_widgetArray.Insert(w, pos); char mnem = wxFindMnemonic (item); if (mnem != 0) XtVaSetValues (w, XmNmnemonic, mnem, NULL); XtAddCallback (w, XmNactivateCallback, (XtCallbackProc) wxChoiceCallback, (XtPointer) this); if (m_noStrings == 0 && m_buttonWidget) { XtVaSetValues ((Widget) m_buttonWidget, XmNmenuHistory, w, NULL); Widget label = XmOptionButtonGadget ((Widget) m_buttonWidget); wxXmString text( item ); XtVaSetValues (label, XmNlabelString, text(), NULL); } // need to ditch wxStringList for wxArrayString m_stringList.Insert(pos, MYcopystring(item)); m_noStrings ++; return pos; }
int wxChoice::DoAppend(const wxString& item) { Widget w = XtVaCreateManagedWidget (wxStripMenuCodes(item), #if wxUSE_GADGETS xmPushButtonGadgetClass, (Widget) m_menuWidget, #else xmPushButtonWidgetClass, (Widget) m_menuWidget, #endif NULL); wxDoChangeBackgroundColour((WXWidget) w, m_backgroundColour); if( m_font.Ok() ) wxDoChangeFont( w, m_font ); m_widgetArray.Add(w); char mnem = wxFindMnemonic (item); if (mnem != 0) XtVaSetValues (w, XmNmnemonic, mnem, NULL); XtAddCallback (w, XmNactivateCallback, (XtCallbackProc) wxChoiceCallback, (XtPointer) this); if (m_noStrings == 0 && m_buttonWidget) { XtVaSetValues ((Widget) m_buttonWidget, XmNmenuHistory, w, NULL); Widget label = XmOptionButtonGadget ((Widget) m_buttonWidget); wxXmString text( item ); XtVaSetValues (label, XmNlabelString, text(), NULL); } m_stringList.Add(item); m_noStrings ++; return GetCount() - 1; }