diff options
Diffstat (limited to 'libs/gtkmm2/gtk/gtkmm/treeviewcolumn.h')
-rw-r--r-- | libs/gtkmm2/gtk/gtkmm/treeviewcolumn.h | 868 |
1 files changed, 868 insertions, 0 deletions
diff --git a/libs/gtkmm2/gtk/gtkmm/treeviewcolumn.h b/libs/gtkmm2/gtk/gtkmm/treeviewcolumn.h new file mode 100644 index 0000000000..e4b7ef9296 --- /dev/null +++ b/libs/gtkmm2/gtk/gtkmm/treeviewcolumn.h @@ -0,0 +1,868 @@ +// -*- c++ -*- +// Generated by gtkmmproc -- DO NOT MODIFY! +#ifndef _GTKMM_TREEVIEWCOLUMN_H +#define _GTKMM_TREEVIEWCOLUMN_H + +#include <glibmm.h> + +/* $Id$ */ + +/* Copyright(C) 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/treeiter.h> +#include <gtkmm/widget.h> +#include <gdkmm/window.h> +#include <gtkmm/treemodel.h> +#include <glibmm/listhandle.h> +#include <gtkmm/cellrenderer_generation.h> + + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +typedef struct _GtkTreeViewColumn GtkTreeViewColumn; +typedef struct _GtkTreeViewColumnClass GtkTreeViewColumnClass; +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + + +namespace Gtk +{ class TreeViewColumn_Class; } // namespace Gtk +namespace Gtk +{ + + +/** @addtogroup gtkmmEnums Enums and Flags */ + +/** + * @ingroup gtkmmEnums + */ +enum TreeViewColumnSizing +{ + TREE_VIEW_COLUMN_GROW_ONLY, + TREE_VIEW_COLUMN_AUTOSIZE, + TREE_VIEW_COLUMN_FIXED +}; + +} // namespace Gtk + + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +namespace Glib +{ + +template <> +class Value<Gtk::TreeViewColumnSizing> : public Glib::Value_Enum<Gtk::TreeViewColumnSizing> +{ +public: + static GType value_type() G_GNUC_CONST; +}; + +} // namespace Glib +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + + +namespace Gtk +{ + + +/** Typedefed as Gtk::TreeView::Column. + * This is a visible column in a Gtk::TreeView widget. It determines the geometry, type. + * + * @ingroup TreeView +*/ + +class TreeViewColumn : public Gtk::Object +{ + public: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + typedef TreeViewColumn CppObjectType; + typedef TreeViewColumn_Class CppClassType; + typedef GtkTreeViewColumn BaseObjectType; + typedef GtkTreeViewColumnClass BaseClassType; +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + + virtual ~TreeViewColumn(); + +#ifndef DOXYGEN_SHOULD_SKIP_THIS + +private: + friend class TreeViewColumn_Class; + static CppClassType treeviewcolumn_class_; + + // noncopyable + TreeViewColumn(const TreeViewColumn&); + TreeViewColumn& operator=(const TreeViewColumn&); + +protected: + explicit TreeViewColumn(const Glib::ConstructParams& construct_params); + explicit TreeViewColumn(GtkTreeViewColumn* 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. + GtkTreeViewColumn* gobj() { return reinterpret_cast<GtkTreeViewColumn*>(gobject_); } + + ///Provides access to the underlying C GtkObject. + const GtkTreeViewColumn* gobj() const { return reinterpret_cast<GtkTreeViewColumn*>(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_clicked(); + + +private: + + +public: + typedef TreeViewColumn Column; + + TreeViewColumn(); + + explicit TreeViewColumn(const Glib::ustring& title); + TreeViewColumn(const Glib::ustring& title, CellRenderer& cell); + + /** Create a default view column for the given model column type. + */ + template<class T_ModelColumnType> + TreeViewColumn(const Glib::ustring& title, const TreeModelColumn<T_ModelColumnType>& column); + + + /** Packs the @a cell into the beginning of the column. If @a expand is <tt>false</tt>, then + * the @a cell is allocated no more space than it needs. Any unused space is divided + * evenly between cells for which @a expand is <tt>true</tt>. + * @param cell The Gtk::CellRenderer. + * @param expand <tt>true</tt> if @a cell is to be given extra space allocated to @a tree_column . + */ + void pack_start(CellRenderer& cell, bool expand = true); + + /** Adds the @a cell to end of the column. If @a expand is <tt>false</tt>, then the @a cell + * is allocated no more space than it needs. Any unused space is divided + * evenly between cells for which @a expand is <tt>true</tt>. + * @param cell The Gtk::CellRenderer. + * @param expand <tt>true</tt> if @a cell is to be given extra space allocated to @a tree_column . + */ + void pack_end(CellRenderer& cell, bool expand = true); + + /** Creates an appropriate CellRenderer for the @a column, and packs that cell into the beginning of the column. + * If @a expand is <tt>false</tt>, then + * the cell is allocated no more space than it needs. Any unused space is divided + * evenly between cells for which @a expand is <tt>true</tt>. + * + * You can use get_first_cell_renderer() or get_cell_renderers() to access the generated CellRenderer. + * + * @param column The model column that will be rendered by the view cell. + * @param expand <tt>true</tt> if the cell is to be given extra space allocated to the view column. + */ + template<class T_ModelColumnType> + void pack_start(const TreeModelColumn<T_ModelColumnType>& column, bool expand = true); + + /** Creates an appropriate CellRenderer for the @a column, and packs that cell at the end of the column. + * If @a expand is <tt>false</tt>, then + * the cell is allocated no more space than it needs. Any unused space is divided + * evenly between cells for which @a expand is <tt>true</tt>. + * + * You can use get_first_cell_renderer() or get_cell_renderers() to access the generated CellRenderer. + * + * @param column The model column that will be rendered by the view cell. + * @param expand <tt>true</tt> if the cell is to be given extra space allocated to the view column. + */ + template<class T_ModelColumnType> + void pack_end(const TreeModelColumn<T_ModelColumnType>& column, bool expand = true); + + + /** Unsets all the mappings on all renderers on the @a tree_column . + */ + void clear(); + + /** Gets the CellRenderer for the column. + * You should dynamic_cast<> to the expected derived CellRenderer type. + * This assumes that the TreeViewColumn contains only one CellRenderer. + */ + CellRenderer* get_first_cell_renderer(); + + /** Gets the CellRenderer for the column. + * You should dynamic_cast<> to the expected derived CellRenderer type. + * This assumes that the TreeViewColumn contains only one CellRenderer. + */ + const CellRenderer* get_first_cell_renderer() const; + + + /** Returns a list of all the cell renderers in the column, + * in no particular order. + * @return A list of Gtk::CellRenderers. + */ + Glib::ListHandle<CellRenderer*> get_cell_renderers(); + + /** Returns a list of all the cell renderers in the column, + * in no particular order. + * @return A list of Gtk::CellRenderers. + */ + Glib::ListHandle<const CellRenderer*> get_cell_renderers() const; + + + /** Adds an attribute mapping to the list in @a tree_column . The @a column is the + * column of the model to get a value from, and the @a attribute is the + * parameter on @a cell_renderer to be set from the value. So for example + * if column 2 of the model contains strings, you could have the + * "text" attribute of a Gtk::CellRendererText get its values from + * column 2. + * @param cell_renderer The Gtk::CellRenderer to set attributes on. + * @param attribute An attribute on the renderer. + * @param column The column position on the model to get the attribute from. + */ + void add_attribute(CellRenderer& cell_renderer, const Glib::ustring& attribute, int column); + + void add_attribute(const Glib::PropertyProxy_Base& property, const TreeModelColumnBase& column); + + + /** Associate a view CellRenderer with a model column, so that the CellRenderer renders the data in the model column. + * + * @param renderer The view cell renderer which will render the model column. + * @param column The model column to be renderered by this view. + */ + void set_renderer(Gtk::CellRenderer& renderer, const TreeModelColumnBase& column); + + // _WRAP_METHOD(void set_attributes(CellRenderer& cell_renderer, ...), ) + + /** For instance, + * void on_cell_data(Gtk::CellRenderer* cell, const Gtk::TreeModel::iterator& iter); + * + * This function is used instead of the standard attributes mapping for setting the column value, and should set the + * value of the column's cell renderer as appropriate. + */ + typedef sigc::slot<void, CellRenderer*, const Gtk::TreeModel::iterator&> SlotCellData; + + /** Sets the slot callback to use for the column. + * This callback function is used instead of the standard attributes mapping for setting the column value, and should set the + * value of the column's cell renderer as appropriate. + * + * See also unset_cell_data_func(). + * + * @param cell_renderer A Gtk::CellRenderer + * @param slot The callback slot to use. Create this with sigc::mem_fun(), or sigc::ptr_fun(). + */ + void set_cell_data_func(CellRenderer& cell_renderer, const SlotCellData& slot); + + /** Removes a previously set callback slot. See set_cell_data_func(). + */ + void unset_cell_data_func(CellRenderer& cell_renderer); + + + /** Clears all existing attributes previously set with + * set_attributes(). + * @param cell_renderer A Gtk::CellRenderer to clear the attribute mapping on. + */ + void clear_attributes(CellRenderer& cell_renderer); + + /** Sets the spacing field of @a tree_column , which is the number of pixels to + * place between cell renderers packed into it. + * @param spacing Distance between cell renderers in pixels. + */ + void set_spacing(int spacing); + + /** Returns the spacing of @a tree_column . + * @return The spacing of @a tree_column . + */ + int get_spacing() const; + + /** Sets the visibility of @a tree_column . + * @param visible <tt>true</tt> if the @a tree_column is visible. + */ + void set_visible(bool visible = true); + + /** Returns <tt>true</tt> if @a tree_column is visible. + * @return Whether the column is visible or not. If it is visible, then + * the tree will show the column. + */ + bool get_visible() const; + + /** If @a resizable is <tt>true</tt>, then the user can explicitly resize the column by + * grabbing the outer edge of the column button. If resizable is <tt>true</tt> and + * sizing mode of the column is Gtk::TREE_VIEW_COLUMN_AUTOSIZE, then the sizing + * mode is changed to Gtk::TREE_VIEW_COLUMN_GROW_ONLY. + * @param resizable <tt>true</tt>, if the column can be resized. + */ + void set_resizable(bool resizable = true); + + /** Returns <tt>true</tt> if the @a tree_column can be resized by the end user. + * @return <tt>true</tt>, if the @a tree_column can be resized. + */ + bool get_resizable() const; + + /** Sets the growth behavior of @a tree_column to @a type . + * @param type The Gtk::TreeViewColumnSizing. + */ + void set_sizing(TreeViewColumnSizing type); + + /** Returns the current type of @a tree_column . + * @return The type of @a tree_column . + */ + TreeViewColumnSizing get_sizing(); + + /** Returns the current size of @a tree_column in pixels. + * @return The current width of @a tree_column . + */ + int get_width() const; + + /** Gets the fixed width of the column. This value is only meaning may not be + * the actual width of the column on the screen, just what is requested. + * @return The fixed width of the column. + */ + int get_fixed_width() const; + + /** Sets the size of the column in pixels. This is meaningful only if the sizing + * type is Gtk::TREE_VIEW_COLUMN_FIXED. The size of the column is clamped to + * the min/max width for the column. Please note that the min/max width of the + * column doesn't actually affect the "fixed_width" property of the widget, just + * the actual size when displayed. + * @param fixed_width The size to set @a tree_column to. Must be greater than 0. + */ + void set_fixed_width(int fixed_width); + + /** Sets the minimum width of the @a tree_column . If @a min_width is -1, then the + * minimum width is unset. + * @param min_width The minimum width of the column in pixels, or -1. + */ + void set_min_width(int min_width); + + /** Returns the minimum width in pixels of the @a tree_column , or -1 if no minimum + * width is set. + * @return The minimum width of the @a tree_column . + */ + int get_min_width() const; + + /** Sets the maximum width of the @a tree_column . If @a max_width is -1, then the + * maximum width is unset. Note, the column can actually be wider than max + * width if it's the last column in a view. In this case, the column expands to + * fill any extra space. + * @param max_width The maximum width of the column in pixels, or -1. + */ + void set_max_width(int max_width); + + /** Returns the maximum width in pixels of the @a tree_column , or -1 if no maximum + * width is set. + * @return The maximum width of the @a tree_column . + */ + int get_max_width() const; + + /** Emits the "clicked" signal on the column. This function will only work if + * @a tree_column is clickable. + */ + void clicked(); + + + /** Sets the title of the @a tree_column . If a custom widget has been set, then + * this value is ignored. + * @param title The title of the @a tree_column . + */ + void set_title(const Glib::ustring& title); + + /** Returns the title of the widget. + * @return The title of the column. This string should not be + * modified or freed. + */ + Glib::ustring get_title() const; + + + /** Sets the column to take available extra space. This space is shared equally + * amongst all columns that have the expand set to <tt>true</tt>. If no column has this + * option set, then the last column gets all extra space. By default, every + * column is created with this <tt>false</tt>. + * + * Since: 2.4 + */ + void set_expand(bool expand = true); + + /** Return <tt>true</tt> if the column expands to take any available space. + * @return <tt>true</tt>, if the column expands + * + * Since: 2.4. + */ + bool get_expand() const; + + + /** Sets the header to be active if @a active is <tt>true</tt>. When the header is active, + * then it can take keyboard focus, and can be clicked. + * @param clickable <tt>true</tt> if the header is active. + */ + void set_clickable(bool clickable = true); + + /** Returns <tt>true</tt> if the user can click on the header for the column. + * @return <tt>true</tt> if user can click the column header. + */ + bool get_clickable() const; + + /** Sets the widget in the header to be @a widget . If widget is <tt>0</tt>, then the + * header button is set with a Gtk::Label set to the title of @a tree_column . + * @param widget A child Gtk::Widget, or <tt>0</tt>. + */ + void set_widget(Gtk::Widget& widget); + + /** Returns the Gtk::Widget in the button on the column header. If a custom + * widget has not been set then <tt>0</tt> is returned. + * @return The Gtk::Widget in the column header, or <tt>0</tt>. + */ + Widget* get_widget(); + + /** Returns the Gtk::Widget in the button on the column header. If a custom + * widget has not been set then <tt>0</tt> is returned. + * @return The Gtk::Widget in the column header, or <tt>0</tt>. + */ + const Widget* get_widget() const; + + + /** Sets the alignment of the title or custom widget inside the column header. + * The alignment determines its location inside the button -- 0.0 for left, 0.5 + * for center, 1.0 for right. + * @param xalign The alignment, which is between [0.0 and 1.0] inclusive. + */ + void set_alignment(float xalign); + + /** Sets the alignment of the title or custom widget inside the column header. + * The alignment determines its location inside the button -- 0.0 for left, 0.5 + * for center, 1.0 for right. + * @param xalign The alignment, which is between [0.0 and 1.0] inclusive. + */ + void set_alignment(AlignmentEnum xalign); + + + /** Returns the current x alignment of @a tree_column . This value can range + * between 0.0 and 1.0. + * @return The current alignent of @a tree_column . + */ + float get_alignment() const; + + /** If @a reorderable is <tt>true</tt>, then the column can be reordered by the end user + * dragging the header. + * @param reorderable <tt>true</tt>, if the column can be reordered. + */ + void set_reorderable(bool reorderable = true); + + /** Returns <tt>true</tt> if the @a tree_column can be reordered by the user. + * @return <tt>true</tt> if the @a tree_column can be reordered by the user. + */ + bool get_reorderable() const; + + + /** Sets the logical @a sort_column_id that this column sorts on when this column + * is selected for sorting. Doing so makes the column header clickable. + * @param sort_column_id The @a sort_column_id of the model to sort on. + */ + void set_sort_column(const TreeModelColumnBase& sort_column_id); + + /** Sets the logical @a sort_column_id that this column sorts on when this column + * is selected for sorting. Doing so makes the column header clickable. + * @param sort_column_id The @a sort_column_id of the model to sort on. + */ + void set_sort_column(int sort_column_id); + + #ifndef GTKMM_DISABLE_DEPRECATED + /** @deprecated Use set_sort_column() instead. + */ + void set_sort_column_id(const TreeModelColumnBase& sort_column_id); + + /** @deprecated Use set_sort_column() instead. + */ + void set_sort_column_id(int sort_column_id); + #endif //GTKMM_DISABLE_DEPRECATED + + + /** Gets the logical @a sort_column_id that the model sorts on when this + * column is selected for sorting. + * See set_sort_column_id(). + * @return The current @a sort_column_id for this column, or -1 if + * this column can't be used for sorting. + */ + int get_sort_column_id() const; + + /** Call this function with a @a setting of <tt>true</tt> to display an arrow in + * the header button indicating the column is sorted. Call + * set_sort_order() to change the direction of + * the arrow. + * @param setting <tt>true</tt> to display an indicator that the column is sorted. + */ + void set_sort_indicator(bool setting); + + /** Gets the value set by set_sort_indicator(). + * @return Whether the sort indicator arrow is displayed. + */ + bool get_sort_indicator() const; + + /** Changes the appearance of the sort indicator. + * + * This <em>does not</em> actually sort the model. Use + * set_sort_column_id() if you want automatic sorting + * support. This function is primarily for custom sorting behavior, and should + * be used in conjunction with gtk_tree_sortable_set_sort_column() to do + * that. For custom models, the mechanism will vary. + * + * The sort indicator changes direction to indicate normal sort or reverse sort. + * Note that you must have the sort indicator enabled to see anything when + * calling this function; see set_sort_indicator(). + * @param order Sort order that the sort indicator should indicate. + */ + void set_sort_order(SortType order); + + /** Gets the value set by set_sort_order(). + * @return The sort order the sort indicator is indicating. + */ + SortType get_sort_order() const; + + + /** Sets the cell renderer based on the @a tree_model and @a iter . That is, for + * every attribute mapping in @a tree_column , it will get a value from the set + * column on the @a iter , and use that value to set the attribute on the cell + * renderer. This is used primarily by the Gtk::TreeView. + * @param tree_model The Gtk::TreeModel to to get the cell renderers attributes from. + * @param iter The Gtk::TreeIter to to get the cell renderer's attributes from. + * @param is_expander <tt>true</tt>, if the row has children. + * @param is_expanded <tt>true</tt>, if the row has visible children. + */ + void cell_set_cell_data(const Glib::RefPtr<TreeModel>& tree_model, const TreeModel::iterator& iter, bool is_expander, bool is_expanded); + + /** Obtains the width and height needed to render the column. This is used + * primarily by the Gtk::TreeView. + * @param cell_area The area a cell in the column will be allocated. + * @param x_offset Location to return x offset of a cell relative to @a cell_area . + * @param y_offset Location to return y offset of a 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 cell_get_size(Gdk::Rectangle& cell_area, int& x_offset, int& y_offset, int& width, int& height) const; + + /** Returns <tt>true</tt> if any of the cells packed into the @a tree_column are visible. + * For this to be meaningful, you must first initialize the cells with + * cell_set_cell_data() + * @return <tt>true</tt>, if any of the cells packed into the @a tree_column are currently visible. + */ + bool cell_is_visible() const; + + /** Sets the current keyboard focus to be at @a cell , if the column contains + * 2 or more editable and activatable cells. + * + * Since: 2.2 + * @param cell A Gtk::CellRenderer. + */ + void focus_cell(CellRenderer& cell); + + + /** Obtains the horizontal position and size of a cell in a column. If the + * cell is not found in the column, @a start_pos and @a width are not changed and + * <tt>false</tt> is returned. + * @param cell_renderer A Gtk::CellRenderer. + * @param start_pos Return location for the horizontal position of @a cell within + * @a tree_column . + * @param width Return location for the width of @a cell . + * @return <tt>true</tt> if @a cell belongs to @a tree_column . + */ + bool get_cell_position(const CellRenderer& cell_renderer, int& start_pos, int& width) const; + + + Glib::SignalProxy0< void > signal_clicked(); + + + /** Whether to display the column. + * + * 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() ; + +/** Whether to display the column. + * + * 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; + + /** Current width of the column. + * + * 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; + + + /** Resize mode of the column. + * + * 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<TreeViewColumnSizing> property_sizing() ; + +/** Resize mode of the column. + * + * 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<TreeViewColumnSizing> property_sizing() const; + + /** Current fixed width of the column. + * + * 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_fixed_width() ; + +/** Current fixed width of the column. + * + * 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_fixed_width() const; + + /** Minimum allowed width of the column. + * + * 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_min_width() ; + +/** Minimum allowed width of the column. + * + * 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_min_width() const; + + /** Maximum allowed width of the column. + * + * 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_max_width() ; + +/** Maximum allowed width of the column. + * + * 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_max_width() const; + + /** Title to appear in column header. + * + * 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<Glib::ustring> property_title() ; + +/** Title to appear in column header. + * + * 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_title() const; + + /** Column gets share of extra width allocated to the widget. + * + * 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_expand() ; + +/** Column gets share of extra width allocated to the widget. + * + * 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_expand() const; + + /** Whether the header can be clicked. + * + * 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_clickable() ; + +/** Whether the header can be clicked. + * + * 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_clickable() const; + + /** Widget to put in column header button instead of column title. + * + * 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<Widget*> property_widget() ; + +/** Widget to put in column header button instead of column title. + * + * 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_widget() const; + + /** X Alignment of the column header text or widget. + * + * 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_alignment() ; + +/** X Alignment of the column header text or widget. + * + * 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_alignment() const; + + /** Whether the column can be reordered around the headers. + * + * 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_reorderable() ; + +/** Whether the column can be reordered around the headers. + * + * 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_reorderable() const; + + /** Whether to show a sort indicator. + * + * 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_sort_indicator() ; + +/** Whether to show a sort indicator. + * + * 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_sort_indicator() const; + + /** Sort direction the sort indicator should indicate. + * + * 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<SortType> property_sort_order() ; + +/** Sort direction the sort indicator should indicate. + * + * 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<SortType> property_sort_order() const; + + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + // Only necessary because of the templated ctor, see below. + static const Glib::Class& class_init_(); +#endif //DOXYGEN_SHOULD_SKIP_THIS + + +}; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS + +template<class T_ModelColumnType> +void TreeViewColumn::pack_start(const TreeModelColumn<T_ModelColumnType>& column, bool expand) +{ + //Generate appropriate Renderer for the column: + CellRenderer* pCellRenderer = manage( CellRenderer_Generation::generate_cellrenderer<T_ModelColumnType>() ); + + //Use the renderer: + pack_start(*pCellRenderer, expand); + set_renderer(*pCellRenderer, column); +} + +template<class T_ModelColumnType> +void TreeViewColumn::pack_end(const TreeModelColumn<T_ModelColumnType>& column, bool expand) +{ + //Generate appropriate Renderer for the column: + CellRenderer* pCellRenderer= manage( CellRenderer_Generation::generate_cellrenderer<T_ModelColumnType>() ); + + //Use the renderer: + pack_end(*pCellRenderer, expand); + set_renderer(*pCellRenderer, column); +} + + +template <class T_ModelColumnType> +TreeViewColumn::TreeViewColumn(const Glib::ustring& title, + const TreeModelColumn<T_ModelColumnType>& column) +: + Glib::ObjectBase(0), // not (yet) a custom class + Gtk::Object(Glib::ConstructParams(class_init_(), "title", title.c_str(), (char*) 0)) +{ + pack_start(column, true /* expand */); +} + + +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +} // namespace Gtk + + +namespace Glib +{ + /** @relates Gtk::TreeViewColumn + * @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::TreeViewColumn* wrap(GtkTreeViewColumn* object, bool take_copy = false); +} +#endif /* _GTKMM_TREEVIEWCOLUMN_H */ + |