/////////////////////////////////////////////////////////////////////////////
-// Name: choicesg.cpp
+// Name: choicdgg.cpp
// Purpose: Choice dialogs
// Author: Julian Smart
// Modified by:
#include "wx/generic/choicdgg.h"
-extern void wxSplitMessage2(const char *message, wxList *messageList, wxWindow *parent, wxRowColSizer *sizer);
+// Split message, using constraints to position controls
+static void wxSplitMessage2(const wxChar *message, wxList *messageList, wxWindow *parent, wxRowColSizer *sizer)
+{
+ wxChar *copyMessage = copystring(message);
+ size_t i = 0;
+ size_t len = wxStrlen(copyMessage);
+ wxChar *currentMessage = copyMessage;
+
+// wxWindow *lastWindow = parent;
+
+ while (i < len) {
+ while ((i < len) && (copyMessage[i] != _T('\n'))) i++;
+ if (i < len) copyMessage[i] = 0;
+ wxStaticText *mess = new wxStaticText(parent, -1, currentMessage);
+
+/*
+ wxLayoutConstraints *c = new wxLayoutConstraints;
+ c->left.SameAs (parent, wxLeft, 10);
+ c->top.SameAs (lastWindow, wxBottom, 5);
+ c->right.AsIs ();
+ c->height.AsIs ();
+
+ mess->SetConstraints(c);
+*/
+ sizer->AddSizerChild(mess);
+
+ messageList->Append(mess);
+
+ currentMessage = copyMessage + i + 1;
+ }
+ delete[] copyMessage;
+}
-wxString wxGetSingleChoice( const wxString& message, const wxString& caption, const int n,
- const wxString *choices, wxWindow *parent,
- const int WXUNUSED(x), const int WXUNUSED(y), const bool WXUNUSED(centre),
- const int WXUNUSED(width), const int WXUNUSED(height) )
+wxString wxGetSingleChoice( const wxString& message, const wxString& caption, int n,
+ const wxString *choices, wxWindow *parent,
+ int WXUNUSED(x), int WXUNUSED(y), bool WXUNUSED(centre),
+ int WXUNUSED(width), int WXUNUSED(height) )
{
wxSingleChoiceDialog dialog(parent, message, caption, n, choices);
if ( dialog.ShowModal() == wxID_OK )
}
// Overloaded for backward compatibility
-wxString wxGetSingleChoice( const wxString& message, const wxString& caption, const int n,
- char *choices[], wxWindow *parent,
- const int x, const int y, const bool centre,
- const int width, const int height )
+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;
return ans;
}
-int wxGetSingleChoiceIndex( const wxString& message, const wxString& caption, const int n,
- const wxString *choices, wxWindow *parent,
- const int WXUNUSED(x), const int WXUNUSED(y), const bool WXUNUSED(centre),
- const int WXUNUSED(width), const int WXUNUSED(height) )
+int wxGetSingleChoiceIndex( const wxString& message, const wxString& caption, int n,
+ const wxString *choices, wxWindow *parent,
+ int WXUNUSED(x), int WXUNUSED(y), bool WXUNUSED(centre),
+ int WXUNUSED(width), int WXUNUSED(height) )
{
wxSingleChoiceDialog dialog(parent, message, caption, n, choices);
if ( dialog.ShowModal() == wxID_OK )
}
// Overloaded for backward compatibility
-int wxGetSingleChoiceIndex( const wxString& message, const wxString& caption, const int n,
- char *choices[], wxWindow *parent,
- const int x, const int y, const bool centre,
- const int width, const int height )
+int wxGetSingleChoiceIndex( const wxString& message, const wxString& caption, int n,
+ wxChar *choices[], wxWindow *parent,
+ int x, int y, bool centre,
+ int width, int height )
{
wxString *strings = new wxString[n];
int i;
return ans;
}
-char *wxGetSingleChoiceData( const wxString& message, const wxString& caption, const int n,
- const wxString *choices, char **client_data, wxWindow *parent,
- const int WXUNUSED(x), const int WXUNUSED(y), const bool WXUNUSED(centre),
- const int WXUNUSED(width), const int WXUNUSED(height) )
+wxChar *wxGetSingleChoiceData( const wxString& message, const wxString& caption, int n,
+ const wxString *choices, wxChar **client_data, wxWindow *parent,
+ int WXUNUSED(x), int WXUNUSED(y), bool WXUNUSED(centre),
+ int WXUNUSED(width), int WXUNUSED(height) )
{
wxSingleChoiceDialog dialog(parent, message, caption, n, choices, client_data);
if ( dialog.ShowModal() == wxID_OK )
}
// Overloaded for backward compatibility
-char *wxGetSingleChoiceData( const wxString& message, const wxString& caption, const int n,
- char *choices[], char **client_data, wxWindow *parent,
- const int x, const int y, const bool centre,
- const int width, const int height )
+wxChar *wxGetSingleChoiceData( const wxString& message, const wxString& caption, int n,
+ wxChar *choices[], wxChar **client_data, wxWindow *parent,
+ int x, int y, bool centre,
+ int width, int height )
{
wxString *strings = new wxString[n];
int i;
{
strings[i] = choices[i];
}
- char *data = wxGetSingleChoiceData(message, caption, n, (const wxString *)strings, client_data, parent,
+ wxChar *data = wxGetSingleChoiceData(message, caption, n, (const wxString *)strings, client_data, parent,
x, y, centre, width, height);
delete[] strings;
return data;
*/
/*
int wxGetMultipleChoice(const wxString& message, const wxString& caption,
- const int n, const wxString *choices,
- const int nsel, int * selection,
- wxWindow *parent , const int x , const int y, const bool centre,
- const int width, const int height)
+ int n, const wxString *choices,
+ int nsel, int * selection,
+ wxWindow *parent , int x , int y, bool centre,
+ int width, int height)
{
return -1;
}
#if !USE_SHARED_LIBRARY
BEGIN_EVENT_TABLE(wxSingleChoiceDialog, wxDialog)
EVT_BUTTON(wxID_OK, wxSingleChoiceDialog::OnOK)
+ EVT_LISTBOX_DCLICK(wxID_LISTBOX, wxSingleChoiceDialog::OnListBoxDClick)
END_EVENT_TABLE()
IMPLEMENT_CLASS(wxSingleChoiceDialog, wxDialog)
#endif
wxSingleChoiceDialog::wxSingleChoiceDialog(wxWindow *parent, const wxString& message, const wxString& caption,
- const int n, const wxString *choices, char **clientData, long style, const wxPoint& pos):
- wxDialog(parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL)
+ int n, const wxString *choices, wxChar **clientData, long style, const wxPoint& pos):
+ wxDialog(parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL|wxTAB_TRAVERSAL)
{
Create(parent, message, caption, n, choices, clientData, style);
}
wxSingleChoiceDialog::wxSingleChoiceDialog(wxWindow *parent, const wxString& message, const wxString& caption,
- const wxStringList& choices, char **clientData, long style, const wxPoint& pos):
+ const wxStringList& choices, wxChar **clientData, long style, const wxPoint& pos):
wxDialog(parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL)
{
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)
+ const wxStringList& choices, wxChar **clientData, long style, const wxPoint& pos)
{
wxString *strings = new wxString[choices.Number()];
int i;
}
bool wxSingleChoiceDialog::Create( wxWindow *WXUNUSED(parent), const wxString& message,
- const wxString& WXUNUSED(caption), const int n,
- const wxString *choices, char **clientData, long style,
+ const wxString& WXUNUSED(caption), int n,
+ const wxString *choices, wxChar **clientData, long style,
const wxPoint& WXUNUSED(pos) )
{
m_dialogStyle = style;
m_selection = 0;
- m_stringSelection = "";
+ m_stringSelection = _T("");
m_clientData = NULL;
wxBeginBusyCursor();
topSizer->SetBorder(10, 10);
wxRowColSizer *messageSizer = new wxRowColSizer(topSizer, wxSIZER_COLS, 100);
- messageSizer->SetName("messageSizer");
+ messageSizer->SetName(_T("messageSizer"));
// bool centre = ((style & wxCENTRE) == wxCENTRE);
wxRowColSizer *listBoxSizer = new wxRowColSizer(topSizer, wxSIZER_ROWS);
listBoxSizer->AddSizerChild(listBox);
- listBoxSizer->SetName("listBoxSizer");
+ listBoxSizer->SetName(_T("listBoxSizer"));
// Create constraints for the text sizer
wxLayoutConstraints *textC = new wxLayoutConstraints;
// Insert another spacer
wxSpacingSizer *spacingSizer2 = new wxSpacingSizer(topSizer, wxBelow, listBoxSizer, 10);
- spacingSizer->SetName("spacingSizer2");
+ spacingSizer->SetName(_T("spacingSizer2"));
// Insert a sizer for the buttons
wxRowColSizer *buttonSizer = new wxRowColSizer(topSizer, wxSIZER_ROWS);
- buttonSizer->SetName("buttonSizer");
+ buttonSizer->SetName(_T("buttonSizer"));
+ buttonSizer->SetSpacing(12,0);
// Specify constraints for the button sizer
wxLayoutConstraints *c = new wxLayoutConstraints;
wxButton *cancel = NULL;
if (style & wxOK) {
- ok = new wxButton(this, wxID_OK, _("OK"));
+ ok = new wxButton(this, wxID_OK, _("OK"), wxDefaultPosition, wxSize(75,-1) );
buttonSizer->AddSizerChild(ok);
}
if (style & wxCANCEL) {
- cancel = new wxButton(this, wxID_CANCEL, _("Cancel"));
+ cancel = new wxButton(this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize(75,-1));
buttonSizer->AddSizerChild(cancel);
}
{
m_selection = listBox->GetSelection();
m_stringSelection = listBox->GetStringSelection();
- m_clientData = listBox->GetClientData(m_selection);
+ m_clientData = (wxChar*)listBox->GetClientData(m_selection);
+ }
+
+ EndModal(wxID_OK);
+}
+
+void wxSingleChoiceDialog::OnListBoxDClick(wxCommandEvent& WXUNUSED(event))
+{
+ wxListBox *listBox = (wxListBox *)FindWindow(wxID_LISTBOX);
+ if ( listBox )
+ {
+ m_selection = listBox->GetSelection();
+ m_stringSelection = listBox->GetStringSelection();
+ m_clientData = (wxChar*)listBox->GetClientData(m_selection);
}
EndModal(wxID_OK);