X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3a73cc52036fd2a18810c36a5c21766da4b23d0a..222702b112dcc7bebe018d6f4d66fe469fefd02c:/src/motif/choice.cpp?ds=sidebyside diff --git a/src/motif/choice.cpp b/src/motif/choice.cpp index 3407965764..bae8a44171 100644 --- a/src/motif/choice.cpp +++ b/src/motif/choice.cpp @@ -6,13 +6,16 @@ // Created: 17/09/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "choice.h" #endif +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + #ifdef __VMS #define XtDisplay XTDISPLAY #define XtParent XTPARENT @@ -20,8 +23,11 @@ #include "wx/defs.h" +#if wxUSE_CHOICE + #include "wx/choice.h" #include "wx/utils.h" +#include "wx/arrstr.h" #ifdef __VMS__ #pragma message disable nosimpint @@ -52,8 +58,6 @@ wxChoice::wxChoice() void wxChoice::Init() { - InitBase(); - m_noStrings = 0; m_buttonWidget = (WXWidget) 0; m_menuWidget = (WXWidget) 0; @@ -69,7 +73,7 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id, const wxString& name) { if ( !CreateControl(parent, id, pos, size, style, validator, name) ) - return FALSE; + return false; Widget parentWidget = (Widget) parent->GetClientWidget(); @@ -136,13 +140,26 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id, XtVaSetValues((Widget) m_formWidget, XmNresizePolicy, XmRESIZE_NONE, NULL); - ChangeFont(FALSE); + ChangeFont(false); ChangeBackgroundColour(); AttachWidget (parent, m_buttonWidget, m_formWidget, pos.x, pos.y, bestSize.x, bestSize.y); - return TRUE; + return true; +} + +bool wxChoice::Create(wxWindow *parent, wxWindowID id, + const wxPoint& pos, + const wxSize& size, + const wxArrayString& choices, + long style, + const wxValidator& validator, + const wxString& name) +{ + wxCArrayString chs(choices); + return Create(parent, id, pos, size, chs.GetCount(), chs.GetStrings(), + style, validator, name); } wxChoice::~wxChoice() @@ -179,7 +196,7 @@ int wxChoice::DoAppend(const wxString& item) #endif NULL); - DoChangeBackgroundColour((WXWidget) w, m_backgroundColour); + wxDoChangeBackgroundColour((WXWidget) w, m_backgroundColour); if( m_font.Ok() ) wxDoChangeFont( w, m_font ); @@ -209,12 +226,20 @@ int wxChoice::DoAppend(const wxString& item) return GetCount() - 1; } +int wxChoice::DoInsert(const wxString& item, int pos) +{ + wxCHECK_MSG(false, -1, wxT("insert not implemented")); + +// wxCHECK_MSG((pos>=0) && (pos<=GetCount()), -1, wxT("invalid index")); +// if (pos == GetCount()) return DoAppend(item); +} + void wxChoice::Delete(int n) { Widget w = (Widget)m_widgetArray[n]; XtRemoveCallback(w, XmNactivateCallback, (XtCallbackProc)wxChoiceCallback, (XtPointer)this); - m_stringList.DeleteNode(m_stringList.Item(n)); + m_stringList.Erase(m_stringList.Item(n)); m_widgetArray.RemoveAt(size_t(n)); m_clientDataDict.Delete(n, HasClientObjectData()); @@ -259,7 +284,7 @@ int wxChoice::GetSelection() const if (!s.IsEmpty()) { int i = 0; - for (wxStringListNode* node = m_stringList.GetFirst (); + for (wxStringList::compatibility_iterator node = m_stringList.GetFirst (); node; node = node->GetNext ()) { if (wxStrcmp(node->GetData(), s.c_str()) == 0) @@ -277,9 +302,9 @@ int wxChoice::GetSelection() const void wxChoice::SetSelection(int n) { - m_inSetValue = TRUE; + m_inSetValue = true; - wxStringListNode *node = m_stringList.Item(n); + wxStringList::compatibility_iterator node = m_stringList.Item(n); if (node) { #if 0 @@ -304,13 +329,13 @@ void wxChoice::SetSelection(int n) XmNmenuHistory, (Widget) m_widgetArray[n], NULL); #endif } - m_inSetValue = FALSE; + m_inSetValue = false; } int wxChoice::FindString(const wxString& s) const { int i = 0; - for (wxStringListNode* node = m_stringList.GetFirst(); + for (wxStringList::compatibility_iterator node = m_stringList.GetFirst(); node; node = node->GetNext ()) { if (s == node->GetData()) @@ -319,12 +344,12 @@ int wxChoice::FindString(const wxString& s) const i++; } - return -1; + return wxNOT_FOUND; } wxString wxChoice::GetString(int n) const { - wxStringListNode *node = m_stringList.Item(n); + wxStringList::compatibility_iterator node = m_stringList.Item(n); if (node) return node->GetData(); else @@ -416,8 +441,8 @@ void wxChoiceCallback (Widget w, XtPointer clientData, XtPointer WXUNUSED(ptr)) { wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, item->GetId()); event.SetEventObject(item); - event.m_commandInt = n; - event.m_commandString = item->GetStrings().Item(n)->GetData(); + event.SetInt(n); + event.SetString( item->GetStrings().Item(n)->GetData() ); if ( item->HasClientObjectData() ) event.SetClientObject( item->GetClientObject(n) ); else if ( item->HasClientUntypedData() ) @@ -448,33 +473,33 @@ void wxChoice::ChangeFont(bool keepOriginalSize) XtVaSetValues( (Widget)m_widgetArray[i], fontTag, fontType, NULL ); - + GetSize(& width1, & height1); if (keepOriginalSize && (width != width1 || height != height1)) { - SetSize(-1, -1, width, height); + SetSize(wxDefaultCoord, wxDefaultCoord, width, height); } } } void wxChoice::ChangeBackgroundColour() { - DoChangeBackgroundColour(m_formWidget, m_backgroundColour); - DoChangeBackgroundColour(m_buttonWidget, m_backgroundColour); - DoChangeBackgroundColour(m_menuWidget, m_backgroundColour); + wxDoChangeBackgroundColour(m_formWidget, m_backgroundColour); + wxDoChangeBackgroundColour(m_buttonWidget, m_backgroundColour); + wxDoChangeBackgroundColour(m_menuWidget, m_backgroundColour); size_t i; for (i = 0; i < m_noStrings; i++) - DoChangeBackgroundColour(m_widgetArray[i], m_backgroundColour); + wxDoChangeBackgroundColour(m_widgetArray[i], m_backgroundColour); } void wxChoice::ChangeForegroundColour() { - DoChangeForegroundColour(m_formWidget, m_foregroundColour); - DoChangeForegroundColour(m_buttonWidget, m_foregroundColour); - DoChangeForegroundColour(m_menuWidget, m_foregroundColour); + wxDoChangeForegroundColour(m_formWidget, m_foregroundColour); + wxDoChangeForegroundColour(m_buttonWidget, m_foregroundColour); + wxDoChangeForegroundColour(m_menuWidget, m_foregroundColour); size_t i; for (i = 0; i < m_noStrings; i++) - DoChangeForegroundColour(m_widgetArray[i], m_foregroundColour); + wxDoChangeForegroundColour(m_widgetArray[i], m_foregroundColour); } int wxChoice::GetCount() const @@ -484,7 +509,7 @@ int wxChoice::GetCount() const void wxChoice::DoSetItemClientData(int n, void* clientData) { - m_clientDataDict.Set(n, (wxClientData*)clientData, FALSE); + m_clientDataDict.Set(n, (wxClientData*)clientData, false); } void* wxChoice::DoGetItemClientData(int n) const @@ -495,7 +520,7 @@ void* wxChoice::DoGetItemClientData(int n) const void wxChoice::DoSetItemClientObject(int n, wxClientData* clientData) { // don't delete, wxItemContainer does that for us - m_clientDataDict.Set(n, clientData, FALSE); + m_clientDataDict.Set(n, clientData, false); } wxClientData* wxChoice::DoGetItemClientObject(int n) const @@ -515,7 +540,7 @@ wxSize wxChoice::GetItemsSize() const // get my GetTextExtent( "|", &x, &my ); - wxStringList::Node* curr = m_stringList.GetFirst(); + wxStringList::compatibility_iterator curr = m_stringList.GetFirst(); while( curr ) { GetTextExtent( curr->GetData(), &x, &y ); @@ -534,3 +559,5 @@ wxSize wxChoice::DoGetBestSize() const return wxSize( ( items.x ? items.x + WIDTH_OVERHEAD : 120 ), items.y + HEIGHT_OVERHEAD ); } + +#endif // wxUSE_CHOICE