Misc. Dialog Editor/resource bugs fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5570 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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)));
 | 
			
		||||
     }
 | 
			
		||||
   }
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user