]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtktoolbutton.c
Small documentation tweak
[~andy/gtk] / gtk / gtktoolbutton.c
index ddf321b09b913db2a90b2fda2655aa74eb0cb79e..cf8a22dfa5e7be3776ea7b7cdf6bdbd0665e2eef 100644 (file)
  * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "config.h"
 #include "gtktoolbutton.h"
 #include "gtkbutton.h"
-#include "gtkhbox.h"
 #include "gtkiconfactory.h"
 #include "gtkimage.h"
 #include "gtkimagemenuitem.h"
 #include "gtklabel.h"
 #include "gtkstock.h"
-#include "gtkvbox.h"
+#include "gtkbox.h"
 #include "gtkintl.h"
 #include "gtktoolbar.h"
 #include "gtkactivatable.h"
+#include "gtkactionable.h"
 #include "gtkprivate.h"
 
 #include <string.h>
@@ -48,7 +46,7 @@
  * #GtkToolButton<!-- -->s are #GtkToolItems containing buttons.
  *
  * Use gtk_tool_button_new() to create a new #GtkToolButton. Use
- * gtk_tool_button_new_with_stock() to create a #GtkToolButton
+ * gtk_tool_button_new_from_stock() to create a #GtkToolButton
  * containing a stock item.
  *
  * The label of a #GtkToolButton is determined by the properties
