// -*- c++ -*- // Generated by gtkmmproc -- DO NOT MODIFY! #ifndef _GTKMM_BUTTON_H #define _GTKMM_BUTTON_H #include /* $Id$ */ /* box.h * * Copyright (C) 1998-2002 The gtkmm Development Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef struct _GtkButton GtkButton; typedef struct _GtkButtonClass GtkButtonClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Gtk { class Button_Class; } // namespace Gtk namespace Gtk { namespace Stock { struct BuiltinStockID; } /** 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. * * @ingroup Widgets */ class Button : public Bin { public: #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef Button CppObjectType; typedef Button_Class CppClassType; typedef GtkButton BaseObjectType; typedef GtkButtonClass BaseClassType; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ virtual ~Button(); #ifndef DOXYGEN_SHOULD_SKIP_THIS private: friend class Button_Class; static CppClassType button_class_; // noncopyable Button(const Button&); Button& operator=(const Button&); protected: explicit Button(const Glib::ConstructParams& construct_params); explicit Button(GtkButton* 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. 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:: virtual void on_pressed(); virtual void on_released(); virtual void on_clicked(); virtual void on_enter(); virtual void on_leave(); 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::Pixmap 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); explicit Button(const StockID& stock_id); void pressed(); void released(); void clicked(); void enter(); void leave(); void set_relief(ReliefStyle newstyle); 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 0. 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; /** If true, the label set on the button is used as a * stock id to select the stock item for the button. * @param use_stock true if the button should use a stock item. */ void set_use_stock(bool use_stock = true); /** Returns whether the button label is a stock item. * @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; /** 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. * * Since: 2.4 * @param focus_on_click Whether the button grabs focus when clicked with the mouse. */ void set_focus_on_click(bool focus_on_click = true); /** Returns whether the button grabs focus when it is clicked with the mouse. * See set_focus_on_click(). * @return true if the button grabs focus when it is clicked with * the mouse. * * Since: 2.4. */ bool get_focus_on_click() const; /** Sets the alignment of the child. This property has no effect unless * the child is a Gtk::Misc or a Gtk::Aligment. * * Since: 2.4 * @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); /** Gets the alignment of the child in the button. * * Since: 2.4 * @param xalign Return location for horizontal alignment. * @param yalign Return location for vertical alignment. */ void get_alignment(float& xalign, float& yalign); /** Set the image of @a button to the given widget. Note that * it depends on the show-button-images setting whether the * image will be displayed or not. * * Since: 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 constructed by new_from_stock(). * * Since: 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 constructed by new_from_stock(). * * Since: 2.6 */ const Widget* get_image() const; Glib::SignalProxy0< void > signal_pressed(); Glib::SignalProxy0< void > signal_released(); Glib::SignalProxy0< void > signal_clicked(); Glib::SignalProxy0< void > signal_enter(); Glib::SignalProxy0< void > signal_leave(); Glib::SignalProxy0< void > signal_activate(); /** Text of the label widget inside the button * * 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_label() ; /** Text of the label widget inside the button * * 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_label() const; /** The border relief style. * * 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_relief() ; /** The border relief style. * * 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_relief() const; /** If set * * 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_use_underline() ; /** If set * * 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_use_underline() const; /** If set * * 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_use_stock() ; /** If set * * 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_use_stock() const; /** Whether the button 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() ; /** Whether the button 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; /** Horizontal position of child in available space. 0.0 is left aligned * * 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_xalign() ; /** Horizontal position of child in available space. 0.0 is left aligned * * 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_xalign() const; /** Vertical position of child in available space. 0.0 is top aligned * * 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_yalign() ; /** Vertical position of child in available space. 0.0 is top aligned * * 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_yalign() const; /** Child widget to appear next to the button text. * * 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_image() ; /** Child widget to appear next to the button text. * * 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_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 { /** @relates Gtk::Button * @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::Button* wrap(GtkButton* object, bool take_copy = false); } #endif /* _GTKMM_BUTTON_H */