]> git.saurik.com Git - wxWidgets.git/blob - include/wx/gtk/window.h
wxWindow split into wxWindowBase and wxWindow (wxGTK part)
[wxWidgets.git] / include / wx / gtk / window.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: window.h
3 // Purpose:
4 // Author: Robert Roebling
5 // Id: $Id$
6 // Copyright: (c) 1998 Robert Roebling
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
9
10
11 #ifndef __GTKWINDOWH__
12 #define __GTKWINDOWH__
13
14 #ifdef __GNUG__
15 #pragma interface
16 #endif
17
18 //-----------------------------------------------------------------------------
19 // callback definition for inserting a window (internal)
20 //-----------------------------------------------------------------------------
21
22 typedef void (*wxInsertChildFunction)( wxWindow*, wxWindow* );
23
24 //-----------------------------------------------------------------------------
25 // wxWindow
26 //-----------------------------------------------------------------------------
27
28 class wxWindow : public wxWindowBase
29 {
30 DECLARE_DYNAMIC_CLASS(wxWindow)
31
32 public:
33 // creating the window
34 // -------------------
35 wxWindow();
36 wxWindow(wxWindow *parent,
37 wxWindowID id,
38 const wxPoint& pos = wxDefaultPosition,
39 const wxSize& size = wxDefaultSize,
40 long style = 0,
41 const wxString& name = wxPanelNameStr);
42 bool Create(wxWindow *parent,
43 wxWindowID id,
44 const wxPoint& pos = wxDefaultPosition,
45 const wxSize& size = wxDefaultSize,
46 long style = 0,
47 const wxString& name = wxPanelNameStr);
48 virtual ~wxWindow();
49
50 // implement base class (pure) virtual methods
51 // -------------------------------------------
52 virtual bool Destroy();
53
54 virtual void Raise();
55 virtual void Lower();
56
57 virtual bool Show( bool show = TRUE );
58 virtual bool Enable( bool enable = TRUE );
59
60 virtual bool IsRetained() const;
61
62 virtual void SetFocus();
63 virtual bool AcceptsFocus() const;
64
65 virtual bool Reparent( wxWindow *newParent );
66
67 virtual void WarpPointer(int x, int y);
68 virtual void CaptureMouse();
69 virtual void ReleaseMouse();
70
71 virtual void Refresh( bool eraseBackground = TRUE,
72 const wxRect *rect = (const wxRect *) NULL );
73 virtual void Clear();
74
75 virtual bool SetBackgroundColour( const wxColour &colour );
76 virtual bool SetForegroundColour( const wxColour &colour );
77 virtual bool SetCursor( const wxCursor &cursor );
78 virtual bool SetFont( const wxFont &font );
79
80 virtual int GetCharHeight() const;
81 virtual int GetCharWidth() const;
82 virtual void GetTextExtent(const wxString& string,
83 int *x, int *y,
84 int *descent = (int *) NULL,
85 int *externalLeading = (int *) NULL,
86 const wxFont *theFont = (const wxFont *) NULL)
87 const;
88
89 virtual void ClientToScreen( int *x, int *y ) const;
90 virtual void ScreenToClient( int *x, int *y ) const;
91
92 virtual bool PopupMenu( wxMenu *menu, int x, int y );
93
94 virtual void SetScrollbar( int orient, int pos, int thumbVisible,
95 int range, bool refresh = TRUE );
96 virtual void SetScrollPos( int orient, int pos, bool refresh = TRUE );
97 virtual int GetScrollPos( int orient ) const;
98 virtual int GetScrollThumb( int orient ) const;
99 virtual int GetScrollRange( int orient ) const;
100 virtual void ScrollWindow( int dx, int dy,
101 const wxRect* rect = (wxRect *) NULL );
102
103 #if wxUSE_DRAG_AND_DROP
104 virtual void SetDropTarget( wxDropTarget *dropTarget );
105 #endif // wxUSE_DRAG_AND_DROP
106
107 // implementation
108 // --------------
109
110 // wxWindows callbacks
111 void OnKeyDown( wxKeyEvent &event );
112
113 // simple accessors
114 bool HasVMT() const { return m_hasVMT; }
115
116 int GetX() const { return m_x; }
117 int GetY() const { return m_y; }
118 int GetWidth() const { return m_width; }
119 int GetHeight() const { return m_height; }
120
121 GtkWidget *GetWxWindow() const { return m_wxwindow; }
122 GtkWidget *GetWidget() const { return GetHandle(); }
123
124 GtkAdjustment *GetHAdjust() const { return m_hAdjust; }
125 GtkAdjustment *GetVAdjust() const { return m_vAdjust; }
126
127 float GetOldHorizontalPos() const { return m_oldHorizontalPos; }
128 float GetOldVerticalPos() const { return m_oldVerticalPos; }
129
130 void SetOldHorizontalPos(float fpos) { m_oldHorizontalPos = fpos; }
131 void SetOldVerticalPos(float fpos) { m_oldVerticalPos = fpos; }
132
133 bool IsSizeSet() const { return m_sizeSet; }
134
135 // also sets the global flag
136 void SetScrolling(bool scroll);
137
138 bool HasScrolling() const { return m_hasScrolling; }
139 bool IsScrolling() const { return m_isScrolling; }
140 bool IsStaticBox() const { return m_isStaticBox; }
141
142 /* I don't want users to override what's done in idle so everything that
143 has to be done in idle time in order for wxGTK to work is done in
144 OnInternalIdle */
145 virtual void OnInternalIdle();
146
147 /* For compatibility across platforms (not in event table) */
148 void OnIdle(wxIdleEvent& WXUNUSED(event)) {};
149
150 /* used by all classes in the widget creation process */
151 void PreCreation( wxWindow *parent, wxWindowID id, const wxPoint &pos,
152 const wxSize &size, long style, const wxString &name );
153 void PostCreation();
154
155 void InsertChild(wxWindow *child) { (*m_insertCallback)(this, child); }
156 void DoAddChild(wxWindow *child) { AddChild(child); InsertChild(child); }
157
158 /* the methods below are required because many native widgets
159 are composed of several subwidgets and setting a style for
160 the widget means setting it for all subwidgets as well.
161 also, it is nor clear, which native widget is the top
162 widget where (most of) the input goes. even tooltips have
163 to be applied to all subwidgets. */
164
165 virtual GtkWidget* GetConnectWidget();
166 virtual bool IsOwnGtkWindow( GdkWindow *window );
167 void ConnectWidget( GtkWidget *widget );
168
169 GtkStyle *GetWidgetStyle();
170 void SetWidgetStyle();
171 virtual void ApplyWidgetStyle();
172
173 #if wxUSE_TOOLTIPS
174 virtual void ApplyToolTip( GtkTooltips *tips, const wxChar *tip );
175 #endif // wxUSE_TOOLTIPS
176
177 // called from GTK signales handlers
178 void UpdateSize() { m_sizeSet = FALSE; }
179 void InternalSetPosition(int x, int y) { m_x = x; m_y = y; }
180 void InternalSetSize(int w, int h)
181 { m_width = w; m_height = h; UpdateSize(); }
182
183 protected:
184 // position and size of the window
185 int m_x, m_y;
186 int m_width, m_height;
187
188 // see the docs in src/gtk/window.cpp
189 GtkWidget *m_wxwindow;
190
191 // scrolling stuff
192 GtkAdjustment *m_hAdjust,*m_vAdjust;
193 float m_oldHorizontalPos,
194 m_oldVerticalPos;
195 GdkGC *m_scrollGC;
196
197 // extra (wxGTK-specific) flags
198 bool m_needParent:1; /* ! wxFrame, wxDialog, wxNotebookPage ? */
199 bool m_hasScrolling:1;
200 bool m_isScrolling:1;
201 bool m_hasVMT:1;
202 bool m_sizeSet:1;
203 bool m_resizing:1;
204 bool m_isStaticBox:1; /* faster than IS_KIND_OF */
205 bool m_isFrame:1; /* faster than IS_KIND_OF */
206 bool m_acceptsFocus:1; /* ! wxStaticBox etc. */
207
208 GtkStyle *m_widgetStyle;
209
210 wxInsertChildFunction m_insertCallback;
211
212 // implement the base class pure virtuals
213 virtual void DoGetPosition( int *x, int *y ) const;
214 virtual void DoGetSize( int *width, int *height ) const;
215 virtual void DoGetClientSize( int *width, int *height ) const;
216 virtual void DoSetSize(int x, int y,
217 int width, int height,
218 int sizeFlags = wxSIZE_AUTO);
219 virtual void DoSetClientSize(int width, int height);
220
221 #if wxUSE_TOOLTIPS
222 virtual void DoSetToolTip( wxToolTip *tip );
223 #endif // wxUSE_TOOLTIPS
224
225 // common part of all ctors (can't be virtual because called from ctor)
226 void Init();
227
228 private:
229 DECLARE_EVENT_TABLE()
230 };
231
232 #endif // __GTKWINDOWH__