X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8710cf5cabdb94c688f2d8d01ee83ac9b715125d..dfe1eee3bb9ecde8c4490ea69c07b5030d69530c:/src/generic/proplist.cpp diff --git a/src/generic/proplist.cpp b/src/generic/proplist.cpp index 9b32d02c00..4a44094a8e 100644 --- a/src/generic/proplist.cpp +++ b/src/generic/proplist.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -24,36 +24,24 @@ #include "wx/wx.h" #endif +#include "wx/colordlg.h" +#include "wx/proplist.h" + #include #include #include #include -#if wxUSE_IOSTREAMH -#if defined(__WXMSW__) && !defined(__GNUWIN32__) -#include -#else -#include -#endif -#else -#include -#endif - -#include "wx/window.h" -#include "wx/utils.h" -#include "wx/list.h" -#include "wx/colordlg.h" -#include "wx/proplist.h" /* * Property text edit control */ - + IMPLEMENT_CLASS(wxPropertyTextEdit, wxTextCtrl) wxPropertyTextEdit::wxPropertyTextEdit(wxPropertyListView *v, wxWindow *parent, const wxWindowID id, const wxString& value, - const wxPoint& pos, const wxSize& size, + const wxPoint& pos, const wxSize& size, long style, const wxString& name): wxTextCtrl(parent, id, value, pos, size, style, wxDefaultValidator, name) { @@ -75,16 +63,17 @@ void wxPropertyTextEdit::OnKillFocus(void) IMPLEMENT_DYNAMIC_CLASS(wxPropertyListView, wxPropertyView) BEGIN_EVENT_TABLE(wxPropertyListView, wxPropertyView) - EVT_BUTTON(wxID_OK, wxPropertyListView::OnOk) - EVT_BUTTON(wxID_CANCEL, wxPropertyListView::OnCancel) - EVT_BUTTON(wxID_HELP, wxPropertyListView::OnHelp) - EVT_BUTTON(wxID_PROP_CROSS, wxPropertyListView::OnCross) - EVT_BUTTON(wxID_PROP_CHECK, wxPropertyListView::OnCheck) - EVT_BUTTON(wxID_PROP_EDIT, wxPropertyListView::OnEdit) - EVT_TEXT_ENTER(wxID_PROP_TEXT, wxPropertyListView::OnText) - EVT_LISTBOX(wxID_PROP_SELECT, wxPropertyListView::OnPropertySelect) - EVT_COMMAND(wxID_PROP_SELECT, wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, wxPropertyListView::OnPropertyDoubleClick) - EVT_LISTBOX(wxID_PROP_VALUE_SELECT, wxPropertyListView::OnValueListSelect) + EVT_BUTTON(wxID_OK, wxPropertyListView::OnOk) + EVT_BUTTON(wxID_CANCEL, wxPropertyListView::OnCancel) + EVT_BUTTON(wxID_HELP, wxPropertyListView::OnHelp) + EVT_BUTTON(wxID_PROP_CROSS, wxPropertyListView::OnCross) + EVT_BUTTON(wxID_PROP_CHECK, wxPropertyListView::OnCheck) + EVT_BUTTON(wxID_PROP_EDIT, wxPropertyListView::OnEdit) + EVT_TEXT_ENTER(wxID_PROP_TEXT, wxPropertyListView::OnText) + EVT_LISTBOX(wxID_PROP_SELECT, wxPropertyListView::OnPropertySelect) + EVT_COMMAND(wxID_PROP_SELECT, wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, + wxPropertyListView::OnPropertyDoubleClick) + EVT_LISTBOX(wxID_PROP_VALUE_SELECT, wxPropertyListView::OnValueListSelect) END_EVENT_TABLE() bool wxPropertyListView::sm_dialogCancelled = FALSE; @@ -157,7 +146,7 @@ bool wxPropertyListView::UpdatePropertyList(bool clearEditArea) wxString stringValueRepr(property->GetValue().GetStringRepresentation()); wxString paddedString(MakeNameValueString(property->GetName(), stringValueRepr)); - m_propertyScrollingList->Append(paddedString.GetData(), (char *)property); + m_propertyScrollingList->Append(paddedString.GetData(), (void *)property); node = node->Next(); } return TRUE; @@ -180,7 +169,7 @@ bool wxPropertyListView::UpdatePropertyDisplayInList(wxProperty *property) { // Don't update the listbox unnecessarily because it can cause // ugly flashing. - + if (paddedString != m_propertyScrollingList->GetString(sel)) m_propertyScrollingList->SetString(sel, paddedString.GetData()); } @@ -419,10 +408,10 @@ bool wxPropertyListView::CreateControls(void) smallButtonWidth = -1; smallButtonHeight = -1; #endif - + if (m_valueText) return TRUE; - + if (!panel) return FALSE; @@ -499,7 +488,7 @@ bool wxPropertyListView::CreateControls(void) c2->left.SameAs (panel, wxLeft, 2); else c2->left.RightOf (leftMostWindow, 2); - + c2->bottom.SameAs (panel, wxBottom, 2); c2->width.AsIs(); c2->height.AsIs(); @@ -592,7 +581,7 @@ bool wxPropertyListView::CreateControls(void) m_valueText = new wxPropertyTextEdit(this, panel, wxID_PROP_TEXT, "", wxPoint(-1, -1), wxSize(-1, -1), wxPROCESS_ENTER); m_valueText->Enable(FALSE); - + wxLayoutConstraints *c = new wxLayoutConstraints; if (m_cancelButton) @@ -706,7 +695,7 @@ bool wxPropertyListView::OnClose(void) // Retrieve the value if any wxCommandEvent event; OnCheck(event); - + delete this; return TRUE; } @@ -728,7 +717,7 @@ void wxPropertyListView::OnOk(wxCommandEvent& event) { // Retrieve the value if any OnCheck(event); - + m_managedWindow->Close(TRUE); } @@ -803,15 +792,16 @@ void wxPropertyListView::OnText(wxCommandEvent& event) /* * Property dialog box */ - + IMPLEMENT_CLASS(wxPropertyListDialog, wxDialog) BEGIN_EVENT_TABLE(wxPropertyListDialog, wxDialog) - EVT_BUTTON(wxID_CANCEL, wxPropertyListDialog::OnCancel) + EVT_BUTTON(wxID_CANCEL, wxPropertyListDialog::OnCancel) + EVT_CLOSE(wxPropertyListDialog::OnCloseWindow) END_EVENT_TABLE() wxPropertyListDialog::wxPropertyListDialog(wxPropertyListView *v, wxWindow *parent, - const wxString& title, const wxPoint& pos, + const wxString& title, const wxPoint& pos, const wxSize& size, long style, const wxString& name): wxDialog(parent, -1, title, pos, size, style, name) { @@ -821,22 +811,24 @@ wxPropertyListDialog::wxPropertyListDialog(wxPropertyListView *v, wxWindow *pare SetAutoLayout(TRUE); } -bool wxPropertyListDialog::OnClose(void) +void wxPropertyListDialog::OnCloseWindow(wxCloseEvent& event) { if (m_view) { - SetReturnCode(wxID_CANCEL); + SetReturnCode(wxID_CANCEL); m_view->OnClose(); - m_view = NULL; - return TRUE; + m_view = NULL; + this->Destroy(); } else - return FALSE; + { + event.Veto(); + } } void wxPropertyListDialog::OnCancel(wxCommandEvent& WXUNUSED(event)) { - SetReturnCode(wxID_CANCEL); + SetReturnCode(wxID_CANCEL); this->Close(); } @@ -851,16 +843,16 @@ void wxPropertyListDialog::OnDefaultAction(wxControl *WXUNUSED(item)) // Extend event processing to search the view's event table bool wxPropertyListDialog::ProcessEvent(wxEvent& event) { - if ( !m_view || ! m_view->ProcessEvent(event) ) - return wxEvtHandler::ProcessEvent(event); - else - return TRUE; + if ( !m_view || ! m_view->ProcessEvent(event) ) + return wxEvtHandler::ProcessEvent(event); + else + return TRUE; } /* * Property panel */ - + IMPLEMENT_CLASS(wxPropertyListPanel, wxPanel) BEGIN_EVENT_TABLE(wxPropertyListPanel, wxPanel) @@ -882,10 +874,10 @@ void wxPropertyListPanel::OnDefaultAction(wxControl *WXUNUSED(item)) // Extend event processing to search the view's event table bool wxPropertyListPanel::ProcessEvent(wxEvent& event) { - if ( !m_view || ! m_view->ProcessEvent(event) ) - return wxEvtHandler::ProcessEvent(event); - else - return TRUE; + if ( !m_view || ! m_view->ProcessEvent(event) ) + return wxEvtHandler::ProcessEvent(event); + else + return TRUE; } void wxPropertyListPanel::OnSize(wxSizeEvent& WXUNUSED(event)) @@ -896,10 +888,14 @@ void wxPropertyListPanel::OnSize(wxSizeEvent& WXUNUSED(event)) /* * Property frame */ - + IMPLEMENT_CLASS(wxPropertyListFrame, wxFrame) -bool wxPropertyListFrame::OnClose(void) +BEGIN_EVENT_TABLE(wxPropertyListFrame, wxFrame) + EVT_CLOSE(wxPropertyListFrame::OnCloseWindow) +END_EVENT_TABLE() + +void wxPropertyListFrame::OnCloseWindow(wxCloseEvent& event) { if (m_view) { @@ -907,10 +903,12 @@ bool wxPropertyListFrame::OnClose(void) m_propertyPanel->SetView(NULL); m_view->OnClose(); m_view = NULL; - return TRUE; + this->Destroy(); } else - return FALSE; + { + event.Veto(); + } } wxPropertyListPanel *wxPropertyListFrame::OnCreatePanel(wxFrame *parent, wxPropertyListView *v) @@ -935,7 +933,7 @@ bool wxPropertyListFrame::Initialize(void) /* * Property list specific validator */ - + IMPLEMENT_ABSTRACT_CLASS(wxPropertyListValidator, wxPropertyValidator) bool wxPropertyListValidator::OnSelect(bool select, wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow) @@ -950,7 +948,7 @@ bool wxPropertyListValidator::OnSelect(bool select, wxProperty *property, wxProp bool wxPropertyListValidator::OnValueListSelect(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) { wxString s(view->GetValueList()->GetStringSelection()); - if (s != "") + if (s != _T("")) { view->GetValueText()->SetValue(s); view->RetrieveProperty(property); @@ -1004,12 +1002,12 @@ IMPLEMENT_DYNAMIC_CLASS(wxRealListValidator, wxPropertyListValidator) /// /// Real number validator -/// +/// bool wxRealListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *parentWindow) { if (m_realMin == 0.0 && m_realMax == 0.0) return TRUE; - + if (!view->GetValueText()) return FALSE; wxString value(view->GetValueText()->GetValue()); @@ -1017,12 +1015,12 @@ bool wxRealListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropert float val = 0.0; if (!StringToFloat(WXSTRINGCAST value, &val)) { - char buf[200]; - sprintf(buf, "Value %s is not a valid real number!", value.GetData()); - wxMessageBox(buf, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); + wxChar buf[200]; + wxSprintf(buf, _T("Value %s is not a valid real number!"), value.GetData()); + wxMessageBox(buf, _T("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow); return FALSE; } - + if (val < m_realMin || val > m_realMax) { char buf[200]; @@ -1041,11 +1039,11 @@ bool wxRealListValidator::OnRetrieveValue(wxProperty *property, wxPropertyListVi if (!view->GetValueText()) return FALSE; - if (strlen(view->GetValueText()->GetValue()) == 0) + if (wxStrlen(view->GetValueText()->GetValue()) == 0) return FALSE; - + wxString value(view->GetValueText()->GetValue()); - float f = (float)atof(value.GetData()); + float f = (float)wxAtof(value.GetData()); property->GetValue() = f; return TRUE; } @@ -1065,14 +1063,14 @@ bool wxRealListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wxPr /// /// Integer validator -/// +/// IMPLEMENT_DYNAMIC_CLASS(wxIntegerListValidator, wxPropertyListValidator) bool wxIntegerListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *parentWindow) { if (m_integerMin == 0 && m_integerMax == 0) return TRUE; - + if (!view->GetValueText()) return FALSE; wxString value(view->GetValueText()->GetValue()); @@ -1080,16 +1078,16 @@ bool wxIntegerListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxProp long val = 0; if (!StringToLong(WXSTRINGCAST value, &val)) { - char buf[200]; - sprintf(buf, "Value %s is not a valid integer!", value.GetData()); - wxMessageBox(buf, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); + wxChar buf[200]; + wxSprintf(buf, _T("Value %s is not a valid integer!"), value.GetData()); + wxMessageBox(buf, _T("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow); return FALSE; } if (val < m_integerMin || val > m_integerMax) { - char buf[200]; - sprintf(buf, "Value must be an integer between %ld and %ld!", m_integerMin, m_integerMax); - wxMessageBox(buf, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); + wxChar buf[200]; + wxSprintf(buf, _T("Value must be an integer between %ld and %ld!"), m_integerMin, m_integerMax); + wxMessageBox(buf, _T("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow); return FALSE; } return TRUE; @@ -1103,11 +1101,11 @@ bool wxIntegerListValidator::OnRetrieveValue(wxProperty *property, wxPropertyLis if (!view->GetValueText()) return FALSE; - if (strlen(view->GetValueText()->GetValue()) == 0) + if (wxStrlen(view->GetValueText()->GetValue()) == 0) return FALSE; - + wxString value(view->GetValueText()->GetValue()); - long val = (long)atoi(value.GetData()); + long val = (long)wxAtoi(value.GetData()); property->GetValue() = (long)val; return TRUE; } @@ -1135,9 +1133,9 @@ bool wxBoolListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropert if (!view->GetValueText()) return FALSE; wxString value(view->GetValueText()->GetValue()); - if (value != "True" && value != "False") + if (value != _T("True") && value != _T("False")) { - wxMessageBox("Value must be True or False!", "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); + wxMessageBox(_T("Value must be True or False!"), _T("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow); return FALSE; } return TRUE; @@ -1151,12 +1149,12 @@ bool wxBoolListValidator::OnRetrieveValue(wxProperty *property, wxPropertyListVi if (!view->GetValueText()) return FALSE; - if (strlen(view->GetValueText()->GetValue()) == 0) + if (wxStrlen(view->GetValueText()->GetValue()) == 0) return FALSE; - + wxString value(view->GetValueText()->GetValue()); bool boolValue = FALSE; - if (value == "True") + if (value == _T("True")) boolValue = TRUE; else boolValue = FALSE; @@ -1198,10 +1196,10 @@ bool wxBoolListValidator::OnPrepareDetailControls(wxProperty *WXUNUSED(property) { view->ShowListBoxControl(TRUE); view->GetValueList()->Enable(TRUE); - - view->GetValueList()->Append("True"); - view->GetValueList()->Append("False"); - char *currentString = copystring(view->GetValueText()->GetValue()); + + view->GetValueList()->Append(_T("True")); + view->GetValueList()->Append(_T("False")); + wxChar *currentString = copystring(view->GetValueText()->GetValue()); view->GetValueList()->SetStringSelection(currentString); delete[] currentString; } @@ -1237,7 +1235,7 @@ bool wxBoolListValidator::OnDoubleClick(wxProperty *property, wxPropertyListView /// /// String validator -/// +/// IMPLEMENT_DYNAMIC_CLASS(wxStringListValidator, wxPropertyListValidator) wxStringListValidator::wxStringListValidator(wxStringList *list, long flags): @@ -1312,7 +1310,7 @@ bool wxStringListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wx view->GetValueText()->Enable(TRUE); return TRUE; } - + // Constrained if (view->GetValueText()) view->GetValueText()->Enable(FALSE); @@ -1336,11 +1334,11 @@ bool wxStringListValidator::OnPrepareDetailControls(wxProperty *property, wxProp wxNode *node = m_strings->First(); while (node) { - char *s = (char *)node->Data(); + wxChar *s = (wxChar *)node->Data(); view->GetValueList()->Append(s); node = node->Next(); } - char *currentString = property->GetValue().StringValue(); + wxChar *currentString = property->GetValue().StringValue(); view->GetValueList()->SetStringSelection(currentString); } return TRUE; @@ -1372,17 +1370,17 @@ bool wxStringListValidator::OnDoubleClick(wxProperty *property, wxPropertyListVi return FALSE; wxNode *node = m_strings->First(); - char *currentString = property->GetValue().StringValue(); + wxChar *currentString = property->GetValue().StringValue(); while (node) { - char *s = (char *)node->Data(); - if (strcmp(s, currentString) == 0) + wxChar *s = (wxChar *)node->Data(); + if (wxStrcmp(s, currentString) == 0) { - char *nextString = NULL; + wxChar *nextString = NULL; if (node->Next()) - nextString = (char *)node->Next()->Data(); + nextString = (wxChar *)node->Next()->Data(); else - nextString = (char *)m_strings->First()->Data(); + nextString = (wxChar *)m_strings->First()->Data(); property->GetValue() = wxString(nextString); view->DisplayProperty(property); view->UpdatePropertyDisplayInList(property); @@ -1396,7 +1394,7 @@ bool wxStringListValidator::OnDoubleClick(wxProperty *property, wxPropertyListVi /// /// Filename validator -/// +/// IMPLEMENT_DYNAMIC_CLASS(wxFilenameListValidator, wxPropertyListValidator) wxFilenameListValidator::wxFilenameListValidator(wxString message , wxString wildcard, long flags): @@ -1465,7 +1463,7 @@ void wxFilenameListValidator::OnEdit(wxProperty *property, wxPropertyListView *v if (!view->GetValueText()) return; - char *s = wxFileSelector( + wxString s = wxFileSelector( m_filenameMessage.GetData(), wxPathOnly(property->GetValue().StringValue()), wxFileNameFromPath(property->GetValue().StringValue()), @@ -1473,9 +1471,9 @@ void wxFilenameListValidator::OnEdit(wxProperty *property, wxPropertyListView *v m_filenameWildCard.GetData(), 0, parentWindow); - if (s) + if (s != _T("")) { - property->GetValue() = wxString(s); + property->GetValue() = s; view->DisplayProperty(property); view->UpdatePropertyDisplayInList(property); view->OnPropertyChanged(property); @@ -1484,7 +1482,7 @@ void wxFilenameListValidator::OnEdit(wxProperty *property, wxPropertyListView *v /// /// Colour validator -/// +/// IMPLEMENT_DYNAMIC_CLASS(wxColourListValidator, wxPropertyListValidator) wxColourListValidator::wxColourListValidator(long flags): @@ -1509,7 +1507,7 @@ bool wxColourListValidator::OnRetrieveValue(wxProperty *property, wxPropertyList if (!view->GetValueText()) return FALSE; wxString value(view->GetValueText()->GetValue()); - + property->GetValue() = value ; return TRUE; } @@ -1553,8 +1551,8 @@ void wxColourListValidator::OnEdit(wxProperty *property, wxPropertyListView *vie { if (!view->GetValueText()) return; - - char *s = property->GetValue().StringValue(); + + wxChar *s = property->GetValue().StringValue(); int r = 0; int g = 0; int b = 0; @@ -1564,26 +1562,26 @@ void wxColourListValidator::OnEdit(wxProperty *property, wxPropertyListView *vie g = wxHexToDec(s+2); b = wxHexToDec(s+4); } - + wxColour col(r,g,b); - + wxColourData data; data.SetChooseFull(TRUE); data.SetColour(col); - + for (int i = 0; i < 16; i++) { wxColour colour(i*16, i*16, i*16); data.SetCustomColour(i, colour); } - + wxColourDialog dialog(parentWindow, &data); if (dialog.ShowModal() != wxID_CANCEL) { wxColourData retData = dialog.GetColourData(); col = retData.GetColour(); - - char buf[7]; + + wxChar buf[7]; wxDecToHex(col.Red(), buf); wxDecToHex(col.Green(), buf+2); wxDecToHex(col.Blue(), buf+4); @@ -1656,19 +1654,19 @@ void wxListOfStringsListValidator::OnEdit(wxProperty *property, wxPropertyListVi { // Convert property value to a list of strings for editing wxStringList *stringList = new wxStringList; - + wxPropertyValue *expr = property->GetValue().GetFirst(); while (expr) { - char *s = expr->StringValue(); + wxChar *s = expr->StringValue(); if (s) stringList->Add(s); expr = expr->GetNext(); } - - wxString title("Editing "); + + wxString title(_T("Editing ")); title += property->GetName(); - + if (EditStringList(parentWindow, stringList, title.GetData())) { wxPropertyValue& oldValue = property->GetValue(); @@ -1676,12 +1674,12 @@ void wxListOfStringsListValidator::OnEdit(wxProperty *property, wxPropertyListVi wxNode *node = stringList->First(); while (node) { - char *s = (char *)node->Data(); + wxChar *s = (wxChar *)node->Data(); oldValue.Append(new wxPropertyValue(s)); - + node = node->Next(); } - + view->DisplayProperty(property); view->UpdatePropertyDisplayInList(property); view->OnPropertyChanged(property); @@ -1693,9 +1691,9 @@ class wxPropertyStringListEditorDialog: public wxDialog { public: wxPropertyStringListEditorDialog(wxWindow *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long windowStyle = wxDEFAULT_DIALOG_STYLE, const wxString& name = "stringEditorDialogBox"): - wxDialog(parent, -1, title, pos, size, windowStyle, name) + const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, + long windowStyle = wxDEFAULT_DIALOG_STYLE, const wxString& name = "stringEditorDialogBox"): + wxDialog(parent, -1, title, pos, size, windowStyle, name) { m_stringList = NULL; m_stringText = NULL; @@ -1704,16 +1702,16 @@ class wxPropertyStringListEditorDialog: public wxDialog m_currentSelection = -1; } ~wxPropertyStringListEditorDialog(void) {} - bool OnClose(void); + void OnCloseWindow(wxCloseEvent& event); void SaveCurrentSelection(void); void ShowCurrentSelection(void); - void OnOK(wxCommandEvent& event); - void OnCancel(wxCommandEvent& event); - void OnAdd(wxCommandEvent& event); - void OnDelete(wxCommandEvent& event); - void OnStrings(wxCommandEvent& event); - void OnText(wxCommandEvent& event); + void OnOK(wxCommandEvent& event); + void OnCancel(wxCommandEvent& event); + void OnAdd(wxCommandEvent& event); + void OnDelete(wxCommandEvent& event); + void OnStrings(wxCommandEvent& event); + void OnText(wxCommandEvent& event); public: wxStringList* m_stringList; @@ -1724,25 +1722,26 @@ public: DECLARE_EVENT_TABLE() }; -#define wxID_PROP_SL_ADD 3000 -#define wxID_PROP_SL_DELETE 3001 -#define wxID_PROP_SL_STRINGS 3002 -#define wxID_PROP_SL_TEXT 3003 +#define wxID_PROP_SL_ADD 3000 +#define wxID_PROP_SL_DELETE 3001 +#define wxID_PROP_SL_STRINGS 3002 +#define wxID_PROP_SL_TEXT 3003 BEGIN_EVENT_TABLE(wxPropertyStringListEditorDialog, wxDialog) - EVT_BUTTON(wxID_OK, wxPropertyStringListEditorDialog::OnOK) - EVT_BUTTON(wxID_CANCEL, wxPropertyStringListEditorDialog::OnCancel) - EVT_BUTTON(wxID_PROP_SL_ADD, wxPropertyStringListEditorDialog::OnAdd) - EVT_BUTTON(wxID_PROP_SL_DELETE, wxPropertyStringListEditorDialog::OnDelete) - EVT_LISTBOX(wxID_PROP_SL_STRINGS, wxPropertyStringListEditorDialog::OnStrings) - EVT_TEXT_ENTER(wxID_PROP_SL_TEXT, wxPropertyStringListEditorDialog::OnText) + EVT_BUTTON(wxID_OK, wxPropertyStringListEditorDialog::OnOK) + EVT_BUTTON(wxID_CANCEL, wxPropertyStringListEditorDialog::OnCancel) + EVT_BUTTON(wxID_PROP_SL_ADD, wxPropertyStringListEditorDialog::OnAdd) + EVT_BUTTON(wxID_PROP_SL_DELETE, wxPropertyStringListEditorDialog::OnDelete) + EVT_LISTBOX(wxID_PROP_SL_STRINGS, wxPropertyStringListEditorDialog::OnStrings) + EVT_TEXT_ENTER(wxID_PROP_SL_TEXT, wxPropertyStringListEditorDialog::OnText) + EVT_CLOSE(wxPropertyStringListEditorDialog::OnCloseWindow) END_EVENT_TABLE() class wxPropertyStringListEditorText: public wxTextCtrl { public: wxPropertyStringListEditorText(wxWindow *parent, wxWindowID id, const wxString& val, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, + const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long windowStyle = 0, const wxString& name = "text"): wxTextCtrl(parent, id, val, pos, size, windowStyle, wxDefaultValidator, name) { @@ -1757,17 +1756,17 @@ class wxPropertyStringListEditorText: public wxTextCtrl bool wxPropertyStringListEditorDialog::sm_dialogCancelled = FALSE; // Edit the string list. -bool wxListOfStringsListValidator::EditStringList(wxWindow *parent, wxStringList *stringList, const char *title) +bool wxListOfStringsListValidator::EditStringList(wxWindow *parent, wxStringList *stringList, const wxChar *title) { int largeButtonWidth = 60; int largeButtonHeight = 25; wxBeginBusyCursor(); wxPropertyStringListEditorDialog *dialog = new wxPropertyStringListEditorDialog(parent, - title, wxPoint(10, 10), wxSize(400, 400), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL); - + title, wxPoint(10, 10), wxSize(400, 400), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL); + dialog->m_stringList = stringList; - + dialog->m_listBox = new wxListBox(dialog, wxID_PROP_SL_STRINGS, wxPoint(-1, -1), wxSize(-1, -1), 0, NULL, wxLB_SINGLE); @@ -1841,9 +1840,9 @@ bool wxListOfStringsListValidator::EditStringList(wxWindow *parent, wxStringList dialog->Centre(wxBOTH); wxEndBusyCursor(); if (dialog->ShowModal() == wxID_CANCEL) - return FALSE; + return FALSE; else - return TRUE; + return TRUE; } /* @@ -1867,13 +1866,13 @@ void wxPropertyStringListEditorDialog::OnDelete(wxCommandEvent& WXUNUSED(event)) int sel = m_listBox->GetSelection(); if (sel == -1) return; - + wxNode *node = (wxNode *)m_listBox->wxListBox::GetClientData(sel); if (!node) return; - + m_listBox->Delete(sel); - delete[] (char *)node->Data(); + delete[] (wxChar *)node->Data(); delete node; m_currentSelection = -1; m_stringText->SetValue(""); @@ -1882,10 +1881,10 @@ void wxPropertyStringListEditorDialog::OnDelete(wxCommandEvent& WXUNUSED(event)) void wxPropertyStringListEditorDialog::OnAdd(wxCommandEvent& WXUNUSED(event)) { SaveCurrentSelection(); - - char *initialText = ""; + + wxChar *initialText = _T(""); wxNode *node = m_stringList->Add(initialText); - m_listBox->Append(initialText, (char *)node); + m_listBox->Append(initialText, (void *)node); m_currentSelection = m_stringList->Number() - 1; m_listBox->SetSelection(m_currentSelection); ShowCurrentSelection(); @@ -1896,44 +1895,46 @@ void wxPropertyStringListEditorDialog::OnOK(wxCommandEvent& WXUNUSED(event)) { SaveCurrentSelection(); EndModal(wxID_OK); - Close(TRUE); + // Close(TRUE); + this->Destroy(); } void wxPropertyStringListEditorDialog::OnCancel(wxCommandEvent& WXUNUSED(event)) { sm_dialogCancelled = TRUE; EndModal(wxID_CANCEL); - Close(TRUE); +// Close(TRUE); + this->Destroy(); } void wxPropertyStringListEditorDialog::OnText(wxCommandEvent& event) { - if (event.GetEventType() == wxEVENT_TYPE_TEXT_ENTER_COMMAND) + if (event.GetEventType() == wxEVT_COMMAND_TEXT_ENTER) { SaveCurrentSelection(); } } -bool wxPropertyStringListEditorDialog::OnClose(void) +void wxPropertyStringListEditorDialog::OnCloseWindow(wxCloseEvent& event) { SaveCurrentSelection(); - return TRUE; + this->Destroy(); } void wxPropertyStringListEditorDialog::SaveCurrentSelection(void) { if (m_currentSelection == -1) return; - + wxNode *node = (wxNode *)m_listBox->wxListBox::GetClientData(m_currentSelection); if (!node) return; - + wxString txt(m_stringText->GetValue()); if (node->Data()) delete[] (char *)node->Data(); node->SetData((wxObject *)copystring(txt)); - + m_listBox->SetString(m_currentSelection, (char *)node->Data()); }