#include "helpers.h"
#include <wx/sashwin.h>
#include <wx/laywin.h>
+#ifndef __WXMAC__
+#include <wx/popupwin.h>
+#include <wx/tipwin.h>
+#endif
%}
//----------------------------------------------------------------------
%pragma(python) code = "import wx"
+//----------------------------------------------------------------------
+
+%{
+ // Put some wx default wxChar* values into wxStrings.
+ static const wxChar* wxSashNameStr = wxT("sashWindow");
+ DECLARE_DEF_STRING(SashNameStr);
+ static const wxChar* wxSashLayoutNameStr = wxT("layoutWindow");
+ DECLARE_DEF_STRING(SashLayoutNameStr);
+%}
//---------------------------------------------------------------------------
enum wxSashEdgePosition {
enum {
wxEVT_SASH_DRAGGED,
wxSW_3D,
+ wxSW_3DSASH,
+ wxSW_3DBORDER,
+ wxSW_BORDER
};
enum wxSashDragStatus
class wxSashEvent : public wxCommandEvent {
public:
+ wxSashEvent(int id = 0, wxSashEdgePosition edge = wxSASH_NONE);
+
void SetEdge(wxSashEdgePosition edge);
wxSashEdgePosition GetEdge();
void SetDragRect(const wxRect& rect);
class wxSashWindow: public wxWindow {
public:
wxSashWindow(wxWindow* parent, wxWindowID id,
- const wxPoint& pos = wxPyDefaultPosition,
- const wxSize& size = wxPyDefaultSize,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
long style = wxCLIP_CHILDREN | wxSW_3D,
- const char* name = "sashWindow");
+ const wxString& name = wxPySashNameStr);
+ %name(wxPreSashWindow)wxSashWindow();
- %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)"
+ bool Create(wxWindow* parent, wxWindowID id,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxCLIP_CHILDREN | wxSW_3D,
+ const wxString& name = wxPySashNameStr);
+
+ %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ %pragma(python) addtomethod = "wxPreSashWindow:val._setOORInfo(val)"
bool GetSashVisible(wxSashEdgePosition edge);
int GetDefaultBorderSize();
class wxQueryLayoutInfoEvent: public wxEvent {
public:
+ wxQueryLayoutInfoEvent(wxWindowID id = 0);
void SetRequestedLength(int length);
int GetRequestedLength();
class wxCalculateLayoutEvent: public wxEvent {
public:
+ wxCalculateLayoutEvent(wxWindowID id = 0);
+
void SetFlags(int flags);
int GetFlags();
void SetRect(const wxRect& rect);
class wxSashLayoutWindow: public wxSashWindow {
public:
wxSashLayoutWindow(wxWindow* parent, wxWindowID id,
- const wxPoint& pos = wxPyDefaultPosition,
- const wxSize& size = wxPyDefaultSize,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
long style = wxCLIP_CHILDREN | wxSW_3D,
- const char* name = "layoutWindow");
+ const wxString& name = wxPySashLayoutNameStr);
+ %name(wxPreSashLayoutWindow)wxSashLayoutWindow();
- %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)"
- %pragma(python) addtomethod = "__init__:#wx._checkForCallback(self, 'OnCalculateLayout', wxEVT_CALCULATE_LAYOUT)"
- %pragma(python) addtomethod = "__init__:#wx._checkForCallback(self, 'OnQueryLayoutInfo', wxEVT_QUERY_LAYOUT_INFO)"
+ bool Create(wxWindow* parent, wxWindowID id,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxCLIP_CHILDREN | wxSW_3D,
+ const wxString& name = wxPySashLayoutNameStr);
+ %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ %pragma(python) addtomethod = "wxPreSashLayoutWindow:val._setOORInfo(val)"
wxLayoutAlignment GetAlignment();
wxLayoutOrientation GetOrientation();
//---------------------------------------------------------------------------
-class wxLayoutAlgorithm {
+class wxLayoutAlgorithm : public wxObject {
public:
wxLayoutAlgorithm();
~wxLayoutAlgorithm();
};
+//---------------------------------------------------------------------------
+#ifndef __WXMAC__
+
+// wxPopupWindow: a special kind of top level window used for popup menus,
+// combobox popups and such.
+class wxPopupWindow : public wxWindow {
+public:
+ wxPopupWindow(wxWindow *parent, int flags = wxBORDER_NONE);
+ %name(wxPrePopupWindow)wxPopupWindow();
+
+ %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ %pragma(python) addtomethod = "wxPrePopupWindow:val._setOORInfo(val)"
+
+ bool Create(wxWindow *parent, int flags = wxBORDER_NONE);
+
+ // the point must be given in screen coordinates!
+ void Position(const wxPoint& ptOrigin,
+ const wxSize& size);
+};
+
+
+%{
+class wxPyPopupTransientWindow : public wxPopupTransientWindow
+{
+public:
+ wxPyPopupTransientWindow() : wxPopupTransientWindow() {}
+ wxPyPopupTransientWindow(wxWindow* parent, int style = wxBORDER_NONE)
+ : wxPopupTransientWindow(parent, style) {}
+
+ DEC_PYCALLBACK_BOOL_ME(ProcessLeftDown);
+ DEC_PYCALLBACK__(OnDismiss);
+ DEC_PYCALLBACK_BOOL_(CanDismiss);
+ PYPRIVATE;
+};
+
+IMP_PYCALLBACK_BOOL_ME(wxPyPopupTransientWindow, wxPopupTransientWindow, ProcessLeftDown);
+IMP_PYCALLBACK__(wxPyPopupTransientWindow, wxPopupTransientWindow, OnDismiss);
+IMP_PYCALLBACK_BOOL_(wxPyPopupTransientWindow, wxPopupTransientWindow, CanDismiss);
+%}
+
+
+
+// wxPopupTransientWindow: a wxPopupWindow which disappears automatically
+// when the user clicks mouse outside it or if it loses focus in any other way
+%name(wxPopupTransientWindow) class wxPyPopupTransientWindow : public wxPopupWindow
+{
+public:
+ wxPyPopupTransientWindow(wxWindow *parent, int style = wxBORDER_NONE);
+ %name(wxPrePopupTransientWindow)wxPyPopupTransientWindow();
+
+ void _setCallbackInfo(PyObject* self, PyObject* _class);
+ %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPopupTransientWindow)"
+
+ %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+ %pragma(python) addtomethod = "wxPrePopupTransientWindow:val._setOORInfo(val)"
+
+ // popup the window (this will show it too) and keep focus at winFocus
+ // (or itself if it's NULL), dismiss the popup if we lose focus
+ virtual void Popup(wxWindow *focus = NULL);
+
+ // hide the window
+ virtual void Dismiss();
+};
+
//---------------------------------------------------------------------------
+class wxTipWindow : public wxPyPopupTransientWindow
+{
+public:
+ %addmethods {
+ wxTipWindow(wxWindow *parent,
+ const wxString* text,
+ wxCoord maxLength = 100,
+ wxRect* rectBound = NULL) {
+ wxString tmp = *text;
+ return new wxTipWindow(parent, tmp, maxLength, NULL, rectBound);
+ }
+ }
+
+ %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+
+ // If rectBound is not NULL, the window will disappear automatically when
+ // the mouse leave the specified rect: note that rectBound should be in the
+ // screen coordinates!
+ void SetBoundingRect(const wxRect& rectBound);
+
+ // Hide and destroy the window
+ void Close();
+};
//---------------------------------------------------------------------------
+
+#endif