// -*- c++ -*- // Generated by gtkmmproc -- DO NOT MODIFY! #ifndef _GTKMM_ACTION_H #define _GTKMM_ACTION_H #include /* $Id$ */ /* 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 #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef struct _GtkAction GtkAction; typedef struct _GtkActionClass GtkActionClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Gtk { class Action_Class; } // namespace Gtk namespace Gtk { class MenuItem; class ToolItem; class Image; class Action : public Glib::Object { #ifndef DOXYGEN_SHOULD_SKIP_THIS public: typedef Action CppObjectType; typedef Action_Class CppClassType; typedef GtkAction BaseObjectType; typedef GtkActionClass BaseClassType; private: friend class Action_Class; static CppClassType action_class_; private: // noncopyable Action(const Action&); Action& operator=(const Action&); protected: explicit Action(const Glib::ConstructParams& construct_params); explicit Action(GtkAction* castitem); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: virtual ~Action(); #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 GObject. GtkAction* gobj() { return reinterpret_cast(gobject_); } ///Provides access to the underlying C GObject. const GtkAction* gobj() const { return reinterpret_cast(gobject_); } ///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. GtkAction* gobj_copy(); private: protected: Action(); explicit Action(const Glib::ustring& name, const StockID& stock_id, const Glib::ustring& label = Glib::ustring(), const Glib::ustring& tooltip = Glib::ustring()); public: static Glib::RefPtr create(); static Glib::RefPtr create(const Glib::ustring& name, const Glib::ustring& label = Glib::ustring(), const Glib::ustring& tooltip = Glib::ustring()); static Glib::RefPtr create(const Glib::ustring& name, const Gtk::StockID& stock_id, const Glib::ustring& label = Glib::ustring(), const Glib::ustring& tooltip = Glib::ustring()); /** Returns the name of the action. * @return The name of the action. The string belongs to GTK+ and should not * be freed. * * Since: 2.4. */ Glib::ustring get_name() const; /** Returns whether the action is effectively sensitive. * @return true if the action and its associated action group * are both sensitive. * * Since: 2.4. */ bool is_sensitive() const; /** Returns whether the action itself is sensitive. Note that this doesn't * necessarily mean effective sensitivity. See is_sensitive() * for that. * @return true if the action itself is sensitive. * * Since: 2.4. */ bool get_sensitive() const; //TODO: Just wrap gtk_action_set_sensitive() when they put it in GTK+. void set_tooltip(const Glib::ustring& tooltip); /** Sets the ::sensitive property of the action to @a sensitive . Note that * this doesn't necessarily mean effective sensitivity. See * is_sensitive() * for that. * * Since: 2.6 * @param sensitive true to make the action sensitive. */ void set_sensitive(bool sensitive = true); /** Returns whether the action is effectively visible. * @return true if the action and its associated action group * are both visible. * * Since: 2.4. */ bool is_visible() const; /** Returns whether the action itself is visible. Note that this doesn't * necessarily mean effective visibility. See is_sensitive() * for that. * @return true if the action itself is visible. * * Since: 2.4. */ bool get_visible() const; /** Sets the ::visible property of the action to @a visible . Note that * this doesn't necessarily mean effective visibility. See * is_visible() * for that. * * Since: 2.6 * @param visible true to make the action visible. */ void set_visible(bool visible = true); /** Emits the "activate" signal on the specified action, if it isn't * insensitive. This gets called by the proxy widgets when they get * activated. * * It can also be used to manually activate an action. * * Since: 2.4 */ void activate(); /** This function is intended for use by action implementations to * create icons displayed in the proxy widgets. * @param icon_size The size of the icon that should be created. * @return A widget that displays the icon for this action. * * Since: 2.4. */ Image* create_icon(IconSize icon_size); /** Creates a menu item widget that proxies for the given action. * @return A menu item connected to the action. * * Since: 2.4. */ MenuItem* create_menu_item(); /** Creates a toolbar item widget that proxies for the given action. * @return A toolbar item connected to the action. * * Since: 2.4. */ ToolItem* create_tool_item(); /** Connects a widget to an action object as a proxy. Synchronises * various properties of the action with the widget (such as label * text, icon, tooltip, etc), and attaches a callback so that the * action gets activated when the proxy widget does. * * If the widget is already connected to an action, it is disconnected * first. * * Since: 2.4 * @param proxy The proxy widget. */ void connect_proxy(Widget& proxy); /** Disconnects a proxy widget from an action. * Does not destroy the widget, however. * * Since: 2.4 * @param proxy The proxy widget. */ void disconnect_proxy(Widget& proxy); /** Returns the proxy widgets for an action. * @return A G::SList of proxy widgets. The list is owned by the action and * must not be modified. * * Since: 2.4. */ Glib::SListHandle get_proxies(); /** Returns the proxy widgets for an action. * @return A G::SList of proxy widgets. The list is owned by the action and * must not be modified. * * Since: 2.4. */ Glib::SListHandle get_proxies() const; /** Installs the accelerator for @a action if @a action has an * accel path and group. See set_accel_path() and * set_accel_group() * * Since multiple proxies may independently trigger the installation * of the accelerator, the @a action counts the number of times this * function has been called and doesn't remove the accelerator until * disconnect_accelerator() has been called as many times. * * Since: 2.4 */ void connect_accelerator(); /** Undoes the effect of one call to connect_accelerator(). * * Since: 2.4 */ void disconnect_accelerator(); /** Returns the accel path for this action. * * Since: 2.6 * @return The accel path for this action, or 0 * if none is set. The returned string is owned by GTK+ * and must not be freed or modified. */ Glib::ustring get_accel_path() const; /// For instance, void on_activate(); typedef sigc::slot SlotActivate; Glib::SignalProxy0< void > signal_activate(); //Used by AccelGroup: /** Sets the accel path for this action. All proxy widgets associated * with the action will have this accel path, so that their * accelerators are consistent. * * Since: 2.4 * @param accel_path The accelerator path. */ void set_accel_path(const Glib::ustring& accel_path); /** Sets the Gtk::AccelGroup in which the accelerator for this action * will be installed. * * Since: 2.4 * @param accel_group A Gtk::AccelGroup or 0. */ void set_accel_group(const Glib::RefPtr& accel_group); /** A unique name for the action. * * 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_name() const; /** The label used for menu items and buttons that activate this action. * * 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() ; /** The label used for menu items and buttons that activate this action. * * 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; /** A shorter label that may be used on toolbar buttons. * * 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_short_label() ; /** A shorter label that may be used on toolbar buttons. * * 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_short_label() const; /** A tooltip for this action. * * 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_tooltip() ; /** A tooltip for this action. * * 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_tooltip() const; /** The stock icon displayed in widgets representing this action. * * 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_stock_id() ; /** The stock icon displayed in widgets representing this action. * * 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_stock_id() const; /** Whether the toolbar item is visible when the toolbar is in a horizontal orientation. * * 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_visible_horizontal() ; /** Whether the toolbar item is visible when the toolbar is in a horizontal orientation. * * 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_visible_horizontal() const; /** Whether the toolbar item is visible when the toolbar is in a vertical orientation. * * 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_visible_vertical() ; /** Whether the toolbar item is visible when the toolbar is in a vertical orientation. * * 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_visible_vertical() const; /** Whether the action is considered important. When TRUE * * 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_is_important() ; /** Whether the action is considered important. When TRUE * * 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_is_important() const; /** When TRUE * * 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_hide_if_empty() ; /** When TRUE * * 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_hide_if_empty() const; /** Whether the action is enabled. * * 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_sensitive() ; /** Whether the action is enabled. * * 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_sensitive() const; /** Whether the action is visible. * * 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_visible() ; /** Whether the action is visible. * * 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_visible() const; protected: //For use by child actions: /** Disables calls to the activate() * function by signals on the given proxy widget. This is used to * break notification loops for things like check or radio actions. * * This function is intended for use by action implementations. * * Since: 2.4 * @param proxy A proxy widget. */ void block_activate_from(Widget& proxy); /** Re-enables calls to the activate() * function by signals on the given proxy widget. This undoes the * blocking done by block_activate_from(). * * This function is intended for use by action implementations. * * Since: 2.4 * @param proxy A proxy widget. */ void unblock_activate_from(Widget& proxy); protected: //Widget-creation routines: virtual Widget* create_menu_item_vfunc(); virtual Widget* create_tool_item_vfunc(); virtual void connect_proxy_vfunc(Widget* proxy); virtual void disconnect_proxy_vfunc(Widget* proxy); public: public: //C++ methods used to invoke GTK+ virtual functions: protected: //GTK+ Virtual Functions (override these to change behaviour): //Default Signal Handlers:: virtual void on_activate(); }; } // namespace Gtk namespace Glib { /** @relates Gtk::Action * @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. */ Glib::RefPtr wrap(GtkAction* object, bool take_copy = false); } #endif /* _GTKMM_ACTION_H */