]> git.saurik.com Git - wxWidgets.git/blob - include/wx/gtk/window.h
another GetInt/GetId bug fix
[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( wxWindowBase *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 bool DoPopupMenu( wxMenu *menu, int x, int y );
90
91 virtual void SetScrollbar( int orient, int pos, int thumbVisible,
92 int range, bool refresh = TRUE );
93 virtual void SetScrollPos( int orient, int pos, bool refresh = TRUE );
94 virtual int GetScrollPos( int orient ) const;
95 virtual int GetScrollThumb( int orient ) const;
96 virtual int GetScrollRange( int orient ) const;
97 virtual void ScrollWindow( int dx, int dy,
98 const wxRect* rect = (wxRect *) NULL );
99
100 #if wxUSE_DRAG_AND_DROP
101 virtual void SetDropTarget( wxDropTarget *dropTarget );
102 #endif // wxUSE_DRAG_AND_DROP
103
104 // implementation
105 // --------------
106
107 virtual WXWidget GetHandle() const { return m_widget; }
108
109 /* I don't want users to override what's done in idle so everything that
110 has to be done in idle time in order for wxGTK to work is done in
111 OnInternalIdle */
112 virtual void OnInternalIdle();
113
114 /* For compatibility across platforms (not in event table) */
115 void OnIdle(wxIdleEvent& WXUNUSED(event)) {};
116
117 /* used by all window classes in the widget creation process */
118 bool PreCreation( wxWindow *parent, const wxPoint &pos, const wxSize &size );
119 void PostCreation();
120
121 /* internal addition of child windows. differs from class
122 to class not by using virtual functions but by using
123 the m_insertCallback */
124 void DoAddChild(wxWindow *child);
125
126 /* the methods below are required because many native widgets
127 are composed of several subwidgets and setting a style for
128 the widget means setting it for all subwidgets as well.
129 also, it is nor clear, which native widget is the top
130 widget where (most of) the input goes. even tooltips have
131 to be applied to all subwidgets. */
132
133 virtual GtkWidget* GetConnectWidget();
134 virtual bool IsOwnGtkWindow( GdkWindow *window );
135 void ConnectWidget( GtkWidget *widget );
136
137 /* creates a new widget style if none is there
138 and sets m_widgetStyle to this value. */
139 GtkStyle *GetWidgetStyle();
140
141 /* called by SetFont() and SetXXXColour etc */
142 void SetWidgetStyle();
143
144 /* overridden in many GTK widgets */
145 virtual void ApplyWidgetStyle();
146
147 #if wxUSE_TOOLTIPS
148 virtual void ApplyToolTip( GtkTooltips *tips, const wxChar *tip );
149 #endif // wxUSE_TOOLTIPS
150
151 // called from GTK signales handlers. it indicates that
152 // the layouting functions have to be called later on
153 // (i.e. in idle time, implemented in OnInternalIdle() ).
154 void GtkUpdateSize() { m_sizeSet = FALSE; }
155
156 // position and size of the window
157 int m_x, m_y;
158 int m_width, m_height;
159 int m_oldClientWidth,m_oldClientHeight;
160
161 /* see the docs in src/gtk/window.cpp */
162 GtkWidget *m_widget;
163 GtkWidget *m_wxwindow;
164
165 #if HAVE_XIM
166 /* XIM support for wxWindows */
167 GdkIC *m_ic;
168 GdkICAttr *m_icattr;
169 #endif
170
171 /* scrolling stuff */
172 GtkAdjustment *m_hAdjust,*m_vAdjust;
173 float m_oldHorizontalPos;
174 float m_oldVerticalPos;
175
176 // extra (wxGTK-specific) flags
177 bool m_needParent:1; /* ! wxFrame, wxDialog, wxNotebookPage ? */
178 bool m_noExpose:1; /* wxGLCanvas has its own redrawing */
179 bool m_nativeSizeEvent:1; /* wxGLCanvas sends wxSizeEvent upon "alloc_size" */
180 bool m_hasScrolling:1;
181 bool m_hasVMT:1;
182 bool m_sizeSet:1;
183 bool m_resizing:1;
184 bool m_isStaticBox:1; /* faster than IS_KIND_OF */
185 bool m_isRadioButton:1; /* faster than IS_KIND_OF */
186 bool m_isFrame:1; /* faster than IS_KIND_OF */
187 bool m_acceptsFocus:1; /* not wxStaticBox, not wxStaticBitmap etc. */
188 bool m_isScrolling;
189 bool m_clipPaintRegion; /* TRUE after ScrollWindow() */
190 bool m_queuedFullRedraw; /* TRUE after DoMoveWindow */
191
192 // these are true if the style were set before the widget was realized
193 // (typcally in the constructor) but the actual GTK style must not be set
194 // before the widget has been "realized"
195 bool m_delayedForegroundColour:1;
196 bool m_delayedBackgroundColour:1;
197
198 // contains GTK's widgets internal information about non-default widget
199 // font and colours. we create one for each widget that gets any
200 // non-default attribute set via SetFont() or SetForegroundColour() /
201 // SetBackgroundColour().
202 GtkStyle *m_widgetStyle;
203
204 // C++ has no virtual methods in the constrcutor of any class but we need
205 // different methods of inserting a child window into a wxFrame,
206 // wxMDIFrame, wxNotebook etc. this is the callback that will get used.
207 wxInsertChildFunction m_insertCallback;
208
209 // implement the base class pure virtuals
210 virtual void DoClientToScreen( int *x, int *y ) const;
211 virtual void DoScreenToClient( int *x, int *y ) const;
212 virtual void DoGetPosition( int *x, int *y ) const;
213 virtual void DoGetSize( int *width, int *height ) const;
214 virtual void DoGetClientSize( int *width, int *height ) const;
215 virtual void DoSetSize(int x, int y,
216 int width, int height,
217 int sizeFlags = wxSIZE_AUTO);
218 virtual void DoSetClientSize(int width, int height);
219 virtual void DoMoveWindow(int x, int y, 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_NO_COPY_CLASS(wxWindow);
230 };
231
232 #endif // __GTKWINDOWH__