void wxChoice::SetString(unsigned int n, const wxString& s) { wxCHECK_RET( IsValid(n), wxT("invalid item index in wxChoice::SetString") ); // we have to delete and add back the string as there is no way to change a // string in place // we need to preserve the client data manually void *oldData = NULL; wxClientData *oldObjData = NULL; if ( HasClientUntypedData() ) oldData = GetClientData(n); else if ( HasClientObjectData() ) oldObjData = GetClientObject(n); ::SendMessage(GetHwnd(), CB_DELETESTRING, n, 0); ::SendMessage(GetHwnd(), CB_INSERTSTRING, n, (LPARAM)s.wx_str() ); // restore the client data if ( oldData ) SetClientData(n, oldData); else if ( oldObjData ) SetClientObject(n, oldObjData); InvalidateBestSize(); }
bool wxChoice::OS2Command( WXUINT uParam , WXWORD WXUNUSED(wId) ) { if (uParam != LN_SELECT) { // // "selection changed" is the only event we're after // return false; } int n = GetSelection(); if (n > -1) { wxCommandEvent vEvent( wxEVT_CHOICE ,m_windowId ); vEvent.SetInt(n); vEvent.SetEventObject(this); vEvent.SetString(GetStringSelection()); if (HasClientObjectData()) vEvent.SetClientObject(GetClientObject(n)); else if (HasClientUntypedData()) vEvent.SetClientData(GetClientData(n)); ProcessCommand(vEvent); } return true; } // end of wxChoice::OS2Command
void wxChoice::SetString(unsigned int n, const wxString& s) { wxCHECK_RET( IsValid(n), wxT("invalid item index in wxChoice::SetString") ); // we have to delete and add back the string as there is no way to change a // string in place // we need to preserve the client data manually void *oldData = NULL; wxClientData *oldObjData = NULL; if ( HasClientUntypedData() ) oldData = GetClientData(n); else if ( HasClientObjectData() ) oldObjData = GetClientObject(n); // and also the selection if we're going to delete the item that was // selected const bool wasSelected = static_cast<int>(n) == GetSelection(); ::SendMessage(GetHwnd(), CB_DELETESTRING, n, 0); ::SendMessage(GetHwnd(), CB_INSERTSTRING, n, (LPARAM)s.wx_str() ); // restore the client data if ( oldData ) SetClientData(n, oldData); else if ( oldObjData ) SetClientObject(n, oldObjData); // and the selection if ( wasSelected ) SetSelection(n); // the width could have changed so the best size needs to be recomputed InvalidateBestSize(); }
void wxListBox::Clear() { wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); gtk_list_clear_items( m_list, 0, (int)GetCount() ); if ( GTK_LIST(m_list)->last_focus_child != NULL ) { // This should be NULL, I think. GTK_LIST(m_list)->last_focus_child = NULL; } if ( HasClientObjectData() ) { // destroy the data (due to Robert's idea of using wxList<wxObject> // and not wxList<wxClientData> we can't just say // m_clientList.DeleteContents(true) - this would crash! wxList::compatibility_iterator node = m_clientList.GetFirst(); while ( node ) { delete (wxClientData *)node->GetData(); node = node->GetNext(); } } m_clientList.Clear(); if ( m_strings ) m_strings->Clear(); }
wxClientData *wxItemContainer::GetClientObject(unsigned int n) const { wxCHECK_MSG( HasClientObjectData(), NULL, wxT("this window doesn't have object client data") ); return static_cast<wxClientData *>(DoGetItemClientData(n)); }
bool wxListBox::SendEvent(wxEventType type, int item) { wxCommandEvent event(type, m_windowId); event.SetEventObject(this); // use the current item by default if ( item == -1 ) { item = m_current; } // client data and string parameters only make sense if we have an item if ( item != -1 ) { if ( HasClientObjectData() ) event.SetClientObject(GetClientObject(item)); else if ( HasClientUntypedData() ) event.SetClientData(GetClientData(item)); event.SetString(GetString(item)); } event.SetInt(item); return GetEventHandler()->ProcessEvent(event); }
void wxListBox::DoSetItems(const wxArrayString& items, void** clientData) { Widget listBox = (Widget) m_mainWidget; if( HasClientObjectData() ) m_clientDataDict.DestroyData(); XmString *text = new XmString[items.GetCount()]; unsigned int i; for (i = 0; i < items.GetCount(); ++i) text[i] = wxStringToXmString (items[i]); if ( clientData ) for (i = 0; i < items.GetCount(); ++i) m_clientDataDict.Set(i, (wxClientData*)clientData[i], false); XmListAddItems (listBox, text, items.GetCount(), 0); for (i = 0; i < items.GetCount(); i++) XmStringFree (text[i]); delete[] text; // It seems that if the list is cleared, we must re-ask for // selection policy!! SetSelectionPolicy(); m_noItems = items.GetCount(); }
void wxListBox::SetString(unsigned int n, const wxString& rsString) { wxCHECK_RET( IsValid(n), wxT("invalid index in wxListBox::SetString") ); // // Remember the state of the item // bool bWasSelected = IsSelected(n); void* pOldData = NULL; wxClientData* pOldObjData = NULL; if ( HasClientUntypedData() ) pOldData = GetClientData(n); else if ( HasClientObjectData() ) pOldObjData = GetClientObject(n); // // Delete and recreate it // ::WinSendMsg( GetHwnd() ,LM_DELETEITEM ,(MPARAM)n ,(MPARAM)0 ); int nNewN = n; if (n == (m_nNumItems - 1)) nNewN = -1; ::WinSendMsg( GetHwnd() ,LM_INSERTITEM ,(MPARAM)nNewN ,(MPARAM)rsString.wx_str() ); // // Restore the client data // if (pOldData) SetClientData(n, pOldData); else if (pOldObjData) SetClientObject(n, pOldObjData); // // We may have lost the selection // if (bWasSelected) Select(n); #if wxUSE_OWNER_DRAWN if (m_windowStyle & wxLB_OWNERDRAW) // // Update item's text // m_aItems[n]->SetName(rsString); #endif //USE_OWNER_DRAWN } // end of wxListBox::SetString
wxComboBox::~wxComboBox() { DetachWidget((Widget) m_mainWidget); // Removes event handlers XtDestroyWidget((Widget) m_mainWidget); m_mainWidget = (WXWidget) 0; if ( HasClientObjectData() ) m_clientDataDict.DestroyData(); }
void wxComboBox::Clear() { XmComboBoxDeleteAllItems((Widget) m_mainWidget); m_stringList.Clear(); if ( HasClientObjectData() ) m_clientDataDict.DestroyData(); m_noStrings = 0; }
void wxListBox::Delete(unsigned int n) { Widget listBox = (Widget) m_mainWidget; XmListDeletePos (listBox, n + 1); m_clientDataDict.Delete(n, HasClientObjectData()); m_noItems --; }
void wxChoice::FreeData() { if ( HasClientObjectData() ) { size_t count = GetCount(); for ( size_t n = 0; n < count; n++ ) { delete GetClientObject(n); } } }
void wxChoice::Free() { if ( HasClientObjectData() ) { unsigned int count = GetCount(); for ( unsigned int n = 0; n < count; n++ ) { delete GetClientObject(n); } } }
void wxChoice::Delete(int n) { wxCHECK_RET( n < GetCount(), wxT("invalid item index in wxChoice::Delete") ); if ( HasClientObjectData() ) { delete GetClientObject(n); } ::SendMessage(GetBuddyHwnd(), LB_DELETESTRING, n, 0); }
wxChoice::~wxChoice() { if ( HasClientObjectData() ) { unsigned int i, max = GetCount(); for ( i = 0; i < max; ++i ) delete GetClientObject( i ); } delete m_popUpMenu; }
void wxChoice::Delete(int n) { wxCHECK_RET( n < GetCount(), wxT("invalid item index in wxChoice::Delete") ); if ( HasClientObjectData() ) { delete GetClientObject(n); } ::DeleteMenuItem( MAC_WXHMENU(m_macPopUpMenuHandle) , n + 1) ; m_strings.RemoveAt( n ) ; m_datas.RemoveAt( n ) ; m_peer->SetMaximum( GetCount() ) ; }
void wxComboBox::Delete(unsigned int n) { XmComboBoxDeletePos((Widget) m_mainWidget, n+1); wxStringList::Node *node = m_stringList.Item(n); if (node) { delete[] node->GetData(); delete node; } m_clientDataDict.Delete(n, HasClientObjectData()); m_noStrings--; }
void wxChoice::Delete(unsigned int n) { Widget w = (Widget)m_widgetArray[n]; XtRemoveCallback(w, XmNactivateCallback, (XtCallbackProc)wxChoiceCallback, (XtPointer)this); m_stringList.Erase(m_stringList.Item(n)); m_widgetArray.RemoveAt(size_t(n)); m_clientDataDict.Delete(n, HasClientObjectData()); XtDestroyWidget(w); m_noStrings--; }
void wxChoice::Delete(unsigned int n) { wxCHECK_RET( IsValid(n) , wxT("wxChoice::Delete: invalid index") ); if ( HasClientObjectData() ) delete GetClientObject( n ); ::DeleteMenuItem( MAC_WXHMENU(m_macPopUpMenuHandle) , n + 1 ) ; m_strings.RemoveAt( n ) ; m_datas.RemoveAt( n ) ; m_peer->SetMaximum( GetCount() ) ; }
void wxControlWithItemsBase::InitCommandEventWithItems(wxCommandEvent& event, int n) { InitCommandEvent(event); if ( n != wxNOT_FOUND ) { if ( HasClientObjectData() ) event.SetClientObject(GetClientObject(n)); else if ( HasClientUntypedData() ) event.SetClientData(GetClientData(n)); } }
void wxItemContainer::Clear() { if ( HasClientObjectData() ) { const unsigned count = GetCount(); for ( unsigned i = 0; i < count; ++i ) ResetItemClientObject(i); } SetClientDataType(wxClientData_None); DoClear(); }
wxChoice::~wxChoice() { if ( HasClientObjectData() ) { size_t i, max = GetCount(); for ( i = 0; i < max; ++i ) delete GetClientObject(i); } // DeleteMenu( m_macPopUpMenuId ) ; // DisposeMenu( m_macPopUpMenuHandle ) ; }
void wxItemContainer::Delete(unsigned int pos) { wxCHECK_RET( pos < GetCount(), wxT("invalid index") ); if ( HasClientObjectData() ) ResetItemClientObject(pos); DoDeleteOneItem(pos); if ( IsEmpty() ) { SetClientDataType(wxClientData_None); } }
void wxListBox::HandleLineEvent( unsigned int n, bool doubleClick ) { wxCommandEvent event( doubleClick ? wxEVT_COMMAND_LISTBOX_DOUBLECLICKED : wxEVT_COMMAND_LISTBOX_SELECTED, GetId() ); event.SetEventObject( this ); if ( HasClientObjectData() ) event.SetClientObject( GetClientObject(n) ); else if ( HasClientUntypedData() ) event.SetClientData( GetClientData(n) ); event.SetString( GetString(n) ); event.SetInt( n ); event.SetExtraLong( 1 ); HandleWindowEvent(event); }
void wxChoice::DoDeleteOneItem(unsigned int n) { wxCHECK_RET( IsValid(n) , wxT("wxChoice::Delete: invalid index") ); if ( HasClientObjectData() ) delete GetClientObject( n ); m_popUpMenu->Delete( m_popUpMenu->FindItemByPosition( n ) ); m_strings.RemoveAt( n ) ; m_datas.RemoveAt( n ) ; DoAfterItemCountChange(); }
void wxListBox::Clear() { if (m_noItems <= 0) return; wxSizeKeeper sk( this ); Widget listBox = (Widget) m_mainWidget; XmListDeleteAllItems (listBox); if( HasClientObjectData() ) m_clientDataDict.DestroyData(); sk.Restore(); m_noItems = 0; }
void wxChoice::Delete(unsigned int n) { wxCHECK_RET( IsValid(n), wxT("invalid item index in wxChoice::Delete") ); if ( HasClientObjectData() ) { delete GetClientObject(n); } SendMessage(GetHwnd(), CB_DELETESTRING, n, 0); if ( !IsFrozen() ) UpdateVisibleHeight(); InvalidateBestSize(); }
bool wxListBoxBase::SendEvent(wxEventType evtType, int item, bool selected) { wxCommandEvent event(evtType, GetId()); event.SetEventObject(this); event.SetInt(item); event.SetString(GetString(item)); event.SetExtraLong(selected); if ( HasClientObjectData() ) event.SetClientObject(GetClientObject(item)); else if ( HasClientUntypedData() ) event.SetClientData(GetClientData(item)); return HandleWindowEvent(event); }
bool wxListBox::OS2Command( WXUINT uParam , WXWORD WXUNUSED(wId)) { wxEventType eEvtType; if (uParam == LN_SELECT) { eEvtType = wxEVT_COMMAND_LISTBOX_SELECTED; } else if (uParam == LN_ENTER) { eEvtType = wxEVT_COMMAND_LISTBOX_DOUBLECLICKED; } else { // // Some event we're not interested in // return false; } wxCommandEvent vEvent( eEvtType ,m_windowId ); vEvent.SetEventObject(this); wxArrayInt aSelections; int n; int nCount = GetSelections(aSelections); if (nCount > 0) { n = aSelections[0]; if (HasClientObjectData()) vEvent.SetClientObject(GetClientObject(n)); else if ( HasClientUntypedData() ) vEvent.SetClientData(GetClientData(n)); vEvent.SetString(GetString(n)); } else { n = -1; } vEvent.SetInt(n); return GetEventHandler()->ProcessEvent(vEvent); } // end of wxListBox::OS2Command
void wxListBox::Free() { #if wxUSE_OWNER_DRAWN if ( m_windowStyle & wxLB_OWNERDRAW ) { WX_CLEAR_ARRAY(m_aItems); } else #endif // wxUSE_OWNER_DRAWN if ( HasClientObjectData() ) { for ( unsigned int n = 0; n < m_noItems; n++ ) { delete GetClientObject(n); } } }