X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/54b84891257f53e347c05852c55d126c1ea0def6..9f4ed8613c2853dbf8b190b41dbdafa960b33a85:/src/generic/choicdgg.cpp diff --git a/src/generic/choicdgg.cpp b/src/generic/choicdgg.cpp index c56105fb18..629284a4ba 100644 --- a/src/generic/choicdgg.cpp +++ b/src/generic/choicdgg.cpp @@ -6,14 +6,14 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) wxWindows team -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // ============================================================================ // declarations // ============================================================================ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "choicdgg.h" #endif @@ -28,6 +28,8 @@ #pragma hdrstop #endif +#if wxUSE_CHOICEDLG + #ifndef WX_PRECOMP #include #include "wx/utils.h" @@ -37,6 +39,7 @@ #include "wx/stattext.h" #include "wx/intl.h" #include "wx/sizer.h" + #include "wx/arrstr.h" #endif #if wxUSE_STATLINE @@ -51,17 +54,6 @@ #define wxID_LISTBOX 3000 -#if defined(__WXMSW__) || defined(__WXMAC__) -#define wxCHOICEDLG_DIALOG_STYLE (wxDEFAULT_DIALOG_STYLE | \ - wxDIALOG_MODAL | \ - wxTAB_TRAVERSAL) -#else -#define wxCHOICEDLG_DIALOG_STYLE (wxDEFAULT_DIALOG_STYLE | \ - wxDIALOG_MODAL | \ - wxRESIZE_BORDER | \ - wxTAB_TRAVERSAL) -#endif - // ---------------------------------------------------------------------------- // private functions // ---------------------------------------------------------------------------- @@ -84,7 +76,7 @@ int ConvertWXArrayToC(const wxArrayString& aChoices, wxString **choices) for ( int i = 0; i < n; i++ ) { - (*choices)[i] = aChoices[i]; + (*choices)[i] = aChoices[i]; } return n; @@ -127,28 +119,6 @@ wxString wxGetSingleChoice( const wxString& message, return res; } -#ifdef WXWIN_COMPATIBILITY_2 -// Overloaded for backward compatibility -wxString wxGetSingleChoice( const wxString& message, - const wxString& caption, - int n, char *choices[], - wxWindow *parent, - int x, int y, bool centre, - int width, int height ) -{ - wxString *strings = new wxString[n]; - int i; - for ( i = 0; i < n; i++) - { - strings[i] = choices[i]; - } - wxString ans(wxGetSingleChoice(message, caption, n, (const wxString *)strings, parent, - x, y, centre, width, height)); - delete[] strings; - return ans; -} -#endif // WXWIN_COMPATIBILITY_2 - int wxGetSingleChoiceIndex( const wxString& message, const wxString& caption, int n, const wxString *choices, @@ -167,24 +137,22 @@ int wxGetSingleChoiceIndex( const wxString& message, return choice; } -#ifdef WXWIN_COMPATIBILITY_2 -// Overloaded for backward compatibility int wxGetSingleChoiceIndex( const wxString& message, const wxString& caption, - int n, wxChar *choices[], + const wxArrayString& aChoices, wxWindow *parent, - int x, int y, bool centre, - int width, int height ) + int x, int y, + bool centre, + int width, int height) { - wxString *strings = new wxString[n]; - for ( int i = 0; i < n; i++) - strings[i] = choices[i]; - int ans = wxGetSingleChoiceIndex(message, caption, n, (const wxString *)strings, parent, - x, y, centre, width, height); - delete[] strings; - return ans; + wxString *choices; + int n = ConvertWXArrayToC(aChoices, &choices); + int res = wxGetSingleChoiceIndex(message, caption, n, choices, parent, + x, y, centre, width, height); + delete [] choices; + + return res; } -#endif // WXWIN_COMPATIBILITY_2 void *wxGetSingleChoiceData( const wxString& message, const wxString& caption, @@ -225,30 +193,6 @@ void *wxGetSingleChoiceData( const wxString& message, return res; } -#ifdef WXWIN_COMPATIBILITY_2 -// Overloaded for backward compatibility -void *wxGetSingleChoiceData( const wxString& message, - const wxString& caption, - int n, wxChar *choices[], - void **client_data, - wxWindow *parent, - int x, int y, bool centre, int width, int height ) -{ - wxString *strings = new wxString[n]; - int i; - for ( i = 0; i < n; i++) - { - strings[i] = choices[i]; - } - void *data = wxGetSingleChoiceData(message, caption, - n, (const wxString *)strings, - client_data, parent, - x, y, centre, width, height); - delete[] strings; - return data; -} -#endif // WXWIN_COMPATIBILITY_2 - size_t wxGetMultipleChoices(wxArrayInt& selections, const wxString& message, const wxString& caption, @@ -259,6 +203,10 @@ size_t wxGetMultipleChoices(wxArrayInt& selections, int WXUNUSED(width), int WXUNUSED(height)) { wxMultiChoiceDialog dialog(parent, message, caption, n, choices); + + if ( !selections.IsEmpty() ) + dialog.SetSelections(selections); + if ( dialog.ShowModal() == wxID_OK ) selections = dialog.GetSelections(); else @@ -294,12 +242,11 @@ bool wxAnyChoiceDialog::Create(wxWindow *parent, const wxString& message, const wxString& caption, int n, const wxString *choices, - long WXUNUSED(styleDlg), // FIXME: why unused? + long styleDlg, const wxPoint& pos, long styleLbox) { - if ( !wxDialog::Create(parent, -1, caption, pos, wxDefaultSize, - wxCHOICEDLG_DIALOG_STYLE) ) + if ( !wxDialog::Create(parent, -1, caption, pos, wxDefaultSize, styleDlg) ) return FALSE; wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL ); @@ -323,7 +270,7 @@ bool wxAnyChoiceDialog::Create(wxWindow *parent, #endif // 4) buttons - topsizer->Add( CreateButtonSizer( wxOK|wxCANCEL ), 0, wxCENTRE | wxALL, 10 ); + topsizer->Add( CreateButtonSizer( styleDlg & (wxOK|wxCANCEL) ), 0, wxCENTRE | wxALL, 10 ); SetAutoLayout( TRUE ); SetSizer( topsizer ); @@ -361,40 +308,6 @@ wxSingleChoiceDialog::wxSingleChoiceDialog(wxWindow *parent, Create(parent, message, caption, n, choices, clientData, style); } -#ifdef WXWIN_COMPATIBILITY_2 - -wxSingleChoiceDialog::wxSingleChoiceDialog(wxWindow *parent, - const wxString& message, - const wxString& caption, - const wxStringList& choices, - char **clientData, - long style, - const wxPoint& WXUNUSED(pos)) -{ - Create(parent, message, caption, choices, clientData, style); -} - -bool wxSingleChoiceDialog::Create(wxWindow *parent, - const wxString& message, - const wxString& caption, - const wxStringList& choices, - char **clientData, - long style, - const wxPoint& pos) -{ - wxString *strings = new wxString[choices.Number()]; - int i; - for ( i = 0; i < choices.Number(); i++) - { - strings[i] = (char *)choices.Nth(i)->Data(); - } - bool ans = Create(parent, message, caption, choices.Number(), strings, clientData, style, pos); - delete[] strings; - return ans; -} - -#endif // WXWIN_COMPATIBILITY_2 - bool wxSingleChoiceDialog::Create( wxWindow *parent, const wxString& message, const wxString& caption, @@ -431,11 +344,8 @@ void wxSingleChoiceDialog::OnOK(wxCommandEvent& WXUNUSED(event)) { m_selection = m_listbox->GetSelection(); m_stringSelection = m_listbox->GetStringSelection(); - // TODO! -#ifndef __WXMOTIF__ if ( m_listbox->HasClientUntypedData() ) SetClientData(m_listbox->GetClientData(m_selection)); -#endif EndModal(wxID_OK); } @@ -444,11 +354,8 @@ void wxSingleChoiceDialog::OnListBoxDClick(wxCommandEvent& WXUNUSED(event)) m_selection = m_listbox->GetSelection(); m_stringSelection = m_listbox->GetStringSelection(); - // TODO! -#ifndef __WXMOTIF__ if ( m_listbox->HasClientUntypedData() ) SetClientData(m_listbox->GetClientData(m_selection)); -#endif EndModal(wxID_OK); } @@ -487,11 +394,6 @@ void wxMultiChoiceDialog::SetSelections(const wxArrayInt& selections) bool wxMultiChoiceDialog::TransferDataFromWindow() { - // VZ: I hate to do it but I can't fix wxMotif right now (FIXME) -#ifdef __WXMOTIF__ - #define IsSelected Selected -#endif - m_selections.Empty(); size_t count = m_listbox->GetCount(); for ( size_t n = 0; n < count; n++ ) @@ -502,3 +404,5 @@ bool wxMultiChoiceDialog::TransferDataFromWindow() return TRUE; } + +#endif // wxUSE_CHOICEDLG