]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_listbox.i
Move setting of mac.listctrl.always_use_generic to wx.PyApp.__init__
[wxWidgets.git] / wxPython / src / _listbox.i
index 5b126a5799bf3e5201acc17c1972e584e56cf448..22960358a414391897da15b7b96abe01681b036c 100644 (file)
@@ -17,7 +17,6 @@
 
 %{
 #include <wx/checklst.h>
-    
 %}
 
 MAKE_CONST_WXSTRING(ListBoxNameStr);
@@ -26,75 +25,107 @@ MAKE_CONST_WXSTRING(ListBoxNameStr);
 //---------------------------------------------------------------------------
 %newgroup
 
+MustHaveApp(wxListBox);
+
 class wxListBox : public wxControlWithItems
 {
 public:
-    %addtofunc wxListBox         "self._setOORInfo(self)"
-    %addtofunc wxListBox()       ""
-
-    wxListBox(wxWindow* parent, wxWindowID id,
-              const wxPoint& pos = wxDefaultPosition,
-              const wxSize& size = wxDefaultSize,
-              int choices=0, wxString* choices_array = NULL,
-              long style = 0,
-              const wxValidator& validator = wxDefaultValidator,
-              const wxString& name = wxPyListBoxNameStr);
-    %name(PreListBox)wxListBox();
-
-    bool Create(wxWindow* parent, wxWindowID id,
-              const wxPoint& pos = wxDefaultPosition,
-              const wxSize& size = wxDefaultSize,
-              int choices=0, wxString* choices_array = NULL,
-              long style = 0,
-              const wxValidator& validator = wxDefaultValidator,
-              const wxString& name = wxPyListBoxNameStr);
+    %pythonAppend wxListBox         "self._setOORInfo(self)"
+    %pythonAppend wxListBox()       ""
+
+    wxListBox(wxWindow* parent,
+            wxWindowID id = -1,
+            const wxPoint& pos = wxDefaultPosition,
+            const wxSize& size = wxDefaultSize,
+            const wxArrayString& choices = wxPyEmptyStringArray,
+            long style = 0,
+            const wxValidator& validator = wxDefaultValidator,
+            const wxString& name = wxPyListBoxNameStr);
+
+//    wxListBox(wxWindow* parent,
+//            wxWindowID id = -1,
+//            const wxPoint& pos = wxDefaultPosition,
+//            const wxSize& size = wxDefaultSize,
+//            int n = 0,
+//            const wxString choices[] = NULL,
+//            long style = 0,
+//            const wxValidator& validator = wxDefaultValidator,
+//            const wxString& name = wxPyListBoxNameStr);
+    %RenameCtor(PreListBox, wxListBox());
+
+    bool Create(wxWindow* parent,
+            wxWindowID id = -1,
+            const wxPoint& pos = wxDefaultPosition,
+            const wxSize& size = wxDefaultSize,
+            const wxArrayString& choices = wxPyEmptyStringArray,
+            long style = 0,
+            const wxValidator& validator = wxDefaultValidator,
+            const wxString& name = wxPyListBoxNameStr);
+
+//    bool Create(wxWindow *parent,
+//            wxWindowID id = -1,
+//            const wxPoint& pos = wxDefaultPosition,
+//            const wxSize& size = wxDefaultSize,
+//            int n = 0,
+//            const wxString choices[] = NULL,
+//            long style = 0,
+//            const wxValidator& validator = wxDefaultValidator,
+//            const wxString& name = wxPyListBoxNameStr);
 
     // all generic methods are in wxControlWithItems...
 
-    %extend {
-        void Insert(const wxString& item, int pos, PyObject* clientData=NULL) {
-            if (clientData) {
+    %extend
+    {
+        void Insert(const wxString& item, int pos, PyObject* clientData = NULL)
+        {
+            if (clientData)
+            {
                 wxPyClientData* data = new wxPyClientData(clientData);
                 self->Insert(item, pos, data);
-            } else
+            }
+            else
                 self->Insert(item, pos);
         }
     }
 
-    void InsertItems(const wxArrayString& items, int pos);
+    void InsertItems(const wxArrayString& items, unsigned int pos);
     void Set(const wxArrayString& items/*, void **clientData = NULL */);
 
     // multiple selection logic
     virtual bool IsSelected(int n) const;
-    virtual void SetSelection(int n, bool select = True);
+    virtual void SetSelection(int n, bool select = true);
     virtual void Select(int n);
+
     void Deselect(int n);
     void DeselectAll(int itemToLeaveSelected = -1);
 
-    virtual bool SetStringSelection(const wxString& s, bool select = True);
+    virtual bool SetStringSelection(const wxString& s, bool select = true);
 
     // works for single as well as multiple selection listboxes (unlike
     // GetSelection which only works for listboxes with single selection)
     //virtual int GetSelections(wxArrayInt& aSelections) const;
     %extend {
-      PyObject* GetSelections() {
-          wxArrayInt lst;
-          self->GetSelections(lst);
-          PyObject *tup = PyTuple_New(lst.GetCount());
-          for(size_t i=0; i<lst.GetCount(); i++) {
-              PyTuple_SetItem(tup, i, PyInt_FromLong(lst[i]));
-          }
-          return tup;
-      }
+        PyObject* GetSelections() {
+            wxPyBlock_t blocked = wxPyBeginBlockThreads();
+            wxArrayInt lst;
+            self->GetSelections(lst);
+            PyObject *tup = PyTuple_New(lst.GetCount());
+            for (size_t i=0; i<lst.GetCount(); i++)
+            {
+                PyTuple_SetItem(tup, i, PyInt_FromLong(lst[i]));
+            }
+            wxPyEndBlockThreads(blocked);
+            return tup;
+        }
     }
 
     // set the specified item at the first visible item or scroll to max
     // range.
     void SetFirstItem(int n);
-    %name(SetFirstItemStr) void SetFirstItem(const wxString& s);
+    %Rename(SetFirstItemStr,  void, SetFirstItem(const wxString& s));
 
-    // ensures that the given item is visible scrolling the listbox if
-    // necessary
+    // ensures that the given item is visible scrolling the listbox
+    // if necessary
     virtual void EnsureVisible(int n);
 
     // a combination of Append() and EnsureVisible(): appends the item to the
@@ -103,6 +134,39 @@ public:
 
     // return True if this listbox is sorted
     bool IsSorted() const;
+
+    // return the index of the item at this position or wxNOT_FOUND
+    int HitTest(const wxPoint& pt) const;
+
+    %extend
+    {
+        void SetItemForegroundColour(int item, const wxColour& c)
+        {
+            %#ifdef __WXMSW__
+                 if (self->GetWindowStyle() & wxLB_OWNERDRAW)
+                     self->GetItem(item)->SetTextColour(c);
+            %#endif
+        }
+        void SetItemBackgroundColour(int item, const wxColour& c)
+        {
+            %#ifdef __WXMSW__
+                 if (self->GetWindowStyle() & wxLB_OWNERDRAW)
+                     self->GetItem(item)->SetBackgroundColour(c);
+            %#endif
+        }
+        void SetItemFont(int item, const wxFont& f)
+        {
+            %#ifdef __WXMSW__
+                 if (self->GetWindowStyle() & wxLB_OWNERDRAW)
+                     self->GetItem(item)->SetFont(f);
+            %#endif
+        }
+    }
+
+    static wxVisualAttributes
+    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+    
+    %property(Selections, GetSelections, doc="See `GetSelections`");
 };
 
 
@@ -110,40 +174,47 @@ public:
 %newgroup
 
 
+MustHaveApp(wxCheckListBox);
+
 // wxCheckListBox: a listbox whose items may be checked
 class wxCheckListBox : public wxListBox
 {
 public:
-    %addtofunc wxListBox         "self._setOORInfo(self)"
-    %addtofunc wxListBox()       ""
-
-    wxCheckListBox(wxWindow *parent, wxWindowID id,
-                   const wxPoint& pos = wxDefaultPosition,
-                   const wxSize& size = wxDefaultSize,
-                   int choices = 0, wxString* choices_array = NULL,
-                   long style = 0,
-                   const wxValidator& validator = wxDefaultValidator,
-                   const wxString& name = wxPyListBoxNameStr);
-    %name(PreCheckListBox)wxCheckListBox();
-
-    bool Create(wxWindow *parent, wxWindowID id,
-                   const wxPoint& pos = wxDefaultPosition,
-                   const wxSize& size = wxDefaultSize,
-                   int choices = 0, wxString* choices_array = NULL,
-                   long style = 0,
-                   const wxValidator& validator = wxDefaultValidator,
-                   const wxString& name = wxPyListBoxNameStr);
-
-    bool  IsChecked(int index);
-    void  Check(int index, int check = True);
-
-#ifndef __WXMAC__
+    %pythonAppend wxCheckListBox         "self._setOORInfo(self)"
+    %pythonAppend wxCheckListBox()       ""
+
+    wxCheckListBox(wxWindow *parent,
+            wxWindowID id = -1,
+            const wxPoint& pos = wxDefaultPosition,
+            const wxSize& size = wxDefaultSize,
+            const wxArrayString& choices = wxPyEmptyStringArray,
+            long style = 0,
+            const wxValidator& validator = wxDefaultValidator,
+            const wxString& name = wxPyListBoxNameStr);
+    %RenameCtor(PreCheckListBox, wxCheckListBox());
+
+    bool Create(wxWindow *parent,
+            wxWindowID id = -1,
+            const wxPoint& pos = wxDefaultPosition,
+            const wxSize& size = wxDefaultSize,
+            const wxArrayString& choices = wxPyEmptyStringArray,
+            long style = 0,
+            const wxValidator& validator = wxDefaultValidator,
+            const wxString& name = wxPyListBoxNameStr);
+
+    bool  IsChecked(unsigned int index);
+    void  Check(unsigned int index, int check = true);
+
+#if defined(__WXMSW__) || defined(__WXGTK__)
     int GetItemHeight();
+#else
+    %pythoncode {
+        def GetItemHeight(self):
+            raise NotImplementedError
+    }
 #endif
 
-    // return the index of the item at this position or wxNOT_FOUND
-    int HitTest(const wxPoint& pt) const;
-    %name(HitTestXY)int HitTest(wxCoord x, wxCoord y) const;
+    %property(ItemHeight, GetItemHeight, doc="See `GetItemHeight`");
 };
 
 //---------------------------------------------------------------------------