implemented subclass factories for XRC

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2002-09-25 11:10:39 +00:00
parent 5e3012152c
commit 3ce501311b
4 changed files with 152 additions and 20 deletions

View File

@@ -37,6 +37,9 @@ class WXDLLEXPORT wxFrame;
class WXDLLEXPORT wxToolBar;
class WXXMLDLLEXPORT wxXmlResourceHandler;
class WXXMLDLLEXPORT wxXmlSubclassFactory;
class WXXMLDLLEXPORT wxXmlSubclassFactoriesList;
class wxXmlResourceModule;
// These macros indicate current version of XML resources (this information is
@@ -133,6 +136,11 @@ public:
// Removes all handlers
void ClearHandlers();
// Registers subclasses factory for use in XRC. This function is not meant
// for public use, please see the comment above wxXmlSubclassFactory
// definition.
static void AddSubclassFactory(wxXmlSubclassFactory *factory);
// Loads menu from resource. Returns NULL on failure.
wxMenu *LoadMenu(const wxString& name);
@@ -244,6 +252,9 @@ private:
#endif
friend class wxXmlResourceHandler;
friend class wxXmlResourceModule;
static wxXmlSubclassFactoriesList *ms_subclassFactories;
// singleton instance:
static wxXmlResource *ms_instance;
@@ -438,6 +449,20 @@ protected:
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 WXXMLDLLEXPORT 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!