X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=tests%2Fteststatusicon.c;h=c6f81fc580205f99221b60aa8771a24b52d998e5;hb=HEAD;hp=85007e3f34c3cef6faff669fe10aa0edd857cd0b;hpb=8241b0b7dd0c33d2efd6f5900a6c35b0ba7cc099;p=~andy%2Fgtk diff --git a/tests/teststatusicon.c b/tests/teststatusicon.c index 85007e3f3..c6f81fc58 100755 --- a/tests/teststatusicon.c +++ b/tests/teststatusicon.c @@ -13,15 +13,16 @@ * 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., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . * * Authors: * Mark McLoughlin */ #include +#include + +#include "prop-editor.h" typedef enum { @@ -33,6 +34,36 @@ static TestStatus status = TEST_STATUS_INFO; static gint timeout = 0; static GSList *icons = NULL; +static void +size_changed_cb (GtkStatusIcon *icon, + int size) +{ + g_print ("status icon %p size-changed size = %d\n", icon, size); +} + +static void +embedded_changed_cb (GtkStatusIcon *icon) +{ + g_print ("status icon %p embedded changed to %d\n", icon, + gtk_status_icon_is_embedded (icon)); +} + +static void +orientation_changed_cb (GtkStatusIcon *icon) +{ + GtkOrientation orientation; + + g_object_get (icon, "orientation", &orientation, NULL); + g_print ("status icon %p orientation changed to %d\n", icon, orientation); +} + +static void +screen_changed_cb (GtkStatusIcon *icon) +{ + g_print ("status icon %p screen changed to %p\n", icon, + gtk_status_icon_get_screen (icon)); +} + static void update_icons (void) { @@ -42,12 +73,12 @@ update_icons (void) if (status == TEST_STATUS_INFO) { - icon_name = GTK_STOCK_DIALOG_INFO; - tooltip = "Some Infromation ..."; + icon_name = "dialog-information"; + tooltip = "Some Information ..."; } else { - icon_name = GTK_STOCK_DIALOG_QUESTION; + icon_name = "dialog-question"; tooltip = "Some Question ..."; } @@ -56,7 +87,7 @@ update_icons (void) GtkStatusIcon *status_icon = l->data; gtk_status_icon_set_from_icon_name (status_icon, icon_name); - gtk_status_icon_set_tooltip (status_icon, tooltip); + gtk_status_icon_set_tooltip_text (status_icon, tooltip); } } @@ -73,16 +104,6 @@ timeout_handler (gpointer data) return TRUE; } -static void -blink_toggle_toggled (GtkToggleButton *toggle) -{ - GSList *l; - - for (l = icons; l; l = l->next) - gtk_status_icon_set_blinking (GTK_STATUS_ICON (l->data), - gtk_toggle_button_get_active (toggle)); -} - static void visible_toggle_toggled (GtkToggleButton *toggle) { @@ -103,13 +124,14 @@ timeout_toggle_toggled (GtkToggleButton *toggle) } else { - timeout = g_timeout_add (2000, timeout_handler, NULL); + timeout = gdk_threads_add_timeout (2000, timeout_handler, NULL); } } static void icon_activated (GtkStatusIcon *icon) { + GtkWidget *content_area; GtkWidget *dialog; GtkWidget *toggle; @@ -132,8 +154,10 @@ icon_activated (GtkStatusIcon *icon) g_signal_connect (dialog, "delete_event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); + content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); + toggle = gtk_toggle_button_new_with_mnemonic ("_Show the icon"); - gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dialog)->vbox), toggle, TRUE, TRUE, 6); + gtk_box_pack_end (GTK_BOX (content_area), toggle, TRUE, TRUE, 6); gtk_widget_show (toggle); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), @@ -141,17 +165,8 @@ icon_activated (GtkStatusIcon *icon) g_signal_connect (toggle, "toggled", G_CALLBACK (visible_toggle_toggled), NULL); - toggle = gtk_toggle_button_new_with_mnemonic ("_Blink the icon"); - gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dialog)->vbox), toggle, TRUE, TRUE, 6); - gtk_widget_show (toggle); - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), - gtk_status_icon_get_blinking (icon)); - g_signal_connect (toggle, "toggled", - G_CALLBACK (blink_toggle_toggled), NULL); - toggle = gtk_toggle_button_new_with_mnemonic ("_Change images"); - gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dialog)->vbox), toggle, TRUE, TRUE, 6); + gtk_box_pack_end (GTK_BOX (content_area), toggle, TRUE, TRUE, 6); gtk_widget_show (toggle); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), @@ -164,32 +179,17 @@ icon_activated (GtkStatusIcon *icon) } static void -check_activated (GtkCheckMenuItem *item) +do_properties (GtkMenuItem *item, + GtkStatusIcon *icon) { - GSList *l; - GdkScreen *screen; - - screen = NULL; - - for (l = icons; l; l = l->next) - { - GtkStatusIcon *icon = l->data; - GdkScreen *orig_screen; - - orig_screen = gtk_status_icon_get_screen (icon); - - if (screen != NULL) - gtk_status_icon_set_screen (icon, screen); - - screen = orig_screen; + static GtkWidget *editor = NULL; - gtk_status_icon_set_blinking (icon, - gtk_check_menu_item_get_active (item)); - } - - g_assert (screen != NULL); + if (editor == NULL) { + editor = create_prop_editor (G_OBJECT (icon), GTK_TYPE_STATUS_ICON); + g_signal_connect (editor, "destroy", G_CALLBACK (gtk_widget_destroyed), &editor); + } - gtk_status_icon_set_screen (GTK_STATUS_ICON (icons->data), screen); + gtk_window_present (GTK_WINDOW (editor)); } static void @@ -211,6 +211,12 @@ do_quit (GtkMenuItem *item) gtk_main_quit (); } +static void +do_exit (GtkMenuItem *item) +{ + exit (0); +} + static void popup_menu (GtkStatusIcon *icon, guint button, @@ -223,10 +229,8 @@ popup_menu (GtkStatusIcon *icon, gtk_menu_set_screen (GTK_MENU (menu), gtk_status_icon_get_screen (icon)); - menuitem = gtk_check_menu_item_new_with_label ("Blink"); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), - gtk_status_icon_get_blinking (icon)); - g_signal_connect (menuitem, "activate", G_CALLBACK (check_activated), NULL); + menuitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_PROPERTIES, NULL); + g_signal_connect (menuitem, "activate", G_CALLBACK (do_properties), icon); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); @@ -239,8 +243,16 @@ popup_menu (GtkStatusIcon *icon, gtk_widget_show (menuitem); + menuitem = gtk_menu_item_new_with_label ("Exit abruptly"); + g_signal_connect (menuitem, "activate", G_CALLBACK (do_exit), NULL); + + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); + + gtk_widget_show (menuitem); + gtk_menu_popup (GTK_MENU (menu), - NULL, NULL, NULL, NULL, + NULL, NULL, + gtk_status_icon_position_menu, icon, button, activate_time); } @@ -264,7 +276,11 @@ main (int argc, char **argv) gtk_status_icon_set_screen (icon, gdk_display_get_screen (display, i)); update_icons (); - gtk_status_icon_set_blinking (GTK_STATUS_ICON (icon), TRUE); + g_signal_connect (icon, "size-changed", G_CALLBACK (size_changed_cb), NULL); + g_signal_connect (icon, "notify::embedded", G_CALLBACK (embedded_changed_cb), NULL); + g_signal_connect (icon, "notify::orientation", G_CALLBACK (orientation_changed_cb), NULL); + g_signal_connect (icon, "notify::screen", G_CALLBACK (screen_changed_cb), NULL); + g_print ("icon size %d\n", gtk_status_icon_get_size (icon)); g_signal_connect (icon, "activate", G_CALLBACK (icon_activated), NULL); @@ -274,7 +290,9 @@ main (int argc, char **argv) icons = g_slist_append (icons, icon); - timeout = g_timeout_add (2000, timeout_handler, icon); + update_icons (); + + timeout = gdk_threads_add_timeout (2000, timeout_handler, icon); } gtk_main ();