@@ -82,7 +80,9 @@ enum {
   PROP_LABEL_WIDGET,
   PROP_STOCK_ID,
   PROP_ICON_NAME,
-  PROP_ICON_WIDGET
+  PROP_ICON_WIDGET,
+  PROP_ACTION_NAME,
+  PROP_ACTION_TARGET
 };
 
 static void gtk_tool_button_init          (GtkToolButton      *button,
@@ -108,6 +108,7 @@ static void gtk_tool_button_style_updated  (GtkWidget          *widget);
 
 static void gtk_tool_button_construct_contents (GtkToolItem *tool_item);
 
+static void gtk_tool_button_actionable_iface_init      (GtkActionableInterface *iface);
 static void gtk_tool_button_activatable_interface_init (GtkActivatableIface  *iface);
 static void gtk_tool_button_update                     (GtkActivatable       *activatable,
                                                        GtkAction            *action,
@@ -136,7 +137,6 @@ static GObjectClass        *parent_class = NULL;
 static GtkActivatableIface *parent_activatable_iface;
 static guint                toolbutton_signals[LAST_SIGNAL] = { 0 };
 
-
 GType
 gtk_tool_button_get_type (void)
 {
@@ -144,6 +144,12 @@ gtk_tool_button_get_type (void)
   
   if (!type)
     {
+      const GInterfaceInfo actionable_info =
+      {
+        (GInterfaceInitFunc) gtk_tool_button_actionable_iface_init,
+        (GInterfaceFinalizeFunc) NULL,
+        NULL
+      };
       const GInterfaceInfo activatable_info =
       {
         (GInterfaceInitFunc) gtk_tool_button_activatable_interface_init,
@@ -159,6 +165,7 @@ gtk_tool_button_get_type (void)
                                            (GInstanceInitFunc) gtk_tool_button_init,
                                            0);
 
+      g_type_add_interface_static (type, GTK_TYPE_ACTIONABLE, &actionable_info);
       g_type_add_interface_static (type, GTK_TYPE_ACTIVATABLE,
                                    &activatable_info);
     }
@@ -279,6 +286,9 @@ gtk_tool_button_class_init (GtkToolButtonClass *klass)
                                                        GTK_TYPE_WIDGET,
                                                        GTK_PARAM_READWRITE));
 
+  g_object_class_override_property (object_class, PROP_ACTION_NAME, "action-name");
+  g_object_class_override_property (object_class, PROP_ACTION_TARGET, "action-target");
+
   /**
    * GtkButton:icon-spacing:
    * 
@@ -613,6 +623,12 @@ gtk_tool_button_set_property (GObject         *object,
     case PROP_ICON_WIDGET:
       gtk_tool_button_set_icon_widget (button, g_value_get_object (value));
       break;
+    case PROP_ACTION_NAME:
+      g_object_set_property (G_OBJECT (button->priv->button), "action-name", value);
+      break;
+    case PROP_ACTION_TARGET:
+      g_object_set_property (G_OBJECT (button->priv->button), "action-target", value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -661,12 +677,61 @@ gtk_tool_button_get_property (GObject         *object,
     case PROP_ICON_WIDGET:
       g_value_set_object (value, button->priv->icon_widget);
       break;
+    case PROP_ACTION_NAME:
+      g_object_get_property (G_OBJECT (button->priv->button), "action-name", value);
+      break;
+    case PROP_ACTION_TARGET:
+      g_object_get_property (G_OBJECT (button->priv->button), "action-target", value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
     }
 }
 
+static const gchar *
+gtk_tool_button_get_action_name (GtkActionable *actionable)
+{
+  GtkToolButton *button = GTK_TOOL_BUTTON (actionable);
+
+  return gtk_actionable_get_action_name (GTK_ACTIONABLE (button->priv->button));
+}
+
+static void
+gtk_tool_button_set_action_name (GtkActionable *actionable,
+                                 const gchar   *action_name)
+{
+  GtkToolButton *button = GTK_TOOL_BUTTON (actionable);
+
+  gtk_actionable_set_action_name (GTK_ACTIONABLE (button->priv->button), action_name);
+}
+
+static GVariant *
+gtk_tool_button_get_action_target_value (GtkActionable *actionable)
+{
+  GtkToolButton *button = GTK_TOOL_BUTTON (actionable);
+
+  return gtk_actionable_get_action_target_value (GTK_ACTIONABLE (button->priv->button));
+}
+
+static void
+gtk_tool_button_set_action_target_value (GtkActionable *actionable,
+                                         GVariant      *action_target)
+{
+  GtkToolButton *button = GTK_TOOL_BUTTON (actionable);
+
+  gtk_actionable_set_action_target_value (GTK_ACTIONABLE (button->priv->button), action_target);
+}
+
+static void
+gtk_tool_button_actionable_iface_init (GtkActionableInterface *iface)
+{
+  iface->get_action_name = gtk_tool_button_get_action_name;
+  iface->set_action_name = gtk_tool_button_set_action_name;
+  iface->get_action_target_value = gtk_tool_button_get_action_target_value;
+  iface->set_action_target_value = gtk_tool_button_set_action_target_value;
+}
+
 static void
 gtk_tool_button_finalize (GObject *object)
 {
@@ -973,9 +1038,9 @@ gtk_tool_button_new_from_stock (const gchar *stock_id)
 /**
  * gtk_tool_button_new:
  * @label: (allow-none): a string that will be used as label, or %NULL
- * @icon_widget: (allow-none): a #GtkMisc widget that will be used as icon widget, or %NULL
+ * @icon_widget: (allow-none): a widget that will be used as the button contents, or %NULL
  *
- * Creates a new %GtkToolButton using @icon_widget as icon and @label as
+ * Creates a new %GtkToolButton using @icon_widget as contents and @label as
  * label.
  *
  * Return value: A new #GtkToolButton
@@ -988,7 +1053,7 @@ gtk_tool_button_new (GtkWidget      *icon_widget,
 {
   GtkToolButton *button;
 
-  g_return_val_if_fail (icon_widget == NULL || GTK_IS_MISC (icon_widget), NULL);
+  g_return_val_if_fail (icon_widget == NULL || GTK_IS_WIDGET (icon_widget), NULL);
 
   button = g_object_new (GTK_TYPE_TOOL_BUTTON,
                          "label", label,
@@ -1051,7 +1116,7 @@ gtk_tool_button_set_label (GtkToolButton *button,
  * 
  * Since: 2.4
  **/
-G_CONST_RETURN gchar *
+const gchar *
 gtk_tool_button_get_label (GtkToolButton *button)
 {
   g_return_val_if_fail (GTK_IS_TOOL_BUTTON (button), NULL);
@@ -1152,7 +1217,7 @@ gtk_tool_button_set_stock_id (GtkToolButton *button,
  * 
  * Since: 2.4
  **/
-G_CONST_RETURN gchar *
+const gchar *
 gtk_tool_button_get_stock_id (GtkToolButton *button)
 {
   g_return_val_if_fail (GTK_IS_TOOL_BUTTON (button), NULL);
@@ -1161,7 +1226,7 @@ gtk_tool_button_get_stock_id (GtkToolButton *button)
 }
 
 /**
- * gtk_tool_button_set_icon_name
+ * gtk_tool_button_set_icon_name:
  * @button: a #GtkToolButton
  * @icon_name: (allow-none): the name of the themed icon
  *
@@ -1192,18 +1257,18 @@ gtk_tool_button_set_icon_name (GtkToolButton *button,
 }
 
 /**
- * gtk_tool_button_get_icon_name
+ * gtk_tool_button_get_icon_name:
  * @button: a #GtkToolButton
- * 
+ *
  * Returns the name of the themed icon for the tool button,
  * see gtk_tool_button_set_icon_name().
  *
  * Returns: the icon name or %NULL if the tool button has
  * no themed icon
- * 
+ *
  * Since: 2.8
  **/
-G_CONST_RETURN gchar*
+const gchar*
 gtk_tool_button_get_icon_name (GtkToolButton *button)
 {
   g_return_val_if_fail (GTK_IS_TOOL_BUTTON (button), NULL);