1 /////////////////////////////////////////////////////////////////////////////
 
   3 // Purpose:     SWIG interface for wxPanel and wxScrolledWindow
 
   7 // Created:     24-June-1997
 
   9 // Copyright:   (c) 2003 by Total Control Software
 
  10 // Licence:     wxWindows license
 
  11 /////////////////////////////////////////////////////////////////////////////
 
  16 //---------------------------------------------------------------------------
 
  21 //---------------------------------------------------------------------------
 
  27 class wxPanel : public wxWindow
 
  30     %pythonAppend wxPanel         "self._setOORInfo(self)"
 
  31     %pythonAppend wxPanel()       ""
 
  32     %typemap(out) wxPanel*;    // turn off this typemap
 
  34     wxPanel(wxWindow* parent,
 
  35             const wxWindowID id=-1,
 
  36             const wxPoint& pos = wxDefaultPosition,
 
  37             const wxSize& size = wxDefaultSize,
 
  38             long style = wxTAB_TRAVERSAL | wxNO_BORDER,
 
  39             const wxString& name = wxPyPanelNameStr);
 
  40     %RenameCtor(PrePanel, wxPanel());
 
  42     // Turn it back on again
 
  43     %typemap(out) wxPanel* { $result = wxPyMake_wxObject($1, $owner); }
 
  45     bool Create(wxWindow* parent,
 
  46                 const wxWindowID id=-1,
 
  47                 const wxPoint& pos = wxDefaultPosition,
 
  48                 const wxSize& size = wxDefaultSize,
 
  49                 long style = wxTAB_TRAVERSAL | wxNO_BORDER,
 
  50                 const wxString& name = wxPyPanelNameStr);
 
  56         virtual void , SetFocus(),
 
  57         "Overrides `wx.Window.SetFocus`.  This method uses the (undocumented)
 
  58 mix-in class wxControlContainer which manages the focus and TAB logic
 
  59 for controls which usually have child controls.  In practice, if you
 
  60 call this method and the panel has at least one child window, then the
 
  61 focus will be given to the child window.", "
 
  62 :see: `wx.FocusEvent`, `wx.Window.SetFocus`, `SetFocusIgnoringChildren`");
 
  66         virtual void , SetFocusIgnoringChildren(),
 
  67         "In contrast to `SetFocus` (see above) this will set the focus to the
 
  68 panel even of there are child windows in the panel. This is only
 
  72     static wxVisualAttributes
 
  73     GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 
  76 //---------------------------------------------------------------------------
 
  80 // TODO: Add wrappers for the wxScrollHelper class, make wxScrolledWindow
 
  81 //       derive from it and wxPanel.  But what to do about wxGTK where this
 
  84 MustHaveApp(wxScrolledWindow);
 
  86 class wxScrolledWindow : public wxPanel
 
  89     %pythonAppend wxScrolledWindow         "self._setOORInfo(self)"
 
  90     %pythonAppend wxScrolledWindow()       ""
 
  91     %typemap(out) wxScrolledWindow*;    // turn off this typemap
 
  93     wxScrolledWindow(wxWindow* parent,
 
  94                      const wxWindowID id = -1,
 
  95                      const wxPoint& pos = wxDefaultPosition,
 
  96                      const wxSize& size = wxDefaultSize,
 
  97                      long style = wxHSCROLL | wxVSCROLL,
 
  98                      const wxString& name = wxPyPanelNameStr);
 
  99     %RenameCtor(PreScrolledWindow, wxScrolledWindow());
 
 101     // Turn it back on again
 
 102     %typemap(out) wxScrolledWindow* { $result = wxPyMake_wxObject($1, $owner); }
 
 104     bool Create(wxWindow* parent,
 
 105                 const wxWindowID id = -1,
 
 106                 const wxPoint& pos = wxDefaultPosition,
 
 107                 const wxSize& size = wxDefaultSize,
 
 108                 long style = wxHSCROLL | wxVSCROLL,
 
 109                 const wxString& name = wxPyPanelNameStr);
 
 112     // configure the scrolling
 
 113     virtual void SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY,
 
 114                                int noUnitsX, int noUnitsY,
 
 115                                int xPos = 0, int yPos = 0,
 
 116                                bool noRefresh = false );
 
 118     // scroll to the given (in logical coords) position
 
 119     virtual void Scroll(int x, int y);
 
 121     // get/set the page size for this orientation (wxVERTICAL/wxHORIZONTAL)
 
 122     int GetScrollPageSize(int orient) const;
 
 123     void SetScrollPageSize(int orient, int pageSize);
 
 125 //     // get the number of lines the window can scroll, 
 
 126 //     // returns 0 if no scrollbars are there.
 
 127 //     int GetScrollLines( int orient ) const;
 
 129     // Set the x, y scrolling increments.
 
 130     void SetScrollRate( int xstep, int ystep );
 
 133         virtual void, GetScrollPixelsPerUnit(int *OUTPUT, int *OUTPUT) const,
 
 134         "GetScrollPixelsPerUnit() -> (xUnit, yUnit)",
 
 135         "Get the size of one logical unit in physical units.", "");
 
 137     // Enable/disable Windows scrolling in either direction. If True, wxWindows
 
 138     // scrolls the canvas and only a bit of the canvas is invalidated; no
 
 139     // Clear() is necessary. If False, the whole canvas is invalidated and a
 
 140     // Clear() is necessary. Disable for when the scroll increment is used to
 
 141     // actually scroll a non-constant distance
 
 142     virtual void EnableScrolling(bool x_scrolling, bool y_scrolling);
 
 146         virtual void, GetViewStart(int *OUTPUT, int *OUTPUT) const,
 
 147         "GetViewStart() -> (x,y)",
 
 148         "Get the view start", "");
 
 150     // Set the scale factor, used in PrepareDC
 
 151     void SetScale(double xs, double ys);
 
 152     double GetScaleX() const;
 
 153     double GetScaleY() const;
 
 156     %nokwargs CalcScrolledPosition;
 
 157     %nokwargs CalcUnscrolledPosition;
 
 159     DocStr(CalcScrolledPosition, "Translate between scrolled and unscrolled coordinates.", "");
 
 160     wxPoint CalcScrolledPosition(const wxPoint& pt) const;
 
 162         void, CalcScrolledPosition(int x, int y, int *OUTPUT, int *OUTPUT) const,
 
 163         "CalcScrolledPosition(int x, int y) -> (sx, sy)");
 
 166     DocStr(CalcUnscrolledPosition, "Translate between scrolled and unscrolled coordinates.", "");
 
 167     wxPoint CalcUnscrolledPosition(const wxPoint& pt) const;
 
 169         void, CalcUnscrolledPosition(int x, int y, int *OUTPUT, int *OUTPUT) const,
 
 170         "CalcUnscrolledPosition(int x, int y) -> (ux, uy)");
 
 174 // TODO: use directors?
 
 175 //     virtual void DoCalcScrolledPosition(int x, int y, int *xx, int *yy) const;
 
 176 //     virtual void DoCalcUnscrolledPosition(int x, int y, int *xx, int *yy) const;
 
 178     // Adjust the scrollbars
 
 179     virtual void AdjustScrollbars();
 
 181     // Calculate scroll increment
 
 182     virtual int CalcScrollInc(wxScrollWinEvent& event);
 
 184     // Normally the wxScrolledWindow will scroll itself, but in some rare
 
 185     // occasions you might want it to scroll [part of] another window (e.g. a
 
 186     // child of it in order to scroll only a portion the area between the
 
 187     // scrollbars (spreadsheet: only cell area will move).
 
 188     virtual void SetTargetWindow(wxWindow *target);
 
 189     virtual wxWindow *GetTargetWindow() const;
 
 192     void SetTargetRect(const wxRect& rect);
 
 193     wxRect GetTargetRect() const;
 
 196     // TODO: directorize this?
 
 198         virtual void , DoPrepareDC( wxDC & dc ),
 
 199         "Normally what is called by `PrepareDC`.", "");
 
 202     static wxVisualAttributes
 
 203     GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 
 205     %property(ScaleX, GetScaleX, doc="See `GetScaleX`");
 
 206     %property(ScaleY, GetScaleY, doc="See `GetScaleY`");
 
 207     %property(TargetWindow, GetTargetWindow, SetTargetWindow, doc="See `GetTargetWindow` and `SetTargetWindow`");
 
 208     %property(ViewStart, GetViewStart, doc="See `GetViewStart`");
 
 212 //---------------------------------------------------------------------------