]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/proplist.cpp
containers don't always accept focus (patch 718913)
[wxWidgets.git] / src / generic / proplist.cpp
index b35a76fb741522e7367ac6fb6e07728e419a3649..f6aa8cf737199f9fb1423f01837496f290cce70d 100644 (file)
@@ -9,32 +9,43 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
 #ifdef __GNUG__
-#pragma implementation "proplist.h"
+    #pragma implementation "proplist.h"
 #endif
 
 // For compilers that support precompilation, includes "wx/wx.h".
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
-#pragma hdrstop
+    #pragma hdrstop
 #endif
 
+#if wxUSE_PROPSHEET
+
 #ifndef WX_PRECOMP
-#include "wx/window.h"
-#include "wx/font.h"
-#include "wx/button.h"
-#include "wx/bmpbuttn.h"
-#include "wx/textctrl.h"
-#include "wx/listbox.h"
-#include "wx/settings.h"
-#include "wx/msgdlg.h"
-#include "wx/filedlg.h"
+    #include "wx/window.h"
+    #include "wx/font.h"
+    #include "wx/button.h"
+    #include "wx/bmpbuttn.h"
+    #include "wx/textctrl.h"
+    #include "wx/listbox.h"
+    #include "wx/settings.h"
+    #include "wx/msgdlg.h"
+    #include "wx/filedlg.h"
 #endif
 
 #include "wx/sizer.h"
 #include "wx/module.h"
 #include "wx/intl.h"
+#include "wx/artprov.h"
 
 #include "wx/colordlg.h"
 #include "wx/proplist.h"
 #include <math.h>
 #include <string.h>
 
-#ifndef __WXMSW__
-#include "wx/generic/cross.xpm"
-#include "wx/generic/tick.xpm"
-#endif
-
-
-/*
- * global data, urgh.
- */
-
-static wxBitmap* gs_tickBitmap = (wxBitmap*) NULL;
-static wxBitmap* gs_crossBitmap = (wxBitmap*) NULL;
+// ----------------------------------------------------------------------------
+// Property text edit control
+// ----------------------------------------------------------------------------
 
-
-/*
- * Property text edit control
- */
-
-IMPLEMENT_CLASS(wxPropertyTextEdit, wxTextCtrl)
+IMPLEMENT_DYNAMIC_CLASS(wxPropertyTextEdit, wxTextCtrl)
 
 wxPropertyTextEdit::wxPropertyTextEdit(wxPropertyListView *v, wxWindow *parent,
     const wxWindowID id, const wxString& value,
@@ -73,17 +70,17 @@ wxPropertyTextEdit::wxPropertyTextEdit(wxPropertyListView *v, wxWindow *parent,
   m_view = v;
 }
 
-void wxPropertyTextEdit::OnSetFocus(void)
+void wxPropertyTextEdit::OnSetFocus()
 {
 }
 
-void wxPropertyTextEdit::OnKillFocus(void)
+void wxPropertyTextEdit::OnKillFocus()
 {
 }
 
-/*
- * Property list view
- */
+// ----------------------------------------------------------------------------
+// Property list view
+// ----------------------------------------------------------------------------
 
 bool wxPropertyListView::sm_dialogCancelled = FALSE;
 
@@ -121,7 +118,7 @@ wxPropertyListView::wxPropertyListView(wxPanel *propPanel, long flags):wxPropert
   m_detailedEditing = FALSE;
 }
 
-wxPropertyListView::~wxPropertyListView(void)
+wxPropertyListView::~wxPropertyListView()
 {
 }
 
@@ -138,7 +135,7 @@ void wxPropertyListView::ShowView(wxPropertySheet *ps, wxPanel *panel)
 
 // Update this view of the viewed object, called e.g. by
 // the object itself.
-bool wxPropertyListView::OnUpdateView(void)
+bool wxPropertyListView::OnUpdateView()
 {
   return TRUE;
 }
@@ -152,18 +149,18 @@ bool wxPropertyListView::UpdatePropertyList(bool clearEditArea)
   if (clearEditArea)
   {
     m_valueList->Clear();
-    m_valueText->SetValue("");
+    m_valueText->SetValue( wxT("") );
   }
-  wxNode *node = m_propertySheet->GetProperties().First();
+  wxNode *node = m_propertySheet->GetProperties().GetFirst();
 
   // Should sort them... later...
   while (node)
   {
-    wxProperty *property = (wxProperty *)node->Data();
+    wxProperty *property = (wxProperty *)node->GetData();
     wxString stringValueRepr(property->GetValue().GetStringRepresentation());
     wxString paddedString(MakeNameValueString(property->GetName(), stringValueRepr));
     m_propertyScrollingList->Append(paddedString.GetData(), (void *)property);
-    node = node->Next();
+    node = node->GetNext();
   }
   return TRUE;
 }
