summaryrefslogtreecommitdiff
path: root/libs/gtkmm2/gtk/gtkmm/container.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/gtkmm2/gtk/gtkmm/container.h')
-rw-r--r--libs/gtkmm2/gtk/gtkmm/container.h446
1 files changed, 446 insertions, 0 deletions
diff --git a/libs/gtkmm2/gtk/gtkmm/container.h b/libs/gtkmm2/gtk/gtkmm/container.h
new file mode 100644
index 0000000000..a555229bbf
--- /dev/null
+++ b/libs/gtkmm2/gtk/gtkmm/container.h
@@ -0,0 +1,446 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GTKMM_CONTAINER_H
+#define _GTKMM_CONTAINER_H
+
+#include <glibmm.h>
+
+/* $Id$ */
+
+/* Copyright (C) 1998-2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/listhandle.h>
+#include <gtkmm/widget.h>
+
+
+/** @defgroup Containers Container Widgets
+ * These widgets can be used to group other widgets together.
+ */
+
+/* we'll include gtkfeatures because we dont want to include the whole
+ gtk/gtk.h - this file is used by almost ALL our widgets, so dependencies
+ in minimum - adding things here will increase compile times ALOT */
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+typedef struct _GtkContainer GtkContainer;
+typedef struct _GtkContainerClass GtkContainerClass;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+namespace Gtk
+{ class Container_Class; } // namespace Gtk
+namespace Gtk
+{
+
+class Adjustment;
+class Label;
+
+/** Abstract container class
+ *
+ * This is the abstract container from which all gtk+ widgets which hold
+ * other items derive from. It mainly houses virtual functions
+ * used for inserting and removing children. Containers in gtk+
+ * may hold one item or many items depending on the implementation.
+ *
+ * This interface is used for all single item holding containers.
+ * Multi-item containers provide their own unique interface as their
+ * items are generally more complex. The methods of the derived
+ * classes should be prefered over these.
+ *
+ * @ingroup Widgets
+ */
+
+class Container : public Widget
+{
+ public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef Container CppObjectType;
+ typedef Container_Class CppClassType;
+ typedef GtkContainer BaseObjectType;
+ typedef GtkContainerClass BaseClassType;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+ virtual ~Container();
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+private:
+ friend class Container_Class;
+ static CppClassType container_class_;
+
+ // noncopyable
+ Container(const Container&);
+ Container& operator=(const Container&);
+
+protected:
+ explicit Container(const Glib::ConstructParams& construct_params);
+ explicit Container(GtkContainer* castitem);
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ static GType get_type() G_GNUC_CONST;
+ static GType get_base_type() G_GNUC_CONST;
+#endif
+
+ ///Provides access to the underlying C GtkObject.
+ GtkContainer* gobj() { return reinterpret_cast<GtkContainer*>(gobject_); }
+
+ ///Provides access to the underlying C GtkObject.
+ const GtkContainer* gobj() const { return reinterpret_cast<GtkContainer*>(gobject_); }
+
+
+public:
+ //C++ methods used to invoke GTK+ virtual functions:
+
+protected:
+ //GTK+ Virtual Functions (override these to change behaviour):
+
+ //Default Signal Handlers::
+ virtual void on_add(Widget* widget);
+ virtual void on_remove(Widget* widget);
+ virtual void on_check_resize();
+ virtual void on_set_focus_child(Widget* widget);
+
+
+private:
+
+
+public:
+
+/* Application-level methods */
+
+
+ /** Sets the border width of the container.
+ *
+ * The border width of a container is the amount of space to leave
+ * around the outside of the container. The only exception to this is
+ * Gtk::Window; because toplevel windows can't leave space outside,
+ * they leave the space inside. The border is added on all sides of
+ * the container. To add space to only one side, one approach is to
+ * create a Gtk::Alignment widget, call Gtk::Widget::set_usize() to give
+ * it a size, and place it on the side of the container as a spacer.
+ * @param border_width Amount of blank space to leave <em>outside</em> the container.
+ * Valid values are in the range 0-65535 pixels.
+ */
+ void set_border_width(guint border_width);
+
+
+ /** Retrieves the border width of the container. See
+ * set_border_width().
+ * @return The current border width.
+ */
+ guint get_border_width() const;
+
+ //This is virtual so that we can override it in Gtk::ScrolledWindow:
+ virtual void add(Widget& widget);
+
+
+ /** Removes @a widget from @a container . @a widget must be inside @a container .
+ * Note that @a container will own a reference to @a widget , and that this
+ * may be the last reference held; so removing a widget from its
+ * container can destroy that widget. If you want to use @a widget
+ * again, you need to add a reference to it while it's not inside
+ * a container, using Glib::object_ref(). If you don't want to use @a widget
+ * again it's usually more efficient to simply destroy it directly
+ * using Gtk::Widget::destroy() since this will remove it from the
+ * container and help break any circular reference count cycles.
+ * @param widget A current child of @a container .
+ */
+
+ void remove(Widget& widget);
+
+
+ /** Sets the resize mode for the container.
+ *
+ * The resize mode of a container determines whether a resize request
+ * will be passed to the container's parent, queued for later execution
+ * or executed immediately.
+ * @param resize_mode The new resize mode.
+ */
+ void set_resize_mode(ResizeMode resize_mode);
+
+
+ /** Returns the resize mode for the container. See
+ * set_resize_mode().
+ * @return The current resize mode.
+ */
+ ResizeMode get_resize_mode() const;
+
+ /// Request that contained widgets check their size
+
+ void check_resize();
+
+ /** For instance,
+ * void on_foreach(Gtk::Widget* widget);
+ */
+ typedef sigc::slot<void, Widget&> ForeachSlot;
+
+ /** Operate on contained items
+ * This is largely an internal used mainly for things like
+ * creating duplicates of internal lists and other such
+ * operations. The result is lossy as it only gets the
+ * the main child and not its external pieces.
+ *
+ * For example notebook pages contain a page, a label, and
+ * a menu item. But this only operates on the pages.
+ */
+ void foreach(const ForeachSlot& slot);
+
+ /// (internal) Operate on contained items (see foreach())
+ //_WRAP_METHOD(void foreach_(GtkCallback callback,gpointer data),gtk_container_foreach)
+
+ /// (internal) Operate on contained items (see foreach())
+ //_WRAP_METHOD(void foreach_full_(GtkCallback callback,GtkCallbackMarshal marshal, gpointer data,GtkDestroyNotify notify),gtk_container_foreach_full)
+
+
+ /** Returns the the container's non-internal children. See
+ * forall() for details on what constitutes an "internal" child.
+ * @return A newly-allocated list of the container's non-internal children.
+ */
+ Glib::ListHandle<Widget*> get_children();
+
+ /** Returns the the container's non-internal children. See
+ * forall() for details on what constitutes an "internal" child.
+ * @return A newly-allocated list of the container's non-internal children.
+ */
+ Glib::ListHandle<const Widget*> get_children() const;
+
+
+ /** When a container receives an expose event, it must send synthetic
+ * expose events to all children that don't have their own Gdk::Windows.
+ * This function provides a convenient way of doing this. A container,
+ * when it receives an expose event, calls propagate_expose()
+ * once for each child, passing in the event the container received.
+ *
+ * propagate_expose() takes care of deciding whether
+ * an expose event needs to be sent to the child, intersecting
+ * the event's area with the child area, and sending the event.
+ *
+ * In most cases, a container can simply either simply inherit the
+ * ::expose implementation from Gtk::Container, or, do some drawing
+ * and then chain to the ::expose implementation from Gtk::Container.
+ * @param child A child of @a container .
+ * @param event A expose event sent to container.
+ */
+ void propagate_expose(Widget& child, GdkEventExpose* event);
+
+
+ /** Sets a focus chain, overriding the one computed automatically by GTK+.
+ *
+ * In principle each widget in the chain should be a descendant of the
+ * container, but this is not enforced by this method, since it's allowed
+ * to set the focus chain before you pack the widgets, or have a widget
+ * in the chain that isn't always packed. The necessary checks are done
+ * when the focus chain is actually traversed.
+ * @param focusable_widgets The new focus chain.
+ */
+ void set_focus_chain(const Glib::ListHandle<Widget*>& focusable_widgets);
+
+ // gtk_container_get_focus_chain() has been split up into two
+ // functions in order to make implicit container conversion possible.
+ bool has_focus_chain() const;
+ Glib::ListHandle<Widget*> get_focus_chain();
+ Glib::ListHandle<const Widget*> get_focus_chain() const;
+
+
+ /** Removes a focus chain explicitly set with set_focus_chain().
+ */
+ void unset_focus_chain();
+
+
+/* Widget-level methods */
+
+
+ /** Sets the @a reallocate_redraws flag of the container to the given value.
+ *
+ * Containers requesting reallocation redraws get automatically
+ * redrawn if any of their children changed allocation.
+ * @param needs_redraws The new value for the container's @a reallocate_redraws flag.
+ */
+ void set_reallocate_redraws(bool needs_redraws = true);
+
+ /// Sets the focus on a child
+
+ void set_focus_child(Widget& widget);
+
+
+ /** Hooks up an adjustment to focus handling in a container, so when a child of the
+ * container is focused, the adjustment is scrolled to show that widget. This function
+ * sets the vertical alignment. See Gtk::ScrolledWindow::get_vadjustment() for a typical
+ * way of obtaining the adjustment and set_focus_hadjustment() for setting
+ * the horizontal adjustment.
+ *
+ * The adjustments have to be in pixel units and in the same coordinate system as the
+ * allocation for immediate children of the container.
+ * @param adjustment An adjustment which should be adjusted when the focus is moved among the
+ * descendents of @a container .
+ */
+ void set_focus_vadjustment(Adjustment& adjustment);
+
+
+ /** Retrieves the vertical focus adjustment for the container. See
+ * set_focus_vadjustment().
+ * @return The vertical focus adjustment, or <tt>0</tt> if
+ * none has been set.
+ */
+ Adjustment* get_focus_vadjustment();
+
+ /** Retrieves the vertical focus adjustment for the container. See
+ * set_focus_vadjustment().
+ * @return The vertical focus adjustment, or <tt>0</tt> if
+ * none has been set.
+ */
+ const Adjustment* get_focus_vadjustment() const;
+
+
+ /** Hooks up an adjustment to focus handling in a container, so when a child of the
+ * container is focused, the adjustment is scrolled to show that widget. This function
+ * sets the horizontal alignment. See Gtk::ScrolledWindow::get_hadjustment() for a typical
+ * way of obtaining the adjustment and set_focus_vadjustment() for setting
+ * the vertical adjustment.
+ *
+ * The adjustments have to be in pixel units and in the same coordinate system as the
+ * allocation for immediate children of the container.
+ * @param adjustment An adjustment which should be adjusted when the focus is moved among the
+ * descendents of @a container .
+ */
+ void set_focus_hadjustment(Adjustment& adjustment);
+
+
+ /** Retrieves the horizontal focus adjustment for the container. See
+ * set_focus_hadjustment().
+ * @return The horizontal focus adjustment, or <tt>0</tt> if
+ * none has been set.
+ */
+ Adjustment* get_focus_hadjustment();
+
+ /** Retrieves the horizontal focus adjustment for the container. See
+ * set_focus_hadjustment().
+ * @return The horizontal focus adjustment, or <tt>0</tt> if
+ * none has been set.
+ */
+ const Adjustment* get_focus_hadjustment() const;
+
+
+ void resize_children();
+
+
+ /** Returns the type of the children supported by the container.
+ *
+ * Note that this may return G::TYPE_NONE to indicate that no more
+ * children can be added, e.g. for a Gtk::Paned which already has two
+ * children.
+ * @return A G::Type.
+ */
+ GType child_type() const;
+
+ // Ignore functions such as gtk_container_class_install_child_property(), which I think are for themes, like the GtkWidget style properties.
+
+
+ Glib::SignalProxy1< void,Widget* > signal_add();
+
+
+ Glib::SignalProxy1< void,Widget* > signal_remove();
+
+
+ Glib::SignalProxy0< void > signal_check_resize();
+
+
+ Glib::SignalProxy1< void,Widget* > signal_set_focus_child();
+
+
+ void show_all_children(bool recursive = true);
+
+protected:
+ Container();
+
+ virtual GtkType child_type_vfunc() const;
+ virtual void forall_vfunc(gboolean include_internals, GtkCallback callback, gpointer callback_data);
+ //TODO: What is this?
+ virtual char* composite_name_vfunc(GtkWidget* child);
+ virtual void set_child_property_vfunc(GtkWidget* child, guint property_id, const GValue* value, GParamSpec* pspec);
+ virtual void get_child_property_vfunc(GtkWidget* child, guint property_id, GValue* value, GParamSpec* pspec) const;
+
+ /** The width of the empty border outside the containers children.
+ *
+ * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
+ * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
+ * the value of the property changes.
+ */
+ Glib::PropertyProxy<guint> property_border_width() ;
+
+/** The width of the empty border outside the containers children.
+ *
+ * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
+ * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
+ * the value of the property changes.
+ */
+ Glib::PropertyProxy_ReadOnly<guint> property_border_width() const;
+
+ /** Specify how resize events are handled.
+ *
+ * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
+ * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
+ * the value of the property changes.
+ */
+ Glib::PropertyProxy<ResizeMode> property_resize_mode() ;
+
+/** Specify how resize events are handled.
+ *
+ * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
+ * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
+ * the value of the property changes.
+ */
+ Glib::PropertyProxy_ReadOnly<ResizeMode> property_resize_mode() const;
+
+ /** Can be used to add a new child to the container.
+ *
+ * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
+ * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
+ * the value of the property changes.
+ */
+ Glib::PropertyProxy_WriteOnly<Widget*> property_child() ;
+
+/** Can be used to add a new child to the container.
+ *
+ * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
+ * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
+ * the value of the property changes.
+ */
+ Glib::PropertyProxy_ReadOnly<Widget*> property_child() const;
+
+
+};
+
+} // namespace Gtk
+
+
+namespace Glib
+{
+ /** @relates Gtk::Container
+ * @param object The C instance
+ * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
+ * @result A C++ instance that wraps this C instance.
+ */
+ Gtk::Container* wrap(GtkContainer* object, bool take_copy = false);
+}
+#endif /* _GTKMM_CONTAINER_H */
+