]> Pileus Git - ~andy/gtk/commitdiff
Test buttons and toggle buttons as proxies.
authorMatthias Clasen <maclas@gmx.de>
Thu, 4 Sep 2003 21:34:15 +0000 (21:34 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Thu, 4 Sep 2003 21:34:15 +0000 (21:34 +0000)
2003-09-04  Matthias Clasen  <maclas@gmx.de>

* tests/testmerge.c: Test buttons and toggle buttons as proxies.

* gtk/gtktoggleaction.c (connect_proxy):
(gtk_toggle_action_real_toggled): Support toggle buttons as proxies. Note
that a "draw_as_radio" property is needed for check buttons similar to
check menu items, in order to fully support button proxies for radio actions.

* gtk/gtkaction.c (connect_proxy): Allow buttons as proxies.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkaction.c
gtk/gtktoggleaction.c
tests/testmerge.c

index 656f45d9b78dbef9ad29c017453938102bfed136..e069da798be325d9dea4a80402b871875c40eb41 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2003-09-04  Matthias Clasen  <maclas@gmx.de>
 
+       * tests/testmerge.c: Test buttons and toggle buttons as proxies.
+
+       * gtk/gtktoggleaction.c (connect_proxy): 
+       (gtk_toggle_action_real_toggled): Support toggle buttons as proxies. Note 
+       that a "draw_as_radio" property is needed for check buttons similar to 
+       check menu items, in order to fully support button proxies for radio actions.
+
+       * gtk/gtkaction.c (connect_proxy): Allow buttons as proxies.
+
        * tests/testmerge.c (toggle_dynamic): Test gtk_ui_manager_add_ui(). 
 
        * gtk/gtkuimanager.h: Add GtkUIManagerItemType enum which is needed for the
index 656f45d9b78dbef9ad29c017453938102bfed136..e069da798be325d9dea4a80402b871875c40eb41 100644 (file)
@@ -1,5 +1,14 @@
 2003-09-04  Matthias Clasen  <maclas@gmx.de>
 
+       * tests/testmerge.c: Test buttons and toggle buttons as proxies.
+
+       * gtk/gtktoggleaction.c (connect_proxy): 
+       (gtk_toggle_action_real_toggled): Support toggle buttons as proxies. Note 
+       that a "draw_as_radio" property is needed for check buttons similar to 
+       check menu items, in order to fully support button proxies for radio actions.
+
+       * gtk/gtkaction.c (connect_proxy): Allow buttons as proxies.
+
        * tests/testmerge.c (toggle_dynamic): Test gtk_ui_manager_add_ui(). 
 
        * gtk/gtkuimanager.h: Add GtkUIManagerItemType enum which is needed for the
index 656f45d9b78dbef9ad29c017453938102bfed136..e069da798be325d9dea4a80402b871875c40eb41 100644 (file)
@@ -1,5 +1,14 @@
 2003-09-04  Matthias Clasen  <maclas@gmx.de>
 
+       * tests/testmerge.c: Test buttons and toggle buttons as proxies.
+
+       * gtk/gtktoggleaction.c (connect_proxy): 
+       (gtk_toggle_action_real_toggled): Support toggle buttons as proxies. Note 
+       that a "draw_as_radio" property is needed for check buttons similar to 
+       check menu items, in order to fully support button proxies for radio actions.
+
+       * gtk/gtkaction.c (connect_proxy): Allow buttons as proxies.
+
        * tests/testmerge.c (toggle_dynamic): Test gtk_ui_manager_add_ui(). 
 
        * gtk/gtkuimanager.h: Add GtkUIManagerItemType enum which is needed for the
index 656f45d9b78dbef9ad29c017453938102bfed136..e069da798be325d9dea4a80402b871875c40eb41 100644 (file)
@@ -1,5 +1,14 @@
 2003-09-04  Matthias Clasen  <maclas@gmx.de>
 
+       * tests/testmerge.c: Test buttons and toggle buttons as proxies.
+
+       * gtk/gtktoggleaction.c (connect_proxy): 
+       (gtk_toggle_action_real_toggled): Support toggle buttons as proxies. Note 
+       that a "draw_as_radio" property is needed for check buttons similar to 
+       check menu items, in order to fully support button proxies for radio actions.
+
+       * gtk/gtkaction.c (connect_proxy): Allow buttons as proxies.
+
        * tests/testmerge.c (toggle_dynamic): Test gtk_ui_manager_add_ui(). 
 
        * gtk/gtkuimanager.h: Add GtkUIManagerItemType enum which is needed for the
index 656f45d9b78dbef9ad29c017453938102bfed136..e069da798be325d9dea4a80402b871875c40eb41 100644 (file)
@@ -1,5 +1,14 @@
 2003-09-04  Matthias Clasen  <maclas@gmx.de>
 
+       * tests/testmerge.c: Test buttons and toggle buttons as proxies.
+
+       * gtk/gtktoggleaction.c (connect_proxy): 
+       (gtk_toggle_action_real_toggled): Support toggle buttons as proxies. Note 
+       that a "draw_as_radio" property is needed for check buttons similar to 
+       check menu items, in order to fully support button proxies for radio actions.
+
+       * gtk/gtkaction.c (connect_proxy): Allow buttons as proxies.
+
        * tests/testmerge.c (toggle_dynamic): Test gtk_ui_manager_add_ui(). 
 
        * gtk/gtkuimanager.h: Add GtkUIManagerItemType enum which is needed for the
index 2b1cb7646353f542cbf087927c2ef03f1a33d467..1be5c5aae7ac7464ffe8637d6f18cd73864b86a8 100644 (file)
@@ -31,6 +31,7 @@
 #include <config.h>
 
 #include "gtkaction.h"
+#include "gtkbutton.h"
 #include "gtktoolbutton.h"
 #include "gtkmenuitem.h"
 #include "gtkimagemenuitem.h"
@@ -629,6 +630,23 @@ connect_proxy (GtkAction *action,
                               G_CALLBACK (gtk_action_create_menu_proxy),
                               action, 0);
 
+      g_signal_connect_object (proxy, "clicked",
+                              G_CALLBACK (gtk_action_activate), action,
+                              G_CONNECT_SWAPPED);
+    }
+  else if (GTK_IS_BUTTON (proxy))
+    {
+      /* button specific synchronisers ... */
+
+      /* synchronise the label */
+      g_object_set (G_OBJECT (proxy),
+                   "label", action->private_data->short_label,
+                   "use_underline", TRUE,
+                   NULL);
+      g_signal_connect_object (action, "notify::short_label",
+                              G_CALLBACK (gtk_action_sync_short_label),
+                              proxy, 0);
+      
       g_signal_connect_object (proxy, "clicked",
                               G_CALLBACK (gtk_action_activate), action,
                               G_CONNECT_SWAPPED);
index dd7ed2330e7c61ec48f7530c6b965e3004817aac..51f5113e5034526627b5922960b6e71e47628a26 100644 (file)
@@ -33,6 +33,7 @@
 #include "gtktoggleaction.h"
 #include "gtktoggleactionprivate.h"
 #include "gtktoggletoolbutton.h"
+#include "gtktogglebutton.h"
 #include "gtkcheckmenuitem.h"
 
 enum 
@@ -152,6 +153,9 @@ gtk_toggle_action_real_toggled (GtkToggleAction *action)
       else if (GTK_IS_TOGGLE_TOOL_BUTTON (proxy))
        gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (proxy),
                                           action->private_data->active);
