diff options
Diffstat (limited to 'libs/gtkmm2/gtk/gtkmm/cellrenderer.h')
-rw-r--r-- | libs/gtkmm2/gtk/gtkmm/cellrenderer.h | 610 |
1 files changed, 610 insertions, 0 deletions
diff --git a/libs/gtkmm2/gtk/gtkmm/cellrenderer.h b/libs/gtkmm2/gtk/gtkmm/cellrenderer.h new file mode 100644 index 0000000000..7c382c44c5 --- /dev/null +++ b/libs/gtkmm2/gtk/gtkmm/cellrenderer.h @@ -0,0 +1,610 @@ +// -*- c++ -*- +// Generated by gtkmmproc -- DO NOT MODIFY! +#ifndef _GTKMM_CELLRENDERER_H +#define _GTKMM_CELLRENDERER_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 <gtkmm/object.h> +#include <gtkmm/widget.h> +#include <gtkmm/celleditable.h> + + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +typedef struct _GtkCellRenderer GtkCellRenderer; +typedef struct _GtkCellRendererClass GtkCellRendererClass; +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + + +namespace Gtk +{ class CellRenderer_Class; } // namespace Gtk +namespace Gtk +{ + + +/** @addtogroup gtkmmEnums Enums and Flags */ + +/** + * @ingroup gtkmmEnums + * @par Bitwise operators: + * <tt>%CellRendererState operator|(CellRendererState, CellRendererState)</tt><br> + * <tt>%CellRendererState operator&(CellRendererState, CellRendererState)</tt><br> + * <tt>%CellRendererState operator^(CellRendererState, CellRendererState)</tt><br> + * <tt>%CellRendererState operator~(CellRendererState)</tt><br> + * <tt>%CellRendererState& operator|=(CellRendererState&, CellRendererState)</tt><br> + * <tt>%CellRendererState& operator&=(CellRendererState&, CellRendererState)</tt><br> + * <tt>%CellRendererState& operator^=(CellRendererState&, CellRendererState)</tt><br> + */ +enum CellRendererState +{ + CELL_RENDERER_SELECTED = 1 << 0, + CELL_RENDERER_PRELIT = 1 << 1, + CELL_RENDERER_INSENSITIVE = 1 << 2, + CELL_RENDERER_SORTED = 1 << 3, + CELL_RENDERER_FOCUSED = 1 << 4 +}; + +/** @ingroup gtkmmEnums */ +inline CellRendererState operator|(CellRendererState lhs, CellRendererState rhs) + { return static_cast<CellRendererState>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); } + +/** @ingroup gtkmmEnums */ +inline CellRendererState operator&(CellRendererState lhs, CellRendererState rhs) + { return static_cast<CellRendererState>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); } + +/** @ingroup gtkmmEnums */ +inline CellRendererState operator^(CellRendererState lhs, CellRendererState rhs) + { return static_cast<CellRendererState>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); } + +/** @ingroup gtkmmEnums */ +inline CellRendererState operator~(CellRendererState flags) + { return static_cast<CellRendererState>(~static_cast<unsigned>(flags)); } + +/** @ingroup gtkmmEnums */ +inline CellRendererState& operator|=(CellRendererState& lhs, CellRendererState rhs) + { return (lhs = static_cast<CellRendererState>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); } + +/** @ingroup gtkmmEnums */ +inline CellRendererState& operator&=(CellRendererState& lhs, CellRendererState rhs) + { return (lhs = static_cast<CellRendererState>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); } + +/** @ingroup gtkmmEnums */ +inline CellRendererState& operator^=(CellRendererState& lhs, CellRendererState rhs) + { return (lhs = static_cast<CellRendererState>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); } + +} // namespace Gtk + + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +namespace Glib +{ + +template <> +class Value<Gtk::CellRendererState> : public Glib::Value_Flags<Gtk::CellRendererState> +{ +public: + static GType value_type() G_GNUC_CONST; +}; + +} // namespace Glib +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + + +namespace Gtk +{ + +/** + * @ingroup gtkmmEnums + */ +enum CellRendererMode +{ + CELL_RENDERER_MODE_INERT, + CELL_RENDERER_MODE_ACTIVATABLE, + CELL_RENDERER_MODE_EDITABLE +}; + +} // namespace Gtk + + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +namespace Glib +{ + +template <> +class Value<Gtk::CellRendererMode> : public Glib::Value_Enum<Gtk::CellRendererMode> +{ +public: + static GType value_type() G_GNUC_CONST; +}; + +} // namespace Glib +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + + +namespace Gtk +{ + + +/** CellRenderers are used by Gtk::TreeView columns to render the Gtk::TreeModel column data appropriately. + * They display, and allow editing of, the values of their properties. + * In most cases, Gtk::TreeView::append_column() will automatically choose the appropriate renderer for the mode column's data type, + * so you will rarely need to worry about these classes. + * + * @ingroup TreeView + */ + +class CellRenderer : public Gtk::Object +{ + public: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + typedef CellRenderer CppObjectType; + typedef CellRenderer_Class CppClassType; + typedef GtkCellRenderer BaseObjectType; + typedef GtkCellRendererClass BaseClassType; +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + + virtual ~CellRenderer(); + +#ifndef DOXYGEN_SHOULD_SKIP_THIS + +private: + friend class CellRenderer_Class; + static CppClassType cellrenderer_class_; + + // noncopyable + CellRenderer(const CellRenderer&); + CellRenderer& operator=(const CellRenderer&); + +protected: + explicit CellRenderer(const Glib::ConstructParams& construct_params); + explicit CellRenderer(GtkCellRenderer* 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. + GtkCellRenderer* gobj() { return reinterpret_cast<GtkCellRenderer*>(gobject_); } + + ///Provides access to the underlying C GtkObject. + const GtkCellRenderer* gobj() const { return reinterpret_cast<GtkCellRenderer*>(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_editing_canceled(); + + +private: + +public: + + + /** Obtains the width and height needed to render the cell. Used by view widgets + * to determine the appropriate size for the cell_area passed to + * render(). Fills in the x and y + * offsets of the cell relative to this location. Please note that the + * values set in @a width and @a height , as well as those in @a x_offset and @a y_offset + * are inclusive of the xpad and ypad properties. + * @param widget The widget the renderer is rendering to. + * @param cell_area The area a cell will be allocated. + * @param x_offset Location to return x offset of cell relative to @a cell_area . + * @param y_offset Location to return y offset of cell relative to @a cell_area . + * @param width Location to return width needed to render a cell. + * @param height Location to return height needed to render a cell. + */ + void get_size( + Widget& widget, + const Gdk::Rectangle& cell_area, + int& x_offset, int& y_offset, + int& width, int& height) const; + + /** Obtains the width and height needed to render the cell. Used by view widgets + * to determine the appropriate size for the cell_area passed to + * render(). Fills in the x and y + * offsets of the cell relative to this location. Please note that the + * values set in @a width and @a height , as well as those in @a x_offset and @a y_offset + * are inclusive of the xpad and ypad properties. + * @param widget The widget the renderer is rendering to. + * @param x_offset Location to return x offset of cell relative to @a cell_area. + * @param y_offset Location to return y offset of cell relative to @a cell_area. + * @param width Location to return width needed to render a cell. + * @param height Location to return height needed to render a cell. + */ + void get_size(Widget& widget, int& x_offset, int& y_offset, int& width, int& height) const; + + + /** Invokes the virtual render function of the Gtk::CellRenderer. The three + * passed-in rectangles are areas of @a window . Most renderers will draw within + * @a cell_area ; the xalign, yalign, xpad, and ypad fields of the Gtk::CellRenderer + * should be honored with respect to @a cell_area . @a background_area includes the + * blank space around the cell, and also the area containing the tree expander; + * so the @a background_area rectangles for all cells tile to cover the entire + * @a window . @a expose_area is a clip rectangle. + * @param window A Gdk::Drawable to draw to. + * @param widget The widget owning @a window . + * @param background_area Entire cell area (including tree expanders and maybe padding on the sides). + * @param cell_area Area normally rendered by a cell renderer. + * @param expose_area Area that actually needs updating. + * @param flags Flags that affect rendering. + */ + void render( + const Glib::RefPtr<Gdk::Window>& window, + Widget& widget, + const Gdk::Rectangle& background_area, + const Gdk::Rectangle& cell_area, + const Gdk::Rectangle& expose_area, + CellRendererState flags); + + + /** Passes an activate event to the cell renderer for possible processing. Some + * cell renderers may use events; for example, Gtk::CellRendererToggle toggles + * when it gets a mouse click. + * @param event A Gdk::Event. + * @param widget Widget that received the event. + * @param path Widget-dependent string representation of the event location; e.g. for Gtk::TreeView, a string representation of Gtk::TreePath. + * @param background_area Background area as passed to @a gtk_cell_renderer_render . + * @param cell_area Cell area as passed to @a gtk_cell_renderer_render . + * @param flags Render flags. + * @return <tt>true</tt> if the event was consumed/handled. + */ + bool activate( + GdkEvent* event, + Widget& widget, + const Glib::ustring& path, + const Gdk::Rectangle& background_area, + const Gdk::Rectangle& cell_area, + CellRendererState flags); + + + /** Passes an activate event to the cell renderer for possible processing. + * @param event A Gdk::Event. + * @param widget Widget that received the event. + * @param path Widget-dependent string representation of the event location; e.g. for Gtk::TreeView, a string representation of Gtk::TreePath. + * @param background_area Background area as passed to @a gtk_cell_renderer_render . + * @param cell_area Cell area as passed to @a gtk_cell_renderer_render . + * @param flags Render flags. + * @return A new Gtk::CellEditable, or <tt>0</tt>. + */ + CellEditable* start_editing( + GdkEvent* event, Widget& widget, + const Glib::ustring& path, + const Gdk::Rectangle& background_area, + const Gdk::Rectangle& cell_area, + CellRendererState flags = CellRendererState(0)); + + + /** Sets the renderer size to be explicit, independent of the properties set. + * @param width The width of the cell renderer, or -1. + * @param height The height of the cell renderer, or -1. + */ + void set_fixed_size(int width, int height); + + /** Fills in @a width and @a height with the appropriate size of @a cell . + * @param width Location to fill in with the fixed width of the widget. + * @param height Location to fill in with the fixed height of the widget. + */ + void get_fixed_size(int& width, int& height) const; + + //TODO: Mark as @deprecated: See stop_editing(). + + /** Causes the cell renderer to emit the "editing-canceled" signal. This + * function is for use only by implementations of cell renderers that need to + * notify the client program that an editing process was canceled and the + * changes were not committed. + * + * Since: 2.4 + * Deprecated: Use stop_editing() instead + */ + void editing_canceled(); + + + /** Informs the cell renderer that the editing is stopped. + * If @a canceled is <tt>true</tt>, the cell renderer will emit the "editing-canceled" + * signal. This function should be called by cell renderer implementations + * in response to the "editing-done" signal of Gtk::CellEditable. + * + * Since: 2.6 + * @param canceled <tt>true</tt> if the editing has been canceled. + */ + void stop_editing(bool canceled = false); + + /** Returns the property that this CellRenderer renders. + * For instance, property_text for CellRendererText, and property_active for CellRendererToggle + * Needs to be overridden in derived classes. + */ + virtual Glib::PropertyProxy_Base _property_renderable(); + + + Glib::SignalProxy0< void > signal_editing_canceled(); + + + //We use no_default_handler for this, because we can not add a new vfunc to 2.5 without breaking ABI. + //TODO: Remove no_default_handler when we do an ABI-break-with-parallel-install. + + + Glib::SignalProxy2< void,CellEditable*,const Glib::ustring& > signal_editing_started(); + + + /** Editable mode of the CellRenderer. + * + * 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<CellRendererMode> property_mode() ; + +/** Editable mode of the CellRenderer. + * + * 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<CellRendererMode> property_mode() const; + + /** Display the cell. + * + * 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<bool> property_visible() ; + +/** Display the cell. + * + * 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<bool> property_visible() const; + + /** The x-align. + * + * 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<float> property_xalign() ; + +/** The x-align. + * + * 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<float> property_xalign() const; + + /** The y-align. + * + * 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<float> property_yalign() ; + +/** The y-align. + * + * 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<float> property_yalign() const; + + /** The xpad. + * + * 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<unsigned int> property_xpad() ; + +/** The xpad. + * + * 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<unsigned int> property_xpad() const; + + /** The ypad. + * + * 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<unsigned int> property_ypad() ; + +/** The ypad. + * + * 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<unsigned int> property_ypad() const; + + /** The fixed width. + * + * 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<int> property_width() ; + +/** The fixed width. + * + * 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<int> property_width() const; + + /** The fixed height. + * + * 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<int> property_height() ; + +/** The fixed height. + * + * 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<int> property_height() const; + + /** Row has 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<bool> property_is_expander() ; + +/** Row has 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<bool> property_is_expander() const; + + /** Row is an expander row + * + * 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<bool> property_is_expanded() ; + +/** Row is an expander row + * + * 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<bool> property_is_expanded() const; + + /** Cell background color as a string. + * + * 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<Glib::ustring> property_cell_background() ; + +/** Cell background color as a string. + * + * 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<Glib::ustring> property_cell_background() const; + + /** Cell background color as a GdkColor. + * + * 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<Gdk::Color> property_cell_background_gdk() ; + +/** Cell background color as a GdkColor. + * + * 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<Gdk::Color> property_cell_background_gdk() const; + + /** Whether this tag affects the cell background color. + * + * 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<bool> property_cell_background_set() ; + +/** Whether this tag affects the cell background color. + * + * 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<bool> property_cell_background_set() const; + + +protected: + CellRenderer(); + + /** Override this in derived CellRenderers. + * + * Obtains the width and height needed to render the cell. Used by view widgets + * to determine the appropriate size for the cell_area passed to + * render(). If @a cell_area is not 0, fills in the x and y + * offsets (if set) of the cell relative to this location. Please note that the + * values set in @a width and @a height, as well as those in @a x_offset and @a y_offset + * are inclusive of the xpad and ypad properties. + * + * @param widget The widget the renderer is rendering to. + * @param cell_area The area a cell will be allocated, or 0. + * @param x_offset x offset of cell relative to @a cell_area. + * @param y_offset y offset of cell relative to @a cell_area. + * @param width Width needed to render a cell. + * @param height Height needed to render a cell. + **/ + virtual void get_size_vfunc(Widget& widget, const Gdk::Rectangle* cell_area, int* x_offset, int* y_offset, int* width, int* height) const; + + + virtual void render_vfunc(const Glib::RefPtr<Gdk::Drawable>& window, Widget& widget, const Gdk::Rectangle& background_area, const Gdk::Rectangle& cell_area, const Gdk::Rectangle& expose_area, CellRendererState flags); + + virtual bool activate_vfunc(GdkEvent* event, Widget& widget, const Glib::ustring& path, const Gdk::Rectangle& background_area, const Gdk::Rectangle& cell_area, CellRendererState flags); + + virtual CellEditable* start_editing_vfunc(GdkEvent* event, Widget& widget, const Glib::ustring& path, const Gdk::Rectangle& background_area, const Gdk::Rectangle& cell_area, CellRendererState flags); + + +}; + +} // namespace Gtk + + +namespace Glib +{ + /** @relates Gtk::CellRenderer + * @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::CellRenderer* wrap(GtkCellRenderer* object, bool take_copy = false); +} +#endif /* _GTKMM_CELLRENDERER_H */ + |