📄 xmlres.h
字号:
// Creates a resource from information in the given node // (Uses only 'handlerToUse' if != NULL) wxObject *CreateResFromNode(wxXmlNode *node, wxObject *parent, wxObject *instance = NULL, wxXmlResourceHandler *handlerToUse = NULL); // Helper of Load() and Unload(): returns the URL corresponding to the // given file if it's indeed a file, otherwise returns the original string // unmodified static wxString ConvertFileNameToURL(const wxString& filename); // loading resources from archives is impossible without wxFileSystem#if wxUSE_FILESYSTEM // Another helper: detect if the filename is a ZIP or XRS file static bool IsArchive(const wxString& filename);#endif // wxUSE_FILESYSTEMprivate: long m_version; int m_flags; wxList m_handlers; wxXmlResourceDataRecords m_data;#if wxUSE_FILESYSTEM wxFileSystem m_curFileSystem; wxFileSystem& GetCurFileSystem() { return m_curFileSystem; }#endif // domain to pass to translation functions, if any. wxChar* m_domain; friend class wxXmlResourceHandler; friend class wxXmlResourceModule; static wxXmlSubclassFactoriesList *ms_subclassFactories; // singleton instance: static wxXmlResource *ms_instance;};// This macro translates string identifier (as used in XML resource,// e.g. <menuitem id="my_menu">...</menuitem>) to integer id that is needed by// wxWidgets event tables.// Example:// BEGIN_EVENT_TABLE(MyFrame, wxFrame)// EVT_MENU(XRCID("quit"), MyFrame::OnQuit)// EVT_MENU(XRCID("about"), MyFrame::OnAbout)// EVT_MENU(XRCID("new"), MyFrame::OnNew)// EVT_MENU(XRCID("open"), MyFrame::OnOpen)// END_EVENT_TABLE()#define XRCID(str_id) \ wxXmlResource::GetXRCID(wxT(str_id))// This macro returns pointer to particular control in dialog// created using XML resources. You can use it to set/get values from// controls.// Example:// wxDialog dlg;// wxXmlResource::Get()->LoadDialog(&dlg, mainFrame, "my_dialog");// XRCCTRL(dlg, "my_textctrl", wxTextCtrl)->SetValue(wxT("default value"));#define XRCCTRL(window, id, type) \ (wxStaticCast((window).FindWindow(XRCID(id)), type))// wxXmlResourceHandler is an abstract base class for resource handlers// capable of creating a control from an XML node.class WXDLLIMPEXP_XRC wxXmlResourceHandler : public wxObject{DECLARE_ABSTRACT_CLASS(wxXmlResourceHandler)public: // Constructor. wxXmlResourceHandler(); // Destructor. virtual ~wxXmlResourceHandler() {} // Creates an object (menu, dialog, control, ...) from an XML node. // Should check for validity. // parent is a higher-level object (usually window, dialog or panel) // that is often necessary to create the resource. // If instance is non-NULL it should not create a new instance via 'new' but // should rather use this one, and call its Create method. wxObject *CreateResource(wxXmlNode *node, wxObject *parent, wxObject *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; // Sets the parent resource. void SetParentResource(wxXmlResource *res) { m_resource = res; }protected: wxXmlResource *m_resource; wxArrayString m_styleNames; wxArrayInt m_styleValues; // Variables (filled by CreateResource) wxXmlNode *m_node; wxString m_class; wxObject *m_parent, *m_instance; wxWindow *m_parentAsWindow; // --- Handy methods: // Returns true if the node has a property class equal to classname, // e.g. <object class="wxDialog">. bool IsOfClass(wxXmlNode *node, const wxString& classname); // Gets node content from wxXML_ENTITY_NODE // The problem is, <tag>content<tag> is represented as // wxXML_ENTITY_NODE name="tag", content="" // |-- wxXML_TEXT_NODE or // wxXML_CDATA_SECTION_NODE name="" content="content" wxString GetNodeContent(wxXmlNode *node); // Check to see if a parameter exists. bool HasParam(const wxString& param); // Finds the node or returns NULL. wxXmlNode *GetParamNode(const wxString& param); // Finds the parameter value or returns the empty string. wxString GetParamValue(const wxString& param); // 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(); // Gets style flags from text in form "flag | flag2| flag3 |..." // Only understands flags added with AddStyle int GetStyle(const wxString& param = wxT("style"), int defaults = 0); // Gets text from param and does some conversions: // - replaces \n, \r, \t by respective chars (according to C syntax) // - replaces _ by & and __ by _ (needed for _File => &File because of XML) // - calls wxGetTranslations (unless disabled in wxXmlResource) wxString GetText(const wxString& param, bool translate = true); // Returns the XRCID. int GetID(); // Returns the resource name. wxString GetName(); // Gets a bool flag (1, t, yes, on, true are true, everything else is false). bool GetBool(const wxString& param, bool defaultv = false); // Gets an integer value from the parameter. long GetLong(const wxString& param, long defaultv = 0); // Gets a float value from the parameter. float GetFloat(const wxString& param, float defaultv = 0); // Gets colour in HTML syntax (#RRGGBB). wxColour GetColour(const wxString& param, const wxColour& defaultv = wxNullColour); // Gets the size (may be in dialog units). wxSize GetSize(const wxString& param = wxT("size"), wxWindow *windowToUse = NULL); // Gets the position (may be in dialog units). wxPoint GetPosition(const wxString& param = wxT("pos")); // Gets a dimension (may be in dialog units). wxCoord GetDimension(const wxString& param, wxCoord defaultv = 0, wxWindow *windowToUse = NULL); // Gets a bitmap. wxBitmap GetBitmap(const wxString& param = wxT("bitmap"), const wxArtClient& defaultArtClient = wxART_OTHER, wxSize size = wxDefaultSize); // Gets an icon. wxIcon GetIcon(const wxString& param = wxT("icon"), const wxArtClient& defaultArtClient = wxART_OTHER, wxSize size = wxDefaultSize);#if wxUSE_ANIMATIONCTRL // Gets an animation. wxAnimation GetAnimation(const wxString& param = wxT("animation"));#endif // Gets a font. wxFont GetFont(const wxString& param = wxT("font")); // Sets common window options. void SetupWindow(wxWindow *wnd); // Creates children. void CreateChildren(wxObject *parent, bool this_hnd_only = false); // Helper function. void CreateChildrenPrivately(wxObject *parent, wxXmlNode *rootnode = NULL); // Creates a resource from a node. wxObject *CreateResFromNode(wxXmlNode *node, wxObject *parent, wxObject *instance = NULL) { return m_resource->CreateResFromNode(node, parent, instance); } // helper#if wxUSE_FILESYSTEM wxFileSystem& GetCurFileSystem() { return m_resource->GetCurFileSystem(); }#endif};// Programmer-friendly macros for writing XRC handlers:#define XRC_ADD_STYLE(style) AddStyle(wxT(#style), style)#define XRC_MAKE_INSTANCE(variable, classname) \ classname *variable = NULL; \ if (m_instance) \ variable = wxStaticCast(m_instance, classname); \ if (!variable) \ variable = new classname;// FIXME -- remove this $%^#$%#$@# as soon as Ron checks his changes in!!WXDLLIMPEXP_XRC void wxXmlInitResourceModule();// This class is used to create instances of XRC "object" nodes with "subclass"// property. It is _not_ supposed to be used by XRC users, you should instead// register your subclasses via wxWidgets' RTTI mechanism. This class is useful// only for language bindings developer who need a way to implement subclassing// in wxWidgets ports that don't support wxRTTI (e.g. wxPython).class WXDLLIMPEXP_XRC wxXmlSubclassFactory{public: // Try to create instance of given class and return it, return NULL on // failure: virtual wxObject *Create(const wxString& className) = 0; virtual ~wxXmlSubclassFactory() {}};/* ------------------------------------------------------------------------- Backward compatibility macros. Do *NOT* use, they may disappear in future versions of the XRC library! ------------------------------------------------------------------------- */#if WXWIN_COMPATIBILITY_2_4 #define ADD_STYLE XRC_ADD_STYLE #define wxTheXmlResource wxXmlResource::Get() #define XMLID XRCID #define XMLCTRL XRCCTRL #define GetXMLID GetXRCID#endif#endif // wxUSE_XRC#endif // _WX_XMLRES_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -