X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4268f79856cbe66b8ad31b86ee183879cede98e3..ba8c1601448fa16d64c4e75a095f1cb037909c5b:/wxPython/src/controls.i?ds=inline diff --git a/wxPython/src/controls.i b/wxPython/src/controls.i index d4d73bba7d..f6146b9e27 100644 --- a/wxPython/src/controls.i +++ b/wxPython/src/controls.i @@ -30,7 +30,6 @@ #ifdef __WXGTK__ #include #endif - %} //---------------------------------------------------------------------- @@ -55,6 +54,34 @@ wxValidator wxDefaultValidator; //---------------------------------------------------------------------- +%{ +//#define DECLARE_DEF_STRING(name) static wxString* wxPy##name + + // Put some wx default wxChar* values into wxStrings. + DECLARE_DEF_STRING(ControlNameStr); + DECLARE_DEF_STRING(ButtonNameStr); + DECLARE_DEF_STRING(CheckBoxNameStr); + DECLARE_DEF_STRING(ChoiceNameStr); + DECLARE_DEF_STRING(ComboBoxNameStr); + DECLARE_DEF_STRING(GaugeNameStr); + DECLARE_DEF_STRING(StaticBoxNameStr); + DECLARE_DEF_STRING(StaticTextNameStr); + DECLARE_DEF_STRING(ListBoxNameStr); + DECLARE_DEF_STRING(TextCtrlNameStr); + DECLARE_DEF_STRING(ScrollBarNameStr); + DECLARE_DEF_STRING(SPIN_BUTTON_NAME); + DECLARE_DEF_STRING(StaticBitmapNameStr); + DECLARE_DEF_STRING(RadioBoxNameStr); + DECLARE_DEF_STRING(RadioButtonNameStr); + DECLARE_DEF_STRING(SliderNameStr); + + wxChar* wxSpinCtrlNameStr = _T("wxSpinCtrl"); + DECLARE_DEF_STRING(SpinCtrlNameStr); + + static const wxString wxPyEmptyString(wxT("")); +%} + +//---------------------------------------------------------------------- // This is the base class for a control or 'widget'. // @@ -65,12 +92,12 @@ public: // wxControl(wxWindow *parent, - wxWindowID id, - const wxPoint& pos=wxDefaultPosition, - const wxSize& size=wxDefaultSize, - long style=0, - const wxValidator& validator=wxDefaultValidator, - const char* name="control"); + wxWindowID id, + const wxPoint& pos=wxDefaultPosition, + const wxSize& size=wxDefaultSize, + long style=0, + const wxValidator& validator=wxDefaultValidator, + const wxString& name=wxPyControlNameStr); // %name(wxPreControl)wxControl(); @@ -82,7 +109,7 @@ public: const wxSize& size=wxDefaultSize, long style=0, const wxValidator& validator=wxDefaultValidator, - const char* name="control"); + const wxString& name=wxPyControlNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreControl:val._setOORInfo(val)" @@ -169,6 +196,9 @@ public: } } + // append several items at once to the control + %name(AppendItems)void Append(const wxArrayString& strings); + }; //---------------------------------------------------------------------- @@ -207,7 +237,7 @@ public: const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "button"); + const wxString& name = wxPyButtonNameStr); // Default constructor %name(wxPreButton)wxButton(); @@ -218,7 +248,7 @@ public: const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "button"); + const wxString& name = wxPyButtonNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreButton:val._setOORInfo(val)" @@ -258,7 +288,7 @@ public: const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, const wxValidator& validator = wxDefaultValidator, - char* name = "button"); + const wxString& name = wxPyButtonNameStr); %name(wxPreBitmapButton)wxBitmapButton(); bool Create(wxWindow* parent, wxWindowID id, const wxBitmap& bitmap, @@ -266,7 +296,7 @@ public: const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, const wxValidator& validator = wxDefaultValidator, - char* name = "button"); + const wxString& name = wxPyButtonNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreBitmapButton:val._setOORInfo(val)" @@ -293,21 +323,22 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& val = wxDefaultValidator, - char* name = "checkBox"); + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxPyCheckBoxNameStr); %name(wxPreCheckBox)wxCheckBox(); bool Create(wxWindow* parent, wxWindowID id, const wxString& label, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& val = wxDefaultValidator, - char* name = "checkBox"); + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxPyCheckBoxNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreCheckBox:val._setOORInfo(val)" bool GetValue(); + bool IsChecked(); void SetValue(const bool state); }; @@ -321,7 +352,7 @@ public: int LCOUNT=0, wxString* choices=NULL, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "choice"); + const wxString& name = wxPyChoiceNameStr); %name(wxPreChoice)wxChoice(); bool Create(wxWindow *parent, wxWindowID id, @@ -330,7 +361,7 @@ public: int LCOUNT=0, wxString* choices=NULL, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "choice"); + const wxString& name = wxPyChoiceNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreChoice:val._setOORInfo(val)" @@ -350,30 +381,32 @@ public: //---------------------------------------------------------------------- -// wxGTK's wxComboBox doesn't derive from wxChoice like wxMSW, or -// even wxControlWithItems, so we have to duplicate the methods -// here... +// wxGTK's wxComboBox doesn't derive from wxChoice like wxMSW, or even +// wxControlWithItems, so we have to duplicate the methods here... +// wxMac's inheritace is weird too so we'll fake it with this one too. -#ifdef __WXGTK__ +#ifndef __WXMSW__ class wxComboBox : public wxControl { public: - wxComboBox(wxWindow* parent, wxWindowID id, char* value = "", + wxComboBox(wxWindow* parent, wxWindowID id, + const wxString& value = wxPyEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, int LCOUNT=0, wxString* choices=NULL, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "comboBox"); + const wxString& name = wxPyComboBoxNameStr); %name(wxPreComboBox)wxComboBox(); - bool Create(wxWindow* parent, wxWindowID id, char* value = "", - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int LCOUNT=0, wxString* choices=NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - char* name = "comboBox"); + bool Create(wxWindow* parent, wxWindowID id, + const wxString& value = wxPyEmptyString, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + int LCOUNT=0, wxString* choices=NULL, + long style = 0, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxPyComboBoxNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreComboBox:val._setOORInfo(val)" @@ -444,27 +477,29 @@ public: -#else // For all but wxGTK - +#else +// MSW's version derives from wxChoice class wxComboBox : public wxChoice { public: - wxComboBox(wxWindow* parent, wxWindowID id, char* value = "", + wxComboBox(wxWindow* parent, wxWindowID id, + const wxString& value = wxPyEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, int LCOUNT=0, wxString* choices=NULL, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "comboBox"); + const wxString& name = wxPyComboBoxNameStr); %name(wxPreComboBox)wxComboBox(); - bool Create(wxWindow* parent, wxWindowID id, char* value = "", + bool Create(wxWindow* parent, wxWindowID id, + const wxString& value = wxPyEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, int LCOUNT=0, wxString* choices=NULL, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "comboBox"); + const wxString& name = wxPyComboBoxNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreComboBox:val._setOORInfo(val)" @@ -496,7 +531,7 @@ public: const wxSize& size = wxDefaultSize, long style = wxGA_HORIZONTAL, const wxValidator& validator = wxDefaultValidator, - char* name = "gauge"); + const wxString& name = wxPyGaugeNameStr); %name(wxPreGauge)wxGauge(); bool Create(wxWindow* parent, wxWindowID id, int range, @@ -504,7 +539,7 @@ public: const wxSize& size = wxDefaultSize, long style = wxGA_HORIZONTAL, const wxValidator& validator = wxDefaultValidator, - char* name = "gauge"); + const wxString& name = wxPyGaugeNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreGauge:val._setOORInfo(val)" @@ -527,14 +562,14 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - char* name = "staticBox"); + const wxString& name = wxPyStaticBoxNameStr); %name(wxPreStaticBox)wxStaticBox(); bool Create(wxWindow* parent, wxWindowID id, const wxString& label, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - char* name = "staticBox"); + const wxString& name = wxPyStaticBoxNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreStaticBox:val._setOORInfo(val)" @@ -550,14 +585,14 @@ public: const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = wxLI_HORIZONTAL, - const char* name = "staticLine" ); + const wxString& name = wxPyStaticTextNameStr); %name(wxPreStaticLine)wxStaticLine(); bool Create( wxWindow *parent, wxWindowID id, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = wxLI_HORIZONTAL, - const char* name = "staticLine" ); + const wxString& name = wxPyStaticTextNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreStaticLine:val._setOORInfo(val)" @@ -572,14 +607,14 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - char* name = "staticText"); + const wxString& name = wxPyStaticTextNameStr); %name(wxPreStaticText)wxStaticText(); bool Create(wxWindow* parent, wxWindowID id, const wxString& label, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - char* name = "staticText"); + const wxString& name = wxPyStaticTextNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreStaticText:val._setOORInfo(val)" @@ -598,7 +633,7 @@ public: int LCOUNT, wxString* choices = NULL, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "listBox"); + const wxString& name = wxPyListBoxNameStr); %name(wxPreListBox)wxListBox(); bool Create(wxWindow* parent, wxWindowID id, @@ -607,7 +642,7 @@ public: int LCOUNT, wxString* choices = NULL, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "listBox"); + const wxString& name = wxPyListBoxNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreListBox:val._setOORInfo(val)" @@ -653,7 +688,7 @@ public: wxString* choices = NULL, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "listBox"); + const wxString& name = wxPyListBoxNameStr); %name(wxPreCheckListBox)wxCheckListBox(); bool Create(wxWindow *parent, wxWindowID id, @@ -663,7 +698,7 @@ public: wxString* choices = NULL, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "listBox"); + const wxString& name = wxPyListBoxNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreCheckListBox:val._setOORInfo(val)" @@ -675,6 +710,11 @@ public: #ifndef __WXMAC__ int GetItemHeight(); #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; + }; //---------------------------------------------------------------------- @@ -718,20 +758,22 @@ public: class wxTextCtrl : public wxControl { public: - wxTextCtrl(wxWindow* parent, wxWindowID id, char* value = "", + wxTextCtrl(wxWindow* parent, wxWindowID id, + const wxString& value = wxPyEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "text"); + const wxString& name = wxPyTextCtrlNameStr); %name(wxPreTextCtrl)wxTextCtrl(); - bool Create(wxWindow* parent, wxWindowID id, char* value = "", + bool Create(wxWindow* parent, wxWindowID id, + const wxString& value = wxPyEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "text"); + const wxString& name = wxPyTextCtrlNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreTextCtrl:val._setOORInfo(val)" @@ -740,6 +782,8 @@ public: wxString GetValue() const; void SetValue(const wxString& value); + wxString GetRange(long from, long to); + int GetLineLength(long lineNo) const; wxString GetLineText(long lineNo) const; int GetNumberOfLines() const; @@ -757,7 +801,7 @@ public: // load/save the controls contents from/to the file bool LoadFile(const wxString& file); - bool SaveFile(const wxString& file = wxEmptyString); + bool SaveFile(const wxString& file = wxPyEmptyString); // clears the dirty flag void DiscardEdits(); @@ -771,6 +815,10 @@ public: void WriteText(const wxString& text); void AppendText(const wxString& text); + // insert the character which would have resulted from this key event, + // return TRUE if anything has been inserted + bool EmulateKeyPress(const wxKeyEvent& event); + // text control under some platforms supports the text styles: these // methods allow to apply the given text style to the given selection or to // set/get the style which will be used for all appended text @@ -782,7 +830,10 @@ public: // considering all its contents as a single strings) and (x, y) coordinates // which represent column and line. long XYToPosition(long x, long y) const; - bool PositionToXY(long pos, long *OUTPUT, long *OUTPUT) const; + void PositionToXY(long pos, long *OUTPUT, long *OUTPUT) const; + + //bool PositionToXY(long pos, long *OUTPUT, long *OUTPUT) const; + // TODO: check return value, raise exception. void ShowPosition(long pos); @@ -812,6 +863,10 @@ public: void SelectAll(); void SetEditable(bool editable); + bool IsSingleLine(); + bool IsMultiLine(); + + %addmethods { void write(const wxString& text) { self->AppendText(text); @@ -821,7 +876,7 @@ public: // TODO: replace this when the method is really added to wxTextCtrl %addmethods { wxString GetString(long from, long to) { - return self->GetValue().Mid(from, to-from); + return self->GetValue().Mid(from, to - from); } } }; @@ -835,7 +890,7 @@ public: const wxSize& size = wxDefaultSize, long style = wxSB_HORIZONTAL, const wxValidator& validator = wxDefaultValidator, - char* name = "scrollBar"); + const wxString& name = wxPyScrollBarNameStr); %name(wxPreScrollBar)wxScrollBar(); bool Create(wxWindow* parent, wxWindowID id = -1, @@ -843,7 +898,7 @@ public: const wxSize& size = wxDefaultSize, long style = wxSB_HORIZONTAL, const wxValidator& validator = wxDefaultValidator, - char* name = "scrollBar"); + const wxString& name = wxPyScrollBarNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreScrollBar:val._setOORInfo(val)" @@ -870,14 +925,14 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSP_HORIZONTAL, - char* name = "spinButton"); + const wxString& name = wxPySPIN_BUTTON_NAME); %name(wxPreSpinButton)wxSpinButton(); bool Create(wxWindow* parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSP_HORIZONTAL, - char* name = "spinButton"); + const wxString& name = wxPySPIN_BUTTON_NAME); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreSpinButton:val._setOORInfo(val)" @@ -898,7 +953,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - char* name = "staticBitmap"); + const wxString& name = wxPyStaticBitmapNameStr); %name(wxPreStaticBitmap)wxStaticBitmap(); bool Create(wxWindow* parent, wxWindowID id, @@ -906,7 +961,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - char* name = "staticBitmap"); + const wxString& name = wxPyStaticBitmapNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreStaticBitmap:val._setOORInfo(val)" @@ -928,7 +983,7 @@ public: int majorDimension = 0, long style = wxRA_HORIZONTAL, const wxValidator& validator = wxDefaultValidator, - char* name = "radioBox"); + const wxString& name = wxPyRadioBoxNameStr); %name(wxPreRadioBox)wxRadioBox(); bool Create(wxWindow* parent, wxWindowID id, @@ -939,7 +994,7 @@ public: int majorDimension = 0, long style = wxRA_HORIZONTAL, const wxValidator& validator = wxDefaultValidator, - char* name = "radioBox"); + const wxString& name = wxPyRadioBoxNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreRadioBox:val._setOORInfo(val)" @@ -949,18 +1004,15 @@ public: int FindString(const wxString& string); wxString GetString(int n); - -#ifdef __WXGTK__ - %name(GetItemLabel)wxString GetLabel( int item ); - %name(SetItemLabel)void SetLabel( int item, const wxString& label ); -#else void SetString(int n, const wxString& label); %pragma(python) addtoclass = " GetItemLabel = GetString SetItemLabel = SetString " +#ifndef __WXGTK__ int GetColumnCount(); int GetRowCount(); + int GetNextItem(int item, wxDirection dir, long style); #endif int GetSelection(); @@ -984,7 +1036,7 @@ public: const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "radioButton"); + const wxString& name = wxPyRadioButtonNameStr); %name(wxPreRadioButton)wxRadioButton(); bool Create(wxWindow* parent, wxWindowID id, @@ -993,7 +1045,7 @@ public: const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, - char* name = "radioButton"); + const wxString& name = wxPyRadioButtonNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreRadioButton:val._setOORInfo(val)" @@ -1012,7 +1064,7 @@ public: const wxSize& size = wxDefaultSize, long style = wxSL_HORIZONTAL, const wxValidator& validator = wxDefaultValidator, - char* name = "slider"); + const wxString& name = wxPySliderNameStr); %name(wxPreSlider)wxSlider(); bool Create(wxWindow* parent, wxWindowID id, @@ -1021,7 +1073,7 @@ public: const wxSize& size = wxDefaultSize, long style = wxSL_HORIZONTAL, const wxValidator& validator = wxDefaultValidator, - char* name = "slider"); + const wxString& name = wxPySliderNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreSlider:val._setOORInfo(val)" @@ -1054,22 +1106,22 @@ class wxSpinCtrl : public wxSpinButton { public: wxSpinCtrl(wxWindow *parent, wxWindowID id = -1, - const char* value = "", + const wxString& value = wxPyEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSP_ARROW_KEYS, int min = 0, int max = 100, int initial = 0, - const char* name = "wxSpinCtrl"); + const wxString& name = wxPySpinCtrlNameStr); %name(wxPreSpinCtrl)wxSpinCtrl(); bool Create(wxWindow *parent, wxWindowID id = -1, - const char* value = "", + const wxString& value = wxPyEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSP_ARROW_KEYS, int min = 0, int max = 100, int initial = 0, - const char* name = "wxSpinCtrl"); + const wxString& name = wxPySpinCtrlNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreSpinCtrl:val._setOORInfo(val)" @@ -1079,7 +1131,14 @@ public: int GetValue(); void SetRange(int min, int max); void SetValue(int value); - +#ifdef __WXGTK__ + %addmethods { + void SetSelection(long from, long to) { + } + } +#else + void SetSelection(long from, long to); +#endif }; @@ -1097,7 +1156,7 @@ public: const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, - const char* name = "toggle"); + const wxString& name = wxPyCheckBoxNameStr); %name(wxPreToggleButton)wxToggleButton(); bool Create(wxWindow *parent, @@ -1107,7 +1166,7 @@ public: const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, - const char* name = "toggle"); + const wxString& name = wxPyCheckBoxNameStr); %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" %pragma(python) addtomethod = "wxPreToggleButton:val._setOORInfo(val)" @@ -1119,6 +1178,7 @@ public: }; #endif + //---------------------------------------------------------------------- //---------------------------------------------------------------------- //----------------------------------------------------------------------