| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/xrc/xmlreshandler.cpp
 
- // Purpose:     XML resource handler
 
- // Author:      Steven Lamerton
 
- // Created:     2011/01/26
 
- // RCS-ID:      $id$
 
- // Copyright:   (c) 2011 Steven Lamerton
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_XRC_XMLRESHANDLER_H_
 
- #define _WX_XRC_XMLRESHANDLER_H_
 
- #include "wx/defs.h"
 
- #if wxUSE_XRC
 
- #include "wx/string.h"
 
- #include "wx/artprov.h"
 
- #include "wx/colour.h"
 
- #include "wx/filesys.h"
 
- #include "wx/imaglist.h"
 
- #include "wx/window.h"
 
- class WXDLLIMPEXP_FWD_ADV wxAnimation;
 
- class WXDLLIMPEXP_FWD_XML wxXmlNode;
 
- class WXDLLIMPEXP_FWD_XML wxXmlResource;
 
- class WXDLLIMPEXP_FWD_CORE wxXmlResourceHandler;
 
- // Helper macro used by the classes derived from wxXmlResourceHandler but also
 
- // by wxXmlResourceHandler implementation itself.
 
- #define XRC_ADD_STYLE(style) AddStyle(wxT(#style), style)
 
- // Abstract base class for the implementation object used by
 
- // wxXmlResourceHandlerImpl. The real implementation is in
 
- // wxXmlResourceHandlerImpl class in the "xrc" library while this class is in
 
- // the "core" itself -- but it is so small that it doesn't matter.
 
- class WXDLLIMPEXP_CORE wxXmlResourceHandlerImplBase : public wxObject
 
- {
 
- public:
 
-     // Constructor.
 
-     wxXmlResourceHandlerImplBase(wxXmlResourceHandler *handler)
 
-         : m_handler(handler)
 
-     {}
 
-     // Destructor.
 
-     virtual ~wxXmlResourceHandlerImplBase() {}
 
-     virtual wxObject *CreateResource(wxXmlNode *node, wxObject *parent,
 
-                                      wxObject *instance) = 0;
 
-     virtual bool IsOfClass(wxXmlNode *node, const wxString& classname) const = 0;
 
-     virtual wxString GetNodeContent(const wxXmlNode *node) = 0;
 
-     virtual bool HasParam(const wxString& param) = 0;
 
-     virtual wxXmlNode *GetParamNode(const wxString& param) = 0;
 
-     virtual wxString GetParamValue(const wxString& param) = 0;
 
-     virtual wxString GetParamValue(const wxXmlNode* node) = 0;
 
-     virtual int GetStyle(const wxString& param = wxT("style"), int defaults = 0) = 0;
 
-     virtual wxString GetText(const wxString& param, bool translate = true) = 0;
 
-     virtual int GetID() = 0;
 
-     virtual wxString GetName() = 0;
 
-     virtual bool GetBool(const wxString& param, bool defaultv = false) = 0;
 
-     virtual long GetLong(const wxString& param, long defaultv = 0) = 0;
 
-     virtual float GetFloat(const wxString& param, float defaultv = 0) = 0;
 
-     virtual wxColour GetColour(const wxString& param,
 
-                                const wxColour& defaultv = wxNullColour) = 0;
 
-     virtual wxSize GetSize(const wxString& param = wxT("size"),
 
-                            wxWindow *windowToUse = NULL) = 0;
 
-     virtual wxPoint GetPosition(const wxString& param = wxT("pos")) = 0;
 
-     virtual wxCoord GetDimension(const wxString& param, wxCoord defaultv = 0,
 
-                                  wxWindow *windowToUse = NULL) = 0;
 
-     virtual wxDirection GetDirection(const wxString& param, wxDirection dir = wxLEFT) = 0;
 
-     virtual wxBitmap GetBitmap(const wxString& param = wxT("bitmap"),
 
-                                const wxArtClient& defaultArtClient = wxART_OTHER,
 
-                                wxSize size = wxDefaultSize) = 0;
 
-     virtual wxBitmap GetBitmap(const wxXmlNode* node,
 
-                                const wxArtClient& defaultArtClient = wxART_OTHER,
 
-                                wxSize size = wxDefaultSize) = 0;
 
-     virtual wxIcon GetIcon(const wxString& param = wxT("icon"),
 
-                            const wxArtClient& defaultArtClient = wxART_OTHER,
 
-                            wxSize size = wxDefaultSize) = 0;
 
-     virtual wxIcon GetIcon(const wxXmlNode* node,
 
-                            const wxArtClient& defaultArtClient = wxART_OTHER,
 
-                            wxSize size = wxDefaultSize) = 0;
 
-     virtual wxIconBundle GetIconBundle(const wxString& param,
 
-                                        const wxArtClient& defaultArtClient = wxART_OTHER) = 0;
 
-     virtual wxImageList *GetImageList(const wxString& param = wxT("imagelist")) = 0;
 
- #if wxUSE_ANIMATIONCTRL
 
-     virtual wxAnimation* GetAnimation(const wxString& param = wxT("animation")) = 0;
 
- #endif
 
-     virtual wxFont GetFont(const wxString& param = wxT("font"), wxWindow* parent = NULL) = 0;
 
-     virtual bool GetBoolAttr(const wxString& attr, bool defaultv) = 0;
 
-     virtual void SetupWindow(wxWindow *wnd) = 0;
 
-     virtual void CreateChildren(wxObject *parent, bool this_hnd_only = false) = 0;
 
-     virtual void CreateChildrenPrivately(wxObject *parent,
 
-                                          wxXmlNode *rootnode = NULL) = 0;
 
-     virtual wxObject *CreateResFromNode(wxXmlNode *node, wxObject *parent,
 
-                                         wxObject *instance = NULL) = 0;
 
- #if wxUSE_FILESYSTEM
 
-     virtual wxFileSystem& GetCurFileSystem() = 0;
 
- #endif
 
-     virtual void ReportError(wxXmlNode *context, const wxString& message) = 0;
 
-     virtual void ReportError(const wxString& message) = 0;
 
-     virtual void ReportParamError(const wxString& param, const wxString& message) = 0;
 
-     wxXmlResourceHandler* GetHandler() { return m_handler; }
 
- protected:
 
-     wxXmlResourceHandler *m_handler;
 
- };
 
