]> git.saurik.com Git - wxWidgets.git/blob - include/wx/gtk/window.h
Added wxWindow::DoMoveWindow(..)
[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 // move the window to the specified location and resize it: this is called
108 // from both DoSetSize() and DoSetClientSize()
109 virtual void DoMoveWindow(int x, int y, int width, int height);
110
111 virtual WXWidget GetHandle() const { return m_widget; }
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 window classes in the widget creation process */
128 bool PreCreation( wxWindow *parent, const wxPoint &pos, const wxSize &size );
129 void PostCreation();
130
131 /* internal addition of child windows. differs from class
132 to class not by using virtual functions but by using
133 the m_insertCallback */
134 void DoAddChild(wxWindow *child);
135
136 /* the methods below are required because many native widgets
137 are composed of several subwidgets and setting a style for
138 the widget means setting it for all subwidgets as well.
139 also, it is nor clear, which native widget is the top
140 widget where (most of) the input goes. even tooltips have
141 to be applied to all subwidgets. */
142
143 virtual GtkWidget* GetConnectWidget();
144 virtual bool IsOwnGtkWindow( GdkWindow *window );
145 void ConnectWidget( GtkWidget *widget );
146
147 /* creates a new widget style if none is there
148 and sets m_widgetStyle to this value. */
149 GtkStyle *GetWidgetStyle();
150
151 /* called by SetFont() and SetXXXColour etc */
152 void SetWidgetStyle();
153
154 /* overridden in many GTK widgets */
155 virtual void ApplyWidgetStyle();
156
157 #if wxUSE_TOOLTIPS
158 virtual void ApplyToolTip( GtkTooltips *tips, const wxChar *tip );
159 #endif // wxUSE_TOOLTIPS
160
161 // called from GTK signales handlers. it indicates that
162 // the layouting functions have to be called later on
163 // (i.e. in idle time, implemented in OnInternalIdle() ).
164 void UpdateSize() { m_sizeSet = FALSE; }
165
166 // position and size of the window
167 int m_x, m_y;
168 int m_width, m_height;
169
170 /* see the docs in src/gtk/window.cpp */
171 GtkWidget *m_widget;
172 GtkWidget *m_wxwindow;
173
174 #if HAVE_XIM
175 /* XIM support for wxWindows */
176 GdkIC *m_ic;
177 GdkICAttr *m_icattr;
178 #endif
179
180 /* scrolling stuff */
181 GtkAdjustment *m_hAdjust,*m_vAdjust;
182 float m_oldHorizontalPos;
183 float m_oldVerticalPos;
184
185 // extra (wxGTK-specific) flags
186 bool m_needParent:1; /* ! wxFrame, wxDialog, wxNotebookPage ? */
187 bool m_noExpose:1; /* wxGLCanvas has its own redrawing */
188 bool m_nativeSizeEvent:1; /* wxGLCanvas sends wxSizeEvent upon "alloc_size" */
189 bool m_hasScrolling:1;
190 bool m_isScrolling:1;
191 bool m_hasVMT:1;
192 bool m_sizeSet:1;
193 bool m_resizing:1;
194 bool m_isStaticBox:1; /* faster than IS_KIND_OF */
195 bool m_isRadioButton:1; /* faster than IS_KIND_OF */
196 bool m_isFrame:1; /* faster than IS_KIND_OF */
197 bool m_acceptsFocus:1; /* not wxStaticBox, not wxStaticBitmap etc. */
198
199 // these are true if the style were set before the widget was realized
200 // (typcally in the constructor) but the actual GTK style must not be set
201 // before the widget has been "realized"
202 bool m_delayedFont:1;
203 bool m_delayedForegroundColour:1;
204 bool m_delayedBackgroundColour:1;
205
206 // contains GTK's widgets internal information about non-default widget
207 // font and colours. we create one for each widget that gets any
208 // non-default attribute set via SetFont() or SetForegroundColour() /
209 // SetBackgroundColour().
210 GtkStyle *m_widgetStyle;
211
212 // C++ has no virtual methods in the constrcutor of any class but we need
213 // different methods of inserting a child window into a wxFrame,
214 // wxMDIFrame, wxNotebook etc. this is the callback that will get used.
215 wxInsertChildFunction m_insertCallback;
216
217 // implement the base class pure virtuals
218 virtual void DoClientToScreen( int *x, int *y ) const;
219 virtual void DoScreenToClient( int *x, int *y ) const;
220 virtual void DoGetPosition( int *x, int *y ) const;
221 virtual void DoGetSize( int *width, int *height ) const;
222 virtual void DoGetClientSize( int *width, int *height ) const;
223 virtual void DoSetSize(int x, int y,
224 int width, int height,
225 int sizeFlags = wxSIZE_AUTO);
226 virtual void DoSetClientSize(int width, int height);
227
228 #if wxUSE_TOOLTIPS
229 virtual void DoSetToolTip( wxToolTip *tip );
230 #endif // wxUSE_TOOLTIPS
231
232 // common part of all ctors (can't be virtual because called from ctor)
233 void Init();
234
235 private:
236 DECLARE_NO_COPY_CLASS(wxWindow);
237 };
238
239 #endif // __GTKWINDOWH__