// Generated by gmmproc 2.54.0 -- DO NOT MODIFY! #ifndef _GTKMM_BUTTON_H #define _GTKMM_BUTTON_H #include #include /* * 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 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, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS using GtkButton = struct _GtkButton; using GtkButtonClass = struct _GtkButtonClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Gtk { class Button_Class; } // namespace Gtk #endif //DOXYGEN_SHOULD_SKIP_THIS namespace Gtk { class StockID; //deprecated //TODO: Derive from (and implement) Actionable when we can break ABI. /** A widget that creates a signal when clicked on. * * This widget is generally used with a signal handler that is called when the button is pressed. * It can hold any valid child widget. The most commonly used child is the Gtk::Label. * * The Button widget looks like this: * @image html button2.png * * @ingroup Widgets */ class Button : public Bin, public Activatable { public: #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef Button CppObjectType; typedef Button_Class CppClassType; typedef GtkButton BaseObjectType; typedef GtkButtonClass BaseClassType; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ Button(Button&& src) noexcept; Button& operator=(Button&& src) noexcept; // noncopyable Button(const Button&) = delete; Button& operator=(const Button&) = delete; ~Button() noexcept override; #ifndef DOXYGEN_SHOULD_SKIP_THIS private: friend class Button_Class; static CppClassType button_class_; protected: explicit Button(const Glib::ConstructParams& construct_params); explicit Button(GtkButton* 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 GtkObject. GtkButton* gobj() { return reinterpret_cast(gobject_); } ///Provides access to the underlying C GtkObject. const GtkButton* gobj() const { return reinterpret_cast(gobject_); } public: //C++ methods used to invoke GTK+ virtual functions: protected: //GTK+ Virtual Functions (override these to change behaviour): //Default Signal Handlers:: /// This is a default handler for the signal signal_pressed(). virtual void on_pressed(); /// This is a default handler for the signal signal_released(). virtual void on_released(); /// This is a default handler for the signal signal_clicked(). virtual void on_clicked(); /// This is a default handler for the signal signal_enter(). virtual void on_enter(); /// This is a default handler for the signal signal_leave(). virtual void on_leave(); /// This is a default handler for the signal signal_activate(). virtual void on_activate(); private: public: /** Create an empty button. * With an empty button, you can Gtk::Button::add() a widget * such as a Gtk::Image or Gtk::Box. * * If you just wish to add a Gtk::Label, * you may want to * use the Gtk::Button(const Glib::ustring& label) ctor * directly instead. */ Button(); /** Simple Push Button with label. * Create a button with the given label inside. You won't be able * to add a widget in this button since it already has a Gtk::Label * in it */ explicit Button(const Glib::ustring& label, bool mnemonic = false); //We don't wrap gtk_button_new_from_icon_name() to avoid a clash with the label constructor. //But set_image_from_icon_name() is a replacement. #ifndef GTKMM_DISABLE_DEPRECATED /** Creates a new Button containing the image and text from a stock item. * Stock ids have identifiers like Gtk::Stock::OK and Gtk::Stock::APPLY. * @param stock_id The stock item. * @deprecated Use the constructor that takes a Glib::ustring label or set_image_from_icon_name() instead, because stock IDs are now deprecated. */ explicit Button(const StockID& stock_id); #endif //GTKMM_DISABLE_DEPRECATED /** Emits a Gtk::Button::signal_clicked() signal to the given Gtk::Button. */ void clicked(); //deprecated /** Sets the relief style of the edges of the given Gtk::Button widget. * Two styles exist, Gtk::RELIEF_NORMAL and Gtk::RELIEF_NONE. * The default style is, as one can guess, Gtk::RELIEF_NORMAL. * The deprecated value Gtk::RELIEF_HALF behaves the same as * Gtk::RELIEF_NORMAL. * * @param relief The GtkReliefStyle as described above. */ void set_relief(ReliefStyle relief); /** Returns the current relief style of the given Gtk::Button. * * @return The current Gtk::ReliefStyle. */ ReliefStyle get_relief() const; /** Sets the text of the label of the button to @a str. This text is * also used to select the stock item if set_use_stock() * is used. * * This will also clear any previously set labels. * * @param label A string. */ void set_label(const Glib::ustring& label); /** Fetches the text from the label of the button, as set by * set_label(). If the label text has not * been set the return value will be nullptr. This will be the * case if you create an empty button with new() to * use as a container. * * @return The text of the label widget. This string is owned * by the widget and must not be modified or freed. */ Glib::ustring get_label() const; /** If true, an underline in the text of the button label indicates * the next character should be used for the mnemonic accelerator key. * * @param use_underline true if underlines in the text indicate mnemonics. */ void set_use_underline(bool use_underline = true); /** Returns whether an embedded underline in the button label indicates a * mnemonic. See set_use_underline(). * * @return true if an embedded underline in the button label * indicates the mnemonic accelerator keys. */ bool get_use_underline() const; #ifndef GTKMM_DISABLE_DEPRECATED /** If true, the label set on the button is used as a * stock id to select the stock item for the button. * * Deprecated: 3.10 * * @deprecated No replacement available. * * @param use_stock true if the button should use a stock item. */ void set_use_stock(bool use_stock = true); #endif // GTKMM_DISABLE_DEPRECATED #ifndef GTKMM_DISABLE_DEPRECATED /** Returns whether the button label is a stock item. * * Deprecated: 3.10 * * @deprecated No replacement available. * * @return true if the button label is used to * select a stock item instead of being * used directly as the label text. */ bool get_use_stock() const; #endif // GTKMM_DISABLE_DEPRECATED #ifndef GTKMM_DISABLE_DEPRECATED /** Sets whether the button 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. * * @newin{2,4} * * Deprecated: 3.20: Use Gtk::Widget::set_focus_on_click() instead * * @deprecated Use Widget::set_focus_on_click() instead. * * @param focus_on_click Whether the button grabs focus when clicked with the mouse. */ void set_focus_on_click(bool focus_on_click = true); #endif // GTKMM_DISABLE_DEPRECATED #ifndef GTKMM_DISABLE_DEPRECATED /** Returns whether the button grabs focus when it is clicked with the mouse. * See set_focus_on_click(). * * @newin{2,4} * * Deprecated: 3.20: Use Gtk::Widget::get_focus_on_click() instead * * @deprecated Use Widget::get_focus_on_click() instead. * * @return true if the button grabs focus when it is clicked with * the mouse. */ bool get_focus_on_click() const; #endif // GTKMM_DISABLE_DEPRECATED #ifndef GTKMM_DISABLE_DEPRECATED /** Sets the alignment of the child. This property has no effect unless * the child is a Gtk::Misc or a Gtk::Alignment. * * @newin{2,4} * * Deprecated: 3.14: Access the child widget directly if you need to control * its alignment. * * @deprecated Access the child widget directly if you need to control its alignment. * * @param xalign The horizontal position of the child, 0.0 is left aligned, * 1.0 is right aligned. * @param yalign The vertical position of the child, 0.0 is top aligned, * 1.0 is bottom aligned. */ void set_alignment(float xalign, float yalign); #endif // GTKMM_DISABLE_DEPRECATED #ifndef GTKMM_DISABLE_DEPRECATED /** Gets the alignment of the child in the button. * * @newin{2,4} * * Deprecated: 3.14: Access the child widget directly if you need to control * its alignment. * * @deprecated Access the child widget directly if you need to control its alignment. * * @param xalign Return location for horizontal alignment. * @param yalign Return location for vertical alignment. */ void get_alignment(float& xalign, float& yalign); #endif // GTKMM_DISABLE_DEPRECATED //TODO: When we can break ABI, combine the two set_image_from_icon_name() to // void set_image_from_icon_name(const Glib::ustring& icon_name, IconSize size = ICON_SIZE_BUTTON, bool use_fallback = false); /** Sets the image to an icon from the current icon theme. * If the icon name isn't known, a "broken image" icon will be * displayed instead. If the current icon theme is changed, the icon * will be updated appropriately. * The icon will be displayed if there is no label text or if * Gtk::Button::property_always_show_image() is true. * * This is a convenience wrapper around Gtk::Image::set_from_icon_name() and * Gtk::Button:set_image(). * * @param icon_name An icon name. * @param size An icon size. Can be either an IconSize or a BuiltinIconSize. * * @newin{3,10} */ void set_image_from_icon_name(const Glib::ustring& icon_name, IconSize size = ICON_SIZE_BUTTON); /** Sets the image to an icon from the current icon theme. * If the icon name isn't known, a "broken image" icon will be * displayed instead. If the current icon theme is changed, the icon * will be updated appropriately. * The icon will be displayed if there is no label text or if * Gtk::Button::property_always_show_image() is true. * * This is a convenience wrapper around Gtk::Image::set_from_icon_name() and * Gtk::Button:set_image(). * * @param icon_name An icon name. * @param size An icon size. Can be either an IconSize or a BuiltinIconSize. * @param use_fallback Whether the icon displayed in the Gtk::Image will use * standard icon names fallback. See also Gtk::ICON_LOOKUP_GENERIC_FALLBACK. * * @newin{3,12} */ void set_image_from_icon_name(const Glib::ustring& icon_name, IconSize size, bool use_fallback); /** Set the image of @a button to the given widget. The image will be * displayed if the label text is nullptr or if * Gtk::Button::property_always_show_image() is true. You don’t have to call * Gtk::Widget::show() on @a image yourself. * * @newin{2,6} * * @param image A widget to set as the image for the button. */ void set_image(Widget& image); /** Gets the widget that is currenty set as the image of @a button. * This may have been explicitly set by set_image() * or specified as a stock item to the constructor. * * @newin{2,6} */ Widget* get_image(); /** Gets the widget that is currenty set as the image of @a button. * This may have been explicitly set by set_image() * or specified as a stock item to the constructor. * * @newin{2,6} */ const Widget* get_image() const; /** Sets the position of the image relative to the text * inside the button. * * @newin{2,10} * * @param position The position. */ void set_image_position(PositionType position); /** Gets the position of the image relative to the text * inside the button. * * @newin{2,10} * * @return The position. */ PositionType get_image_position() const; /** If true, the button will ignore the Gtk::Settings::property_gtk_button_images() * setting and always show the image, if available. * * Use this property if the button would be useless or hard to use * without the image. * * @newin{3,6} * * @param always_show true if the menuitem should always show the image. */ void set_always_show_image(bool always_show = true); /** Returns whether the button will ignore the Gtk::Settings::property_gtk_button_images() * setting and always show the image, if available. * * @newin{3,6} * * @return true if the button will always show the image. */ bool get_always_show_image(); /** Returns the button’s event window if it is realized, nullptr otherwise. * This function should be rarely needed. * * @newin{2,22} * * @return @a button’s event window. */ Glib::RefPtr get_event_window(); /** Returns the button’s event window if it is realized, nullptr otherwise. * This function should be rarely needed. * * @newin{2,22} * * @return @a button’s event window. */ Glib::RefPtr get_event_window() const; #ifndef GTKMM_DISABLE_DEPRECATED /** * @par Slot Prototype: * void on_my_%pressed() * * Flags: Run First * * Emitted when the button is pressed. * * Deprecated: 2.8: Use the Gtk::Widget::signal_button_press_event() signal. * * @deprecated Use Widget::signal_button_press_event() instead. */ Glib::SignalProxy< void > signal_pressed(); #endif // GTKMM_DISABLE_DEPRECATED #ifndef GTKMM_DISABLE_DEPRECATED /** * @par Slot Prototype: * void on_my_%released() * * Flags: Run First * * Emitted when the button is released. * * Deprecated: 2.8: Use the Gtk::Widget::signal_button_release_event() signal. * * @deprecated Use Widget::signal_button_release_event() instead. */ Glib::SignalProxy< void > signal_released(); #endif // GTKMM_DISABLE_DEPRECATED /** * @par Slot Prototype: * void on_my_%clicked() * * Flags: Run First * * Emitted when the button has been activated (pressed and released). */ Glib::SignalProxy< void > signal_clicked(); #ifndef GTKMM_DISABLE_DEPRECATED /** * @par Slot Prototype: * void on_my_%enter() * * Flags: Run First * * Emitted when the pointer enters the button. * * Deprecated: 2.8: Use the Gtk::Widget::signal_enter_notify_event() signal. * * @deprecated Use Widget::signal_enter_notify_event() instead. */ Glib::SignalProxy< void > signal_enter(); #endif // GTKMM_DISABLE_DEPRECATED #ifndef GTKMM_DISABLE_DEPRECATED /** * @par Slot Prototype: * void on_my_%leave() * * Flags: Run First * * Emitted when the pointer leaves the button. * * Deprecated: 2.8: Use the Gtk::Widget::signal_leave_notify_event() signal. * * @deprecated Use Widget::signal_leave_notify_event() instead. */ Glib::SignalProxy< void > signal_leave(); #endif // GTKMM_DISABLE_DEPRECATED #ifndef GTKMM_DISABLE_DEPRECATED /** * @par Slot Prototype: * void on_my_%activate() * * Flags: Run First * * The signal_activate() signal on GtkButton is an action signal and * emitting it causes the button to animate press then release. * Applications should never connect to this signal, but use the * Gtk::Button::signal_clicked() signal. * * @deprecated Use signal_clicked() instead. */ Glib::SignalProxy< void > signal_activate(); #endif // GTKMM_DISABLE_DEPRECATED /** Text of the label widget inside the button, if the button contains a label widget. * * @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::ustring > property_label() ; /** Text of the label widget inside the button, if the button contains a label widget. * * @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::ustring > property_label() const; /** The border relief style. * * @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< ReliefStyle > property_relief() ; /** The border relief style. * * @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< ReliefStyle > property_relief() const; /** If set, an underline in the text indicates the next character should be used for the mnemonic accelerator key. * * @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_use_underline() ; /** If set, an underline in the text indicates the next character should be used for the mnemonic accelerator key. * * @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_use_underline() const; #ifndef GTKMM_DISABLE_DEPRECATED /** If set, the label is used to pick a stock item instead of being displayed. * * Deprecated: 3.10 * * @deprecated No replacement available. * * @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_use_stock() ; /** If set, the label is used to pick a stock item instead of being displayed. * * Deprecated: 3.10 * * @deprecated No replacement available. * * @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_use_stock() const; #endif // GTKMM_DISABLE_DEPRECATED // GtkButton:focus-on-click has been removed from gtk+. // TODO: At ABI-break, remove it from gtkmm. #ifndef GTKMM_DISABLE_DEPRECATED /** Whether the button grabs focus when it is clicked with the mouse. * @deprecated Use Widget::property_focus_on_click() instead. * * @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_focus_on_click() ; /** Whether the button grabs focus when it is clicked with the mouse. * @deprecated Use Widget::property_focus_on_click() instead. * * @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_focus_on_click() const; #endif // GTKMM_DISABLE_DEPRECATED //_WRAP_PROPERTY("focus-on-click", bool, deprecated "Use Widget::property_focus_on_click() instead.") #ifndef GTKMM_DISABLE_DEPRECATED /** If the child of the button is a Gtk::Misc or Gtk::Alignment, this property * can be used to control its horizontal alignment. 0.0 is left aligned, * 1.0 is right aligned. * * @newin{2,4} * * Deprecated: 3.14: Access the child widget directly if you need to control * its alignment. * * @deprecated Access the child widget directly if you need to control its alignment. * * @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< float > property_xalign() ; /** If the child of the button is a Gtk::Misc or Gtk::Alignment, this property * can be used to control its horizontal alignment. 0.0 is left aligned, * 1.0 is right aligned. * * @newin{2,4} * * Deprecated: 3.14: Access the child widget directly if you need to control * its alignment. * * @deprecated Access the child widget directly if you need to control its alignment. * * @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< float > property_xalign() const; #endif // GTKMM_DISABLE_DEPRECATED #ifndef GTKMM_DISABLE_DEPRECATED /** If the child of the button is a Gtk::Misc or Gtk::Alignment, this property * can be used to control its vertical alignment. 0.0 is top aligned, * 1.0 is bottom aligned. * * @newin{2,4} * * Deprecated: 3.14: Access the child widget directly if you need to control * its alignment. * * @deprecated Access the child widget directly if you need to control its alignment. * * @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< float > property_yalign() ; /** If the child of the button is a Gtk::Misc or Gtk::Alignment, this property * can be used to control its vertical alignment. 0.0 is top aligned, * 1.0 is bottom aligned. * * @newin{2,4} * * Deprecated: 3.14: Access the child widget directly if you need to control * its alignment. * * @deprecated Access the child widget directly if you need to control its alignment. * * @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< float > property_yalign() const; #endif // GTKMM_DISABLE_DEPRECATED /** The child widget to appear next to the button text. * * @newin{2,6} * * @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< Gtk::Widget* > property_image() ; /** The child widget to appear next to the button text. * * @newin{2,6} * * @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< Gtk::Widget* > property_image() const; /** The position of the image relative to the text inside the button. * * @newin{2,10} * * @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< PositionType > property_image_position() ; /** The position of the image relative to the text inside the button. * * @newin{2,10} * * @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< PositionType > property_image_position() const; /** If true, the button will ignore the Gtk::Settings::property_gtk_button_images() * setting and always show the image, if available. * * Use this property if the button would be useless or hard to use * without the image. * * @newin{3,6} * * @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_always_show_image() ; /** If true, the button will ignore the Gtk::Settings::property_gtk_button_images() * setting and always show the image, if available. * * Use this property if the button would be useless or hard to use * without the image. * * @newin{3,6} * * @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_always_show_image() const; }; /*! A Gtk::Button example. * Example 1: @link book/buttons/button/buttons.h @endlink * Example 2: @link book/buttons/button/buttons.cc @endlink * Example 3: @link book/buttons/button/main.cc @endlink */ } // 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::Button */ Gtk::Button* wrap(GtkButton* object, bool take_copy = false); } //namespace Glib #endif /* _GTKMM_BUTTON_H */