📄 xmlres.h
字号:
// // ATTENTION: Do *NOT* use this function, it will disappear in // wxWindows 2.5.0! It exists *only* as a hack to preserve // binary compatibility in 2.4.x branch. wxObject *CreateResFromNode2(wxXmlNode *node, wxObject *parent, wxObject *instance = NULL, wxXmlResourceHandler *handlerToUse = NULL);private: long m_version; int m_flags; std::list<wxXmlResourceHandler *> m_handlers; std::vector<wxXmlResourceDataRecord *> m_data;#if wxUSE_FILESYSTEM wxFileSystem m_curFileSystem; wxFileSystem& GetCurFileSystem() { return m_curFileSystem; }#endif 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// wxWindows 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"));#ifdef __WXDEBUG__#define XRCCTRL(window, id, type) \ (wxDynamicCast((window).FindWindow(XRCID(id)), type))#else#define XRCCTRL(window, id, type) \ ((type*)((window).FindWindow(XRCID(id))))#endif// wxXmlResourceHandler is an abstract base class for resource handlers// capable of creating a control from an XML node.class wxXmlResourceHandler : public wxObject{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 neccessary 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, *m_instanceAsWindow; // --- 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) { return node->GetPropVal(wxT("class"), wxEmptyString) == 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 understads 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 the integer value from the parameter. long GetLong( const wxString& param, long defaultv = 0 ); // Gets colour in HTML syntax (#RRGGBB). wxColour GetColour(const wxString& param); // Gets the size (may be in dialog units). wxSize GetSize(const wxString& param = wxT("size")); // 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); // 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); // 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!!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 wxWindows' RTTI mechanism. This class is useful// only for language bindings developer who need a way to implement subclassing// in wxWindows ports that don't support wxRTTI (e.g. wxPython).class 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! ------------------------------------------------------------------------- */#define ADD_STYLE XRC_ADD_STYLE#define wxTheXmlResource wxXmlResource::Get()#define XMLID XRCID#define XMLCTRL XRCCTRL#define GetXMLID GetXRCID#endif // _WX_XMLRES_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -