Mercurial > pidgin.yaz
diff src/gtkconv.c @ 7927:1441648fe974
[gaim-migrate @ 8598]
De-uglify the insert link and insert image buttons a bit. Closing the
insert image dialog via the window manager now makes the insert image
button un-depress itself.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 25 Dec 2003 09:23:27 +0000 |
parents | d3f2aa8de5bf |
children | dca50d465b7d |
line wrap: on
line diff
--- a/src/gtkconv.c Wed Dec 24 01:48:25 2003 +0000 +++ b/src/gtkconv.c Thu Dec 25 09:23:27 2003 +0000 @@ -193,37 +193,38 @@ } static void -do_insert_image_cb(GObject *obj, GtkWidget *wid) +do_insert_image_cb(GtkWidget *widget, int resp, gpointer data) { - GaimConversation *conv; - GaimGtkConversation *gtkconv; - GaimConvIm *im; + GaimConversation *conv = data; + GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); + GaimConvIm *im = GAIM_CONV_IM(conv); char *name, *filename; - char *buf, *data; + char *buf, *filedata; size_t size; - GError *error; + GError *error = NULL; int id; - conv = g_object_get_data(G_OBJECT(wid), "user_data"); - gtkconv = GAIM_GTK_CONVERSATION(conv); - im = GAIM_CONV_IM(conv); - name = g_strdup(gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid))); + if (resp != GTK_RESPONSE_OK) { + set_toggle(gtkconv->toolbar.image, FALSE); + return; + } + + name = g_strdup(gtk_file_selection_get_filename(GTK_FILE_SELECTION(widget))); if (!name) { - gtk_widget_destroy(gtkconv->dialogs.image); - gtkconv->dialogs.image = NULL; + set_toggle(gtkconv->toolbar.image, FALSE); return; } - if (gaim_gtk_check_if_dir(name, GTK_FILE_SELECTION(wid))) { + if (gaim_gtk_check_if_dir(name, GTK_FILE_SELECTION(widget))) { g_free(name); + set_toggle(gtkconv->toolbar.image, FALSE); return; } - gtk_widget_destroy(gtkconv->dialogs.image); - gtkconv->dialogs.image = NULL; - - if (!g_file_get_contents(name, &data, &size, &error)) { + set_toggle(gtkconv->toolbar.image, FALSE); + + if (!g_file_get_contents(name, &filedata, &size, &error)) { gaim_notify_error(NULL, NULL, error->message, NULL); g_error_free(error); @@ -236,8 +237,8 @@ while (strchr(filename, '/')) filename = strchr(filename, '/') + 1; - id = gaim_imgstore_add(data, size, filename); - g_free(data); + id = gaim_imgstore_add(filedata, size, filename); + g_free(filedata); if (!id) { buf = g_strdup_printf(_("Failed to store image: %s\n"), name); @@ -256,8 +257,6 @@ g_free(buf); g_free(name); - - set_toggle(gtkconv->toolbar.image, FALSE); } static gint @@ -289,18 +288,6 @@ } static void -cancel_insert_image_cb(GtkWidget *unused, GaimGtkConversation *gtkconv) -{ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image), - FALSE); - - if (gtkconv->dialogs.image) - gtk_widget_destroy(gtkconv->dialogs.image); - - gtkconv->dialogs.image = NULL; -} - -static void insert_image_cb(GtkWidget *save, GaimConversation *conv) { GaimGtkConversation *gtkconv; @@ -314,18 +301,14 @@ g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S, gaim_home_dir()); gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); - g_object_set_data(G_OBJECT(window), "user_data", conv); - g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), - "clicked", G_CALLBACK(do_insert_image_cb), window); - g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button), - "clicked", G_CALLBACK(cancel_insert_image_cb), gtkconv); + gtk_dialog_set_default_response(GTK_DIALOG(window), GTK_RESPONSE_OK); + g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)), + "response", G_CALLBACK(do_insert_image_cb), conv); gtk_widget_show(window); gtkconv->dialogs.image = window; } else { - gtk_widget_grab_focus(gtkconv->entry); - if(gtkconv->dialogs.image) - gtk_widget_destroy(gtkconv->dialogs.image); + gtk_widget_destroy(gtkconv->dialogs.image); gtkconv->dialogs.image = NULL; } } @@ -338,11 +321,9 @@ gtkconv = GAIM_GTK_CONVERSATION(conv); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link))) - show_insert_link(gtkconv->toolbar.link, conv); - else if (gtkconv->dialogs.link) - cancel_link(gtkconv->toolbar.link, conv); + dialog_link_show(conv); else - gaim_gtk_advance_past(gtkconv, "<A HREF>", "</A>"); + dialog_link_destroy(conv); gtk_widget_grab_focus(gtkconv->entry); } @@ -769,12 +750,14 @@ GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); GtkWidget *table; GtkWidget *labelbox, *bbox; - GtkWidget *button, *align; + GtkWidget *button; GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); GtkWidget *label, *entry; struct _search *s; +/* gint signal_id; GClosure *closure; +*/ if (gtkconv->dialogs.search) { gtk_window_present(GTK_WINDOW(gtkconv->dialogs.search)); @@ -867,7 +850,8 @@ conv = gaim_conv_window_get_active_conversation(win); gtkconv = GAIM_GTK_CONVERSATION(conv); - show_insert_link(gtkconv->toolbar.link, conv); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link), + !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link))); } static void @@ -3479,6 +3463,17 @@ sep = gtk_vseparator_new(); gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); + /* Insert Link */ + button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_LINK); + gtk_size_group_add_widget(sg, button); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); + gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Insert link"), NULL); + + g_signal_connect(G_OBJECT(button), "clicked", + G_CALLBACK(insert_link_cb), conv); + + gtkconv->toolbar.link = button; + /* Insert IM Image */ button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_IMAGE); gtk_size_group_add_widget(sg, button); @@ -3490,17 +3485,6 @@ gtkconv->toolbar.image = button; - /* Insert Link */ - button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_LINK); - gtk_size_group_add_widget(sg, button); - gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); - gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Insert link"), NULL); - - g_signal_connect(G_OBJECT(button), "clicked", - G_CALLBACK(insert_link_cb), conv); - - gtkconv->toolbar.link = button; - /* Insert Smiley */ button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_SMILEY); gtk_size_group_add_widget(sg, button);