]> git.saurik.com Git - wxWidgets.git/blame - include/wx/gtk1/window.h
Set/GetTitle out of wxWindowBase, forked and put to gtk/window.h and mgl/window.h...
[wxWidgets.git] / include / wx / gtk1 / window.h
CommitLineData
c801d85f 1/////////////////////////////////////////////////////////////////////////////
1e6feb95 2// Name: wx/gtk/window.h
c801d85f
KB
3// Purpose:
4// Author: Robert Roebling
58614078
RR
5// Id: $Id$
6// Copyright: (c) 1998 Robert Roebling
aed8df38 7// Licence: wxWindows licence
c801d85f
KB
8/////////////////////////////////////////////////////////////////////////////
9
10
11#ifndef __GTKWINDOWH__
12#define __GTKWINDOWH__
13
14#ifdef __GNUG__
bfc6fde4 15 #pragma interface
c801d85f
KB
16#endif
17
6ca41e57 18//-----------------------------------------------------------------------------
fd0eed64 19// callback definition for inserting a window (internal)
6ca41e57
RR
20//-----------------------------------------------------------------------------
21
1e6feb95
VZ
22class wxWindowGTK;
23typedef void (*wxInsertChildFunction)( wxWindowGTK*, wxWindowGTK* );
6ca41e57 24
c801d85f 25//-----------------------------------------------------------------------------
1e6feb95 26// wxWindowGTK
c801d85f
KB
27//-----------------------------------------------------------------------------
28
1e6feb95 29class wxWindowGTK : public wxWindowBase
c801d85f 30{
aed8df38 31public:
bfc6fde4
VZ
32 // creating the window
33 // -------------------
1e6feb95
VZ
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);
f03fc89f
VZ
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);
1e6feb95 47 virtual ~wxWindowGTK();
cd0183ca 48
f03fc89f
VZ
49 // implement base class (pure) virtual methods
50 // -------------------------------------------
a264ece2
VS
51 virtual void SetTitle( const wxString& title ) { m_title = title; }
52 virtual wxString GetTitle() const { return m_title; }
53
bfc6fde4 54 virtual bool Destroy();
bfc6fde4 55
f03fc89f
VZ
56 virtual void Raise();
57 virtual void Lower();
ff8bfdbb 58
f03fc89f
VZ
59 virtual bool Show( bool show = TRUE );
60 virtual bool Enable( bool enable = TRUE );
ff8bfdbb 61
f03fc89f 62 virtual bool IsRetained() const;
2f2aa628 63
bfc6fde4 64 virtual void SetFocus();
f03fc89f 65 virtual bool AcceptsFocus() const;
ff8bfdbb 66
fdb7dadb 67 virtual bool Reparent( wxWindowBase *newParent );
ff8bfdbb 68
f03fc89f
VZ
69 virtual void WarpPointer(int x, int y);
70 virtual void CaptureMouse();
71 virtual void ReleaseMouse();
b1170810 72
f03fc89f
VZ
73 virtual void Refresh( bool eraseBackground = TRUE,
74 const wxRect *rect = (const wxRect *) NULL );
bfc6fde4
VZ
75 virtual void Clear();
76
f03fc89f
VZ
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 );
cd0183ca 81
bfc6fde4
VZ
82 virtual int GetCharHeight() const;
83 virtual int GetCharWidth() const;
f03fc89f
VZ
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;
aed8df38 90
6522713c 91#if wxUSE_MENUS_NATIVE
a1665b22 92 virtual bool DoPopupMenu( wxMenu *menu, int x, int y );
6522713c 93#endif // wxUSE_MENUS_NATIVE
8bbe427f 94
f03fc89f
VZ
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 );
8bbe427f 103
f03fc89f
VZ
104#if wxUSE_DRAG_AND_DROP
105 virtual void SetDropTarget( wxDropTarget *dropTarget );
106#endif // wxUSE_DRAG_AND_DROP
8bbe427f 107
f03fc89f
VZ
108 // implementation
109 // --------------
c801d85f 110
d7c24517
VZ
111 virtual WXWidget GetHandle() const { return m_widget; }
112
ab2b3dd4
RR
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 */
bfc6fde4 116 virtual void OnInternalIdle();
ff8bfdbb 117
f362b96d 118 /* For compatibility across platforms (not in event table) */
20e85460
JS
119 void OnIdle(wxIdleEvent& WXUNUSED(event)) {};
120
fdca68a6
JS
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
4dcaf11a 126 /* used by all window classes in the widget creation process */
1e6feb95 127 bool PreCreation( wxWindowGTK *parent, const wxPoint &pos, const wxSize &size );
bfc6fde4 128 void PostCreation();
ff8bfdbb 129
ddb6bc71
RR
130 /* internal addition of child windows. differs from class
131 to class not by using virtual functions but by using
132 the m_insertCallback */
1e6feb95 133 void DoAddChild(wxWindowGTK *child);
f03fc89f 134
bfc6fde4
VZ
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. */
ff8bfdbb 141
bfc6fde4
VZ
142 virtual GtkWidget* GetConnectWidget();
143 virtual bool IsOwnGtkWindow( GdkWindow *window );
144 void ConnectWidget( GtkWidget *widget );
8bbe427f 145
ddb6bc71
RR
146 /* creates a new widget style if none is there
147 and sets m_widgetStyle to this value. */
bfc6fde4 148 GtkStyle *GetWidgetStyle();
7af6f327 149
ddb6bc71 150 /* called by SetFont() and SetXXXColour etc */
bfc6fde4 151 void SetWidgetStyle();
7af6f327 152
ddb6bc71 153 /* overridden in many GTK widgets */
bfc6fde4 154 virtual void ApplyWidgetStyle();
ff8bfdbb
VZ
155
156#if wxUSE_TOOLTIPS
74ce55e9 157 virtual void ApplyToolTip( GtkTooltips *tips, const wxChar *tip );
ff8bfdbb 158#endif // wxUSE_TOOLTIPS
301cd871 159
739730ca
RR
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() ).
5b8a521e 163 void GtkUpdateSize() { m_sizeSet = FALSE; }
ff8bfdbb 164
f03fc89f
VZ
165 // position and size of the window
166 int m_x, m_y;
167 int m_width, m_height;
5b8a521e 168 int m_oldClientWidth,m_oldClientHeight;
bcf1fa6b 169
ddb6bc71 170 /* see the docs in src/gtk/window.cpp */
a2053b27 171 GtkWidget *m_widget;
bfc6fde4 172 GtkWidget *m_wxwindow;
f03fc89f 173
63081513
RR
174#if HAVE_XIM
175 /* XIM support for wxWindows */
176 GdkIC *m_ic;
177 GdkICAttr *m_icattr;
178#endif
3379ed37 179
ddb6bc71 180 /* scrolling stuff */
bfc6fde4 181 GtkAdjustment *m_hAdjust,*m_vAdjust;
739730ca
RR
182 float m_oldHorizontalPos;
183 float m_oldVerticalPos;
184
f03fc89f 185 // extra (wxGTK-specific) flags
30760ce7
RR
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" */
f03fc89f 189 bool m_hasScrolling:1;
f03fc89f
VZ
190 bool m_hasVMT:1;
191 bool m_sizeSet:1;
192 bool m_resizing:1;
30760ce7
RR
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. */
846e1424 197 bool m_isScrolling;
b6fa52db
RR
198 bool m_clipPaintRegion; /* TRUE after ScrollWindow() */
199 bool m_queuedFullRedraw; /* TRUE after DoMoveWindow */
7af6f327 200
d7c24517
VZ
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"
739730ca
RR
204 bool m_delayedForegroundColour:1;
205 bool m_delayedBackgroundColour:1;
3379ed37 206
d7c24517
VZ
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().
f03fc89f 211 GtkStyle *m_widgetStyle;
bfc6fde4 212
d7c24517
VZ
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.
f03fc89f 216 wxInsertChildFunction m_insertCallback;
68995f26 217
a264ece2
VS
218 // the window label
219 wxString m_title;
220
f03fc89f 221 // implement the base class pure virtuals
dabc0cd5
VZ
222 virtual void DoClientToScreen( int *x, int *y ) const;
223 virtual void DoScreenToClient( int *x, int *y ) const;
f03fc89f
VZ
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;
bfc6fde4
VZ
227 virtual void DoSetSize(int x, int y,
228 int width, int height,
229 int sizeFlags = wxSIZE_AUTO);
bfc6fde4 230 virtual void DoSetClientSize(int width, int height);
9d9b7755 231 virtual void DoMoveWindow(int x, int y, int width, int height);
aed8df38 232
f03fc89f
VZ
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
68dda785 240private:
1e6feb95 241 DECLARE_DYNAMIC_CLASS(wxWindowGTK)
1a0d517e 242 DECLARE_NO_COPY_CLASS(wxWindowGTK)
c801d85f
KB
243};
244
3379ed37
VZ
245extern wxWindow *wxFindFocusedChild(wxWindowGTK *win);
246
c801d85f 247#endif // __GTKWINDOWH__