]> git.saurik.com Git - wxWidgets.git/commitdiff
Misc. Dialog Editor/resource bugs fixed
authorJulian Smart <julian@anthemion.co.uk>
Fri, 21 Jan 2000 17:01:44 +0000 (17:01 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Fri, 21 Jan 2000 17:01:44 +0000 (17:01 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5570 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/html/faqgen.htm
docs/html/faqmac.htm
src/common/resource.cpp
src/generic/prop.cpp
utils/dialoged/src/reseditr.cpp
utils/dialoged/src/reseditr.h
utils/dialoged/src/winprop.cpp
utils/dialoged/src/winprop.h

index 2cf955358a8dc08c1ab3862edd7584624547ae80..69ab06252555b0d743cd668a4efb4e6b3714f516 100644 (file)
@@ -88,7 +88,7 @@ applications.
 <H3>How can I prepare for wxWindows 2?</H3>
 
 To make porting to wxWindows 2 easier in the future, take a look at some
-<a href="http://web.ukonline.co.uk/julian.smart/wxwin/prepare.htm">tips</a> for writing existing code in a 2-compatible way.<P>
+<a href="http://www.wxwindows.org/prepare.htm">tips</a> for writing existing code in a 2-compatible way.<P>
 
 <H3>How much has the API changed since 1.xx?</H3>
 
@@ -224,8 +224,8 @@ from Java, and the level of interest in wxWindows is as high as ever.<P>
 
 <H3>How can I help the project?</H3>
 
-Please check out the <a href="http://web.ukonline.co.uk/julian.smart/wxwin/develop.htm" target=main>Backroom</a> pages,
-in particular the <a href="http://web.ukonline.co.uk/julian.smart/wxwin/projects.htm">suggested projects</a>, and
+Please check out the <a href="http://www.wxwindows.org/develop.htm" target=main>Backroom</a> pages,
+in particular the <a href="http://www.wxwindows.org/projects.htm">suggested projects</a>, and
 mail <a href="mailto:julian.smart@ukonline.co.uk">Julian Smart</a> or the developers' mailing list with your own suggestions.<P>
 
 </font>
index 182e458cbcdc8a351f9401e64c179e80edac4db5..c5ad70a4b395771748c812716ae2d35d776ca20f 100644 (file)
@@ -25,7 +25,7 @@ See also <a href="faq.htm">top-level FAQ page</a>.
 
 <h3>When is wxMac 2 due to be released?</h3>
 
-There is a <a href="http://web.ukonline.co.uk/julian.smart/wxwin/dl_mac2.htm">preview</a> available.
+There is a <a href="http://www.wxwindows.org/dl_mac2.htm">preview</a> available.
 A beta release can be expected by early Q2 1999. The author of this port
 is Stefan Csomor (csomor@advancedconcepts.ch).
 <P>
index c32447bfa775e8c9f4987fe6c2c265d244add3b1..b0945819f76b4dd35f9d187b77baebf90ff1cb89 100644 (file)
@@ -537,7 +537,18 @@ wxControl *wxResourceTable::CreateItem(wxWindow *parent, const wxItemResource* c
   else
   {
     if (control && childResource->GetFont().Ok())
+    {
       control->SetFont(childResource->GetFont());
+
+#ifdef __WXMSW__
+      // Force the layout algorithm since the size changes the layout
+      if (control->IsKindOf(CLASSINFO(wxRadioBox)))
+      {
+        wxSize sz = control->GetSize();
+        control->SetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT);
+      }
+#endif
+    }
   }
   return control;
 }
@@ -962,12 +973,10 @@ wxItemResource *wxResourceInterpretControl(wxResourceTable& table, wxExpr *expr)
 
         if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList)
         {
-         // controlItem->SetLabelFont(wxResourceInterpretFontSpec(expr->Nth(count)));
-        // Do nothing
-         count ++;
-
-          if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList)
-            controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count)));
+         // Skip past the obsolete label font spec if there are two consecutive specs
+         if (expr->Nth(count+1) && expr->Nth(count+1)->Type() == PrologList)
+           count ++;
+         controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count)));
        }
      }
    }
