1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#include "preview_frame.h"
#include "DirectoryChanger.h"
#include "wxc_aui_manager.h"
#include "wxgui_helpers.h"
#include "wxguicraft_main_view.h"
#include <wx/app.h>
#include <wx/sizer.h>
#include <wx/sstream.h>
#include <wx/xml/xml.h>
BEGIN_EVENT_TABLE(PreviewFrame, wxFrame)
END_EVENT_TABLE()
PreviewFrame::PreviewFrame(wxWindow* parent, const TopLevelWinWrapper& fw)
{
wxSize sz = wxCrafter::DecodeSize(fw.SizeAsString());
wxString text;
fw.ToXRC(text, wxcWidget::XRC_PREVIEW);
wxXmlDocument doc;
wxStringInputStream str(text);
doc.Load(str);
wxString xrcFilePath = wxFileName(wxCrafter::GetUserDataDir(), wxT("myframe.xrc")).GetFullPath();
doc.Save(xrcFilePath);
DirectoryChanger dc(wxcProjectMetadata::Get().GetProjectPath());
wxXmlResource::Get()->Load(xrcFilePath);
wxXmlResource::Get()->LoadFrame(this, parent, fw.GetName());
wxXmlResource::Get()->Unload(xrcFilePath);
Center();
SetSizeHints(sz);
if(wxcAuiManager::Get().Find(this)) {
wxcAuiManager::Get().Find(this)->Update();
} else {
Layout();
}
EventNotifier::Get()->Connect(wxEVT_CLOSE_PREVIEW, wxCommandEventHandler(PreviewFrame::OnClosePreview), NULL, this);
}
PreviewFrame::~PreviewFrame()
{
wxcAuiManager::Get().UnInit(this);
EventNotifier::Get()->Disconnect(wxEVT_CLOSE_PREVIEW, wxCommandEventHandler(PreviewFrame::OnClosePreview), NULL,
this);
wxCommandEvent event(wxEVT_PREVIEW_CLOSED);
EventNotifier::Get()->AddPendingEvent(event);
}
void PreviewFrame::OnClosePreview(wxCommandEvent& e)
{
e.Skip();
Close();
}
|