moved 2.1-staging to trunk @ rev 1765
[ardour.git] / libs / gtkmm2 / gtk / gtkmm / eventbox.h
1 // -*- c++ -*-
2 // Generated by gtkmmproc -- DO NOT MODIFY!
3 #ifndef _GTKMM_EVENTBOX_H
4 #define _GTKMM_EVENTBOX_H
5
6
7 #include <glibmm.h>
8
9 /* $Id$ */
10
11 /* eventbox.h
12  * 
13  * Copyright (C) 1998-2002 The gtkmm Development Team
14  *
15  * This library is free software; you can redistribute it and/or
16  * modify it under the terms of the GNU Library General Public
17  * License as published by the Free Software Foundation; either
18  * version 2 of the License, or (at your option) any later version.
19  *
20  * This library is distributed in the hope that it will be useful,
21  * but WITHOUT ANY WARRANTY; without even the implied warranty of
22  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23  * Library General Public License for more details.
24  *
25  * You should have received a copy of the GNU Library General Public
26  * License along with this library; if not, write to the Free
27  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
28  */
29
30 #include <gtkmm/bin.h>
31
32
33 #ifndef DOXYGEN_SHOULD_SKIP_THIS
34 typedef struct _GtkEventBox GtkEventBox;
35 typedef struct _GtkEventBoxClass GtkEventBoxClass;
36 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
37
38
39 namespace Gtk
40 { class EventBox_Class; } // namespace Gtk
41 namespace Gtk
42 {
43
44 /** Event capturing box.
45  *
46  * This widget adds an X Window where one does not
47  * normally appear, allowing you to capture events.
48  * It will receive any event which is specified
49  * with set_events().
50  *
51  * This widget is generally used to add Gtk::Tooltips, button presses,
52  * and clipping to widgets derived from Gtk::Misc.
53  *
54  * @ingroup Widgets
55  */
56
57 class EventBox : public Bin
58 {
59   public:
60 #ifndef DOXYGEN_SHOULD_SKIP_THIS
61   typedef EventBox CppObjectType;
62   typedef EventBox_Class CppClassType;
63   typedef GtkEventBox BaseObjectType;
64   typedef GtkEventBoxClass BaseClassType;
65 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
66
67   virtual ~EventBox();
68
69 #ifndef DOXYGEN_SHOULD_SKIP_THIS
70
71 private:
72   friend class EventBox_Class;
73   static CppClassType eventbox_class_;
74
75   // noncopyable
76   EventBox(const EventBox&);
77   EventBox& operator=(const EventBox&);
78
79 protected:
80   explicit EventBox(const Glib::ConstructParams& construct_params);
81   explicit EventBox(GtkEventBox* castitem);
82
83 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
84
85 public:
86 #ifndef DOXYGEN_SHOULD_SKIP_THIS
87   static GType get_type()      G_GNUC_CONST;
88   static GType get_base_type() G_GNUC_CONST;
89 #endif
90
91   ///Provides access to the underlying C GtkObject.
92   GtkEventBox*       gobj()       { return reinterpret_cast<GtkEventBox*>(gobject_); }
93
94   ///Provides access to the underlying C GtkObject.
95   const GtkEventBox* gobj() const { return reinterpret_cast<GtkEventBox*>(gobject_); }
96
97
98 public:
99   //C++ methods used to invoke GTK+ virtual functions:
100 #ifdef GLIBMM_VFUNCS_ENABLED
101 #endif //GLIBMM_VFUNCS_ENABLED
102
103 protected:
104   //GTK+ Virtual Functions (override these to change behaviour):
105 #ifdef GLIBMM_VFUNCS_ENABLED
106 #endif //GLIBMM_VFUNCS_ENABLED
107
108   //Default Signal Handlers::
109 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
110 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
111
112
113 private:
114
115 public:
116   EventBox();
117
118   
119   /** Returns whether the event box has a visible window.
120    * See set_visible_window() for details.
121    * @return <tt>true</tt> if the event box window is visible
122    * 
123    * @newin2p4.
124    */
125   bool get_visible_window() const;
126   
127   /** Set whether the event box uses a visible or invisible child
128    * window. The default is to use visible windows.
129    * 
130    * In an invisible window event box, the window that that the
131    * event box creates is a Gdk::INPUT_ONLY window, which 
132    * means that it is invisible and only serves to receive
133    * events.
134    * 
135    * A visible window event box creates a visible (Gdk::INPUT_OUTPUT)
136    * window that acts as the parent window for all the widgets  
137    * contained in the event box.
138    * 
139    * You should generally make your event box invisible if
140    * you just want to trap events. Creating a visible window
141    * may cause artifacts that are visible to the user, especially
142    * if the user is using a theme with gradients or pixmaps.
143    * 
144    * The main reason to create a non input-only event box is if
145    * you want to set the background to a different color or
146    * draw on it.
147    * 
148    * &lt;note&gt;
149    * There is one unexpected issue for an invisible event box that has its
150    * window below the child. (See set_above_child().)
151    * Since the input-only window is not an ancestor window of any windows
152    * that descendent widgets of the event box create, events on these 
153    * windows aren't propagated up by the windowing system, but only by GTK+.
154    * The practical effect of this is if an event isn't in the event
155    * mask for the descendant window (see Gtk::Widget::add_events()),  
156    * it won't be received by the event box. 
157    * 
158    * This problem doesn't occur for visible event boxes, because in
159    * that case, the event box window is actually the ancestor of the
160    * descendant windows, not just at the same place on the screen.
161    * &lt;/note&gt;
162    * 
163    * @newin2p4
164    * @param visible_window Boolean value.
165    */
166   void set_visible_window(bool visible_window = true);
167   
168   /** Returns whether the event box window is above or below the
169    * windows of its child. See set_above_child() for
170    * details.
171    * @return <tt>true</tt> if the event box window is above the window
172    * of its child.
173    * 
174    * @newin2p4.
175    */
176   bool get_above_child() const;
177   
178   /** Set whether the event box window is positioned above the windows of its child,
179    * as opposed to below it. If the window is above, all events inside the
180    * event box will go to the event box. If the window is below, events
181    * in windows of child widgets will first got to that widget, and then
182    * to its parents.
183    * 
184    * The default is to keep the window below the child.
185    * 
186    * @newin2p4
187    * @param above_child <tt>true</tt> if the event box window is above the windows of its child.
188    */
189   void set_above_child(bool above_child = true);
190
191   #ifdef GLIBMM_PROPERTIES_ENABLED
192 /** Whether the event box is visible
193    *
194    * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
195    * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
196    * the value of the property changes.
197    */
198   Glib::PropertyProxy<bool> property_visible_window() ;
199 #endif //#GLIBMM_PROPERTIES_ENABLED
200
201 #ifdef GLIBMM_PROPERTIES_ENABLED
202 /** Whether the event box is visible
203    *
204    * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
205    * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
206    * the value of the property changes.
207    */
208   Glib::PropertyProxy_ReadOnly<bool> property_visible_window() const;
209 #endif //#GLIBMM_PROPERTIES_ENABLED
210  
211   #ifdef GLIBMM_PROPERTIES_ENABLED
212 /** Whether the event-trapping window of the eventbox is above the window of the child widget as opposed to below it.
213    *
214    * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
215    * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
216    * the value of the property changes.
217    */
218   Glib::PropertyProxy<bool> property_above_child() ;
219 #endif //#GLIBMM_PROPERTIES_ENABLED
220
221 #ifdef GLIBMM_PROPERTIES_ENABLED
222 /** Whether the event-trapping window of the eventbox is above the window of the child widget as opposed to below it.
223    *
224    * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
225    * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
226    * the value of the property changes.
227    */
228   Glib::PropertyProxy_ReadOnly<bool> property_above_child() const;
229 #endif //#GLIBMM_PROPERTIES_ENABLED
230  
231
232 };
233
234 } /* namespace Gtk */
235
236
237 namespace Glib
238 {
239   /** @relates Gtk::EventBox
240    * @param object The C instance
241    * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
242    * @result A C++ instance that wraps this C instance.
243    */
244   Gtk::EventBox* wrap(GtkEventBox* object, bool take_copy = false);
245 } //namespace Glib
246
247
248 #endif /* _GTKMM_EVENTBOX_H */
249