]> git.saurik.com Git - wxWidgets.git/blame - include/wx/gtk/window.h
Updated for Mahogany.
[wxWidgets.git] / include / wx / gtk / window.h
CommitLineData
c801d85f
KB
1/////////////////////////////////////////////////////////////////////////////
2// Name: window.h
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
22typedef void (*wxInsertChildFunction)( wxWindow*, wxWindow* );
23
c801d85f
KB
24//-----------------------------------------------------------------------------
25// wxWindow
26//-----------------------------------------------------------------------------
27
f03fc89f 28class wxWindow : public wxWindowBase
c801d85f 29{
bfc6fde4 30 DECLARE_DYNAMIC_CLASS(wxWindow)
8bbe427f 31
aed8df38 32public:
bfc6fde4
VZ
33 // creating the window
34 // -------------------
35 wxWindow();
f03fc89f
VZ
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);
bfc6fde4 48 virtual ~wxWindow();
cd0183ca 49
f03fc89f
VZ
50 // implement base class (pure) virtual methods
51 // -------------------------------------------
bfc6fde4 52 virtual bool Destroy();
bfc6fde4 53
f03fc89f
VZ
54 virtual void Raise();
55 virtual void Lower();
ff8bfdbb 56
f03fc89f
VZ
57 virtual bool Show( bool show = TRUE );
58 virtual bool Enable( bool enable = TRUE );
ff8bfdbb 59
f03fc89f 60 virtual bool IsRetained() const;
2f2aa628 61
bfc6fde4 62 virtual void SetFocus();
f03fc89f 63 virtual bool AcceptsFocus() const;
ff8bfdbb 64
f03fc89f 65 virtual bool Reparent( wxWindow *newParent );
ff8bfdbb 66
f03fc89f
VZ
67 virtual void WarpPointer(int x, int y);
68 virtual void CaptureMouse();
69 virtual void ReleaseMouse();
b1170810 70
f03fc89f
VZ
71 virtual void Refresh( bool eraseBackground = TRUE,
72 const wxRect *rect = (const wxRect *) NULL );
bfc6fde4
VZ
73 virtual void Clear();
74
f03fc89f
VZ
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 );
cd0183ca 79
bfc6fde4
VZ
80 virtual int GetCharHeight() const;
81 virtual int GetCharWidth() const;
f03fc89f
VZ
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;
aed8df38 88
f03fc89f
VZ
89 virtual void ClientToScreen( int *x, int *y ) const;
90 virtual void ScreenToClient( int *x, int *y ) const;
8bbe427f 91
f03fc89f 92 virtual bool PopupMenu( wxMenu *menu, int x, int y );
8bbe427f 93
f03fc89f
VZ
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 );
8bbe427f 102
f03fc89f
VZ
103#if wxUSE_DRAG_AND_DROP
104 virtual void SetDropTarget( wxDropTarget *dropTarget );
105#endif // wxUSE_DRAG_AND_DROP
8bbe427f 106
f03fc89f
VZ
107 // implementation
108 // --------------
c801d85f 109
f03fc89f 110 // wxWindows callbacks
bfc6fde4 111 void OnKeyDown( wxKeyEvent &event );
aed8df38 112
f03fc89f
VZ
113 // simple accessors
114 bool HasVMT() const { return m_hasVMT; }
e149aaeb 115
f03fc89f
VZ
116 int GetX() const { return m_x; }
117 int GetY() const { return m_y; }
118 int GetWidth() const { return m_width; }
119 int GetHeight() const { return m_height; }
e149aaeb 120
f03fc89f
VZ
121 GtkWidget *GetWxWindow() const { return m_wxwindow; }
122 GtkWidget *GetWidget() const { return GetHandle(); }
8bbe427f 123
f03fc89f
VZ
124 GtkAdjustment *GetHAdjust() const { return m_hAdjust; }
125 GtkAdjustment *GetVAdjust() const { return m_vAdjust; }
8bbe427f 126
f03fc89f
VZ
127 float GetOldHorizontalPos() const { return m_oldHorizontalPos; }
128 float GetOldVerticalPos() const { return m_oldVerticalPos; }
aed8df38 129
f03fc89f
VZ
130 void SetOldHorizontalPos(float fpos) { m_oldHorizontalPos = fpos; }
131 void SetOldVerticalPos(float fpos) { m_oldVerticalPos = fpos; }
cd0183ca 132
f03fc89f 133 bool IsSizeSet() const { return m_sizeSet; }
aed8df38 134
f03fc89f
VZ
135 // also sets the global flag
136 void SetScrolling(bool scroll);
8bbe427f 137
f03fc89f
VZ
138 bool HasScrolling() const { return m_hasScrolling; }
139 bool IsScrolling() const { return m_isScrolling; }
140 bool IsStaticBox() const { return m_isStaticBox; }
301cd871 141
ab2b3dd4
RR
142 /* I don't want users to override what's done in idle so everything that
143 has to be done in idle time in order for wxGTK to work is done in
144 OnInternalIdle */
bfc6fde4 145 virtual void OnInternalIdle();
ff8bfdbb 146
f362b96d 147 /* For compatibility across platforms (not in event table) */
20e85460
JS
148 void OnIdle(wxIdleEvent& WXUNUSED(event)) {};
149
bfc6fde4 150 /* used by all classes in the widget creation process */
bfc6fde4
VZ
151 void PreCreation( wxWindow *parent, wxWindowID id, const wxPoint &pos,
152 const wxSize &size, long style, const wxString &name );
153 void PostCreation();
ff8bfdbb 154
f03fc89f
VZ
155 void InsertChild(wxWindow *child) { (*m_insertCallback)(this, child); }
156 void DoAddChild(wxWindow *child) { AddChild(child); InsertChild(child); }
157
bfc6fde4
VZ
158 /* the methods below are required because many native widgets
159 are composed of several subwidgets and setting a style for
160 the widget means setting it for all subwidgets as well.
161 also, it is nor clear, which native widget is the top
162 widget where (most of) the input goes. even tooltips have
163 to be applied to all subwidgets. */
ff8bfdbb 164
bfc6fde4
VZ
165 virtual GtkWidget* GetConnectWidget();
166 virtual bool IsOwnGtkWindow( GdkWindow *window );
167 void ConnectWidget( GtkWidget *widget );
8bbe427f 168
bfc6fde4
VZ
169 GtkStyle *GetWidgetStyle();
170 void SetWidgetStyle();
171 virtual void ApplyWidgetStyle();
ff8bfdbb
VZ
172
173#if wxUSE_TOOLTIPS
74ce55e9 174 virtual void ApplyToolTip( GtkTooltips *tips, const wxChar *tip );
ff8bfdbb 175#endif // wxUSE_TOOLTIPS
301cd871 176
f03fc89f
VZ
177 // called from GTK signales handlers
178 void UpdateSize() { m_sizeSet = FALSE; }
179 void InternalSetPosition(int x, int y) { m_x = x; m_y = y; }
180 void InternalSetSize(int w, int h)
181 { m_width = w; m_height = h; UpdateSize(); }
ff8bfdbb 182
f03fc89f
VZ
183protected:
184 // position and size of the window
185 int m_x, m_y;
186 int m_width, m_height;
bcf1fa6b 187
f03fc89f 188 // see the docs in src/gtk/window.cpp
bfc6fde4 189 GtkWidget *m_wxwindow;
f03fc89f
VZ
190
191 // scrolling stuff
bfc6fde4 192 GtkAdjustment *m_hAdjust,*m_vAdjust;
f03fc89f
VZ
193 float m_oldHorizontalPos,
194 m_oldVerticalPos;
bfc6fde4 195 GdkGC *m_scrollGC;
bcf1fa6b 196
f03fc89f
VZ
197 // extra (wxGTK-specific) flags
198 bool m_needParent:1; /* ! wxFrame, wxDialog, wxNotebookPage ? */
199 bool m_hasScrolling:1;
200 bool m_isScrolling:1;
201 bool m_hasVMT:1;
202 bool m_sizeSet:1;
203 bool m_resizing:1;
204 bool m_isStaticBox:1; /* faster than IS_KIND_OF */
205 bool m_isFrame:1; /* faster than IS_KIND_OF */
206 bool m_acceptsFocus:1; /* ! wxStaticBox etc. */
bcf1fa6b 207
f03fc89f 208 GtkStyle *m_widgetStyle;
bfc6fde4 209
f03fc89f 210 wxInsertChildFunction m_insertCallback;
68995f26 211
f03fc89f
VZ
212 // implement the base class pure virtuals
213 virtual void DoGetPosition( int *x, int *y ) const;
214 virtual void DoGetSize( int *width, int *height ) const;
215 virtual void DoGetClientSize( int *width, int *height ) const;
bfc6fde4
VZ
216 virtual void DoSetSize(int x, int y,
217 int width, int height,
218 int sizeFlags = wxSIZE_AUTO);
bfc6fde4 219 virtual void DoSetClientSize(int width, int height);
aed8df38 220
f03fc89f
VZ
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
68dda785 228private:
bfc6fde4 229 DECLARE_EVENT_TABLE()
c801d85f
KB
230};
231
232#endif // __GTKWINDOWH__