Mercurial > pidgin.yaz
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 } |