X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/aaa2b34e816810e376a2cd471755c11713bcd481..d8ddee9c46a4e234262a11948eb2bc6e003d15af:/contrib/utils/wxrcedit/preview.cpp diff --git a/contrib/utils/wxrcedit/preview.cpp b/contrib/utils/wxrcedit/preview.cpp index b1085bee8a..ddf3be2b61 100644 --- a/contrib/utils/wxrcedit/preview.cpp +++ b/contrib/utils/wxrcedit/preview.cpp @@ -18,8 +18,8 @@ #endif #include "wx/wx.h" -#include "wx/xml/xml.h" -#include "wx/xml/xmlres.h" +#include "wx/xrc/xml.h" +#include "wx/xrc/xmlres.h" #include "wx/config.h" #include "wx/log.h" #include "wx/splitter.h" @@ -27,7 +27,7 @@ #include "xmlhelpr.h" #include "editor.h" -#include "wx/xml/xh_menu.h" +#include "wx/xrc/xh_menu.h" class MyMenubarHandler : public wxMenuBarXmlHandler { @@ -63,7 +63,11 @@ PreviewFrame *PreviewFrame::Get() PreviewFrame::PreviewFrame() : wxFrame(EditorFrame::Get(), -1, _("Preview"), wxDefaultPosition, wxDefaultSize, - wxDEFAULT_FRAME_STYLE | wxFRAME_NO_TASKBAR | wxFRAME_TOOL_WINDOW) + wxDEFAULT_FRAME_STYLE | wxFRAME_NO_TASKBAR +#ifdef __WXMSW__ + | wxFRAME_TOOL_WINDOW +#endif + ) { m_Dirty = FALSE; ms_Instance = this; @@ -71,13 +75,9 @@ PreviewFrame::PreviewFrame() SetMenuBar(new wxMenuBar()); - m_RC = new wxXmlResource; - // these handlers take precedence over std. ones: - m_RC->AddHandler(new MyMenubarHandler(GetMenuBar())); - // std handlers: - m_RC->InitAllHandlers(); + m_RC = NULL; m_TmpFile = wxGetTempFileName(_T("wxrcedit")); - m_RC->Load(m_TmpFile); + ResetResource(); wxConfigBase *cfg = wxConfigBase::Get(); SetSize(wxRect(wxPoint(cfg->Read(_T("previewframe_x"), -1), cfg->Read(_T("previewframe_y"), -1)), @@ -92,11 +92,25 @@ PreviewFrame::PreviewFrame() CreateStatusBar(); - SetSize(GetSize()); // refresh: MSW needs it +#ifdef __WXMSW__ + SendSizeEvent(); // force resize for WXMSW +#endif } +void PreviewFrame::ResetResource() +{ + delete m_RC; + m_RC = new wxXmlResource; + // these handlers take precedence over std. ones: + m_RC->AddHandler(new MyMenubarHandler(GetMenuBar())); + // std handlers: + m_RC->InitAllHandlers(); + wxRemoveFile(m_TmpFile); + m_RC->Load(m_TmpFile); +} + PreviewFrame::~PreviewFrame() { wxConfigBase *cfg = wxConfigBase::Get(); @@ -126,19 +140,21 @@ void PreviewFrame::MakeDirty() -void PreviewFrame::Preview(wxXmlNode *node) +void PreviewFrame::Preview(wxXmlNode *node,const wxString &version) { while (node->GetParent()->GetParent() != NULL) node = node->GetParent(); { wxXmlDocument doc; - doc.SetRoot(new wxXmlNode(wxXML_ELEMENT_NODE, _T("resource"))); + wxXmlNode *root = new wxXmlNode(wxXML_ELEMENT_NODE, _T("resource")); + root->AddProperty(new wxXmlProperty(wxT("version"),version,NULL)); + doc.SetRoot(root); doc.GetRoot()->AddChild(new wxXmlNode(*node)); if (XmlGetClass(doc.GetRoot()->GetChildren()) == _T("wxDialog")) XmlSetClass(doc.GetRoot()->GetChildren(), _T("wxPanel")); - doc.Save(m_TmpFile, wxXML_IO_BIN); + doc.Save(m_TmpFile); // wxXmlResource will detect change automatically } @@ -152,6 +168,7 @@ void PreviewFrame::Preview(wxXmlNode *node) } m_Node = node; + m_Version = version; m_LogCtrl->Clear(); wxLogTextCtrl mylog(m_LogCtrl); @@ -214,12 +231,11 @@ void PreviewFrame::PreviewPanel() } - BEGIN_EVENT_TABLE(PreviewFrame, wxFrame) EVT_ENTER_WINDOW(PreviewFrame::OnMouseEnter) END_EVENT_TABLE() void PreviewFrame::OnMouseEnter(wxMouseEvent& event) { - if (m_Dirty) Preview(m_Node); + if (m_Dirty) Preview(m_Node,m_Version); }