]> git.saurik.com Git - wxWidgets.git/blob - include/wx/gtk1/window.h
Small modifications to Vadims changes
[wxWidgets.git] / include / wx / gtk1 / 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( wxWindow *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 void ClientToScreen( int *x, int *y ) const;
90 virtual void ScreenToClient( int *x, int *y ) const;
91
92 virtual bool PopupMenu( wxMenu *menu, int x, int y );
93
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 );
102
103 #if wxUSE_DRAG_AND_DROP
104 virtual void SetDropTarget( wxDropTarget *dropTarget );
105 #endif // wxUSE_DRAG_AND_DROP
106
107 // implementation
108 // --------------
109
110 // wxWindows callbacks
111 void OnKeyDown( wxKeyEvent &event );
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 classes in the widget creation process */
128 void PreCreation( wxWindow *parent, wxWindowID id, const wxPoint &pos,
129 const wxSize &size, long style, const wxString &name );
130 void PostCreation();
131
132 void InsertChild(wxWindow *child) { (*m_insertCallback)(this, child); }
133 void DoAddChild(wxWindow *child) { AddChild(child); InsertChild(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 GtkStyle *GetWidgetStyle();
147 void SetWidgetStyle();
148 virtual void ApplyWidgetStyle();
149
150 #if wxUSE_TOOLTIPS
151 virtual void ApplyToolTip( GtkTooltips *tips, const wxChar *tip );
152 #endif // wxUSE_TOOLTIPS
153
154 // called from GTK signales handlers
155 void UpdateSize() { m_sizeSet = FALSE; }
156 void InternalSetPosition(int x, int y) { m_x = x; m_y = y; }
157 void InternalSetSize(int w, int h)
158 { m_width = w; m_height = h; UpdateSize(); }
159
160 // position and size of the window
161 int m_x, m_y;
162 int m_width, m_height;
163
164 // see the docs in src/gtk/window.cpp
165 GtkWidget *m_widget;
166 GtkWidget *m_wxwindow;
167
168 // scrolling stuff
169 GtkAdjustment *m_hAdjust,*m_vAdjust;
170 float m_oldHorizontalPos,
171 m_oldVerticalPos;
172 GdkGC *m_scrollGC;
173
174 // extra (wxGTK-specific) flags
175 bool m_needParent:1; /* ! wxFrame, wxDialog, wxNotebookPage ? */
176 bool m_hasScrolling:1;
177 bool m_isScrolling:1;
178 bool m_hasVMT:1;
179 bool m_sizeSet:1;
180 bool m_resizing:1;
181 bool m_isStaticBox:1; /* faster than IS_KIND_OF */
182 bool m_isFrame:1; /* faster than IS_KIND_OF */
183 bool m_acceptsFocus:1; /* ! wxStaticBox etc. */
184
185 GtkStyle *m_widgetStyle;
186
187 wxInsertChildFunction m_insertCallback;
188
189 // implement the base class pure virtuals
190 virtual void DoGetPosition( int *x, int *y ) const;
191 virtual void DoGetSize( int *width, int *height ) const;
192 virtual void DoGetClientSize( int *width, int *height ) const;
193 virtual void DoSetSize(int x, int y,
194 int width, int height,
195 int sizeFlags = wxSIZE_AUTO);
196 virtual void DoSetClientSize(int width, int height);
197
198 #if wxUSE_TOOLTIPS
199 virtual void DoSetToolTip( wxToolTip *tip );
200 #endif // wxUSE_TOOLTIPS
201
202 // common part of all ctors (can't be virtual because called from ctor)
203 void Init();
204
205 private:
206 DECLARE_EVENT_TABLE()
207 };
208
209 #endif // __GTKWINDOWH__