13
0
livetrax/libs/gtkmm2/gtk/gtkmm/cellrenderer.h
Taybin Rutkin d09f6b3016 Initial revision
git-svn-id: svn://localhost/trunk/ardour2@4 d708f5d6-7413-0410-9779-e7cbd77b26cf
2005-05-13 20:47:18 +00:00

611 lines
24 KiB
C++

// -*- 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 */