@@ -205,7 +202,7 @@ bool wxPropertyListView::UpdatePropertyDisplayInList(wxProperty *property)
 // Find the wxListBox index corresponding to this property
 int wxPropertyListView::FindListIndexForProperty(wxProperty *property)
 {
-  int n = m_propertyScrollingList->Number();
+  int n = m_propertyScrollingList->GetCount();
   for (int i = 0; i < n; i++)
   {
     if (property == (wxProperty *)m_propertyScrollingList->wxListBox::GetClientData(i))
@@ -226,7 +223,7 @@ wxString wxPropertyListView::MakeNameValueString(wxString name, wxString value)
   if (GetFlags() & wxPROP_SHOWVALUES)
   {
     // Want to pad with spaces
-    theString.Append(' ', padWith);
+    theString.Append( wxT(' '), padWith);
     theString += value;
   }
 
@@ -244,7 +241,7 @@ bool wxPropertyListView::ShowProperty(wxProperty *property, bool select)
   }
 
   m_valueList->Clear();
-  m_valueText->SetValue("");
+  m_valueText->SetValue( wxT("") );
 
   if (property)
   {
@@ -299,7 +296,7 @@ bool wxPropertyListView::EndShowingProperty(wxProperty *property)
   return TRUE;
 }
 
-void wxPropertyListView::BeginDetailedEditing(void)
+void wxPropertyListView::BeginDetailedEditing()
 {
   if (!m_currentValidator)
     return;
@@ -318,7 +315,7 @@ void wxPropertyListView::BeginDetailedEditing(void)
     m_detailedEditing = TRUE;
 }
 
-void wxPropertyListView::EndDetailedEditing(void)
+void wxPropertyListView::EndDetailedEditing()
 {
   if (!m_currentValidator)
     return;
@@ -410,7 +407,7 @@ bool wxPropertyListView::CreateControls()
 {
     wxPanel *panel = (wxPanel *)m_propertyWindow;
 
-    wxSize largeButtonSize( 60, 25 );
+    wxSize largeButtonSize( 70, 25 );
     wxSize smallButtonSize( 23, 23 );
 
     if (m_valueText)
@@ -419,11 +416,12 @@ bool wxPropertyListView::CreateControls()
     if (!panel)
         return FALSE;
 
-    wxSystemSettings settings;
-    wxFont guiFont = settings.GetSystemFont(wxSYS_DEFAULT_GUI_FONT);
+    wxFont guiFont = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT);
 
 #ifdef __WXMSW__
-    wxFont *boringFont = wxTheFontList->FindOrCreateFont(guiFont.GetPointSize(), wxMODERN, wxNORMAL, wxNORMAL, FALSE, "Courier New");
+    wxFont *boringFont =
+        wxTheFontList->FindOrCreateFont(guiFont.GetPointSize(), wxMODERN,
+                                        wxNORMAL, wxNORMAL, FALSE, _T("Courier New"));
 #else
     wxFont *boringFont = wxTheFontList->FindOrCreateFont(guiFont.GetPointSize(), wxTELETYPE, wxNORMAL, wxNORMAL);
 #endif
@@ -433,7 +431,7 @@ bool wxPropertyListView::CreateControls()
 //  panel->SetClientData((char *)this);
 
     wxBoxSizer *mainsizer = new wxBoxSizer( wxVERTICAL );
-    
+
     // top row with optional buttons and input line
 
     wxBoxSizer *topsizer = new wxBoxSizer( wxHORIZONTAL );
@@ -441,31 +439,34 @@ bool wxPropertyListView::CreateControls()
 
     if (m_buttonFlags & wxPROP_BUTTON_CHECK_CROSS)
     {
-        if (gs_tickBitmap && gs_crossBitmap)
+        wxBitmap tickBitmap = wxArtProvider::GetBitmap(wxART_TICK_MARK);
+        wxBitmap crossBitmap = wxArtProvider::GetBitmap(wxART_CROSS_MARK);
+
+        if ( tickBitmap.Ok() && crossBitmap.Ok() )
         {
-            m_confirmButton = new wxBitmapButton(panel, wxID_PROP_CHECK, *gs_tickBitmap, wxPoint(-1, -1), smallButtonSize );
-            m_cancelButton = new wxBitmapButton(panel, wxID_PROP_CROSS, *gs_crossBitmap, wxPoint(-1, -1), smallButtonSize );
+            m_confirmButton = new wxBitmapButton(panel, wxID_PROP_CHECK, tickBitmap, wxPoint(-1, -1), smallButtonSize );
+            m_cancelButton = new wxBitmapButton(panel, wxID_PROP_CROSS, crossBitmap, wxPoint(-1, -1), smallButtonSize );
         }
         else
         {
-            m_confirmButton = new wxButton(panel, wxID_PROP_CHECK, ":-)", wxPoint(-1, -1), smallButtonSize );
-           m_cancelButton = new wxButton(panel, wxID_PROP_CROSS, "X", wxPoint(-1, -1), smallButtonSize );
+            m_confirmButton = new wxButton(panel, wxID_PROP_CHECK, _T(":-)"), wxPoint(-1, -1), smallButtonSize );
+            m_cancelButton = new wxButton(panel, wxID_PROP_CROSS, _T("X"), wxPoint(-1, -1), smallButtonSize );
         }
-       
-       topsizer->Add( m_confirmButton, 0, wxLEFT|wxTOP|wxBOTTOM | wxEXPAND, buttonborder );
-       topsizer->Add( m_cancelButton, 0, wxLEFT|wxTOP|wxBOTTOM | wxEXPAND, buttonborder );
+
+        topsizer->Add( m_confirmButton, 0, wxLEFT|wxTOP|wxBOTTOM | wxEXPAND, buttonborder );
+        topsizer->Add( m_cancelButton, 0, wxLEFT|wxTOP|wxBOTTOM | wxEXPAND, buttonborder );
     }
 
-    m_valueText = new wxPropertyTextEdit(this, panel, wxID_PROP_TEXT, "", 
+    m_valueText = new wxPropertyTextEdit(this, panel, wxID_PROP_TEXT, _T(""),
        wxPoint(-1, -1), wxSize(-1, smallButtonSize.y), wxPROCESS_ENTER);
     m_valueText->Enable(FALSE);
     topsizer->Add( m_valueText, 1, wxALL | wxEXPAND, buttonborder );
-    
+
     if (m_buttonFlags & wxPROP_PULLDOWN)
     {
-        m_editButton = new wxButton(panel, wxID_PROP_EDIT, "...",  wxPoint(-1, -1), smallButtonSize);
+        m_editButton = new wxButton(panel, wxID_PROP_EDIT, _T("..."),  wxPoint(-1, -1), smallButtonSize);
         m_editButton->Enable(FALSE);
-       topsizer->Add( m_editButton, 0, wxRIGHT|wxTOP|wxBOTTOM | wxEXPAND, buttonborder );
+        topsizer->Add( m_editButton, 0, wxRIGHT|wxTOP|wxBOTTOM | wxEXPAND, buttonborder );
     }
 
     mainsizer->Add( topsizer, 0, wxEXPAND );
@@ -481,24 +482,24 @@ bool wxPropertyListView::CreateControls()
     m_propertyScrollingList->SetFont(* boringFont);
     m_middleSizer->Add( m_propertyScrollingList, 1, wxALL|wxEXPAND, buttonborder );
 
-    mainsizer->Add( m_middleSizer, 1, wxEXPAND );    
+    mainsizer->Add( m_middleSizer, 1, wxEXPAND );
 
     // bottom row with buttons
 
     if ((m_buttonFlags & wxPROP_BUTTON_OK) ||
         (m_buttonFlags & wxPROP_BUTTON_CLOSE) ||
-       (m_buttonFlags & wxPROP_BUTTON_CANCEL) ||
-       (m_buttonFlags & wxPROP_BUTTON_HELP))
+        (m_buttonFlags & wxPROP_BUTTON_CANCEL) ||
+        (m_buttonFlags & wxPROP_BUTTON_HELP))
     {
         wxBoxSizer *bottomsizer = new wxBoxSizer( wxHORIZONTAL );
         buttonborder = 5;
-    
+
         if (m_buttonFlags & wxPROP_BUTTON_OK)
         {
             m_windowCloseButton = new wxButton(panel, wxID_OK, _("OK"), wxPoint(-1, -1), largeButtonSize );
             m_windowCloseButton->SetDefault();
             m_windowCloseButton->SetFocus();
-            bottomsizer->Add( m_windowCloseButton, 0, wxLEFT|wxTOP|wxBOTTOM, buttonborder );
+            bottomsizer->Add( m_windowCloseButton, 0, wxALL, buttonborder );
         }
         else if (m_buttonFlags & wxPROP_BUTTON_CLOSE)
         {
@@ -515,8 +516,8 @@ bool wxPropertyListView::CreateControls()
             m_windowHelpButton = new wxButton(panel, wxID_HELP, _("Help"), wxPoint(-1, -1), largeButtonSize );
             bottomsizer->Add( m_windowHelpButton, 0, wxALL, buttonborder );
         }
-       
-        mainsizer->Add( bottomsizer, 1, wxALIGN_RIGHT | wxEXPAND );
+
+        mainsizer->Add( bottomsizer, 0, wxALIGN_RIGHT | wxEXPAND );
     }
 
     panel->SetSizer( mainsizer );
@@ -533,16 +534,16 @@ void wxPropertyListView::ShowTextControl(bool show)
 void wxPropertyListView::ShowListBoxControl(bool show)
 {
     if (!m_valueList) return;
-    
+
     m_valueList->Show(show);
-    
+
     if (m_buttonFlags & wxPROP_DYNAMIC_VALUE_FIELD)
     {
         if (show)
-           m_middleSizer->Prepend( m_valueList, 0, wxTOP|wxLEFT|wxRIGHT | wxEXPAND, 3 );
-       else
-           m_middleSizer->Remove( 0 );
-      
+            m_middleSizer->Prepend( m_valueList, 0, wxTOP|wxLEFT|wxRIGHT | wxEXPAND, 3 );
+        else
+            m_middleSizer->Remove( 0 );
+
         m_propertyWindow->Layout();
     }
 }
@@ -559,7 +560,7 @@ void wxPropertyListView::EnableCross(bool show)
     m_cancelButton->Enable(show);
 }
 
-bool wxPropertyListView::OnClose(void)
+bool wxPropertyListView::OnClose()
 {
   // Retrieve the value if any
   wxCommandEvent event;
@@ -588,6 +589,7 @@ void wxPropertyListView::OnOk(wxCommandEvent& event)
   OnCheck(event);
 
   m_managedWindow->Close(TRUE);
+  sm_dialogCancelled = FALSE;
 }
 
 void wxPropertyListView::OnCancel(wxCommandEvent& WXUNUSED(event))
@@ -658,11 +660,11 @@ void wxPropertyListView::OnText(wxCommandEvent& event)
   }
 }
 
