]> git.saurik.com Git - wxWidgets.git/blame - demos/dbbrowse/tabpgwin.h
set m_clipXX so dc.GetClippingBox returns real bounding box
[wxWidgets.git] / demos / dbbrowse / tabpgwin.h
CommitLineData
b5ffecfc
GT
1/////////////////////////////////////////////////////////////////////////////
2// Name: No names yet.
3// Purpose: Contrib. demo
4// Author: Aleksandras Gluchovas
5// Modified by: 19990908 : mj10777@gmx.net
6// 19990909 :
7// - rename to tabpgwin
8// - restruction of Variable declaration
9// - to prevent Warnings under MingGW32
10// Modified by: 19990909 : mj10777@gmx.net
11// - mNoVertScroll TRUE = no / FALSE = Original Code
12// the Original Code Paints a Vertical Scroll in wxPaggedWindow
13// which is not needed in this Version. Use TRUE for this.
14// Created: 07/09/98
15// RCS-ID: $Id$
16// Copyright: (c) Aleksandras Gluchovas
17// Licence: wxWindows license
18/////////////////////////////////////////////////////////////////////////////
19
20#ifndef __CONTROLAREA_G__
21#define __CONTROLAREA_G__
22
23#ifdef __GNUG__
24#pragma interface "controlarea.h"
25#endif
26
27#include "wx/defs.h"
28#include "wx/window.h"
29#include "wx/string.h"
30
31#define WXCONTROLAREA_VERSION 1.0
32
33// layout types for title bars of the tabs
34// (are selected up by evaluating the available free space )
35
36class twTabInfo; // forward decl.
37
38#define wxTITLE_IMG_AND_TEXT 0
39#define wxTITLE_IMG_ONLY 1
40#define wxTITLE_BORDER_ONLY 2
41
42/*
43 * class manages and decorates contained "tab"-windows.
44 * Draws decorations similar to those in "Project Workplace"
45 * of Microsoft Developer Studio 4.xx
46 */
47
48class wxTabbedWindow : public wxPanel
49{
50 DECLARE_DYNAMIC_CLASS( wxTabbedWindow )
51
52public:
53
54 friend class wxTabbedWindowSerializer;
55
56 wxList mTabs;
57 void HideInactiveTabs( bool andRepaint );
58
59 // overrride,to provide different font for tab-labels
60
61 virtual wxFont GetLabelingFont();
62
63 // FOR NOW:: scrollbars are actually related to wxPaggedWindow
64
65 wxScrollBar* mpTabScroll;
66 wxScrollBar* mpHorizScroll;
67 wxScrollBar* mpVertScroll;
68
69public:
70
71 // public properties (invoke ReclaclLayout(TRUE) to apply changes)
72
73 int mVertGap; // default: 3
74 int mHorizGap; // default: 5
75 int mTitleVertGap; // default: 3
76 int mTitleHorizGap; // default: 4
77 int mImageTextGap; // default: 2
78 int mFirstTitleGap; // default: 11
79 int mBorderOnlyWidth; // default: 8
80
81 wxPen mWhitePen; // default: RGB(255,255,255)
82 wxPen mGrayPen; // default: RGB(192,192,192)
83 wxPen mDarkPen; // default: RGB(128,128,128)
84 wxPen mBlackPen; // default: RGB( 0, 0, 0)
85
86 int mActiveTab;
87 int mTitleHeight;
88 int mLayoutType;
89
90 // notifications (can be handled by derivatives)
91
92 virtual void OnTabAdded( twTabInfo* pInfo ) {}
93
94 virtual void SizeTabs(int x,int y, int width, int height, bool repant);
95
96public:
97 wxTabbedWindow();
98 virtual ~wxTabbedWindow();
99
100 // tabs can be also added when the window is
101 // already displayed - "on the fly"
102
103 virtual void AddTab( wxWindow* pContent, // contained window
104 wxString tabText, // tab label
105 wxString imageFileName = "", // if "", only text label is displayed
106 long imageType = wxBITMAP_TYPE_BMP );
107
108 // NOTE:: if this AddTab(..) overload is called, the
109 // image bitmap will not be serialized (if performed),
110 // use the above method instead, so that images could
111 // be restored using the given file names
112
113 virtual void AddTab( wxWindow* pContent,
114 wxString tabText,
115 wxBitmap* pImage = NULL );
116
117 virtual void RemoveTab( int tabNo );
118
119 /* misc accessors */
120
121 virtual int GetTabCount();
122 virtual wxWindow* GetTab( int tabNo );
123 virtual wxWindow* GetActiveTab();
124 virtual void SetActiveTab( int tabNo );
125
126 void DrawShadedRect( int x, int y, int width, int height,
127 wxPen& upperPen, wxPen& lowerPen, wxDC& dc );
128
129 virtual void DrawDecorations( wxDC& dc );
130
131 // return -1, if non of the title bars was hitted,
132 // otherwise the index of the hitted tab title bar
133
134 virtual int HitTest( const wxPoint& pos );
135
136 // should be invoked to redisplay window with changed properties
137
138 virtual void RecalcLayout( bool andRepaint = TRUE );
139
140 // event handlers
141
142 void OnPaint( wxPaintEvent& event );
143 void OnSize ( wxSizeEvent& event );
144
145 void OnBkErase( wxEraseEvent& event );
146 void OnLButtonDown( wxMouseEvent& event );
147
148 DECLARE_EVENT_TABLE()
149};
150
151/*
152 * class manages and decorates contained "sheets" (or pages).
153 * Draws decorations similar to those in "Output window"
154 * of Microsoft Developer Studio 4.xx
155 */
156
157class wxPaggedWindow : public wxTabbedWindow
158{
159 DECLARE_DYNAMIC_CLASS( wxPaggedWindow )
160 // the protected: public: changes prevents Warnings in gcc
161protected:
162 bool mScrollEventInProgress;
163public:
164 int mTabTrianGap;
165 wxBrush mWhiteBrush;
166 wxBrush mGrayBrush;
167 int mCurentRowOfs;
168 int mAdjustableTitleRowLen; // setup by dragging mini-sash
169 // with the mosue pointer
170protected:
171 // drag&drop state variables
172 bool mIsDragged;
173 int mDagOrigin;
174 bool mCursorChanged;
175 wxCursor mResizeCursor;
176 wxCursor mNormalCursor;
177 int mOriginalTitleRowLen;
178
179public:
180 int mTitleRowStart;
181 int mResizeNailGap;
182 int mTitleRowLen; // actual title row length
183 int mNoVertScroll; // No Vertical Scroll TRUE/FALSE
184
185 void DrawPaperBar( twTabInfo& tab, int x, int y,
186 wxBrush& brush, wxPen& pen, wxDC& dc );
187
188 int GetWholeTabRowLen();
189
190 // adjusts scorllbars to fit around tabs
191
192 virtual void OnTabAdded( twTabInfo* pInfo );
193
194 // sets smaller font for page-labels
195
196 virtual wxFont GetLabelingFont();
197
198public:
199
200
201public:
202 wxPaggedWindow();
203 ~wxPaggedWindow();
204
205 // NOTE:: use public methods of the base class
206 // to add "pages" to this window
207
208 /* misc accessors */
209
210 // below two methods should be called after
211 // the tabs were added (AddTab(..)). Set up
212 // these scrollbars to match the needs of the
213 // tabs added into this area
214
215 wxScrollBar& GetVerticalScrollBar();
216 wxScrollBar& GetHorizontalScrollBar();
217
218 virtual void DrawDecorations( wxDC& dc );
219
220 // return -1, if non of the title bars was hitted,
221 // otherwise the index of the hitted tab title bar
222
223 virtual int HitTest( const wxPoint& pos );
224
225 virtual void RecalcLayout( bool andRepaint = TRUE );
226
227 // event handlers
228
229 void OnPaint( wxPaintEvent& event );
230 void OnSize ( wxSizeEvent& event );
231 void OnLButtonDown( wxMouseEvent& event );
232 void OnLButtonUp ( wxMouseEvent& event );
233 void OnMouseMove ( wxMouseEvent& event );
234 void OnScroll ( wxScrollEvent& event );
235
236 DECLARE_EVENT_TABLE()
237};
238
239// helper structure of wxTabbedWindow
240
241class twTabInfo : public wxObject
242{
243 DECLARE_DYNAMIC_CLASS( twTabInfo )
244public:
245 twTabInfo();
246 ~twTabInfo();
247
248 int ImgWidth();
249 int ImgHeight();
250 int ImageToTxtGap( int prefGap );
251
252 bool HasImg();
253 wxBitmap& GetImg();
254 // bool HasText();
255 unsigned int HasText();
256 wxString& GetText();
257 wxWindow& GetContent();
258
259public:
260 wxWindow* mpContent;
261 wxBitmap mBitMap;
262
263 wxString mText;
264 wxSize mDims;
265
266 // used for serialization
267 wxString mImageFile;
268 long mImageType;
269
270};
271
272#endif