+      else if (GTK_IS_TOGGLE_BUTTON (proxy))
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (proxy),
+                                     action->private_data->active);
       else {
        g_warning ("Don't know how to toggle `%s' widgets",
                   G_OBJECT_TYPE_NAME (proxy));
@@ -175,6 +179,9 @@ connect_proxy (GtkAction *action,
   else if (GTK_IS_TOGGLE_TOOL_BUTTON (proxy))
     gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (proxy),
                                       toggle_action->private_data->active);
+  else if (GTK_IS_TOGGLE_BUTTON (proxy))
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (proxy),
+                                 toggle_action->private_data->active);
 
   (* GTK_ACTION_CLASS (parent_class)->connect_proxy) (action, proxy);
 }
index 47c06dc04e53696488240b17ec6cb638a88573a9..0d50a391518ae02281cca082c65cf0a08b3023d0 100644 (file)
@@ -96,7 +96,7 @@ toggle_action (GtkAction *action)
   const gchar *name = gtk_action_get_name (action);
   const gchar *typename = G_OBJECT_TYPE_NAME (action);
 
-  g_message ("Action %s (type=%s) activated (active=%d)", name, typename,
+  g_message ("ToggleAction %s (type=%s) toggled (active=%d)", name, typename,
             gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)));
 }
 
