]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/utils/wxrcedit/nodehnd.h
added test for HitTest(m_dragPoint) bug to the sample
[wxWidgets.git] / contrib / utils / wxrcedit / nodehnd.h
index fda59e050aca523ac9d9f3ce8a278e221d52976b..27b487bbf3d8c5a0ed2ed387a88c350d2217c3f8 100644 (file)
 #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 "wx/xrc/xml.h"
+#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; }
 };