// -*- c++ -*- // Generated by gtkmmproc -- DO NOT MODIFY! #ifndef _GTKMM_COMBOBOX_H #define _GTKMM_COMBOBOX_H #include /* $Id$ */ /* combobox.h * * Copyright (C) 2003 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 #include #include #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef struct _GtkComboBox GtkComboBox; typedef struct _GtkComboBoxClass GtkComboBoxClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Gtk { class ComboBox_Class; } // namespace Gtk namespace Gtk { /** A widget used to choose from a list of items. * * A ComboBox is a widget that allows the user to choose from a list of valid choices. The ComboBox displays the * selected choice. When activated, the ComboBox displays a popup which allows the user to make a new choice. The * style in which the selected value is displayed, and the style of the popup is determined by the current theme. * It may be similar to a OptionMenu, or similar to a Windows-style combo box. * * The ComboBox uses the model-view pattern; the list of valid choices is specified in the form of a tree model, * and the display of the choices can be adapted to the data in the model by using cell renderers, as you would in * a tree view. This is possible since ComboBox implements the CellLayout interface. The tree model holding the * valid choices is not restricted to a flat list, it can be a real tree, and the popup will reflect the tree * structure. * * See also ComboBoxText, which is specialised for a single text column. * * @ingroup Widgets */ class ComboBox : public Bin, public CellLayout //TODO: Since GTK+ 2.6, this should now inherit also from CellEditable, but we can't add this base without breaking ABI. { public: #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef ComboBox CppObjectType; typedef ComboBox_Class CppClassType; typedef GtkComboBox BaseObjectType; typedef GtkComboBoxClass BaseClassType; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ virtual ~ComboBox(); #ifndef DOXYGEN_SHOULD_SKIP_THIS private: friend class ComboBox_Class; static CppClassType combobox_class_; // noncopyable ComboBox(const ComboBox&); ComboBox& operator=(const ComboBox&); protected: explicit ComboBox(const Glib::ConstructParams& construct_params); explicit ComboBox(GtkComboBox* 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. GtkComboBox* gobj() { return reinterpret_cast(gobject_); } ///Provides access to the underlying C GtkObject. const GtkComboBox* gobj() const { return reinterpret_cast(gobject_); } public: //C++ methods used to invoke GTK+ virtual functions: #ifdef GLIBMM_VFUNCS_ENABLED #endif //GLIBMM_VFUNCS_ENABLED protected: //GTK+ Virtual Functions (override these to change behaviour): #ifdef GLIBMM_VFUNCS_ENABLED #endif //GLIBMM_VFUNCS_ENABLED //Default Signal Handlers:: #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED virtual void on_changed(); #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED private: public: ComboBox(); /** Creates a new ComboBox with the model initialized to @a model. */ explicit ComboBox(const Glib::RefPtr& model); //See ComboBoxText for an equivalent of gtk_combo_box_new_text(). /** Sets the wrap width of @a combo_box to be @a width . The wrap width is basically * the preferred number of columns when you want the popup to be layed out * in a table. * * @newin2p4 * @param width Preferred number of columns. */ void set_wrap_width(int width); /** Returns the wrap width which is used to determine the number * of columns for the popup menu. If the wrap width is larger than * 1, the combo box is in table mode. * @return The wrap width. * * @newin2p6. */ int get_wrap_width() const; /** Sets the column with row span information for @a combo_box to be @a row_span . * The row span column contains integers which indicate how many rows * an item should span. * * @newin2p4 * @param row_span A column in the model passed during construction. */ void set_row_span_column(int row_span); /** Returns the column with row span information for @a combo_box . * @return The row span column. * * @newin2p6. */ int get_row_span_column() const; /** Sets the column with column span information for @a combo_box to be * @a column_span . The column span column contains integers which indicate * how many columns an item should span. * * @newin2p4 * @param column_span A column in the model passed during construction. */ void set_column_span_column(int column_span); /** Returns the column with column span information for @a combo_box . * @return The column span column. * * @newin2p6. */ int get_column_span_column() const; /** Gets the current value of the :add-tearoffs property. * @return The current value of the :add-tearoffs property. */ bool get_add_tearoffs() const; /** Sets whether the popup menu should have a tearoff * menu item. * * @newin2p6 * @param add_tearoffs true to add tearoff menu items. */ void set_add_tearoffs(bool add_tearoffs = true); Glib::ustring get_title() const; void set_title(const Glib::ustring& title); /** Returns whether the combo box grabs focus when it is clicked * with the mouse. See set_focus_on_click(). * @return true if the combo box grabs focus when it is * clicked with the mouse. * * @newin2p6. */ bool get_focus_on_click() const; /** Sets whether the combo box will grab focus when it is clicked with * the mouse. Making mouse clicks not grab focus is useful in places * like toolbars where you don't want the keyboard focus removed from * the main area of the application. * * @newin2p6 * @param focus_on_click Whether the combo box grabs focus when clicked * with the mouse. */ void set_focus_on_click(bool focus_on_click = true); /* get/set active item */ /** Returns the index of the currently active item, or -1 if there's no * active item. If the model is a non-flat treemodel, and the active item * is not an immediate child of the root of the tree, this function returns * gtk_tree_path_get_indices (path)[0], where * path is the Gtk::TreePath of the active item. * @return An integer which is the index of the currently active item, or * -1 if there's no active item. * * @newin2p4. */ int get_active_row_number() const; /** Gets an iterator that points to the current active item, if it exists. * @result The iterator. */ TreeModel::iterator get_active(); /** Gets an iterator that points to the current active item, if it exists. * @result The iterator. */ TreeModel::const_iterator get_active() const; /** Sets the active item of @a combo_box to be the item at @a index . * * @newin2p4 * @param index An index in the model passed during construction, or -1 to have * no active item. */ void set_active(int index); /** Sets the current active item to be the one referenced by @a iter . * @a iter must correspond to a path of depth one. * * @newin2p4 * @param iter The Gtk::TreeIter. */ void set_active(const TreeModel::iterator& iter); /** Causes no item to be active. See also set_active(). */ void unset_active(); /** Returns the Gtk::TreeModel which is acting as data source for @a combo_box . * @return A Gtk::TreeModel which was passed during construction. * * @newin2p4. */ Glib::RefPtr get_model(); /** Returns the Gtk::TreeModel which is acting as data source for @a combo_box . * @return A Gtk::TreeModel which was passed during construction. * * @newin2p4. */ Glib::RefPtr get_model() const; /** Sets the model used by @a combo_box to be @a model . Will unset a previously set * model (if applicable). If model is 0, then it will unset the model. * * Note that this function does not clear the cell renderers, you have to * call gtk_combo_box_cell_layout_clear() yourself if you need to set up * different cell renderers for the new model. * * @newin2p4 * @param model A Gtk::TreeModel. */ void set_model(const Glib::RefPtr& model); typedef TreeView::SlotRowSeparator SlotRowSeparator; /** Sets the row separator function, which is used to determine whether a row should be drawn as a separator. * See also unset_row_separator_func(). * * @param slot The callback. */ void set_row_separator_func(const SlotRowSeparator& slot); /** Causes no separators to be drawn. */ void unset_row_separator_func(); /** Pops up the menu or dropdown list of @a combo_box . * * This function is mostly intended for use by accessibility technologies; * applications should have little use for it. * * @newin2p4 */ void popup(); /** Hides the menu or dropdown list of @a combo_box . * * This function is mostly intended for use by accessibility technologies; * applications should have little use for it. * * @newin2p4 */ void popdown(); /** Gets the accessible object corresponding to the combo box's popup. * * This function is mostly intended for use by accessibility technologies; * applications should have little use for it. * @return The accessible object corresponding to the combo box's popup. * * @newin2p6. */ #ifdef GTKMM_ATKMM_ENABLED Glib::RefPtr get_popup_accessible(); #endif // GTKMM_ATKMM_ENABLED /** Gets the accessible object corresponding to the combo box's popup. * * This function is mostly intended for use by accessibility technologies; * applications should have little use for it. * @return The accessible object corresponding to the combo box's popup. * * @newin2p6. */ #ifdef GTKMM_ATKMM_ENABLED Glib::RefPtr get_popup_accessible() const; #endif // GTKMM_ATKMM_ENABLED //These are in ComboBoxText. #ifdef GLIBMM_PROPERTIES_ENABLED /** The model for the combo box. * * 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::RefPtr > property_model() ; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** The model for the combo box. * * 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::RefPtr > property_model() const; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** Wrap width for laying out the items in a grid. * * 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 property_wrap_width() ; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** Wrap width for laying out the items in a grid. * * 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 property_wrap_width() const; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** TreeModel column containing the row span values. * * 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 property_row_span_column() ; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** TreeModel column containing the row span values. * * 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 property_row_span_column() const; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** TreeModel column containing the column span values. * * 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 property_column_span_column() ; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** TreeModel column containing the column span values. * * 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 property_column_span_column() const; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** The item which is currently active. * * 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 property_active() ; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** The item which is currently active. * * 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 property_active() const; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** Whether dropdowns should have a tearoff menu item. * * 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 property_add_tearoffs() ; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** Whether dropdowns should have a tearoff menu item. * * 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 property_add_tearoffs() const; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** Whether the combo box draws a frame around the child. * * 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 property_has_frame() ; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** Whether the combo box draws a frame around the child. * * 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 property_has_frame() const; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** Whether the combo box grabs focus when it is clicked with the mouse. * * 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 property_focus_on_click() ; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** Whether the combo box grabs focus when it is clicked with the mouse. * * 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 property_focus_on_click() const; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** A title that may be displayed by the window manager when the popup is torn-off. * * 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 property_tearoff_title() ; #endif //#GLIBMM_PROPERTIES_ENABLED #ifdef GLIBMM_PROPERTIES_ENABLED /** A title that may be displayed by the window manager when the popup is torn-off. * * 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 property_tearoff_title() const; #endif //#GLIBMM_PROPERTIES_ENABLED /** The changed signal gets emitted when the active * item is changed. This can be due to the user selecting * a different item from the list, or due to a * call to set_active_iter(). */ /** * @par Prototype: * void %changed() */ Glib::SignalProxy0< void > signal_changed(); }; } // namespace Gtk namespace Glib { /** @relates Gtk::ComboBox * @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::ComboBox* wrap(GtkComboBox* object, bool take_copy = false); } //namespace Glib #endif /* _GTKMM_COMBOBOX_H */