]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/utils/wxrcedit/nodehnd.h
added wxFrame::IsMDIChild() (msw only, protected)
[wxWidgets.git] / contrib / utils / wxrcedit / nodehnd.h
index 661e360b052818147500f964baf833b094522f48..25280b3ca1d7b7dbb6674ad57c52e8d94587f991 100644 (file)
@@ -23,35 +23,7 @@ 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"
 
 
 
@@ -59,38 +31,35 @@ WX_DECLARE_OBJARRAY(NodeInfo, NodeInfoArray);
 class NodeHandler : public wxObject
 {
     public:
-        static NodeHandler *CreateFromFile(const wxString& filename, EditorFrame *frame);
+        static NodeHandler *Find(wxXmlNode *node);
     
-        NodeHandler(EditorFrame *frame, NodeInfo *ni);
+        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);
@@ -102,7 +71,7 @@ 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,7 +121,7 @@ class NodeHandlerSizerItem : public NodeHandler
 class NodeHandlerUnknown : public NodeHandler
 {
     public:
-        NodeHandlerUnknown(EditorFrame *frame) : NodeHandler(frame, new NodeInfo) {}
+        NodeHandlerUnknown() : NodeHandler(new NodeInfo) {}
         
         virtual bool CanHandle(wxXmlNode *node) { return TRUE; }
 };