-/*
- * Property dialog box
- */
+// ----------------------------------------------------------------------------
+// Property dialog box
+// ----------------------------------------------------------------------------
 
-IMPLEMENT_CLASS(wxPropertyListDialog, wxDialog)
+IMPLEMENT_DYNAMIC_CLASS(wxPropertyListDialog, wxDialog)
 
 BEGIN_EVENT_TABLE(wxPropertyListDialog, wxDialog)
     EVT_BUTTON(wxID_CANCEL,                wxPropertyListDialog::OnCancel)
@@ -718,11 +720,11 @@ bool wxPropertyListDialog::ProcessEvent(wxEvent& event)
         return TRUE;
 }
 
-/*
- * Property panel
- */
+// ----------------------------------------------------------------------------
+// Property panel
+// ----------------------------------------------------------------------------
 
-IMPLEMENT_CLASS(wxPropertyListPanel, wxPanel)
+IMPLEMENT_DYNAMIC_CLASS(wxPropertyListPanel, wxPanel)
 
 BEGIN_EVENT_TABLE(wxPropertyListPanel, wxPanel)
     EVT_SIZE(wxPropertyListPanel::OnSize)
@@ -754,11 +756,11 @@ void wxPropertyListPanel::OnSize(wxSizeEvent& WXUNUSED(event))
     Layout();
 }
 