@@ -104,7 +104,7 @@ toggle_action (GtkAction *action)
 static void
 radio_action_changed (GtkAction *action, GtkRadioAction *current)
 {
-  g_message ("Action %s (type=%s) activated (active=%d) (value %d)", 
+  g_message ("RadioAction %s (type=%s) activated (active=%d) (value %d)", 
             gtk_action_get_name (GTK_ACTION (current)), 
             G_OBJECT_TYPE_NAME (GTK_ACTION (current)),
             gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (current)),
@@ -118,14 +118,15 @@ static GtkActionEntry entries[] = {
   { "JustifyMenuAction", NULL, "_Justify" },
   { "Test", NULL, "Test" },
 
-  { "QuitAction",  GTK_STOCK_QUIT,  NULL, "<control>q", NULL, G_CALLBACK (gtk_main_quit) },
-  { "NewAction",   GTK_STOCK_NEW,   NULL, "<control>n", NULL, G_CALLBACK (activate_action) },
-  { "New2Action",  GTK_STOCK_NEW,   NULL, "<control>m", NULL, G_CALLBACK (activate_action) },
-  { "OpenAction",  GTK_STOCK_OPEN,  NULL, "<control>o", NULL, G_CALLBACK (activate_action) },
-  { "CutAction",   GTK_STOCK_CUT,   NULL, "<control>x", NULL, G_CALLBACK (activate_action) },
-  { "CopyAction",  GTK_STOCK_COPY,  NULL, "<control>c", NULL, G_CALLBACK (activate_action) },
-  { "PasteAction", GTK_STOCK_PASTE, NULL, "<control>v", NULL, G_CALLBACK (activate_action) },
-  { "AboutAction", NULL,            "_About", NULL,     NULL, G_CALLBACK (activate_action) },
+  { "QuitAction",  GTK_STOCK_QUIT,  NULL,     "<control>q", NULL, G_CALLBACK (gtk_main_quit) },
+  { "NewAction",   GTK_STOCK_NEW,   NULL,     "<control>n", NULL, G_CALLBACK (activate_action) },
+  { "New2Action",  GTK_STOCK_NEW,   NULL,     "<control>m", NULL, G_CALLBACK (activate_action) },
+  { "OpenAction",  GTK_STOCK_OPEN,  NULL,     "<control>o", NULL, G_CALLBACK (activate_action) },
+  { "CutAction",   GTK_STOCK_CUT,   NULL,     "<control>x", NULL, G_CALLBACK (activate_action) },
+  { "CopyAction",  GTK_STOCK_COPY,  NULL,     "<control>c", NULL, G_CALLBACK (activate_action) },
+  { "PasteAction", GTK_STOCK_PASTE, NULL,     "<control>v", NULL, G_CALLBACK (activate_action) },
+  { "AboutAction", NULL,            "_About", NULL,         NULL, G_CALLBACK (activate_action) },
+  { "BoldAction",  GTK_STOCK_BOLD,  "_Bold",  "<control>b", NULL, G_CALLBACK (toggle_action), TRUE },
 };
 static guint n_entries = G_N_ELEMENTS (entries);
 
@@ -470,6 +471,18 @@ main (int argc, char **argv)
   gtk_box_pack_end (GTK_BOX (menu_box), area, FALSE, FALSE, 0);
   gtk_widget_show (area);
 
+  button = gtk_button_new ();
+  gtk_box_pack_end (GTK_BOX (menu_box), button, FALSE, FALSE, 0);
+  gtk_action_connect_proxy (gtk_action_group_get_action (action_group, "AboutAction"), 
+                           button);
+  gtk_widget_show (button);
+  merge = gtk_ui_manager_new ();
+
+  button = gtk_check_button_new ();
+  gtk_box_pack_end (GTK_BOX (menu_box), button, FALSE, FALSE, 0);
+  gtk_action_connect_proxy (gtk_action_group_get_action (action_group, "BoldAction"), 
+                           button);
+  gtk_widget_show (button);
   merge = gtk_ui_manager_new ();
 
   g_signal_connect (area, "button_press_event",