/[pcsx2_0.9.7]/branch/r3113_0.9.7_beta/3rdparty/wxWidgets/include/wx/generic/tabg.h
ViewVC logotype

Annotation of /branch/r3113_0.9.7_beta/3rdparty/wxWidgets/include/wx/generic/tabg.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 31 - (hide annotations) (download)
Tue Sep 7 03:24:11 2010 UTC (10 years ago) by william
Original Path: trunk/3rdparty/wxWidgets/include/wx/generic/tabg.h
File MIME type: text/plain
File size: 11934 byte(s)
committing r3113 initial commit again...
1 william 31 /////////////////////////////////////////////////////////////////////////////
2     // Name: tabg.h
3     // Purpose: Generic tabbed dialogs
4     // Author: Julian Smart
5     // Modified by:
6     // Created: 01/02/97
7     // RCS-ID: $Id: tabg.h 41020 2006-09-05 20:47:48Z VZ $
8     // Copyright: (c) Julian Smart
9     // Licence: wxWindows licence
10     /////////////////////////////////////////////////////////////////////////////
11    
12     #ifndef __TABGH_G__
13     #define __TABGH_G__
14    
15     #define WXTAB_VERSION 1.1
16    
17     #include "wx/hashmap.h"
18     #include "wx/string.h"
19     #include "wx/dialog.h"
20     #include "wx/panel.h"
21     #include "wx/list.h"
22    
23     class WXDLLEXPORT wxTabView;
24    
25     /*
26     * A wxTabControl is the internal and visual representation
27     * of the tab.
28     */
29    
30     class WXDLLEXPORT wxTabControl: public wxObject
31     {
32     DECLARE_DYNAMIC_CLASS(wxTabControl)
33     public:
34     wxTabControl(wxTabView *v = (wxTabView *) NULL);
35     virtual ~wxTabControl(void);
36    
37     virtual void OnDraw(wxDC& dc, bool lastInRow);
38     void SetLabel(const wxString& str) { m_controlLabel = str; }
39     wxString GetLabel(void) const { return m_controlLabel; }
40    
41     void SetFont(const wxFont& f) { m_labelFont = f; }
42     wxFont *GetFont(void) const { return (wxFont*) & m_labelFont; }
43    
44     void SetSelected(bool sel) { m_isSelected = sel; }
45     bool IsSelected(void) const { return m_isSelected; }
46    
47     void SetPosition(int x, int y) { m_offsetX = x; m_offsetY = y; }
48     void SetSize(int x, int y) { m_width = x; m_height = y; }
49    
50     void SetRowPosition(int r) { m_rowPosition = r; }
51     int GetRowPosition() const { return m_rowPosition; }
52     void SetColPosition(int c) { m_colPosition = c; }
53     int GetColPosition() const { return m_colPosition; }
54    
55     int GetX(void) const { return m_offsetX; }
56     int GetY(void) const { return m_offsetY; }
57     int GetWidth(void) const { return m_width; }
58     int GetHeight(void) const { return m_height; }
59    
60     int GetId(void) const { return m_id; }
61     void SetId(int i) { m_id = i; }
62    
63     virtual bool HitTest(int x, int y) const ;
64    
65     protected:
66     wxTabView* m_view;
67     wxString m_controlLabel;
68     bool m_isSelected;
69     wxFont m_labelFont;
70     int m_offsetX; // Offsets from top-left of tab view area (the area below the tabs)
71     int m_offsetY;
72     int m_width;
73     int m_height;
74     int m_id;
75     int m_rowPosition; // Position in row from 0
76     int m_colPosition; // Position in col from 0
77     };
78    
79     /*
80     * Each wxTabLayer is a list of tabs. E.g. there
81     * are 3 layers in the MS Word Options dialog.
82     */
83    
84     class WXDLLEXPORT wxTabLayer: public wxList
85     {
86     };
87    
88     /*
89     * The wxTabView controls and draws the tabbed object
90     */
91    
92     WX_DECLARE_LIST(wxTabLayer, wxTabLayerList);
93    
94     #define wxTAB_STYLE_DRAW_BOX 1 // Draws 3D boxes round tab layers
95     #define wxTAB_STYLE_COLOUR_INTERIOR 2 // Colours interior of tabs, otherwise draws outline
96    
97     class WXDLLEXPORT wxTabView: public wxObject
98     {
99     DECLARE_DYNAMIC_CLASS(wxTabView)
100     public:
101     wxTabView(long style = wxTAB_STYLE_DRAW_BOX | wxTAB_STYLE_COLOUR_INTERIOR);
102     virtual ~wxTabView();
103    
104     inline int GetNumberOfLayers() const { return m_layers.GetCount(); }
105     #if WXWIN_COMPATIBILITY_2_4
106     inline wxList& GetLayers() { return *(wxList *)&m_layers; }
107     #else
108     inline wxTabLayerList& GetLayers() { return m_layers; }
109     #endif
110    
111     inline void SetWindow(wxWindow* wnd) { m_window = wnd; }
112     inline wxWindow* GetWindow(void) const { return m_window; }
113    
114     // Automatically positions tabs
115     wxTabControl *AddTab(int id, const wxString& label, wxTabControl *existingTab = (wxTabControl *) NULL);
116    
117     // Remove the tab without deleting the window
118     bool RemoveTab(int id);
119    
120     void ClearTabs(bool deleteTabs = true);
121    
122     bool SetTabText(int id, const wxString& label);
123     wxString GetTabText(int id) const;
124    
125     // Layout tabs (optional, e.g. if resizing window)
126     void LayoutTabs();
127    
128     // Draw all tabs
129     virtual void Draw(wxDC& dc);
130    
131     // Process mouse event, return false if we didn't process it
132     virtual bool OnEvent(wxMouseEvent& event);
133    
134     // Called when a tab is activated
135     virtual void OnTabActivate(int activateId, int deactivateId);
136     // Allows vetoing
137     virtual bool OnTabPreActivate(int WXUNUSED(activateId), int WXUNUSED(deactivateId) ) { return true; };
138    
139     // Allows use of application-supplied wxTabControl classes.
140     virtual wxTabControl *OnCreateTabControl(void) { return new wxTabControl(this); }
141    
142     void SetHighlightColour(const wxColour& col);
143     void SetShadowColour(const wxColour& col);
144     void SetBackgroundColour(const wxColour& col);
145     inline void SetTextColour(const wxColour& col) { m_textColour = col; }
146    
147     inline wxColour GetHighlightColour(void) const { return m_highlightColour; }
148     inline wxColour GetShadowColour(void) const { return m_shadowColour; }
149     inline wxColour GetBackgroundColour(void) const { return m_backgroundColour; }
150     inline wxColour GetTextColour(void) const { return m_textColour; }
151     inline const wxPen *GetHighlightPen(void) const { return m_highlightPen; }
152     inline const wxPen *GetShadowPen(void) const { return m_shadowPen; }
153     inline const wxPen *GetBackgroundPen(void) const { return m_backgroundPen; }
154     inline const wxBrush *GetBackgroundBrush(void) const { return m_backgroundBrush; }
155    
156     inline void SetViewRect(const wxRect& rect) { m_tabViewRect = rect; }
157     inline wxRect GetViewRect(void) const { return m_tabViewRect; }
158    
159     // Calculate tab width to fit to view, and optionally adjust the view
160     // to fit the tabs exactly.
161     int CalculateTabWidth(int noTabs, bool adjustView = false);
162    
163     inline void SetTabStyle(long style) { m_tabStyle = style; }
164     inline long GetTabStyle(void) const { return m_tabStyle; }
165    
166     inline void SetTabSize(int w, int h) { m_tabWidth = w; m_tabHeight = h; }
167     inline int GetTabWidth(void) const { return m_tabWidth; }
168     inline int GetTabHeight(void) const { return m_tabHeight; }
169     inline void SetTabSelectionHeight(int h) { m_tabSelectionHeight = h; }
170     inline int GetTabSelectionHeight(void) const { return m_tabSelectionHeight; }
171    
172     // Returns the total height of the tabs component -- this may be several
173     // times the height of a tab, if there are several tab layers (rows).
174     int GetTotalTabHeight();
175    
176     inline int GetTopMargin(void) const { return m_topMargin; }
177     inline void SetTopMargin(int margin) { m_topMargin = margin; }
178    
179     void SetTabSelection(int sel, bool activateTool = true);
180     inline int GetTabSelection() const { return m_tabSelection; }
181    
182     // Find tab control for id
183     wxTabControl *FindTabControlForId(int id) const ;
184    
185     // Find tab control for layer, position (starting from zero)
186     wxTabControl *FindTabControlForPosition(int layer, int position) const ;
187    
188     inline int GetHorizontalTabOffset() const { return m_tabHorizontalOffset; }
189     inline int GetHorizontalTabSpacing() const { return m_tabHorizontalSpacing; }
190     inline void SetHorizontalTabOffset(int sp) { m_tabHorizontalOffset = sp; }
191     inline void SetHorizontalTabSpacing(int sp) { m_tabHorizontalSpacing = sp; }
192    
193     inline void SetVerticalTabTextSpacing(int s) { m_tabVerticalTextSpacing = s; }
194     inline int GetVerticalTabTextSpacing() const { return m_tabVerticalTextSpacing; }
195    
196     inline wxFont *GetTabFont() const { return (wxFont*) & m_tabFont; }
197     inline void SetTabFont(const wxFont& f) { m_tabFont = f; }
198    
199     inline wxFont *GetSelectedTabFont() const { return (wxFont*) & m_tabSelectedFont; }
200     inline void SetSelectedTabFont(const wxFont& f) { m_tabSelectedFont = f; }
201     // Find the node and the column at which this control is positioned.
202     wxList::compatibility_iterator FindTabNodeAndColumn(wxTabControl *control, int *col) const ;
203    
204     // Do the necessary to change to this tab
205     virtual bool ChangeTab(wxTabControl *control);
206    
207     // Move the selected tab to the bottom layer, if necessary,
208     // without calling app activation code
209     bool MoveSelectionTab(wxTabControl *control);
210    
211     inline int GetNumberOfTabs() const { return m_noTabs; }
212    
213     protected:
214     // List of layers, from front to back.
215     wxTabLayerList m_layers;
216    
217     // Selected tab
218     int m_tabSelection;
219    
220     // Usual tab height
221     int m_tabHeight;
222    
223     // The height of the selected tab
224     int m_tabSelectionHeight;
225    
226     // Usual tab width
227     int m_tabWidth;
228    
229     // Space between tabs
230     int m_tabHorizontalSpacing;
231    
232     // Space between top of normal tab and text
233     int m_tabVerticalTextSpacing;
234    
235     // Horizontal offset of each tab row above the first
236     int m_tabHorizontalOffset;
237    
238     // The distance between the bottom of the first tab row
239     // and the top of the client area (i.e. the margin)
240     int m_topMargin;
241    
242     // The position and size of the view above which the tabs are placed.
243     // I.e., the internal client area of the sheet.
244     wxRect m_tabViewRect;
245    
246     // Bitlist of styles
247     long m_tabStyle;
248    
249     // Colours
250     wxColour m_highlightColour;
251     wxColour m_shadowColour;
252     wxColour m_backgroundColour;
253     wxColour m_textColour;
254    
255     // Pen and brush cache
256     const wxPen* m_highlightPen;
257     const wxPen* m_shadowPen;
258     const wxPen* m_backgroundPen;
259     const wxBrush* m_backgroundBrush;
260    
261     wxFont m_tabFont;
262     wxFont m_tabSelectedFont;
263    
264     int m_noTabs;
265    
266     wxWindow* m_window;
267     };
268    
269     /*
270     * A dialog box class that is tab-friendly
271     */
272    
273     class WXDLLEXPORT wxTabbedDialog : public wxDialog
274     {
275     DECLARE_DYNAMIC_CLASS(wxTabbedDialog)
276    
277     public:
278     wxTabbedDialog(wxWindow *parent,
279     wxWindowID id,
280     const wxString& title,
281     const wxPoint& pos = wxDefaultPosition,
282     const wxSize& size = wxDefaultSize,
283     long windowStyle = wxDEFAULT_DIALOG_STYLE,
284     const wxString& name = wxDialogNameStr);
285     virtual ~wxTabbedDialog();
286    
287     wxTabView *GetTabView() const { return m_tabView; }
288     void SetTabView(wxTabView *v) { m_tabView = v; }
289    
290     void OnCloseWindow(wxCloseEvent& event);
291     void OnMouseEvent(wxMouseEvent& event);
292     void OnPaint(wxPaintEvent& event);
293    
294     protected:
295     wxTabView* m_tabView;
296    
297     private:
298     DECLARE_EVENT_TABLE()
299     };
300    
301     /*
302     * A panel class that is tab-friendly
303     */
304    
305     class WXDLLEXPORT wxTabbedPanel : public wxPanel
306     {
307     DECLARE_DYNAMIC_CLASS(wxTabbedPanel)
308    
309     public:
310     wxTabbedPanel(wxWindow *parent,
311     wxWindowID id,
312     const wxPoint& pos = wxDefaultPosition,
313     const wxSize& size = wxDefaultSize,
314     long windowStyle = 0,
315     const wxString& name = wxPanelNameStr);
316     virtual ~wxTabbedPanel();
317    
318     wxTabView *GetTabView() const { return m_tabView; }
319     void SetTabView(wxTabView *v) { m_tabView = v; }
320    
321     void OnMouseEvent(wxMouseEvent& event);
322     void OnPaint(wxPaintEvent& event);
323    
324     protected:
325     wxTabView* m_tabView;
326    
327     private:
328     DECLARE_EVENT_TABLE()
329     };
330    
331     WX_DECLARE_HASH_MAP(int, wxWindow*, wxIntegerHash, wxIntegerEqual,
332     wxIntToWindowHashMap);
333    
334     class WXDLLEXPORT wxPanelTabView : public wxTabView
335     {
336     DECLARE_DYNAMIC_CLASS(wxPanelTabView)
337    
338     public:
339     wxPanelTabView(wxPanel *pan, long style = wxTAB_STYLE_DRAW_BOX | wxTAB_STYLE_COLOUR_INTERIOR);
340     virtual ~wxPanelTabView(void);
341    
342     // Called when a tab is activated
343     virtual void OnTabActivate(int activateId, int deactivateId);
344    
345     // Specific to this class
346     void AddTabWindow(int id, wxWindow *window);
347     wxWindow *GetTabWindow(int id) const ;
348     void ClearWindows(bool deleteWindows = true);
349     wxWindow *GetCurrentWindow() const { return m_currentWindow; }
350    
351     void ShowWindowForTab(int id);
352     // wxList& GetWindows() const { return (wxList&) m_tabWindows; }
353    
354     protected:
355     // List of panels, one for each tab. Indexed
356     // by tab ID.
357     wxIntToWindowHashMap m_tabWindows;
358     wxWindow* m_currentWindow;
359     wxPanel* m_panel;
360     };
361    
362     #endif
363    

  ViewVC Help
Powered by ViewVC 1.1.22