1
/////////////////////////////////////////////////////////////////////////////
3
// Purpose: XRC resource for dialogs
4
// Author: David M. Falkinder & Vaclav Slavik
6
// RCS-ID: $Id: xh_mdi.cpp,v 1.5 2005/04/04 14:20:25 VS Exp $
7
// Copyright: (c) 2005 Vaclav Slavik
8
// Licence: wxWindows licence
9
/////////////////////////////////////////////////////////////////////////////
11
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
12
#pragma implementation "xh_mdi.h"
15
// For compilers that support precompilation, includes "wx.h".
16
#include "wx/wxprec.h"
22
#if wxUSE_XRC && wxUSE_MDI
24
#include "wx/xrc/xh_mdi.h"
26
#include "wx/dialog.h" // to get wxDEFAULT_DIALOG_STYLE
30
IMPLEMENT_DYNAMIC_CLASS(wxMdiXmlHandler, wxXmlResourceHandler)
32
wxMdiXmlHandler::wxMdiXmlHandler() : wxXmlResourceHandler()
34
XRC_ADD_STYLE(wxSTAY_ON_TOP);
35
XRC_ADD_STYLE(wxCAPTION);
36
XRC_ADD_STYLE(wxDEFAULT_DIALOG_STYLE);
37
XRC_ADD_STYLE(wxDEFAULT_FRAME_STYLE);
38
XRC_ADD_STYLE(wxTHICK_FRAME);
39
XRC_ADD_STYLE(wxSYSTEM_MENU);
40
XRC_ADD_STYLE(wxRESIZE_BORDER);
41
XRC_ADD_STYLE(wxRESIZE_BOX);
42
XRC_ADD_STYLE(wxCLOSE_BOX);
44
XRC_ADD_STYLE(wxFRAME_NO_TASKBAR);
45
XRC_ADD_STYLE(wxFRAME_SHAPED);
46
XRC_ADD_STYLE(wxFRAME_TOOL_WINDOW);
47
XRC_ADD_STYLE(wxFRAME_FLOAT_ON_PARENT);
48
XRC_ADD_STYLE(wxMAXIMIZE_BOX);
49
XRC_ADD_STYLE(wxMINIMIZE_BOX);
50
XRC_ADD_STYLE(wxSTAY_ON_TOP);
52
XRC_ADD_STYLE(wxNO_3D);
53
XRC_ADD_STYLE(wxTAB_TRAVERSAL);
54
XRC_ADD_STYLE(wxWS_EX_VALIDATE_RECURSIVELY);
55
XRC_ADD_STYLE(wxFRAME_EX_METAL);
57
XRC_ADD_STYLE(wxHSCROLL);
58
XRC_ADD_STYLE(wxVSCROLL);
59
XRC_ADD_STYLE(wxMAXIMIZE);
60
XRC_ADD_STYLE(wxFRAME_NO_WINDOW_MENU);
65
wxWindow *wxMdiXmlHandler::CreateFrame()
67
if (m_class == wxT("wxMDIParentFrame"))
69
XRC_MAKE_INSTANCE(frame, wxMDIParentFrame);
71
frame->Create(m_parentAsWindow,
73
GetText(wxT("title")),
74
wxDefaultPosition, wxDefaultSize,
75
GetStyle(wxT("style"),
76
wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL),
80
else // wxMDIChildFrame
82
wxMDIParentFrame *mdiParent = wxDynamicCast(m_parent, wxMDIParentFrame);
85
wxLogError(wxT("Parent is not of type wxMDIParentFrame."));
87
XRC_MAKE_INSTANCE(frame, wxMDIChildFrame);
89
frame->Create(mdiParent,
91
GetText(wxT("title")),
92
wxDefaultPosition, wxDefaultSize,
93
GetStyle(wxT("style"), wxDEFAULT_FRAME_STYLE),
100
wxObject *wxMdiXmlHandler::DoCreateResource()
102
wxWindow *frame = CreateFrame();
104
if (HasParam(wxT("size")))
105
frame->SetClientSize(GetSize());
106
if (HasParam(wxT("pos")))
107
frame->Move(GetPosition());
108
if (HasParam(wxT("icon")))
110
wxFrame* f = wxDynamicCast(frame, wxFrame);
112
f->SetIcon(GetIcon(wxT("icon"), wxART_FRAME_ICON));
117
CreateChildren(frame);
119
if (GetBool(wxT("centered"), false))
125
bool wxMdiXmlHandler::CanHandle(wxXmlNode *node)
127
return (IsOfClass(node, wxT("wxMDIParentFrame")) ||
128
IsOfClass(node, wxT("wxMDIChildFrame")));