]> git.saurik.com Git - wxWidgets.git/blame_incremental - include/wx/generic/scrolwin.h
Implemented wxGetClientDisplayRect which returns the dimensions of the
[wxWidgets.git] / include / wx / generic / scrolwin.h
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: wx/generic/scrolwin.h
3// Purpose: wxScrolledWindow class
4// Author: Julian Smart
5// Modified by:
6// Created: 01/02/97
7// RCS-ID: $Id$
8// Copyright: (c) Julian Smart and Markus Holzem
9// Licence: wxWindows license
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_GENERIC_SCROLLWIN_H_
13#define _WX_GENERIC_SCROLLWIN_H_
14
15#ifdef __GNUG__
16 #pragma interface "scrolwin.h"
17#endif
18
19// ----------------------------------------------------------------------------
20// headers and constants
21// ----------------------------------------------------------------------------
22
23#include "wx/window.h"
24#include "wx/panel.h"
25
26WXDLLEXPORT_DATA(extern const wxChar*) wxPanelNameStr;
27
28// default scrolled window style
29#ifndef wxScrolledWindowStyle
30#define wxScrolledWindowStyle (wxHSCROLL | wxVSCROLL)
31#endif
32
33// ----------------------------------------------------------------------------
34// wxGenericScrolledWindow
35// ----------------------------------------------------------------------------
36
37class WXDLLEXPORT wxGenericScrolledWindow : public wxPanel
38{
39public:
40 wxGenericScrolledWindow();
41 wxGenericScrolledWindow(wxWindow *parent,
42 wxWindowID id = -1,
43 const wxPoint& pos = wxDefaultPosition,
44 const wxSize& size = wxDefaultSize,
45 long style = wxScrolledWindowStyle,
46 const wxString& name = wxPanelNameStr)
47 {
48 Create(parent, id, pos, size, style, name);
49 }
50
51 ~wxGenericScrolledWindow();
52
53 bool Create(wxWindow *parent,
54 wxWindowID id,
55 const wxPoint& pos = wxDefaultPosition,
56 const wxSize& size = wxDefaultSize,
57 long style = wxScrolledWindowStyle,
58 const wxString& name = wxPanelNameStr);
59
60 // Normally the wxGenericScrolledWindow will scroll itself, but in
61 // some rare occasions you might want it to scroll another
62 // window (e.g. a child of it in order to scroll only a portion
63 // the area between the scrollbars (spreadsheet: only cell area
64 // will move).
65 virtual void SetTargetWindow( wxWindow *target );
66 virtual wxWindow *GetTargetWindow();
67
68 // Number of pixels per user unit (0 or -1 for no scrollbar)
69 // Length of virtual canvas in user units
70 // Length of page in user units
71 virtual void SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY,
72 int noUnitsX, int noUnitsY,
73 int xPos = 0, int yPos = 0,
74 bool noRefresh = FALSE );
75
76 // Physically scroll the window
77 virtual void Scroll(int x_pos, int y_pos);
78
79#if WXWIN_COMPATIBILITY
80 virtual void GetScrollUnitsPerPage(int *x_page, int *y_page) const;
81 virtual void CalcUnscrolledPosition(int x, int y, float *xx, float *yy) const;
82#endif
83
84 int GetScrollPageSize(int orient) const;
85 void SetScrollPageSize(int orient, int pageSize);
86
87 virtual void GetScrollPixelsPerUnit(int *x_unit, int *y_unit) const;
88
89 // Enable/disable Windows scrolling in either direction.
90 // If TRUE, wxWindows scrolls the canvas and only a bit of
91 // the canvas is invalidated; no Clear() is necessary.
92 // If FALSE, the whole canvas is invalidated and a Clear() is
93 // necessary. Disable for when the scroll increment is used
94 // to actually scroll a non-constant distance
95 virtual void EnableScrolling(bool x_scrolling, bool y_scrolling);
96
97 // Get the view start
98 virtual void GetViewStart(int *x, int *y) const;
99 // Compatibility
100 void ViewStart(int *x, int *y) const
101 { GetViewStart( x, y ); }
102
103 // Actual size in pixels when scrolling is taken into account
104 virtual void GetVirtualSize(int *x, int *y) const;
105
106 // Set the scale factor, used in PrepareDC
107 void SetScale(double xs, double ys) { m_scaleX = xs; m_scaleY = ys; }
108 double GetScaleX() const { return m_scaleX; }
109 double GetScaleY() const { return m_scaleY; }
110
111 virtual void CalcScrolledPosition(int x, int y, int *xx, int *yy) const;
112 virtual void CalcUnscrolledPosition(int x, int y, int *xx, int *yy) const;
113
114 // Adjust the scrollbars
115 virtual void AdjustScrollbars(void);
116
117 // Override this function to draw the graphic (or just process EVT_PAINT)
118 virtual void OnDraw(wxDC& WXUNUSED(dc)) {};
119
120 // Override this function if you don't want to have wxGenericScrolledWindow
121 // automatically change the origin according to the scroll position.
122 virtual void PrepareDC(wxDC& dc);
123
124 // implementation from now on
125 void OnScroll(wxScrollWinEvent& event);
126 void OnSize(wxSizeEvent& event);
127 void OnPaint(wxPaintEvent& event);
128 void OnChar(wxKeyEvent& event);
129
130 // Calculate scroll increment
131 virtual int CalcScrollInc(wxScrollWinEvent& event);
132
133protected:
134 wxWindow *m_targetWindow;
135 int m_xScrollPixelsPerLine;
136 int m_yScrollPixelsPerLine;
137 bool m_xScrollingEnabled;
138 bool m_yScrollingEnabled;
139 int m_xScrollPosition;
140 int m_yScrollPosition;
141 int m_xScrollLines;
142 int m_yScrollLines;
143 int m_xScrollLinesPerPage;
144 int m_yScrollLinesPerPage;
145 double m_scaleX;
146 double m_scaleY;
147
148private:
149 DECLARE_EVENT_TABLE()
150 DECLARE_ABSTRACT_CLASS(wxGenericScrolledWindow)
151};
152
153#endif
154 // _WX_GENERIC_SCROLLWIN_H_