]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_treectrl.i
bug fixes for using wxTransientPopupWindow and wxDP_ALLOWNONE support from Andreas...
[wxWidgets.git] / wxPython / src / _treectrl.i
index 4341ad5cf7b6bf2ca356d9c7d8d26210a92c8554..e9f9f741dd2311ba0965ed46adc50fcdb2a9df2d 100644 (file)
@@ -96,8 +96,8 @@ public:
     bool IsOk() const;
 
     %extend {
-        bool __eq__(const wxTreeItemId* other) { return other ? (*self == *other) : False; }
-        bool __ne__(const wxTreeItemId* other) { return other ? (*self != *other) : True;  }
+        bool __eq__(const wxTreeItemId* other) { return other ? (*self == *other) : false; }
+        bool __ne__(const wxTreeItemId* other) { return other ? (*self != *other) : true;  }
     }
 
     void*  m_pItem;
@@ -117,7 +117,8 @@ public:
 // Python code should rarely be neccessary.  Just use the GetItemPyData and
 // SetItemPyData tree methods instead of the GetItemData and SetItemData
 // methods.
-%name(TreeItemData) class wxPyTreeItemData {
+%rename(TreeItemData) wxPyTreeItemData;
+class wxPyTreeItemData {
 public:
     wxPyTreeItemData(PyObject* obj = NULL);
 
@@ -188,7 +189,7 @@ public:
 %constant wxEventType wxEVT_COMMAND_TREE_END_DRAG;
 %constant wxEventType wxEVT_COMMAND_TREE_STATE_IMAGE_CLICK;
 %constant wxEventType wxEVT_COMMAND_TREE_ITEM_GETTOOLTIP;
-
+%constant wxEventType wxEVT_COMMAND_TREE_ITEM_MENU;
 
 %pythoncode {
 
@@ -212,6 +213,7 @@ EVT_TREE_ITEM_MIDDLE_CLICK = wx.PyEventBinder(wxEVT_COMMAND_TREE_ITEM_MIDDLE_CLI
 EVT_TREE_END_DRAG          = wx.PyEventBinder(wxEVT_COMMAND_TREE_END_DRAG         , 1)
 EVT_TREE_STATE_IMAGE_CLICK = wx.PyEventBinder(wxEVT_COMMAND_TREE_STATE_IMAGE_CLICK, 1)
 EVT_TREE_ITEM_GETTOOLTIP   = wx.PyEventBinder(wxEVT_COMMAND_TREE_ITEM_GETTOOLTIP,   1)
+EVT_COMMAND_TREE_ITEM_MENU = wx.PyEventBinder(wxEVT_COMMAND_TREE_ITEM_MENU,         1)    
 }
 
 
@@ -288,8 +290,8 @@ public:
         bool found;
         bool blocked = wxPyBeginBlockThreads();
         if ((found = wxPyCBH_findCallback(m_myInst, "OnCompareItems"))) {
-            PyObject *o1 = wxPyConstructObject((void*)&item1, wxT("wxTreeItemId"), False);
-            PyObject *o2 = wxPyConstructObject((void*)&item2, wxT("wxTreeItemId"), False);
+            PyObject *o1 = wxPyConstructObject((void*)&item1, wxT("wxTreeItemId"), false);
+            PyObject *o2 = wxPyConstructObject((void*)&item2, wxT("wxTreeItemId"), false);
             rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OO)",o1,o2));
             Py_DECREF(o1);
             Py_DECREF(o2);
@@ -309,10 +311,14 @@ IMPLEMENT_ABSTRACT_CLASS(wxPyTreeCtrl, wxTreeCtrl);
 
 
  
-%name(TreeCtrl)class wxPyTreeCtrl : public wxControl {
+MustHaveApp(wxPyTreeCtrl);
+
+%rename(TreeCtrl) wxPyTreeCtrl;
+class wxPyTreeCtrl : public wxControl {
 public:
     %pythonAppend wxPyTreeCtrl         "self._setOORInfo(self);self._setCallbackInfo(self, TreeCtrl)"
     %pythonAppend wxPyTreeCtrl()       ""
+    %typemap(out) wxPyTreeCtrl*;    // turn off this typemap
    
     wxPyTreeCtrl(wxWindow *parent, wxWindowID id = -1,
                  const wxPoint& pos = wxDefaultPosition,
@@ -320,7 +326,10 @@ public:
                  long style = wxTR_DEFAULT_STYLE,
                  const wxValidator& validator = wxDefaultValidator,
                  const wxString& name = wxPyTreeCtrlNameStr);
-    %name(PreTreeCtrl)wxPyTreeCtrl();
+    %RenameCtor(PreTreeCtrl, wxPyTreeCtrl());
+
+    // Turn it back on again
+    %typemap(out) wxPyTreeCtrl* { $result = wxPyMake_wxObject($1, $owner); }
 
     bool Create(wxWindow *parent, wxWindowID id = -1,
                 const wxPoint& pos = wxDefaultPosition,
@@ -444,15 +453,13 @@ public:
     // allow the user to expand the items which don't have any children now
     // - but instead add them only when needed, thus minimizing memory
     // usage and loading time.
-    void SetItemHasChildren(const wxTreeItemId& item, bool has = True);
+    void SetItemHasChildren(const wxTreeItemId& item, bool has = true);
 
     // the item will be shown in bold
-    void SetItemBold(const wxTreeItemId& item, bool bold = True);
+    void SetItemBold(const wxTreeItemId& item, bool bold = true);
 
-#ifdef __WXMSW__
     // the item will be shown with a drop highlight
-    void SetItemDropHighlight(const wxTreeItemId& item, bool highlight = True);
-#endif
+    void SetItemDropHighlight(const wxTreeItemId& item, bool highlight = true);
     
     // set the items text colour
     void SetItemTextColour(const wxTreeItemId& item, const wxColour& col);
@@ -483,7 +490,7 @@ public:
     // if 'recursively' is False, only immediate children count, otherwise
     // the returned number is the number of all items in this branch
     size_t GetChildrenCount(const wxTreeItemId& item,
-                            bool recursively = True) /*const*/;
+                            bool recursively = true) /*const*/;
 
 
 
@@ -508,8 +515,9 @@ public:
             num = self->GetSelections(array);
             for (x=0; x < num; x++) {
                 wxTreeItemId *tii = new wxTreeItemId(array.Item(x));
-                PyObject* item = wxPyConstructObject((void*)tii, wxT("wxTreeItemId"), True);
+                PyObject* item = wxPyConstructObject((void*)tii, wxT("wxTreeItemId"), true);
                 PyList_Append(rval, item);
+                Py_DECREF(item);
             }
             wxPyEndBlockThreads(blocked);
             return rval;
@@ -521,6 +529,8 @@ public:
     wxTreeItemId GetItemParent(const wxTreeItemId& item) const;
 
 
+    // NOTE: These are a copy of the same methods in gizmos.i, be sure to
+    // update both at the same time.  (Or find a good way to refactor!)
     %extend {
         // Get the first child of this item.  Returns a wxTreeItemId and an
         // opaque "cookie" value that should be passed to GetNextChild in
@@ -530,7 +540,7 @@ public:
             wxTreeItemId* ritem = new wxTreeItemId(self->GetFirstChild(item, cookie));
             bool blocked = wxPyBeginBlockThreads();
             PyObject* tup = PyTuple_New(2);
-            PyTuple_SET_ITEM(tup, 0, wxPyConstructObject(ritem, wxT("wxTreeItemId"), True));
+            PyTuple_SET_ITEM(tup, 0, wxPyConstructObject(ritem, wxT("wxTreeItemId"), true));
             PyTuple_SET_ITEM(tup, 1, wxPyMakeSwigPtr(cookie, wxT("void")));
             wxPyEndBlockThreads(blocked);
             return tup;
@@ -545,7 +555,7 @@ public:
             wxTreeItemId* ritem = new wxTreeItemId(self->GetNextChild(item, cookie));
             bool blocked = wxPyBeginBlockThreads();
             PyObject* tup = PyTuple_New(2);
-            PyTuple_SET_ITEM(tup, 0, wxPyConstructObject(ritem, wxT("wxTreeItemId"), True));
+            PyTuple_SET_ITEM(tup, 0, wxPyConstructObject(ritem, wxT("wxTreeItemId"), true));
             PyTuple_SET_ITEM(tup, 1, wxPyMakeSwigPtr(cookie, wxT("void")));
             wxPyEndBlockThreads(blocked);
             return tup;
@@ -592,12 +602,12 @@ public:
                             wxPyTreeItemData *data = NULL);
 
     // insert a new item before the one with the given index
-    %name(InsertItemBefore)
-    wxTreeItemId InsertItem(const wxTreeItemId& parent,
+    %Rename(InsertItemBefore, 
+    wxTreeItemId, InsertItem(const wxTreeItemId& parent,
                             size_t index,
                             const wxString& text,
                             int image = -1, int selectedImage = -1,
-                            wxPyTreeItemData *data = NULL);
+                            wxPyTreeItemData *data = NULL));
 
         // insert a new item in as the last child of the parent
     wxTreeItemId AppendItem(const wxTreeItemId& parent,
@@ -642,7 +652,7 @@ public:
     void UnselectAll();
 
     // select this item
-    void SelectItem(const wxTreeItemId& item, bool select = True);
+    void SelectItem(const wxTreeItemId& item, bool select = true);
 
     // toggle the item selection
     void ToggleItemSelection(const wxTreeItemId& item);
@@ -669,7 +679,7 @@ public:
 
 #ifdef __WXMSW__
     // end editing and accept or discard the changes to item label
-    void EndEditLabel(const wxTreeItemId& item, bool discardChanges = False);
+    void EndEditLabel(const wxTreeItemId& item, bool discardChanges = false);
 #endif
 
 
@@ -693,12 +703,12 @@ value is set to a bitmask of wxTREE_HITTEST_xxx constants.
 
     %extend {
         // get the bounding rectangle of the item (or of its label only)
-        PyObject* GetBoundingRect(const wxTreeItemId& item,  bool textOnly = False) {
+        PyObject* GetBoundingRect(const wxTreeItemId& item,  bool textOnly = false) {
              wxRect rect;
             if (self->GetBoundingRect(item, rect, textOnly)) {
                 bool blocked = wxPyBeginBlockThreads();
                 wxRect* r = new wxRect(rect);
-                PyObject* val = wxPyConstructObject((void*)r, wxT("wxRect"), True);
+                PyObject* val = wxPyConstructObject((void*)r, wxT("wxRect"), true);
                 wxPyEndBlockThreads(blocked);
                 return val;
             }
@@ -707,6 +717,11 @@ value is set to a bitmask of wxTREE_HITTEST_xxx constants.
         }
     }
 
+#ifdef __WXMSW__
+    // set/get the item state.image (state == -1 means cycle to the next one)
+    void SetState(const wxTreeItemId& node, int state);
+    int GetState(const wxTreeItemId& node);
+#endif
 
     static wxVisualAttributes
     GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);