@@ -1067,10 +1076,10 @@ wxItemResource *wxResourceInterpretControl(wxResourceTable& table, wxExpr *expr)
       }
       if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList)
       {
-         // controlItem->SetLabelFont(wxResourceInterpretFontSpec(expr->Nth(count)));
-         count ++;
-         if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList)
-           controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count)));
+         // Skip past the obsolete label font spec if there are two consecutive specs
+         if (expr->Nth(count+1) && expr->Nth(count+1)->Type() == PrologList)
+           count ++;
+         controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count)));
       }
    }
   }
@@ -1093,11 +1102,10 @@ wxItemResource *wxResourceInterpretControl(wxResourceTable& table, wxExpr *expr)
 
       if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList)
      {
-        // controlItem->SetLabelFont(wxResourceInterpretFontSpec(expr->Nth(count)));
-      count ++;
-
-        if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList)
-          controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count)));
+         // Skip past the obsolete label font spec if there are two consecutive specs
+         if (expr->Nth(count+1) && expr->Nth(count+1)->Type() == PrologList)
+           count ++;
+         controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count)));
      }
    }
   }
@@ -1129,11 +1137,10 @@ wxItemResource *wxResourceInterpretControl(wxResourceTable& table, wxExpr *expr)
 
         if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList)
        {
-          // controlItem->SetLabelFont(wxResourceInterpretFontSpec(expr->Nth(count)));
-        count ++;
-
-          if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList)
-            controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count)));
+         // Skip past the obsolete label font spec if there are two consecutive specs
+         if (expr->Nth(count+1) && expr->Nth(count+1)->Type() == PrologList)
+           count ++;
+         controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count)));
        }
      }
    }
@@ -1167,11 +1174,10 @@ wxItemResource *wxResourceInterpretControl(wxResourceTable& table, wxExpr *expr)
 
       if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList)
      {
-        // controlItem->SetLabelFont(wxResourceInterpretFontSpec(expr->Nth(count)));
-      count ++;
-
-        if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList)
-          controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count)));
+         // Skip past the obsolete label font spec if there are two consecutive specs
+         if (expr->Nth(count+1) && expr->Nth(count+1)->Type() == PrologList)
+           count ++;
+         controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count)));
      }
    }
   }
index 25fc02ce07c54dfd00ca4eda913215232c1204e9..12d9626903983d16d84c9a564e89e2d43ce0a669 100644 (file)
@@ -47,6 +47,7 @@ wxPropertyValue::wxPropertyValue(void)
 
 wxPropertyValue::wxPropertyValue(const wxPropertyValue& copyFrom)
 {
+  m_value.string = (wxChar*) NULL;
   m_modifiedFlag = FALSE;
   Copy((wxPropertyValue& )copyFrom);
 }