-/*
- * Property frame
- */
+// ----------------------------------------------------------------------------
+// Property frame
+// ----------------------------------------------------------------------------
 
-IMPLEMENT_CLASS(wxPropertyListFrame, wxFrame)
+IMPLEMENT_DYNAMIC_CLASS(wxPropertyListFrame, wxFrame)
 
 BEGIN_EVENT_TABLE(wxPropertyListFrame, wxFrame)
     EVT_CLOSE(wxPropertyListFrame::OnCloseWindow)
@@ -785,7 +787,7 @@ wxPropertyListPanel *wxPropertyListFrame::OnCreatePanel(wxFrame *parent, wxPrope
   return new wxPropertyListPanel(v, parent);
 }
 
-bool wxPropertyListFrame::Initialize(void)
+bool wxPropertyListFrame::Initialize()
 {
   m_propertyPanel = OnCreatePanel(this, m_view);
   if (m_propertyPanel)
@@ -799,9 +801,9 @@ bool wxPropertyListFrame::Initialize(void)
     return FALSE;
 }
 
- /*
-  * Property list specific validator
-  */
+// ----------------------------------------------------------------------------
+// Property list specific validator
+// ----------------------------------------------------------------------------
 
 IMPLEMENT_ABSTRACT_CLASS(wxPropertyListValidator, wxPropertyValidator)
 
