///////////////////////////////////////////////////////////////////////////// // Name: xrc.i // Purpose: Wrappers for the XML based Resource system // // Author: Robin Dunn // // Created: 4-June-2001 // RCS-ID: $Id$ // Copyright: (c) 2001 by Total Control Software // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// %module xrc %{ #include "export.h" #include "wx/xrc/xmlres.h" %} //--------------------------------------------------------------------------- %include typemaps.i %include my_typemaps.i %extern wx.i %extern windows.i %extern _defs.i %extern events.i %extern controls.i //--------------------------------------------------------------------------- // This class holds XML resources from one or more .xml files // (or derived forms, either binary or zipped -- see manual for // details). class wxXmlResource : public wxObject { public: // Ctor. If use_locale is TRUE, translatable strings are // translated via _(). You can disable it by passing use_locale=FALSE // (for example if you provide resource file for each locale) %name(wxXmlResourceEmpty)wxXmlResource(bool use_locale = TRUE); // TODO, a better %name %addmethods { wxXmlResource(const wxString* filemask, bool use_locale = TRUE) { wxXmlResource* res = new wxXmlResource(*filemask, use_locale); res->InitAllHandlers(); return res; } } ~wxXmlResource(); // Loads resources from XML files that match given filemask. // This method understands VFS (see filesys.h). bool Load(const wxString& filemask); // Initialize handlers for all supported controls/windows. This will // make the executable quite big because it forces linking against // most of wxWin library void InitAllHandlers(); // Initialize only specific handler (or custom handler). Convention says // that handler name is equal to control's name plus 'XmlHandler', e.g. // wxTextCtrlXmlHandler, wxHtmlWindowXmlHandler. XML resource compiler // (xmlres) can create include file that contains initialization code for // all controls used within the resource. void AddHandler(wxXmlResourceHandler *handler); // Removes all handlers void ClearHandlers(); // Loads menu from resource. Returns NULL on failure. wxMenu *LoadMenu(const wxString& name); // Loads menubar from resource. Returns NULL on failure. wxMenuBar *LoadMenuBar(const wxString& name); // Loads toolbar wxToolBar *LoadToolBar(wxWindow *parent, const wxString& name); // Loads dialog. dlg points to parent window (if any). Second form // is used to finish creation of already existing instance (main reason // for this is that you may want to use derived class with new event table) // Example (typical usage): // MyDialog dlg; // wxTheXmlResource->LoadDialog(&dlg, mainFrame, "my_dialog"); // dlg->ShowModal(); wxDialog *LoadDialog(wxWindow *parent, const wxString& name); %name(LoadOnDialog)bool LoadDialog(wxDialog *dlg, wxWindow *parent, const wxString& name); // Loads panel. panel points to parent window (if any). Second form // is used to finish creation of already existing instance. wxPanel *LoadPanel(wxWindow *parent, const wxString& name); %name(LoadOnPanel)bool LoadPanel(wxPanel *panel, wxWindow *parent, const wxString& name); bool LoadFrame(wxFrame* frame, wxWindow *parent, const wxString& name); // Loads bitmap or icon resource from file: wxBitmap LoadBitmap(const wxString& name); wxIcon LoadIcon(const wxString& name); // Attaches unknown control into given panel/window/dialog: // (unknown controls are used in conjunction with ) bool AttachUnknownControl(const wxString& name, wxWindow *control, wxWindow *parent = NULL); // Returns numeric ID that is equivalent to string id used in XML // resource. To be used in event tables // Macro XMLID is provided for convenience static int GetXMLID(const char *str_id); // Returns version info (a.b.c.d = d+ 256*c + 256^2*b + 256^3*a) long GetVersion() const; // Compares resources version to argument. Returns -1 if resources version // is less than the argument, +1 if greater and 0 if they equal. int CompareVersion(int major, int minor, int release, int revision) const; }; //---------------------------------------------------------------------- %readonly // Global instance of resource class. For your convenience. wxXmlResource *wxTheXmlResource; %readwrite //---------------------------------------------------------------------- %pragma(python) code = " def XMLID(str_id): return wxXmlResource_GetXMLID(str_id) def XMLCTRL(window, str_id, *args): return window.FindWindowById(XMLID(str_id)) " //---------------------------------------------------------------------- // TODO: Add wxXmlResourceHandler and etc. //---------------------------------------------------------------------- %init %{ wxClassInfo::CleanUpClasses(); wxClassInfo::InitializeClasses(); wxXmlInitXmlModule(); wxXmlInitResourceModule(); wxTheXmlResource->InitAllHandlers(); %} //---------------------------------------------------------------------------