@@ -336,6 +337,11 @@ wxPropertyValue *wxPropertyValue::NewCopy(void) const
 
 void wxPropertyValue::Copy(wxPropertyValue& copyFrom)
 {
+  if (m_type == wxPropertyValueString)
+  {
+    delete[] m_value.string ;
+    m_value.string = NULL;
+  }
   m_type = copyFrom.Type();
 
   switch (m_type)
@@ -587,6 +593,14 @@ void wxPropertyValue::operator=(const wxString& val1)
   const wxChar *val = (const wxChar *)val1;
 
   m_modifiedFlag = TRUE;
+
+  wxPropertyValueType oldType = m_type;
+  if (oldType == wxPropertyValueString)
+  {
+    delete[] m_value.string ;
+    m_value.string = NULL;
+  }
+
   if (m_type == wxPropertyValueNull)
     m_type = wxPropertyValueString;
 
@@ -599,8 +613,7 @@ void wxPropertyValue::operator=(const wxString& val1)
   }
   else if (m_type == wxPropertyValueStringPtr)
   {
-    if (*m_value.stringPtr)
-      delete[] *m_value.stringPtr;
+    wxFAIL_MSG( "Shouldn't try to assign a wxString reference to a char* pointer.");
     if (val)
       *m_value.stringPtr = copystring(val);
     else
@@ -615,6 +628,13 @@ void wxPropertyValue::operator=(const wxString& val1)
 
 void wxPropertyValue::operator=(const long val)
 {
+  wxPropertyValueType oldType = m_type;
+  if (oldType == wxPropertyValueString)
+  {
+    delete[] m_value.string ;
+    m_value.string = NULL;
+  }
+
   m_modifiedFlag = TRUE;
   if (m_type == wxPropertyValueNull)
     m_type = wxPropertyValueInteger;
@@ -634,6 +654,13 @@ void wxPropertyValue::operator=(const long val)
 
 void wxPropertyValue::operator=(const bool val)
 {
+  wxPropertyValueType oldType = m_type;
+  if (oldType == wxPropertyValueString)
+  {
+    delete[] m_value.string ;
+    m_value.string = NULL;
+  }
+
   m_modifiedFlag = TRUE;
   if (m_type == wxPropertyValueNull)
     m_type = wxPropertyValuebool;
@@ -649,6 +676,13 @@ void wxPropertyValue::operator=(const bool val)
 
 void wxPropertyValue::operator=(const float val)
 {
+  wxPropertyValueType oldType = m_type;
+  if (oldType == wxPropertyValueString)
+  {
+    delete[] m_value.string ;
+    m_value.string = NULL;
+  }
+
   m_modifiedFlag = TRUE;
   if (m_type == wxPropertyValueNull)
     m_type = wxPropertyValueReal;
@@ -668,6 +702,13 @@ void wxPropertyValue::operator=(const float val)
 
 void wxPropertyValue::operator=(const wxChar **val)
 {
+  wxPropertyValueType oldType = m_type;
+  if (oldType == wxPropertyValueString)
+  {
+    delete[] m_value.string ;
+    m_value.string = NULL;
+  }
+
   m_modifiedFlag = TRUE;
   m_type = wxPropertyValueStringPtr;
 
index e6a647f698aadb287baee1ffd0db5a6b943aad69..14166498d43d6b92155859a374513cfa0c4433cc 100644 (file)
@@ -486,6 +486,8 @@ bool wxResourceManager::New(bool loadFromFile, const wxString& filename)
 
 bool wxResourceManager::Clear(bool WXUNUSED(deleteWindows), bool force)
 {
+  wxPropertyInfo::CloseWindow();
+
   if (!force && Modified())
   {
     int ans = wxMessageBox("Save modified resource file?", "Dialog Editor", wxYES_NO | wxCANCEL);
@@ -927,6 +929,8 @@ bool wxResourceManager::EditSelectedResource()
 
 bool wxResourceManager::Edit(wxItemResource *res)
 {
+  wxPropertyInfo::CloseWindow();
+
   ClearCurrentDialog();
 
   wxString resType(res->GetType());
@@ -966,6 +970,8 @@ bool wxResourceManager::Edit(wxItemResource *res)
 
 bool wxResourceManager::CreateNewPanel()
 {
+  wxPropertyInfo::CloseWindow();
+
   ClearCurrentDialog();
 
   char buf[256];
@@ -1456,6 +1462,25 @@ void wxResourceManager::RemoveSelection(wxWindow *win)
   m_selections.DeleteObject(win);
 }
 
+void wxResourceManager::DeselectItemIfNecessary(wxWindow *win)
+{
+    if (win->IsKindOf(CLASSINFO(wxControl)) && (win->GetEventHandler() != win))
+    {
+        // Deselect and refresh window in case we leave selection
+        // handles behind
+        wxControl *item = (wxControl *)win;
+        wxResourceEditorControlHandler *childHandler = (wxResourceEditorControlHandler *)item->GetEventHandler();
+        if (childHandler->IsSelected())
+        {
+            wxResourceManager::GetCurrentResourceManager()->RemoveSelection(item);
+            childHandler->SelectItem(FALSE);
+#ifndef __WXGTK__
+            item->GetParent()->Refresh();
+#endif
+        }
+    } 
+}
+
 // Need to search through resource table removing this from
 // any resource which has this as a parent.
 bool wxResourceManager::RemoveResourceFromParent(wxItemResource *res)
@@ -1515,24 +1540,7 @@ bool wxResourceManager::DeleteResource(wxItemResource *res)
 
 bool wxResourceManager::DeleteResource(wxWindow *win)
 {
-  if (win->IsKindOf(CLASSINFO(wxControl)) && (win->GetEventHandler() != win))
-  {
-    // Deselect and refresh window in case we leave selection
-    // handles behind
-    wxControl *item = (wxControl *)win;
-    wxResourceEditorControlHandler *childHandler = (wxResourceEditorControlHandler *)item->GetEventHandler();
-
-    wxASSERT_MSG( win->GetEventHandler()->IsKindOf(CLASSINFO(wxResourceEditorControlHandler)), "Wrong kind of handler in DeleteResource" );
-
-    if (childHandler->IsSelected())
-    {
-      RemoveSelection(item);
-      childHandler->SelectItem(FALSE);
-#ifndef __WXGTK__
-      item->GetParent()->Refresh();
-#endif
-    }
-  }
+  DeselectItemIfNecessary(win);
   
   wxItemResource *res = FindResourceForWindow(win);
   
@@ -1803,7 +1811,7 @@ bool wxResourceManager::RepairResourceIds()
  // Deletes 'win' and creates a new window from the resource that
  // was associated with it. E.g. if you can't change properties on the
  // fly, you'll need to delete the window and create it again.
-wxWindow *wxResourceManager::RecreateWindowFromResource(wxWindow *win, wxWindowPropertyInfo *info)
+wxWindow *wxResourceManager::RecreateWindowFromResource(wxWindow *win, wxWindowPropertyInfo *info, bool instantiateFirst)
 {
   wxItemResource *resource = FindResourceForWindow(win);
 
@@ -1816,7 +1824,9 @@ wxWindow *wxResourceManager::RecreateWindowFromResource(wxWindow *win, wxWindowP
     info = newInfo;
   }
 
-  info->InstantiateResource(resource);
+  // May not always want to copy values back from the resource
+  if (instantiateFirst)
+    info->InstantiateResource(resource);
 
   wxWindow *newWin = NULL;
   wxWindow *parent = win->GetParent();
@@ -2175,6 +2185,7 @@ void wxResourceEditorFrame::OnRecreateSelection(wxCommandEvent& WXUNUSED(event))
 
 void wxResourceEditorFrame::OnCloseWindow(wxCloseEvent& event)
 {
+  wxPropertyInfo::CloseWindow();
   if (manager->Modified())
   {
      if (!manager->Clear(TRUE, FALSE))
@@ -2273,21 +2284,7 @@ void ObjectMenuProc(wxMenu *menu, wxCommandEvent& event)
     }
     case OBJECT_MENU_DELETE:
     {
-      if (data->IsKindOf(CLASSINFO(wxControl)) && (data->GetEventHandler() != data))
-      {
-         // Deselect and refresh window in case we leave selection
-         // handles behind
-         wxControl *item = (wxControl *)data;
-         wxResourceEditorControlHandler *childHandler = (wxResourceEditorControlHandler *)item->GetEventHandler();
-         if (childHandler->IsSelected())
-         {
-            wxResourceManager::GetCurrentResourceManager()->RemoveSelection(item);
-            childHandler->SelectItem(FALSE);
-#ifndef __WXGTK__
-            item->GetParent()->Refresh();
-#endif
-         }
-      } 
+      wxResourceManager::GetCurrentResourceManager()->DeselectItemIfNecessary(data);
 
       wxResourceManager::GetCurrentResourceManager()->SaveInfoAndDeleteHandler(data);
       wxResourceManager::GetCurrentResourceManager()->DeleteResource(data);
index 00e57587cb51e0cf1167f2c2ce8231d59fbb08b9..021b867195d90e0dc36bc5e1d6aa9aa970754900 100644 (file)
@@ -252,10 +252,13 @@ public:
    // Deletes 'win' and creates a new window from the resource that
    // was associated with it. E.g. if you can't change properties on the
    // fly, you'll need to delete the window and create it again.
-   virtual wxWindow *RecreateWindowFromResource(wxWindow *win, wxWindowPropertyInfo *info = NULL);
+   virtual wxWindow *RecreateWindowFromResource(wxWindow *win, wxWindowPropertyInfo *info = NULL, bool instantiateFirst = TRUE);
 
    virtual bool RecreateSelection();
 
+   // Remove selection handles if this control is selected
+   void DeselectItemIfNecessary(wxWindow *win);
+
    // Need to search through resource table removing this from
    // any resource which has this as a parent.
    virtual bool RemoveResourceFromParent(wxItemResource *res);
index 1d9318bc9584bcd25fccac422d91d105c62ba668..dde79ec61c1125ee76c8f12e8fd1bb08f02f9d13 100644 (file)
@@ -123,18 +123,7 @@ bool wxPropertyInfo::Edit(wxWindow *WXUNUSED(parent), const wxString& title)
       }
       else
       {
-        int w, h, x, y;
-        sm_propertyWindow->GetSize(& w, & h);
-        sm_propertyWindow->GetPosition(& x, & y);
-
-        wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().width = w;
-        wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().height = h;
-        wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().x = x;
-        wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().y = y;
-
-        // Close the window, so we can create a new one for the different window
-        sm_propertyWindow->Destroy();
-        sm_propertyWindow = (wxDialogEditorPropertyListFrame *) NULL;
+          CloseWindow(); // Close the window so we can open a new one
       }
   }
 
@@ -164,7 +153,7 @@ bool wxPropertyInfo::Edit(wxWindow *WXUNUSED(parent), const wxString& title)
   propSheet->SetAllModified(FALSE);
 
   wxResourcePropertyListView *view = new wxResourcePropertyListView(this, NULL,
-     wxPROP_BUTTON_OK | wxPROP_BUTTON_CANCEL |
+     wxPROP_BUTTON_OK | // wxPROP_BUTTON_CANCEL |
      wxPROP_BUTTON_CHECK_CROSS|wxPROP_DYNAMIC_VALUE_FIELD|wxPROP_PULLDOWN|wxPROP_SHOWVALUES);
 
   wxDialogEditorPropertyListFrame *propWin = new wxDialogEditorPropertyListFrame(view,
@@ -200,6 +189,24 @@ bool wxPropertyInfo::Edit(wxWindow *WXUNUSED(parent), const wxString& title)
   return TRUE;
 }
 
+void wxPropertyInfo::CloseWindow()
+{
+  if (sm_propertyWindow)
+  {
+        int w, h, x, y;
+        sm_propertyWindow->GetSize(& w, & h);
+        sm_propertyWindow->GetPosition(& x, & y);
+
+        wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().width = w;
+        wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().height = h;
+        wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().x = x;
+        wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().y = y;
+
+        sm_propertyWindow->Destroy();
+        sm_propertyWindow = (wxDialogEditorPropertyListFrame *) NULL;
+  }
+}
+
 /*
  * wxWindowPropertyInfo
  */
@@ -376,7 +383,15 @@ bool wxWindowPropertyInfo::SetProperty(wxString& name, wxProperty *property)
   {
     wxFont *newFont = SetFontProperty(name, property, font);
     if (newFont)
+    {
       m_propertyWindow->SetFont(* newFont);
+      wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow);
+      if (resource)
+      {
+          resource->SetFont(* newFont);
+      }
+    }
+
     return TRUE;
   }
   else if (name == "name")
@@ -771,6 +786,7 @@ wxProperty *wxItemPropertyInfo::GetProperty(wxString& name)
 bool wxItemPropertyInfo::SetProperty(wxString& name, wxProperty *property)
 {
   wxControl *itemWindow = (wxControl *)m_propertyWindow; 
+#if 0
   wxFont *font = & itemWindow->GetFont();
 
   if (font && (name == "fontPoints" || name == "fontFamily" || name == "fontStyle" || name == "fontWeight" || name == "fontUnderlined" ))
@@ -780,7 +796,9 @@ bool wxItemPropertyInfo::SetProperty(wxString& name, wxProperty *property)
       itemWindow->SetFont(* newFont);
     return TRUE;
   }
-  else if (name == "label")
+  else
+#endif
+  if (name == "label")
   {
     itemWindow->SetLabel(property->GetValue().StringValue());
     return TRUE;
@@ -1460,6 +1478,8 @@ bool wxRadioBoxPropertyInfo::SetProperty(wxString& name, wxProperty *property)
   wxRadioBox *radioBox = (wxRadioBox *)m_propertyWindow;
   if (name == "numberRowsOrCols")
   {
+    wxResourceManager::GetCurrentResourceManager()->DeselectItemIfNecessary(radioBox);
+
     radioBox->SetNumberOfRowsOrCols((int)property->GetValue().IntegerValue());
     m_propertyWindow = wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(radioBox, this);
     return TRUE;
@@ -1480,11 +1500,14 @@ bool wxRadioBoxPropertyInfo::SetProperty(wxString& name, wxProperty *property)
         windowStyle -= wxRA_SPECIFY_COLS;
       windowStyle |= wxRA_SPECIFY_ROWS;
     }
+    wxResourceManager::GetCurrentResourceManager()->DeselectItemIfNecessary(radioBox);
+
     radioBox->SetWindowStyleFlag(windowStyle);
     wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(radioBox);
     resource->SetStyle(windowStyle);
+    resource->SetSize(resource->GetX(), resource->GetY(), -1, -1); // Let it calculate it's own size
     
-    m_propertyWindow = wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(radioBox, this);
+    m_propertyWindow = wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(radioBox, this, FALSE);
     return TRUE;
   }
   else if (name == "values")
@@ -1506,9 +1529,32 @@ bool wxRadioBoxPropertyInfo::SetProperty(wxString& name, wxProperty *property)
       expr = expr->GetNext();
     }
     resource->SetStringValues(stringList);
-    m_propertyWindow = wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(radioBox, this);
+    resource->SetSize(resource->GetX(), resource->GetY(), -1, -1); // Let it calculate it's own size
+    m_propertyWindow = wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(radioBox, this, FALSE);
     return TRUE;
   }
+  else if (name == "fontPoints" || name == "fontFamily" || name == "fontStyle" || name == "fontWeight" || name == "fontUnderlined" )
+  {
+    wxFont *font = & m_propertyWindow->GetFont();
+    if (!font)
+        return FALSE;
+    wxFont *newFont = SetFontProperty(name, property, font);
+    if (newFont)
+    {
+      wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow);
+      if (resource)
+      {
+          resource->SetFont(* newFont);
+      }
+
+      wxResourceManager::GetCurrentResourceManager()->DeselectItemIfNecessary(radioBox);
+
+      radioBox->SetFont(* newFont);
+      radioBox->SetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
+      return TRUE;
+    }
+  }
+
   return wxItemPropertyInfo::SetProperty(name, property);
 }
 
index 9869fe3aef47ab19e3a1b2c96fd80e120a59ab35..27d1ea5a6192944b256ee6cfee5bb1c1789b8af8 100644 (file)
@@ -74,6 +74,7 @@ class wxPropertyInfo: public wxObject
   virtual bool SetProperty(wxString& propName, wxProperty *property) = 0;
   virtual void GetPropertyNames(wxStringList& names) = 0;
   virtual bool Edit(wxWindow *parent, const wxString& title);
+  static void CloseWindow(); // Close the current window if open.
 };
 
 // For all windows