@@ -817,7 +819,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 != _T(""))
+  if (s != wxT(""))
   {
     view->GetValueText()->SetValue(s);
     view->RetrieveProperty(property);
@@ -863,9 +865,9 @@ bool wxPropertyListValidator::OnClearControls(wxProperty *WXUNUSED(property), wx
   return TRUE;
 }
 
-/*
- * Default validators
- */
+// ----------------------------------------------------------------------------
+// Default validators
+// ----------------------------------------------------------------------------
 
 IMPLEMENT_DYNAMIC_CLASS(wxRealListValidator, wxPropertyListValidator)
 
@@ -885,16 +887,16 @@ bool wxRealListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropert
   if (!StringToFloat(WXSTRINGCAST value, &val))
   {
     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);
+    wxSprintf(buf, wxT("Value %s is not a valid real number!"), value.GetData());
+    wxMessageBox(buf, wxT("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow);
     return FALSE;
   }
 
   if (val < m_realMin || val > m_realMax)
   {
-    char buf[200];
-    sprintf(buf, "Value must be a real number between %.2f and %.2f!", m_realMin, m_realMax);
-    wxMessageBox(buf, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow);
+    wxChar buf[200];
+    wxSprintf(buf, wxT("Value must be a real number between %.2f and %.2f!"), m_realMin, m_realMax);
+    wxMessageBox(buf, wxT("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow);
     return FALSE;
   }
   return TRUE;
@@ -948,15 +950,15 @@ bool wxIntegerListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxProp
   if (!StringToLong(WXSTRINGCAST value, &val))
   {
     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);
+    wxSprintf(buf, wxT("Value %s is not a valid integer!"), value.GetData());
+    wxMessageBox(buf, wxT("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow);
     return FALSE;
   }
   if (val < m_integerMin || val > m_integerMax)
   {
     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);
+    wxSprintf(buf, wxT("Value must be an integer between %ld and %ld!"), m_integerMin, m_integerMax);
+    wxMessageBox(buf, wxT("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow);
     return FALSE;
   }
   return TRUE;
@@ -1002,9 +1004,9 @@ bool wxBoolListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropert
   if (!view->GetValueText())
     return FALSE;
   wxString value(view->GetValueText()->GetValue());
-  if (value != _T("True") && value != _T("False"))
+  if (value != wxT("True") && value != wxT("False"))
   {
-    wxMessageBox(_T("Value must be True or False!"), _T("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow);
+    wxMessageBox(wxT("Value must be True or False!"), wxT("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow);
     return FALSE;
   }
   return TRUE;
@@ -1023,7 +1025,7 @@ bool wxBoolListValidator::OnRetrieveValue(wxProperty *property, wxPropertyListVi
 
   wxString value(view->GetValueText()->GetValue());
   bool boolValue = FALSE;
-  if (value == _T("True"))
+  if (value == wxT("True"))
     boolValue = TRUE;
   else
     boolValue = FALSE;
@@ -1066,8 +1068,8 @@ bool wxBoolListValidator::OnPrepareDetailControls(wxProperty *WXUNUSED(property)
     view->ShowListBoxControl(TRUE);
     view->GetValueList()->Enable(TRUE);
 
-    view->GetValueList()->Append(_T("True"));
-    view->GetValueList()->Append(_T("False"));
+    view->GetValueList()->Append(wxT("True"));
+    view->GetValueList()->Append(wxT("False"));
     wxChar *currentString = copystring(view->GetValueText()->GetValue());
     view->GetValueList()->SetStringSelection(currentString);
     delete[] currentString;
@@ -1127,10 +1129,10 @@ bool wxStringListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPrope
 
   if (!m_strings->Member(value.GetData()))
   {
-    wxString s("Value ");
-    s += value.GetData();
-    s += " is not valid.";
-    wxMessageBox(s.GetData(), "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow);
+    wxString str( wxT("Value ") );
+    str += value.GetData();
+    str += wxT(" is not valid.");
+    wxMessageBox( str.GetData(), wxT("Property value error"), wxOK | wxICON_EXCLAMATION, parentWindow);
     return FALSE;
   }
   return TRUE;
@@ -1157,7 +1159,7 @@ bool wxStringListValidator::OnDisplayValue(wxProperty *property, wxPropertyListV
     return FALSE;
   wxString str(property->GetValue().GetStringRepresentation());
   view->GetValueText()->SetValue(str);
-  if (m_strings && view->GetValueList() && view->GetValueList()->IsShown() && view->GetValueList()->Number() > 0)
+  if (m_strings && view->GetValueList() && view->GetValueList()->IsShown() && view->GetValueList()->GetCount() > 0)
   {
     view->GetValueList()->SetStringSelection(str);
   }
@@ -1194,18 +1196,20 @@ bool wxStringListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wx
   return TRUE;
 }
 
-bool wxStringListValidator::OnPrepareDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
+bool wxStringListValidator::OnPrepareDetailControls( wxProperty *property,
+                                                     wxPropertyListView *view,
+                                                     wxWindow *WXUNUSED(parentWindow) )
 {
   if (view->GetValueList())
   {
     view->ShowListBoxControl(TRUE);
     view->GetValueList()->Enable(TRUE);
-    wxNode *node = m_strings->First();
+    wxStringList::Node  *node = m_strings->GetFirst();
     while (node)
     {
-      wxChar *s = (wxChar *)node->Data();
+      wxChar *s = node->GetData();
       view->GetValueList()->Append(s);
-      node = node->Next();
+      node = node->GetNext();
     }
     wxChar *currentString = property->GetValue().StringValue();
     view->GetValueList()->SetStringSelection(currentString);
@@ -1231,32 +1235,34 @@ bool wxStringListValidator::OnClearDetailControls(wxProperty *WXUNUSED(property)
 
 // Called when the property is double clicked. Extra functionality can be provided,
 // cycling through possible values.
-bool wxStringListValidator::OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow))
+bool wxStringListValidator::OnDoubleClick( wxProperty *property,
+                                           wxPropertyListView *view,
+                                           wxWindow *WXUNUSED(parentWindow) )
 {
   if (!view->GetValueText())
     return FALSE;
   if (!m_strings)
     return FALSE;
 
-  wxNode *node = m_strings->First();
-  wxChar *currentString = property->GetValue().StringValue();
+  wxStringList::Node    *node = m_strings->GetFirst();
+  wxChar                *currentString = property->GetValue().StringValue();
   while (node)
   {
-    wxChar *s = (wxChar *)node->Data();
+    wxChar *s = node->GetData();
     if (wxStrcmp(s, currentString) == 0)
     {
       wxChar *nextString = NULL;
-      if (node->Next())
-        nextString = (wxChar *)node->Next()->Data();
+      if (node->GetNext())
+        nextString = node->GetNext()->GetData();
       else
-        nextString = (wxChar *)m_strings->First()->Data();
+        nextString = m_strings->GetFirst()->GetData();
       property->GetValue() = wxString(nextString);
       view->DisplayProperty(property);
       view->UpdatePropertyDisplayInList(property);
       view->OnPropertyChanged(property);
       return TRUE;
     }
-    else node = node->Next();
+    else node = node->GetNext();
   }
   return TRUE;
 }
@@ -1271,7 +1277,7 @@ wxFilenameListValidator::wxFilenameListValidator(wxString message , wxString wil
 {
 }
 
-wxFilenameListValidator::~wxFilenameListValidator(void)
+wxFilenameListValidator::~wxFilenameListValidator()
 {
 }
 
@@ -1340,7 +1346,7 @@ void wxFilenameListValidator::OnEdit(wxProperty *property, wxPropertyListView *v
      m_filenameWildCard.GetData(),
      0,
      parentWindow);
-  if (s != _T(""))
+  if (s != wxT(""))
   {
     property->GetValue() = s;
     view->DisplayProperty(property);
@@ -1359,7 +1365,7 @@ wxColourListValidator::wxColourListValidator(long flags):
 {
 }
 
-wxColourListValidator::~wxColourListValidator(void)
+wxColourListValidator::~wxColourListValidator()
 {
 }
 
@@ -1519,7 +1525,9 @@ bool wxListOfStringsListValidator::OnDoubleClick(wxProperty *property, wxPropert
   return TRUE;
 }
 
-void wxListOfStringsListValidator::OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow)
+void wxListOfStringsListValidator::OnEdit( wxProperty *property,
+                                           wxPropertyListView *view,
+                                           wxWindow *parentWindow )
 {
   // Convert property value to a list of strings for editing
   wxStringList *stringList = new wxStringList;
@@ -1533,20 +1541,20 @@ void wxListOfStringsListValidator::OnEdit(wxProperty *property, wxPropertyListVi
     expr = expr->GetNext();
   }
 
-  wxString title(_T("Editing "));
+  wxString title(wxT("Editing "));
   title += property->GetName();
 
   if (EditStringList(parentWindow, stringList, title.GetData()))
   {
     wxPropertyValue& oldValue = property->GetValue();
     oldValue.ClearList();
-    wxNode *node = stringList->First();
+    wxStringList::Node  *node = stringList->GetFirst();
     while (node)
     {
-      wxChar *s = (wxChar *)node->Data();
+      wxChar *s = node->GetData();
       oldValue.Append(new wxPropertyValue(s));
 
-      node = node->Next();
+      node = node->GetNext();
     }
 
     view->DisplayProperty(property);
@@ -1561,7 +1569,7 @@ 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"):
+          long windowStyle = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("stringEditorDialogBox")):
                wxDialog(parent, -1, title, pos, size, windowStyle, name)
     {
       m_stringList = NULL;
@@ -1611,11 +1619,11 @@ class wxPropertyStringListEditorText: public wxTextCtrl
  public:
   wxPropertyStringListEditorText(wxWindow *parent, wxWindowID id, const wxString& val,
       const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-    long windowStyle = 0, const wxString& name = "text"):
+    long windowStyle = 0, const wxString& name = wxT("text")):
      wxTextCtrl(parent, id, val, pos, size, windowStyle, wxDefaultValidator, name)
   {
   }
-  void OnKillFocus(void)
+  void OnKillFocus()
   {
     wxPropertyStringListEditorDialog *dialog = (wxPropertyStringListEditorDialog *)GetParent();
     dialog->SaveCurrentSelection();
@@ -1640,14 +1648,14 @@ bool wxListOfStringsListValidator::EditStringList(wxWindow *parent, wxStringList
     wxPoint(-1, -1), wxSize(-1, -1), 0, NULL, wxLB_SINGLE);
 
   dialog->m_stringText = new wxPropertyStringListEditorText(dialog,
-  wxID_PROP_SL_TEXT, "", wxPoint(5, 240),
+  wxID_PROP_SL_TEXT, wxT(""), wxPoint(5, 240),
        wxSize(300, -1), wxPROCESS_ENTER);
   dialog->m_stringText->Enable(FALSE);
 
-  wxButton *addButton = new wxButton(dialog, wxID_PROP_SL_ADD, "Add", wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight));
-  wxButton *deleteButton = new wxButton(dialog, wxID_PROP_SL_DELETE, "Delete", wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight));
-  wxButton *cancelButton = new wxButton(dialog, wxID_CANCEL, "Cancel", wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight));
-  wxButton *okButton = new wxButton(dialog, wxID_OK, "OK", wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight));
+  wxButton *addButton = new wxButton(dialog, wxID_PROP_SL_ADD, wxT("Add"), wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight));
+  wxButton *deleteButton = new wxButton(dialog, wxID_PROP_SL_DELETE, wxT("Delete"), wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight));
+  wxButton *cancelButton = new wxButton(dialog, wxID_CANCEL, wxT("Cancel"), wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight));
+  wxButton *okButton = new wxButton(dialog, wxID_OK, wxT("OK"), wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight));
 
 #ifndef __WXGTK__
   okButton->SetDefault();
@@ -1696,13 +1704,13 @@ bool wxListOfStringsListValidator::EditStringList(wxWindow *parent, wxStringList
   c->height.AsIs();
   okButton->SetConstraints(c);
 
-  wxNode *node = stringList->First();
+  wxStringList::Node    *node = stringList->GetFirst();
   while (node)
   {
-    char *str = (char *)node->Data();
+    wxChar *str = node->GetData();
     // Save node as client data for each listbox item
-    dialog->m_listBox->Append(str, (char *)node);
-    node = node->Next();
+    dialog->m_listBox->Append(str, (wxChar *)node);
+    node = node->GetNext();
   }
 
   dialog->SetClientSize(310, 305);
@@ -1743,20 +1751,20 @@ void wxPropertyStringListEditorDialog::OnDelete(wxCommandEvent& WXUNUSED(event))
     return;
 
   m_listBox->Delete(sel);
-  delete[] (wxChar *)node->Data();
+  delete[] (wxChar *)node->GetData();
   delete node;
   m_currentSelection = -1;
-  m_stringText->SetValue("");
+  m_stringText->SetValue(_T(""));
 }
 
 void wxPropertyStringListEditorDialog::OnAdd(wxCommandEvent& WXUNUSED(event))
 {
   SaveCurrentSelection();
 
-  wxChar *initialText = _T("");
+  wxString initialText;
   wxNode *node = m_stringList->Add(initialText);
   m_listBox->Append(initialText, (void *)node);
-  m_currentSelection = m_stringList->Number() - 1;
+  m_currentSelection = m_stringList->GetCount() - 1;
   m_listBox->SetSelection(m_currentSelection);
   ShowCurrentSelection();
   m_stringText->SetFocus();
@@ -1786,13 +1794,15 @@ void wxPropertyStringListEditorDialog::OnText(wxCommandEvent& event)
   }
 }
 
-void wxPropertyStringListEditorDialog::OnCloseWindow(wxCloseEvent& event)
+void
+wxPropertyStringListEditorDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
 {
   SaveCurrentSelection();
-  this->Destroy();
+
+  Destroy();
 }
 
-void wxPropertyStringListEditorDialog::SaveCurrentSelection(void)
+void wxPropertyStringListEditorDialog::SaveCurrentSelection()
 {
   if (m_currentSelection == -1)
     return;
@@ -1802,67 +1812,25 @@ void wxPropertyStringListEditorDialog::SaveCurrentSelection(void)
     return;
 
   wxString txt(m_stringText->GetValue());
-  if (node->Data())
-    delete[] (char *)node->Data();
-  node->SetData((wxObject *)copystring(txt));
+  if (node->GetData())
+    delete[] (wxChar *)node->GetData();
+  node->SetData((wxObject *)wxStrdup(txt));
 
-  m_listBox->SetString(m_currentSelection, (char *)node->Data());
+  m_listBox->SetString(m_currentSelection, (wxChar *)node->GetData());
 }
 
-void wxPropertyStringListEditorDialog::ShowCurrentSelection(void)
+void wxPropertyStringListEditorDialog::ShowCurrentSelection()
 {
   if (m_currentSelection == -1)
   {
-    m_stringText->SetValue("");
+    m_stringText->SetValue(wxT(""));
     return;
   }
   wxNode *node = (wxNode *)m_listBox->wxListBox::GetClientData(m_currentSelection);
-  char *txt = (char *)node->Data();
+  wxChar *txt = (wxChar *)node->GetData();
   m_stringText->SetValue(txt);
   m_stringText->Enable(TRUE);
 }
 
-//-----------------------------------------------------------------------------
-// wxPropertyModule
-//-----------------------------------------------------------------------------
-
-class wxPropertyModule: public wxModule
-{
-  DECLARE_DYNAMIC_CLASS(wxPropertyModule)
-
-public:
-    wxPropertyModule() {}
-    bool OnInit();
-    void OnExit();
-};
-
-IMPLEMENT_DYNAMIC_CLASS(wxPropertyModule,wxModule)
-
-bool wxPropertyModule::OnInit()
-{
-#ifdef __WXMSW__
-    gs_tickBitmap = new wxBitmap("tick_bmp", wxBITMAP_TYPE_RESOURCE);
-    gs_crossBitmap =  new wxBitmap("cross_bmp", wxBITMAP_TYPE_RESOURCE);
-#else
-    gs_tickBitmap = new wxBitmap( tick_xpm );
-    gs_crossBitmap =  new wxBitmap( cross_xpm );
-#endif
-    if (!gs_tickBitmap || !gs_crossBitmap || !gs_tickBitmap->Ok() || !gs_crossBitmap->Ok())
-    {
-        if (gs_tickBitmap) delete gs_tickBitmap;
-       if (gs_crossBitmap) delete gs_crossBitmap;
-       gs_tickBitmap = (wxBitmap*) NULL;
-       gs_crossBitmap = (wxBitmap*) NULL;
-    }
-
-    return TRUE;
-}
-
-void wxPropertyModule::OnExit()
-{
-    if (gs_tickBitmap)
-        delete gs_tickBitmap;
-    if (gs_crossBitmap)
-        delete gs_crossBitmap;
-}
 
+#endif // wxUSE_PROPSHEET