1 /////////////////////////////////////////////////////////////////////////////
4 // Author: Robert Roebling
6 // Copyright: (c) 1998 Robert Roebling
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
11 #ifndef __GTKWINDOWH__
12 #define __GTKWINDOWH__
18 //-----------------------------------------------------------------------------
19 // callback definition for inserting a window (internal)
20 //-----------------------------------------------------------------------------
22 typedef void (*wxInsertChildFunction
)( wxWindow
*, wxWindow
* );
24 //-----------------------------------------------------------------------------
26 //-----------------------------------------------------------------------------
28 class wxWindow
: public wxWindowBase
30 DECLARE_DYNAMIC_CLASS(wxWindow
)
33 // creating the window
34 // -------------------
36 wxWindow(wxWindow
*parent
,
38 const wxPoint
& pos
= wxDefaultPosition
,
39 const wxSize
& size
= wxDefaultSize
,
41 const wxString
& name
= wxPanelNameStr
);
42 bool Create(wxWindow
*parent
,
44 const wxPoint
& pos
= wxDefaultPosition
,
45 const wxSize
& size
= wxDefaultSize
,
47 const wxString
& name
= wxPanelNameStr
);
50 // implement base class (pure) virtual methods
51 // -------------------------------------------
52 virtual bool Destroy();
57 virtual bool Show( bool show
= TRUE
);
58 virtual bool Enable( bool enable
= TRUE
);
60 virtual bool IsRetained() const;
62 virtual void SetFocus();
63 virtual bool AcceptsFocus() const;
65 virtual bool Reparent( wxWindow
*newParent
);
67 virtual void WarpPointer(int x
, int y
);
68 virtual void CaptureMouse();
69 virtual void ReleaseMouse();
71 virtual void Refresh( bool eraseBackground
= TRUE
,
72 const wxRect
*rect
= (const wxRect
*) NULL
);
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
);
80 virtual int GetCharHeight() const;
81 virtual int GetCharWidth() const;
82 virtual void GetTextExtent(const wxString
& string
,
84 int *descent
= (int *) NULL
,
85 int *externalLeading
= (int *) NULL
,
86 const wxFont
*theFont
= (const wxFont
*) NULL
)
89 virtual void ClientToScreen( int *x
, int *y
) const;
90 virtual void ScreenToClient( int *x
, int *y
) const;
92 virtual bool PopupMenu( wxMenu
*menu
, int x
, int y
);
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
);
103 #if wxUSE_DRAG_AND_DROP
104 virtual void SetDropTarget( wxDropTarget
*dropTarget
);
105 #endif // wxUSE_DRAG_AND_DROP
110 // wxWindows callbacks
111 void OnKeyDown( wxKeyEvent
&event
);
113 // also sets the global flag
114 void SetScrolling(bool scroll
);
116 bool HasScrolling() const { return m_hasScrolling
; }
117 bool IsScrolling() const { return m_isScrolling
; }
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
122 virtual void OnInternalIdle();
124 /* For compatibility across platforms (not in event table) */
125 void OnIdle(wxIdleEvent
& WXUNUSED(event
)) {};
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
);
132 void InsertChild(wxWindow
*child
) { (*m_insertCallback
)(this, child
); }
133 void DoAddChild(wxWindow
*child
) { AddChild(child
); InsertChild(child
); }
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. */
142 virtual GtkWidget
* GetConnectWidget();
143 virtual bool IsOwnGtkWindow( GdkWindow
*window
);
144 void ConnectWidget( GtkWidget
*widget
);
146 GtkStyle
*GetWidgetStyle();
147 void SetWidgetStyle();
148 virtual void ApplyWidgetStyle();
151 virtual void ApplyToolTip( GtkTooltips
*tips
, const wxChar
*tip
);
152 #endif // wxUSE_TOOLTIPS
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(); }
160 // position and size of the window
162 int m_width
, m_height
;
164 // see the docs in src/gtk/window.cpp
166 GtkWidget
*m_wxwindow
;
169 GtkAdjustment
*m_hAdjust
,*m_vAdjust
;
170 float m_oldHorizontalPos
,
174 // extra (wxGTK-specific) flags
175 bool m_needParent
:1; /* ! wxFrame, wxDialog, wxNotebookPage ? */
176 bool m_hasScrolling
:1;
177 bool m_isScrolling
: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. */
185 GtkStyle
*m_widgetStyle
;
187 wxInsertChildFunction m_insertCallback
;
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
);
199 virtual void DoSetToolTip( wxToolTip
*tip
);
200 #endif // wxUSE_TOOLTIPS
202 // common part of all ctors (can't be virtual because called from ctor)
206 DECLARE_EVENT_TABLE()
209 #endif // __GTKWINDOWH__