]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/utils/wxrcedit/nodehnd.h
RC parse fixes from Michael Shamgar
[wxWidgets.git] / contrib / utils / wxrcedit / nodehnd.h
index fda59e050aca523ac9d9f3ce8a278e221d52976b..81d060ade147bf5cf9909ca2c21996aa100e9233 100644 (file)
@@ -7,7 +7,7 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
     #pragma interface "nodehnd.h"
 #endif
 
 #define _NODEHND_H_
 
 
-class wxXmlNode;
-class wxList;
-class wxListCtrl;
+class WXDLLEXPORT wxXmlNode;
+class WXDLLEXPORT wxList;
+class WXDLLEXPORT wxListCtrl;
 
 class EditorFrame;
 
 #include "wx/treectrl.h"
 #include "wx/xml/xml.h"
-#include "prophnd.h"
-
-
-
-enum HandlerType
-{
-    HANDLER_NONE = 0,
-    HANDLER_PANEL = 1,
-    HANDLER_NORMAL,
-    HANDLER_SIZER,
-    HANDLER_SIZERITEM
-};
-
-
-class NodeInfo
-{
-    public:
-        wxString Node;
-        HandlerType Type;   
-        PropertyInfoArray Props;
-        wxArrayString DerivedFrom;
-        bool Abstract;
-        wxString ChildType;
-        int Icon;
-    
-        void Read(const wxString& filename);
-};
-
-WX_DECLARE_OBJARRAY(NodeInfo, NodeInfoArray);
-
+#include "nodesdb.h"
+#include "wx/arrstr.h"
 
 
 
 class NodeHandler : public wxObject
 {
     public:
-        static NodeHandler *CreateFromFile(const wxString& filename, EditorFrame *frame);
-    
-        NodeHandler(EditorFrame *frame, NodeInfo *ni);
+        static NodeHandler *Find(wxXmlNode *node);
+
+        NodeHandler(NodeInfo *ni);
         virtual ~NodeHandler();
-        
+
         virtual bool CanHandle(wxXmlNode *node);
         virtual wxTreeItemId CreateTreeNode(wxTreeCtrl *treectrl, wxTreeItemId parent,
                                     wxXmlNode *node);
-        virtual void CreatePropsList(wxListCtrl *listctrl, wxXmlNode *node);
+        virtual PropertyInfoArray& GetPropsList(wxXmlNode *node);
         virtual int GetTreeIcon(wxXmlNode * WXUNUSED(node)) {return m_NodeInfo->Icon;}
         virtual wxString GetTreeString(wxXmlNode *node);
-        wxPanel *CreatePropEditPanel(wxWindow *parent, wxListCtrl *listctrl, int index);
         wxArrayString& GetChildTypes();
         virtual void InsertNode(wxXmlNode *parent, wxXmlNode *node, wxXmlNode *insert_before = NULL);
         virtual wxXmlNode *GetRealNode(wxXmlNode *node) { return node; }
-        
+
     protected:
+
         NodeInfo *m_NodeInfo;
         wxArrayString m_ChildTypes;
 
-        static PropertyHandler* s_PropHandlers[PROP_TYPES_CNT];
-        static int s_RefCnt;       
-        static NodeInfoArray* s_AllNodes;
-        
-        void CreatePropHandlers();
+        static wxList ms_Handlers;
+        static bool ms_HandlersLoaded;
 };
 
 // wxPanel handler
 class NodeHandlerPanel : public NodeHandler
 {
     public:
-        NodeHandlerPanel(EditorFrame *frame, NodeInfo *ni) : NodeHandler(frame, ni) {}
-        
+        NodeHandlerPanel(NodeInfo *ni) : NodeHandler(ni) {}
+
         virtual wxTreeItemId CreateTreeNode(wxTreeCtrl *treectrl, wxTreeItemId parent,
                                     wxXmlNode *node);
         virtual void InsertNode(wxXmlNode *parent, wxXmlNode *node, wxXmlNode *insert_before = NULL);
@@ -102,8 +71,8 @@ class NodeHandlerPanel : public NodeHandler
 class NodeHandlerSizer : public NodeHandlerPanel
 {
     public:
-        NodeHandlerSizer(EditorFrame *frame, NodeInfo *ni) : NodeHandlerPanel(frame, ni) {}
-        
+        NodeHandlerSizer(NodeInfo *ni) : NodeHandlerPanel(ni) {}
+
         virtual void InsertNode(wxXmlNode *parent, wxXmlNode *node, wxXmlNode *insert_before = NULL);
         virtual int GetTreeIcon(wxXmlNode *node);
 };
@@ -113,14 +82,37 @@ class NodeHandlerSizer : public NodeHandlerPanel
 class NodeHandlerSizerItem : public NodeHandler
 {
     public:
-        NodeHandlerSizerItem(EditorFrame *frame, NodeInfo *ni) : NodeHandler(frame, ni) {}
+        NodeHandlerSizerItem(NodeInfo *ni) : NodeHandler(ni) {}
 
         virtual wxTreeItemId CreateTreeNode(wxTreeCtrl *treectrl, wxTreeItemId parent,
                                     wxXmlNode *node);
-        virtual void CreatePropsList(wxListCtrl *listctrl, wxXmlNode *node);
+        virtual PropertyInfoArray& GetPropsList(wxXmlNode *node);
         virtual wxString GetTreeString(wxXmlNode *node);
         virtual int GetTreeIcon(wxXmlNode *node);
         virtual wxXmlNode *GetRealNode(wxXmlNode *node);
+
+    private:
+        PropertyInfoArray m_dummy;
+};
+
+
+
+// wxNotebook handler
+class NodeHandlerNotebook : public NodeHandlerPanel
+{
+    public:
+        NodeHandlerNotebook(NodeInfo *ni) : NodeHandlerPanel(ni) {}
+
+        virtual void InsertNode(wxXmlNode *parent, wxXmlNode *node, wxXmlNode *insert_before = NULL);
+};
+
+
+// notebook page handler
+class NodeHandlerNotebookPage : public NodeHandlerSizerItem
+{
+    public:
+        NodeHandlerNotebookPage(NodeInfo *ni) :
+                                        NodeHandlerSizerItem(ni) {}
 };
 
 
@@ -129,10 +121,10 @@ class NodeHandlerSizerItem : public NodeHandler
 class NodeHandlerUnknown : public NodeHandler
 {
     public:
-        NodeHandlerUnknown(EditorFrame *frame) : NodeHandler(frame, new NodeInfo) {}
-        
-        virtual bool CanHandle(wxXmlNode *node) { return TRUE; }
+        NodeHandlerUnknown() : NodeHandler(new NodeInfo) {}
+
+        virtual bool CanHandle(wxXmlNode *WXUNUSED(node)) { return true; }
 };
 
 
-#endif 
+#endif