comparison src/gtkconv.c @ 7300:41bbe5534441

[gaim-migrate @ 7884] Some UI changes to the right-click menu for buddy icons in a conversation window. Replaced Enable Animation and Disable Animation with an Animate checkbox, and added a Save As icon to the Save Icon As item. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Sun, 19 Oct 2003 02:01:06 +0000
parents caca74a75e4c
children ab828b8c3f22
comparison
equal deleted inserted replaced
7299:2737c287f84d 7300:41bbe5534441
747 GtkWidget *label, *entry; 747 GtkWidget *label, *entry;
748 struct _search *s; 748 struct _search *s;
749 749
750 if (gtkconv->dialogs.search) 750 if (gtkconv->dialogs.search)
751 return; 751 return;
752 752
753 gtkconv->dialogs.search = gtk_dialog_new_with_buttons("", GTK_WINDOW(gtkwin->window), 753 gtkconv->dialogs.search = gtk_dialog_new_with_buttons("", GTK_WINDOW(gtkwin->window),
754 GTK_DIALOG_DESTROY_WITH_PARENT, 754 GTK_DIALOG_DESTROY_WITH_PARENT,
755 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, 755 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
756 GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL); 756 GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL);
757 gtk_container_set_border_width (GTK_CONTAINER(gtkconv->dialogs.search), 6); 757 gtk_container_set_border_width (GTK_CONTAINER(gtkconv->dialogs.search), 6);
758 gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE); 758 gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE);
759 gtk_dialog_set_has_separator(GTK_DIALOG(gtkconv->dialogs.search), FALSE); 759 gtk_dialog_set_has_separator(GTK_DIALOG(gtkconv->dialogs.search), FALSE);
760 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 12); 760 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 12);
761 gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 6); 761 gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 6);
762 762
763 hbox = gtk_hbox_new(FALSE, 6); 763 hbox = gtk_hbox_new(FALSE, 6);
764 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), hbox); 764 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), hbox);
765 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); 765 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
766 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); 766 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
767 767
771 label = gtk_label_new(NULL); 771 label = gtk_label_new(NULL);
772 gtk_label_set_markup(GTK_LABEL(label), _("<span weight='bold' size='larger'>Enter a search phrase\n</span>")); 772 gtk_label_set_markup(GTK_LABEL(label), _("<span weight='bold' size='larger'>Enter a search phrase\n</span>"));
773 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); 773 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
774 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); 774 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
775 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); 775 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
776 776
777 hbox = gtk_hbox_new(FALSE, 6); 777 hbox = gtk_hbox_new(FALSE, 6);
778 gtk_container_add(GTK_CONTAINER(vbox), hbox); 778 gtk_container_add(GTK_CONTAINER(vbox), hbox);
779 label = gtk_label_new(_("Search term: ")); 779 label = gtk_label_new(_("Search term: "));
780 entry = gtk_entry_new(); 780 entry = gtk_entry_new();
781 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); 781 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
782 gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0); 782 gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0);
783 783
784 s = g_malloc(sizeof(struct _search)); 784 s = g_malloc(sizeof(struct _search));
785 s->gtkconv = gtkconv; 785 s->gtkconv = gtkconv;
786 s->entry = entry; 786 s->entry = entry;
787 787
788 gtk_dialog_set_default_response (GTK_DIALOG(gtkconv->dialogs.search), GTK_RESPONSE_OK); 788 gtk_dialog_set_default_response (GTK_DIALOG(gtkconv->dialogs.search), GTK_RESPONSE_OK);
789 g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "response", G_CALLBACK(do_search_cb), s); 789 g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "response", G_CALLBACK(do_search_cb), s);
790 790
791 gtk_widget_show_all(gtkconv->dialogs.search); 791 gtk_widget_show_all(gtkconv->dialogs.search);
792 } 792 }
793 793
794 static void 794 static void
795 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) 795 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget)
5278 g_source_remove(gtkconv->u.im->icon_timer); 5278 g_source_remove(gtkconv->u.im->icon_timer);
5279 5279
5280 gtkconv->u.im->icon_timer = 0; 5280 gtkconv->u.im->icon_timer = 0;
5281 } 5281 }
5282 5282
5283 static void
5284 toggle_icon_animate_cb(GtkWidget *w, GaimConversation *conv)
5285 {
5286 if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)))
5287 start_anim(NULL, conv);
5288 else
5289 stop_anim(NULL, conv);
5290 }
5291
5283 static gboolean 5292 static gboolean
5284 icon_menu(GtkObject *obj, GdkEventButton *e, GaimConversation *conv) 5293 icon_menu(GtkObject *obj, GdkEventButton *e, GaimConversation *conv)
5285 { 5294 {
5286 GaimGtkConversation *gtkconv; 5295 GaimGtkConversation *gtkconv;
5287 static GtkWidget *menu = NULL; 5296 static GtkWidget *menu = NULL;
5299 if (menu != NULL) 5308 if (menu != NULL)
5300 gtk_widget_destroy(menu); 5309 gtk_widget_destroy(menu);
5301 5310
5302 menu = gtk_menu_new(); 5311 menu = gtk_menu_new();
5303 5312
5304 if (gtkconv->u.im->icon_timer) { 5313 if (gtkconv->u.im->anim &&
5305 button = gtk_menu_item_new_with_label(_("Disable Animation")); 5314 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)))
5306 g_signal_connect(G_OBJECT(button), "activate",
5307 G_CALLBACK(stop_anim), conv);
5308 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
5309 gtk_widget_show(button);
5310 }
5311 else if (gtkconv->u.im->anim &&
5312 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)))
5313 { 5315 {
5314 button = gtk_menu_item_new_with_label(_("Enable Animation")); 5316 gaim_new_check_item(menu, _("Animate"),
5315 g_signal_connect(G_OBJECT(button), "activate", 5317 G_CALLBACK(toggle_icon_animate_cb), conv,
5316 G_CALLBACK(start_anim), conv); 5318 gtkconv->u.im->icon_timer);
5317 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
5318 gtk_widget_show(button);
5319 } 5319 }
5320 5320
5321 button = gtk_menu_item_new_with_label(_("Hide Icon")); 5321 button = gtk_menu_item_new_with_label(_("Hide Icon"));
5322 g_signal_connect_swapped(G_OBJECT(button), "activate", 5322 g_signal_connect_swapped(G_OBJECT(button), "activate",
5323 G_CALLBACK(remove_icon), gtkconv); 5323 G_CALLBACK(remove_icon), gtkconv);
5324 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); 5324 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
5325 gtk_widget_show(button); 5325 gtk_widget_show(button);
5326 5326
5327 button = gtk_menu_item_new_with_label(_("Save Icon As...")); 5327 gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS,
5328 g_signal_connect(G_OBJECT(button), "activate", 5328 G_CALLBACK(gaim_gtk_save_icon_dialog), conv,
5329 G_CALLBACK(gaim_gtk_save_icon_dialog), conv); 5329 0, 0, NULL);
5330 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
5331 gtk_widget_show(button);
5332 5330
5333 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time); 5331 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time);
5334 5332
5335 return TRUE; 5333 return TRUE;
5336 } 5334 }