]> git.saurik.com Git - wxWidgets.git/blob - include/wx/gtk1/window.h
Made wxWindowBase's variables protected again and such.
[wxWidgets.git] / include / wx / gtk1 / 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 // also sets the global flag
114 void SetScrolling(bool scroll);
115
116 bool HasScrolling() const { return m_hasScrolling; }
117 bool IsScrolling() const { return m_isScrolling; }
118
119 /* I don't want users to override what's done in idle so everything that
120 has to be done in idle time in order for wxGTK to work is done in
121 OnInternalIdle */
122 virtual void OnInternalIdle();
123
124 /* For compatibility across platforms (not in event table) */
125 void OnIdle(wxIdleEvent& WXUNUSED(event)) {};
126
127 /* used by all classes in the widget creation process */
128 void PreCreation( wxWindow *parent, wxWindowID id, const wxPoint &pos,
129 const wxSize &size, long style, const wxString &name );
130 void PostCreation();
131
132 void InsertChild(wxWindow *child) { (*m_insertCallback)(this, child); }
133 void DoAddChild(wxWindow *child) { AddChild(child); InsertChild(child); }
134
135 /* the methods below are required because many native widgets
136 are composed of several subwidgets and setting a style for
137 the widget means setting it for all subwidgets as well.
138 also, it is nor clear, which native widget is the top
139 widget where (most of) the input goes. even tooltips have
140 to be applied to all subwidgets. */
141
142 virtual GtkWidget* GetConnectWidget();
143 virtual bool IsOwnGtkWindow( GdkWindow *window );
144 void ConnectWidget( GtkWidget *widget );
145
146 // creates a new widget style if none is there
147 // and sets m_widgetStyle to this value.
148 GtkStyle *GetWidgetStyle();
149
150 // called by SetFont() and SetXXXColour etc
151 void SetWidgetStyle();
152
153 // overridden in many GTK widgets
154 virtual void ApplyWidgetStyle();
155
156 #if wxUSE_TOOLTIPS
157 virtual void ApplyToolTip( GtkTooltips *tips, const wxChar *tip );
158 #endif // wxUSE_TOOLTIPS
159
160 // called from GTK signales handlers. it indicates that
161 // the layouting functions have to be called later on
162 // (i.e. in idle time, implemented in OnInternalIdle() ).
163 void UpdateSize() { m_sizeSet = FALSE; }
164
165 // position and size of the window
166 int m_x, m_y;
167 int m_width, m_height;
168
169 // see the docs in src/gtk/window.cpp
170 GtkWidget *m_widget;
171 GtkWidget *m_wxwindow;
172
173 // scrolling stuff
174 GtkAdjustment *m_hAdjust,*m_vAdjust;
175 float m_oldHorizontalPos;
176 float m_oldVerticalPos;
177
178 // we need an extra XGC flag set to get exposed
179 // events from overlapping children upon moving
180 // them. this flag will be set in this GC and
181 // the GC will be used in wxWindow::ScrollWindow().
182 GdkGC *m_scrollGC;
183
184 // extra (wxGTK-specific) flags
185 bool m_needParent:1; /* ! wxFrame, wxDialog, wxNotebookPage ? */
186 bool m_hasScrolling:1;
187 bool m_isScrolling:1;
188 bool m_hasVMT:1;
189 bool m_sizeSet:1;
190 bool m_resizing:1;
191 bool m_isStaticBox:1; /* faster than IS_KIND_OF */
192 bool m_isFrame:1; /* faster than IS_KIND_OF */
193 bool m_acceptsFocus:1; /* ! wxStaticBox etc. */
194
195 // these are true if the style were set before the
196 // widget was realized (typcally in the constructor)
197 // but the actual GTK style must not be set before
198 // the widget has been "realized"
199 bool m_delayedFont:1;
200 bool m_delayedForegroundColour:1;
201 bool m_delayedBackgroundColour:1;
202 bool m_delayedCursor:1;
203
204 // contains GTK's widgets internal information
205 // about non-default widget font and colours.
206 // we create one for each widget that gets any
207 // non-default attribute set via SetFont() or
208 // SetForegroundColour() / SetBackgroundColour().
209 GtkStyle *m_widgetStyle;
210
211 // C++ has no virtual methods in the constrcutor
212 // of any class but we need different methods
213 // of inserting a child window into a wxFrame,
214 // wxMDIFrame, wxNotebook etc. this is the
215 // callback that will get used.
216 wxInsertChildFunction m_insertCallback;
217
218 // implement the base class pure virtuals
219 virtual void DoGetPosition( int *x, int *y ) const;
220 virtual void DoGetSize( int *width, int *height ) const;
221 virtual void DoGetClientSize( int *width, int *height ) const;
222 virtual void DoSetSize(int x, int y,
223 int width, int height,
224 int sizeFlags = wxSIZE_AUTO);
225 virtual void DoSetClientSize(int width, int height);
226
227 #if wxUSE_TOOLTIPS
228 virtual void DoSetToolTip( wxToolTip *tip );
229 #endif // wxUSE_TOOLTIPS
230
231 // common part of all ctors (can't be virtual because called from ctor)
232 void Init();
233
234 private:
235 DECLARE_EVENT_TABLE()
236 };
237
238 #endif // __GTKWINDOWH__