- // Base class for all XRC handlers.
 
- //
 
- // Notice that this class is defined in the core library itself and so can be
 
- // used as the base class by classes in any GUI library. However to actually be
 
- // usable, it needs to be registered with wxXmlResource which implies linking
 
- // the application with the xrc library.
 
- //
 
- // Also note that all the methods forwarding to GetImpl() are documented only
 
- // in wxXmlResourceHandlerImpl in wx/xrc/xmlres.h to avoid duplication.
 
- class WXDLLIMPEXP_CORE wxXmlResourceHandler : public wxObject
 
- {
 
- public:
 
-     // Constructor creates an unusable object, before anything can be done with
 
-     // it, SetImpl() needs to be called as done by wxXmlResource::AddHandler().
 
-     wxXmlResourceHandler()
 
-     {
 
-         m_node = NULL;
 
-         m_parent =
 
-         m_instance = NULL;
 
-         m_parentAsWindow = NULL;
 
-         m_resource = NULL;
 
-         m_impl = NULL;
 
-     }
 
-     // This should be called exactly once.
 
-     void SetImpl(wxXmlResourceHandlerImplBase* impl)
 
-     {
 
-         wxASSERT_MSG( !m_impl, wxS("Should be called exactly once") );
 
-         m_impl = impl;
 
-     }
 
-     // Destructor.
 
-     virtual ~wxXmlResourceHandler()
 
-     {
 
-         delete m_impl;
 
-     }
 
-     wxObject *CreateResource(wxXmlNode *node, wxObject *parent,
 
-                              wxObject *instance)
 
-     {
 
-         return GetImpl()->CreateResource(node, parent, instance);
 
-     }
 
-     // This one is called from CreateResource after variables
 
-     // were filled.
 
-     virtual wxObject *DoCreateResource() = 0;
 
-     // Returns true if it understands this node and can create
 
-     // a resource from it, false otherwise.
 
-     virtual bool CanHandle(wxXmlNode *node) = 0;
 
-     void SetParentResource(wxXmlResource *res)
 
-     {
 
-         m_resource = res;
 
-     }
 
-     // These methods are not forwarded to wxXmlResourceHandlerImpl because they
 
-     // are called from the derived classes ctors and so before SetImpl() can be
 
-     // called.
 
-     // Add a style flag (e.g. wxMB_DOCKABLE) to the list of flags
 
-     // understood by this handler.
 
-     void AddStyle(const wxString& name, int value);
 
-     // Add styles common to all wxWindow-derived classes.
 
-     void AddWindowStyles();
 
- protected:
 
-     // Everything else is simply forwarded to wxXmlResourceHandlerImpl.
 
-     void ReportError(wxXmlNode *context, const wxString& message)
 
-     {
 
-         GetImpl()->ReportError(context, message);
 
-     }
 
-     void ReportError(const wxString& message)
 
-     {
 
-         GetImpl()->ReportError(message);
 
-     }
 
-     void ReportParamError(const wxString& param, const wxString& message)
 
-     {
 
-         GetImpl()->ReportParamError(param, message);
 
-     }
 
-     bool IsOfClass(wxXmlNode *node, const wxString& classname) const
 
-     {
 
-         return GetImpl()->IsOfClass(node, classname);
 
-     }
 
-     wxString GetNodeContent(const wxXmlNode *node)
 
-     {
 
-         return GetImpl()->GetNodeContent(node);
 
-     }
 
-     bool HasParam(const wxString& param)
 
-     {
 
-         return GetImpl()->HasParam(param);
 
-     }
 
-     wxXmlNode *GetParamNode(const wxString& param)
 
-     {
 
-         return GetImpl()->GetParamNode(param);
 
-     }
 
-     wxString GetParamValue(const wxString& param)
 
-     {
 
-         return GetImpl()->GetParamValue(param);
 
-     }
 
-     wxString GetParamValue(const wxXmlNode* node)
 
-     {
 
-         return GetImpl()->GetParamValue(node);
 
-     }
 
-     int GetStyle(const wxString& param = wxT("style"), int defaults = 0)
 
-     {
 
-         return GetImpl()->GetStyle(param, defaults);
 
-     }
 
-     wxString GetText(const wxString& param, bool translate = true)
 
-     {
 
-         return GetImpl()->GetText(param, translate);
 
-     }
 
-     int GetID() const
 
-     {
 
-         return GetImpl()->GetID();
 
-     }
 
-     wxString GetName()
 
-     {
 
-         return GetImpl()->GetName();
 
-     }
 
-     bool GetBool(const wxString& param, bool defaultv = false)
 
-     {
 
-         return GetImpl()->GetBool(param, defaultv);
 
-     }
 
-     long GetLong(const wxString& param, long defaultv = 0)
 
-     {
 
-         return GetImpl()->GetLong(param, defaultv);
 
-     }
 
-     float GetFloat(const wxString& param, float defaultv = 0)
 
-     {
 
-         return GetImpl()->GetFloat(param, defaultv);
 
-     }
 
-     wxColour GetColour(const wxString& param,
 
-                        const wxColour& defaultv = wxNullColour)
 
-     {
 
-         return GetImpl()->GetColour(param, defaultv);
 
-     }
 
-     wxSize GetSize(const wxString& param = wxT("size"),
 
-                    wxWindow *windowToUse = NULL)
 
-     {
 
-         return GetImpl()->GetSize(param, windowToUse);
 
-     }
 
-     wxPoint GetPosition(const wxString& param = wxT("pos"))
 
-     {
 
-         return GetImpl()->GetPosition(param);
 
-     }
 
-     wxCoord GetDimension(const wxString& param, wxCoord defaultv = 0,
 
-                          wxWindow *windowToUse = NULL)
 
-     {
 
-         return GetImpl()->GetDimension(param, defaultv, windowToUse);
 
-     }
 
-     wxDirection GetDirection(const wxString& param, wxDirection dir = wxLEFT)
 
-     {
 
-         return GetImpl()->GetDirection(param, dir);
 
-     }
 
-     wxBitmap GetBitmap(const wxString& param = wxT("bitmap"),
 
-                        const wxArtClient& defaultArtClient = wxART_OTHER,
 
-                        wxSize size = wxDefaultSize)
 
-     {
 
-         return GetImpl()->GetBitmap(param, defaultArtClient, size);
 
-     }
 
-     wxBitmap GetBitmap(const wxXmlNode* node,
 
-                        const wxArtClient& defaultArtClient = wxART_OTHER,
 
-                        wxSize size = wxDefaultSize)
 
-     {
 
-         return GetImpl()->GetBitmap(node, defaultArtClient, size);
 
-     }
 
-     wxIcon GetIcon(const wxString& param = wxT("icon"),
 
-                    const wxArtClient& defaultArtClient = wxART_OTHER,
 
-                    wxSize size = wxDefaultSize)
 
-     {
 
-         return GetImpl()->GetIcon(param, defaultArtClient, size);
 
-     }
 
-     wxIcon GetIcon(const wxXmlNode* node,
 
-                    const wxArtClient& defaultArtClient = wxART_OTHER,
 
-                    wxSize size = wxDefaultSize)
 
-     {
 
-         return GetImpl()->GetIcon(node, defaultArtClient, size);
 
-     }
 
-     wxIconBundle GetIconBundle(const wxString& param,
 
-                                const wxArtClient& defaultArtClient = wxART_OTHER)
 
-     {
 
-         return GetImpl()->GetIconBundle(param, defaultArtClient);
 
-     }
 
-     wxImageList *GetImageList(const wxString& param = wxT("imagelist"))
 
-     {
 
-         return GetImpl()->GetImageList(param);
 
-     }
 
- #if wxUSE_ANIMATIONCTRL
 
-     wxAnimation* GetAnimation(const wxString& param = wxT("animation"))
 
-     {
 
-         return GetImpl()->GetAnimation(param);
 
-     }
 
- #endif
 
-     wxFont GetFont(const wxString& param = wxT("font"),
 
-                    wxWindow* parent = NULL)
 
-     {
 
-         return GetImpl()->GetFont(param, parent);
 
-     }
 
-     bool GetBoolAttr(const wxString& attr, bool defaultv)
 
-     {
 
-         return GetImpl()->GetBoolAttr(attr, defaultv);
 
-     }
 
-     void SetupWindow(wxWindow *wnd)
 
-     {
 
-         GetImpl()->SetupWindow(wnd);
 
-     }
 
-     void CreateChildren(wxObject *parent, bool this_hnd_only = false)
 
-     {
 
-         GetImpl()->CreateChildren(parent, this_hnd_only);
 
-     }
 
-     void CreateChildrenPrivately(wxObject *parent, wxXmlNode *rootnode = NULL)
 
-     {
 
-         GetImpl()->CreateChildrenPrivately(parent, rootnode);
 
-     }
 
-     wxObject *CreateResFromNode(wxXmlNode *node,
 
-                                 wxObject *parent, wxObject *instance = NULL)
 
-     {
 
-         return GetImpl()->CreateResFromNode(node, parent, instance);
 
-     }
 
- #if wxUSE_FILESYSTEM
 
-     wxFileSystem& GetCurFileSystem()
 
-     {
 
-         return GetImpl()->GetCurFileSystem();
 
-     }
 
- #endif
 
-     // Variables (filled by CreateResource)
 
-     wxXmlNode *m_node;
 
-     wxString m_class;
 
-     wxObject *m_parent, *m_instance;
 
-     wxWindow *m_parentAsWindow;
 
-     wxXmlResource *m_resource;
 
-     // provide method access to those member variables
 
-     wxXmlResource* GetResource() const        { return m_resource; }
 
-     wxXmlNode* GetNode() const                { return m_node; }
 
-     wxString GetClass() const                 { return m_class; }
 
-     wxObject* GetParent() const               { return m_parent; }
 
-     wxObject* GetInstance() const             { return m_instance; }
 
-     wxWindow* GetParentAsWindow() const       { return m_parentAsWindow; }
 
-     
 
-     wxArrayString m_styleNames;
 
-     wxArrayInt m_styleValues;
 
-     friend class wxXmlResourceHandlerImpl;
 
- private:
 
-     // This is supposed to never return NULL because SetImpl() should have been
 
-     // called.
 
-     wxXmlResourceHandlerImplBase* GetImpl() const;
 
-     wxXmlResourceHandlerImplBase *m_impl;
 
-     wxDECLARE_ABSTRACT_CLASS(wxXmlResourceHandler);
 
- };
 
- #endif // wxUSE_XRC
 
- #endif // _WX_XRC_XMLRESHANDLER_H_
 
 
  |