]> git.saurik.com Git - wxWidgets.git/blob - include/wx/gtk/window.h
Set/GetTitle out of wxWindowBase, forked and put to gtk/window.h and mgl/window.h...
[wxWidgets.git] / include / wx / gtk / window.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/gtk/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 class wxWindowGTK;
23 typedef void (*wxInsertChildFunction)( wxWindowGTK*, wxWindowGTK* );
24
25 //-----------------------------------------------------------------------------
26 // wxWindowGTK
27 //-----------------------------------------------------------------------------
28
29 class wxWindowGTK : public wxWindowBase
30 {
31 public:
32 // creating the window
33 // -------------------
34 wxWindowGTK();
35 wxWindowGTK(wxWindow *parent,
36 wxWindowID id,
37 const wxPoint& pos = wxDefaultPosition,
38 const wxSize& size = wxDefaultSize,
39 long style = 0,
40 const wxString& name = wxPanelNameStr);
41 bool Create(wxWindow *parent,
42 wxWindowID id,
43 const wxPoint& pos = wxDefaultPosition,
44 const wxSize& size = wxDefaultSize,
45 long style = 0,
46 const wxString& name = wxPanelNameStr);
47 virtual ~wxWindowGTK();
48
49 // implement base class (pure) virtual methods
50 // -------------------------------------------
51 virtual void SetTitle( const wxString& title ) { m_title = title; }
52 virtual wxString GetTitle() const { return m_title; }
53
54 virtual bool Destroy();
55
56 virtual void Raise();
57 virtual void Lower();
58
59 virtual bool Show( bool show = TRUE );
60 virtual bool Enable( bool enable = TRUE );
61
62 virtual bool IsRetained() const;
63
64 virtual void SetFocus();
65 virtual bool AcceptsFocus() const;
66
67 virtual bool Reparent( wxWindowBase *newParent );
68
69 virtual void WarpPointer(int x, int y);
70 virtual void CaptureMouse();
71 virtual void ReleaseMouse();
72
73 virtual void Refresh( bool eraseBackground = TRUE,
74 const wxRect *rect = (const wxRect *) NULL );
75 virtual void Clear();
76
77 virtual bool SetBackgroundColour( const wxColour &colour );
78 virtual bool SetForegroundColour( const wxColour &colour );
79 virtual bool SetCursor( const wxCursor &cursor );
80 virtual bool SetFont( const wxFont &font );
81
82 virtual int GetCharHeight() const;
83 virtual int GetCharWidth() const;
84 virtual void GetTextExtent(const wxString& string,
85 int *x, int *y,
86 int *descent = (int *) NULL,
87 int *externalLeading = (int *) NULL,
88 const wxFont *theFont = (const wxFont *) NULL)
89 const;
90
91 #if wxUSE_MENUS_NATIVE
92 virtual bool DoPopupMenu( wxMenu *menu, int x, int y );
93 #endif // wxUSE_MENUS_NATIVE
94
95 virtual void SetScrollbar( int orient, int pos, int thumbVisible,
96 int range, bool refresh = TRUE );
97 virtual void SetScrollPos( int orient, int pos, bool refresh = TRUE );
98 virtual int GetScrollPos( int orient ) const;
99 virtual int GetScrollThumb( int orient ) const;
100 virtual int GetScrollRange( int orient ) const;
101 virtual void ScrollWindow( int dx, int dy,
102 const wxRect* rect = (wxRect *) NULL );
103
104 #if wxUSE_DRAG_AND_DROP
105 virtual void SetDropTarget( wxDropTarget *dropTarget );
106 #endif // wxUSE_DRAG_AND_DROP
107
108 // implementation
109 // --------------
110
111 virtual WXWidget GetHandle() const { return m_widget; }
112
113 /* I don't want users to override what's done in idle so everything that
114 has to be done in idle time in order for wxGTK to work is done in
115 OnInternalIdle */
116 virtual void OnInternalIdle();
117
118 /* For compatibility across platforms (not in event table) */
119 void OnIdle(wxIdleEvent& WXUNUSED(event)) {};
120
121 // wxGTK-specific: called recursively by Enable,
122 // to give widgets an oppprtunity to correct their colours after they
123 // have been changed by Enable
124 virtual void OnParentEnable( bool WXUNUSED(enable) ) {};
125
126 /* used by all window classes in the widget creation process */
127 bool PreCreation( wxWindowGTK *parent, const wxPoint &pos, const wxSize &size );
128 void PostCreation();
129
130 /* internal addition of child windows. differs from class
131 to class not by using virtual functions but by using
132 the m_insertCallback */
133 void DoAddChild(wxWindowGTK *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 GtkUpdateSize() { m_sizeSet = FALSE; }
164
165 // position and size of the window
166 int m_x, m_y;
167 int m_width, m_height;
168 int m_oldClientWidth,m_oldClientHeight;
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_hasVMT:1;
191 bool m_sizeSet:1;
192 bool m_resizing:1;
193 bool m_isStaticBox:1; /* faster than IS_KIND_OF */
194 bool m_isRadioButton:1; /* faster than IS_KIND_OF */
195 bool m_isFrame:1; /* faster than IS_KIND_OF */
196 bool m_acceptsFocus:1; /* not wxStaticBox, not wxStaticBitmap etc. */
197 bool m_isScrolling;
198 bool m_clipPaintRegion; /* TRUE after ScrollWindow() */
199 bool m_queuedFullRedraw; /* TRUE after DoMoveWindow */
200
201 // these are true if the style were set before the widget was realized
202 // (typcally in the constructor) but the actual GTK style must not be set
203 // before the widget has been "realized"
204 bool m_delayedForegroundColour:1;
205 bool m_delayedBackgroundColour:1;
206
207 // contains GTK's widgets internal information about non-default widget
208 // font and colours. we create one for each widget that gets any
209 // non-default attribute set via SetFont() or SetForegroundColour() /
210 // SetBackgroundColour().
211 GtkStyle *m_widgetStyle;
212
213 // C++ has no virtual methods in the constrcutor of any class but we need
214 // different methods of inserting a child window into a wxFrame,
215 // wxMDIFrame, wxNotebook etc. this is the callback that will get used.
216 wxInsertChildFunction m_insertCallback;
217
218 // the window label
219 wxString m_title;
220
221 // implement the base class pure virtuals
222 virtual void DoClientToScreen( int *x, int *y ) const;
223 virtual void DoScreenToClient( int *x, int *y ) const;
224 virtual void DoGetPosition( int *x, int *y ) const;
225 virtual void DoGetSize( int *width, int *height ) const;
226 virtual void DoGetClientSize( int *width, int *height ) const;
227 virtual void DoSetSize(int x, int y,
228 int width, int height,
229 int sizeFlags = wxSIZE_AUTO);
230 virtual void DoSetClientSize(int width, int height);
231 virtual void DoMoveWindow(int x, int y, int width, int height);
232
233 #if wxUSE_TOOLTIPS
234 virtual void DoSetToolTip( wxToolTip *tip );
235 #endif // wxUSE_TOOLTIPS
236
237 // common part of all ctors (can't be virtual because called from ctor)
238 void Init();
239
240 private:
241 DECLARE_DYNAMIC_CLASS(wxWindowGTK)
242 DECLARE_NO_COPY_CLASS(wxWindowGTK)
243 };
244
245 extern wxWindow *wxFindFocusedChild(wxWindowGTK *win);
246
247 #endif // __GTKWINDOWH__