// Generated by gmmproc 2.84.0 -- DO NOT MODIFY! #ifndef _GTKMM_COLUMNVIEW_H #define _GTKMM_COLUMNVIEW_H #include #include /* Copyright (C) 2020 The gtkmm Development Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . */ #include #include #include #include #include #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS #endif /* DOXYGEN_SHOULD_SKIP_THIS */ #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Gtk { class GTKMM_API ColumnView_Class; } // namespace Gtk #endif //DOXYGEN_SHOULD_SKIP_THIS namespace Gtk { /** A widget for displaying lists in multiple columns. * * %Gtk::ColumnView is a widget to present a view into a large dynamic list of items * using multiple columns with headers. * * %Gtk::ColumnView uses the factories of its columns to generate a cell widget for * each column, for each visible item and displays them together as the row for * this item. The property_show_row_separators() and * property_show_column_separators() properties offer a simple way to display * separators between the rows or columns. * * %Gtk::ColumnView allows the user to select items according to the selection * characteristics of the model. For models that allow multiple selected items, * it is possible to turn on *rubberband selection*, using set_enable_rubberband(). * * The column view supports sorting that can be customized by the user by * clicking on column headers. To set this up, the Gtk::Sorter returned by * get_sorter() must be attached to a sort model for the data * that the view is showing, and the columns must have sorters attached to them * by calling Gtk::ColumnViewColumn::set_sorter(). The initial sort order can be * set with sort_by_column(). * * The column view also supports interactive resizing and reordering of * columns, via Drag-and-Drop of the column headers. This can be enabled or * disabled with the property_reorderable() and * Gtk::ColumnViewColumn::property_resizable() properties. * * @see Gtk::ColumnViewColumn, Gtk::TreeView * * @ingroup Widgets * @ingroup ListView * * @newin{3,98} */ class GTKMM_API ColumnView : public Widget, public Scrollable { public: #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef ColumnView CppObjectType; typedef ColumnView_Class CppClassType; typedef GtkColumnView BaseObjectType; typedef GtkColumnViewClass BaseClassType; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ ColumnView(ColumnView&& src) noexcept; ColumnView& operator=(ColumnView&& src) noexcept; // noncopyable ColumnView(const ColumnView&) = delete; ColumnView& operator=(const ColumnView&) = delete; ~ColumnView() noexcept override; #ifndef DOXYGEN_SHOULD_SKIP_THIS private: friend GTKMM_API class ColumnView_Class; static CppClassType columnview_class_; protected: explicit ColumnView(const Glib::ConstructParams& construct_params); explicit ColumnView(GtkColumnView* castitem); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: /** Get the GType for this class, for use with the underlying GObject type system. */ static GType get_type() G_GNUC_CONST; #ifndef DOXYGEN_SHOULD_SKIP_THIS static GType get_base_type() G_GNUC_CONST; #endif /// Provides access to the underlying C GObject. GtkColumnView* gobj() { return reinterpret_cast(gobject_); } /// Provides access to the underlying C GObject. const GtkColumnView* gobj() const { return reinterpret_cast(gobject_); } private: public: explicit ColumnView(const Glib::RefPtr& model = {}); /** Gets the list of columns in this column view. * * This list is constant over the lifetime of @a self and can be used to * monitor changes to the columns of @a self by connecting to the * Gio::ListModel::signal_items_changed() signal. * * @return The list managing the columns. */ Glib::RefPtr get_columns(); /** Gets the list of columns in this column view. * * This list is constant over the lifetime of @a self and can be used to * monitor changes to the columns of @a self by connecting to the * Gio::ListModel::signal_items_changed() signal. * * @return The list managing the columns. */ Glib::RefPtr get_columns() const; /** Appends the @a column to the end of the columns in @a self. * * @param column A column that hasn't been added to a `Gtk::ColumnView` yet. */ void append_column(const Glib::RefPtr& column); /** Removes the @a column from the list of columns of @a self. * * @param column A column that's part of @a self. */ void remove_column(const Glib::RefPtr& column); /** Inserts a column at the given position in the columns of @a self. * * If @a column is already a column of @a self, it will be repositioned. * * @param position The position to insert @a column at. * @param column The column to insert. */ void insert_column(guint position, const Glib::RefPtr& column); /** Gets the model that's currently used to read the items displayed. * * @return The model in use. */ Glib::RefPtr get_model(); /** Gets the model that's currently used to read the items displayed. * * @return The model in use. */ Glib::RefPtr get_model() const; /** Sets the model to use. * * This must be a Gtk::SelectionModel. * * @param model The model to use. */ void set_model(const Glib::RefPtr& model); /** Returns whether the list should show separators between rows. * * @return True if the list shows separators. */ bool get_show_row_separators() const; /** Sets whether the list should show separators between rows. * * @param show_separators Whether to show row separators. */ void set_show_row_separators(bool show_separators = true); /** Returns whether the list should show separators between columns. * * @return True if the list shows column separators. */ bool get_show_column_separators() const; /** Sets whether the list should show separators between columns. * * @param show_separators Whether to show column separators. */ void set_show_column_separators(bool show_separators = true); /** Returns a special sorter that reflects the users sorting * choices in the column view. * * To allow users to customizable sorting by clicking on column * headers, this sorter needs to be set on the sort model underneath * the model that is displayed by the view. * * See Gtk::ColumnViewColumn::set_sorter() for setting up * per-column sorting. * * Here is an example: * * [C example ellipted] * * @return The `Gtk::Sorter` of @a self. */ Glib::RefPtr get_sorter(); /** Returns a special sorter that reflects the users sorting * choices in the column view. * * To allow users to customizable sorting by clicking on column * headers, this sorter needs to be set on the sort model underneath * the model that is displayed by the view. * * See Gtk::ColumnViewColumn::set_sorter() for setting up * per-column sorting. * * Here is an example: * * [C example ellipted] * * @return The `Gtk::Sorter` of @a self. */ Glib::RefPtr get_sorter() const; /** Sets the sorting of the view. * * This function should be used to set up the initial sorting. * At runtime, users can change the sorting of a column view * by clicking on the list headers. * * This call only has an effect if the sorter returned by * get_sorter() is set on a sort model, * and Gtk::ColumnViewColumn::set_sorter() has been called * on @a column to associate a sorter with the column. * * If @a column is unset, the view will be unsorted. * * @param column The column to sort by. * @param direction The direction to sort in. */ void sort_by_column(const Glib::RefPtr& column, SortType direction); /** Sets whether rows should be activated on single click and * selected on hover. * * @param single_click_activate Whether to activate items on single click. */ void set_single_click_activate(bool single_click_activate = true); /** Returns whether rows will be activated on single click and * selected on hover. * * @return True if rows are activated on single click. */ bool get_single_click_activate() const; /** Sets whether columns should be reorderable by dragging. * * @param reorderable Whether columns should be reorderable. */ void set_reorderable(bool reorderable = true); /** Returns whether columns are reorderable. * * @return True if columns are reorderable. */ bool get_reorderable() const; /** Sets whether selections can be changed by dragging with the mouse. * * @param enable_rubberband Whether to enable rubberband selection. */ void set_enable_rubberband(bool enable_rubberband = true); /** Returns whether rows can be selected by dragging with the mouse. * * @return True if rubberband selection is enabled. */ bool get_enable_rubberband() const; /** Sets the Tab key behavior. * * This influences how the Tab and * Shift+Tab keys move the * focus in the columnview. * * @newin{4,12} * * @param tab_behavior The desired tab behavior. */ void set_tab_behavior(ListTabBehavior tab_behavior); /** Gets the behavior set for the Tab key. * * @newin{4,12} * * @return The behavior of the Tab key. */ ListTabBehavior get_tab_behavior() const; /** Sets the factory used for configuring rows. * * The factory must be for configuring Gtk::ColumnViewRow objects. * * If this factory is not set - which is the default - then the defaults * will be used. * * This factory is not used to set the widgets displayed in the individual * cells. For that see Gtk::GtkColumnViewColumn::set_factory() and * Gtk::GtkColumnViewCell. * * @newin{4,12} * * @param factory The row factory. */ void set_row_factory(const Glib::RefPtr& factory); /** Gets the factory set via set_row_factory(). * * @newin{4,12} * * @return The factory. */ Glib::RefPtr get_row_factory(); /** Gets the factory set via set_row_factory(). * * @newin{4,12} * * @return The factory. */ Glib::RefPtr get_row_factory() const; /** Sets the factory to use for populating the * Gtk::ListHeader objects used in section headers. * * If this factory is set to nullptr, the list will not show * section headers. * * @newin{4,12} * * @param factory The factory to use. */ void set_header_factory(const Glib::RefPtr& factory); /** Gets the factory that's currently used to populate section headers. * * @newin{4,12} * * @return The factory in use. */ Glib::RefPtr get_header_factory(); /** Gets the factory that's currently used to populate section headers. * * @newin{4,12} * * @return The factory in use. */ Glib::RefPtr get_header_factory() const; // gtk_column_view_scroll_to() does not take a ref (transfer full). /** Scroll to the row at the given position - or cell if a column is * given - and performs the actions specified in @a flags. * * This function works no matter if the columnview is shown or focused. * If it isn't, then the changes will take effect once that happens. * * @newin{4,12} * * @param pos Position of the item. Must be less than the number of * items in the view. * @param column The column to scroll to * or nullptr to not scroll columns. * @param flags Actions to perform. * @param scroll Details of how to perform * the scroll operation or nullptr to scroll into view. */ void scroll_to(guint pos, const Glib::RefPtr& column = {}, ListScrollFlags flags = ListScrollFlags::NONE, const Glib::RefPtr& scroll = {}); /** The list of columns. * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< Glib::RefPtr > property_columns() const; /** Model for the items displayed. * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< Glib::RefPtr > property_model() ; /** Model for the items displayed. * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< Glib::RefPtr > property_model() const; /** Show separators between rows. * * Default value: false * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< bool > property_show_row_separators() ; /** Show separators between rows. * * Default value: false * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< bool > property_show_row_separators() const; /** Show separators between columns. * * Default value: false * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< bool > property_show_column_separators() ; /** Show separators between columns. * * Default value: false * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< bool > property_show_column_separators() const; /** Sorter with the sorting choices of the user. * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< Glib::RefPtr > property_sorter() const; /** Activate rows on single click and select them on hover. * * Default value: false * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< bool > property_single_click_activate() ; /** Activate rows on single click and select them on hover. * * Default value: false * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< bool > property_single_click_activate() const; /** Behavior of the Tab key * * @newin{4,12} * * Default value: Gtk::ListTabBehavior::ALL * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< ListTabBehavior > property_tab_behavior() ; /** Behavior of the Tab key * * @newin{4,12} * * Default value: Gtk::ListTabBehavior::ALL * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< ListTabBehavior > property_tab_behavior() const; /** Whether columns are reorderable. * * Default value: true * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< bool > property_reorderable() ; /** Whether columns are reorderable. * * Default value: true * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< bool > property_reorderable() const; /** The factory used for configuring rows. * * The factory must be for configuring Gtk::ColumnViewRow objects. * * @newin{4,12} * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< Glib::RefPtr > property_row_factory() ; /** The factory used for configuring rows. * * The factory must be for configuring Gtk::ColumnViewRow objects. * * @newin{4,12} * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< Glib::RefPtr > property_row_factory() const; /** Factory for creating header widgets. * * The factory must be for configuring Gtk::ListHeader objects. * * @newin{4,12} * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< Glib::RefPtr > property_header_factory() ; /** Factory for creating header widgets. * * The factory must be for configuring Gtk::ListHeader objects. * * @newin{4,12} * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< Glib::RefPtr > property_header_factory() const; /** Allow rubberband selection. * * Default value: false * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< bool > property_enable_rubberband() ; /** Allow rubberband selection. * * Default value: false * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< bool > property_enable_rubberband() const; /** * @par Slot Prototype: * void on_my_%activate(guint pos) * * Flags: Run Last * * Emitted when a row has been activated by the user, usually via activating * the GtkListBase|list.activate-item action. * * This allows for a convenient way to handle activation in a columnview. * See Gtk::ListItem::set_activatable() for details on how to use this * signal. * * @param pos Position of item to activate. */ Glib::SignalProxy signal_activate(); public: public: //C++ methods used to invoke GTK+ virtual functions: protected: //GTK+ Virtual Functions (override these to change behaviour): //Default Signal Handlers:: }; } // namespace Gtk namespace Glib { /** A Glib::wrap() method for this object. * * @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. * * @relates Gtk::ColumnView */ GTKMM_API Gtk::ColumnView* wrap(GtkColumnView* object, bool take_copy = false); } //namespace Glib #endif /* _GTKMM_COLUMNVIEW_H */