diff src/dialogs.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 2014b91db201
children 451d2946423e
line wrap: on
line diff
--- a/src/dialogs.c	Wed Dec 24 01:48:25 2003 +0000
+++ b/src/dialogs.c	Thu Dec 25 09:23:27 2003 +0000
@@ -80,7 +80,6 @@
 	GtkWidget *window;
 	GtkWidget *url;
 	GtkWidget *text;
-	GtkWidget *toggle;
 	GtkWidget *entry;
 	GaimConversation *c;
 };
@@ -234,7 +233,6 @@
 	img = gtk_image_new_from_stock(GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_MENU);
 	gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
 	labeltext = _("<b>Anonymous warnings are less severe.</b>");
-	/* labeltext = _("Anonymous warnings are less severe."); */
 	label = gtk_label_new(NULL);
 	gtk_label_set_markup(GTK_LABEL(label), labeltext);
 	gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
@@ -678,66 +676,49 @@
 }
 
 
-static void
-free_dialog(GtkWidget *w, void *data)
-{
-	g_free(data);
-}
-
 /*------------------------------------------------------*/
 /* Link Dialog                                          */
 /*------------------------------------------------------*/
 
-void cancel_link(GtkWidget *widget, GaimConversation *c)
+void dialog_link_destroy(GaimConversation *c)
 {
 	GaimGtkConversation *gtkconv;
-	GtkWidget *link_dialog;
 
 	gtkconv = GAIM_GTK_CONVERSATION(c);
 
-	if (gtkconv->toolbar.link) {
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link),
-									FALSE);
-	}
-
-	link_dialog = gtkconv->dialogs.link;
+	gtk_widget_destroy(gtkconv->dialogs.link);
 	gtkconv->dialogs.link = NULL;
-	destroy_dialog(NULL, link_dialog);
 }
 
-void do_insert_link(GtkWidget *w, int resp, struct linkdlg *b)
+static void do_insert_link(GtkWidget *w, int resp, struct linkdlg *a)
 {
 	GaimGtkConversation *gtkconv;
-	char *open_tag;
 	const char *urltext, *showtext;
 
-	gtkconv = GAIM_GTK_CONVERSATION(b->c);
+	gtkconv = GAIM_GTK_CONVERSATION(a->c);
 
 	if (resp == GTK_RESPONSE_OK) {
-
-		open_tag = g_malloc(2048);
-
-		urltext = gtk_entry_get_text(GTK_ENTRY(b->url));
-		showtext = gtk_entry_get_text(GTK_ENTRY(b->text));
+		urltext = gtk_entry_get_text(GTK_ENTRY(a->url));
+		showtext = gtk_entry_get_text(GTK_ENTRY(a->text));
 
 		if (!strlen(showtext))
 			showtext = urltext;
 
 		gtk_imhtml_insert_link(GTK_IMHTML(gtkconv->entry), urltext, showtext);
-
-		g_free(open_tag);
+		gaim_gtk_advance_past(gtkconv, "<A HREF>", "</A>");
 	}
 
-	if (gtkconv->toolbar.link) {
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link),
-									FALSE);
-	}
-
-	gtkconv->dialogs.link = NULL;
-	destroy_dialog(NULL, b->window);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link), FALSE);
 }
 
-void show_insert_link(GtkWidget *linky, GaimConversation *c)
+static void dialog_link_freedata(GtkWidget *w, gpointer user_data)
+{
+	struct linkdlg *a = user_data;
+
+	g_free(a);
+}
+
+void dialog_link_show(GaimConversation *c)
 {
 	GaimGtkConversation *gtkconv;
 	GaimGtkWindow *gtkwin;
@@ -745,82 +726,78 @@
 	GtkWidget *label;
 	GtkWidget *hbox;
 	GtkWidget *vbox;
+	struct linkdlg *a;
+	GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
 
 	gtkconv = GAIM_GTK_CONVERSATION(c);
 	gtkwin  = GAIM_GTK_WINDOW(gaim_conversation_get_window(c));
 
-	if (gtkconv->dialogs.link == NULL) {
-		struct linkdlg *a = g_new0(struct linkdlg, 1);
-		GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
+	a = g_new0(struct linkdlg, 1);
 
-		a->c = c;
-		a->window = gtk_dialog_new_with_buttons(_("Insert Link"),
-				GTK_WINDOW(gtkwin->window), 0, GTK_STOCK_CANCEL,
-				GTK_RESPONSE_CANCEL, _("_Insert"), GTK_RESPONSE_OK, NULL);
-		gtk_dialog_set_default_response(GTK_DIALOG(a->window), GTK_RESPONSE_OK);
-		g_signal_connect(G_OBJECT(a->window), "response",
-						 G_CALLBACK(do_insert_link), a);
+	a->c = c;
+	a->window = gtk_dialog_new_with_buttons(_("Insert Link"),
+			GTK_WINDOW(gtkwin->window), 0, GTK_STOCK_CANCEL,
+			GTK_RESPONSE_CANCEL, _("_Insert"), GTK_RESPONSE_OK, NULL);
+	gtk_dialog_set_default_response(GTK_DIALOG(a->window), GTK_RESPONSE_OK);
+	g_signal_connect(G_OBJECT(a->window), "response",
+					 G_CALLBACK(do_insert_link), a);
+	g_signal_connect(G_OBJECT(a->window), "destroy",
+					 G_CALLBACK(dialog_link_freedata), a);
 
-		gtk_dialog_set_default_response(GTK_DIALOG(a->window), GTK_RESPONSE_OK);
-		gtk_container_set_border_width(GTK_CONTAINER(a->window), 6);
-		gtk_window_set_resizable(GTK_WINDOW(a->window), FALSE);
-		gtk_dialog_set_has_separator(GTK_DIALOG(a->window), FALSE);
-		gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(a->window)->vbox), 12);
-		gtk_container_set_border_width(
-			GTK_CONTAINER(GTK_DIALOG(a->window)->vbox), 6);
-		gtk_window_set_role(GTK_WINDOW(a->window), "insert_link");
-		gtk_dialog_set_response_sensitive(GTK_DIALOG(a->window), GTK_RESPONSE_OK, FALSE);
+	gtk_dialog_set_default_response(GTK_DIALOG(a->window), GTK_RESPONSE_OK);
+	gtk_container_set_border_width(GTK_CONTAINER(a->window), 6);
+	gtk_window_set_resizable(GTK_WINDOW(a->window), FALSE);
+	gtk_dialog_set_has_separator(GTK_DIALOG(a->window), FALSE);
+	gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(a->window)->vbox), 12);
+	gtk_container_set_border_width(
+		GTK_CONTAINER(GTK_DIALOG(a->window)->vbox), 6);
+	gtk_window_set_role(GTK_WINDOW(a->window), "insert_link");
+	gtk_dialog_set_response_sensitive(GTK_DIALOG(a->window), GTK_RESPONSE_OK, FALSE);
 
-		hbox = gtk_hbox_new(FALSE, 12);
-		gtk_container_add(GTK_CONTAINER(GTK_DIALOG(a->window)->vbox), hbox);
-		gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
-		gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
+	hbox = gtk_hbox_new(FALSE, 12);
+	gtk_container_add(GTK_CONTAINER(GTK_DIALOG(a->window)->vbox), hbox);
+	gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
+	gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
 
-		vbox = gtk_vbox_new(FALSE, 0);
-		gtk_container_add(GTK_CONTAINER(hbox), vbox);
+	vbox = gtk_vbox_new(FALSE, 0);
+	gtk_container_add(GTK_CONTAINER(hbox), vbox);
 
-		label = gtk_label_new(_("Please enter the URL and description of "
-								"the link that you want to insert.  The "
-								"description is optional.\n"));
-		gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
-		gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
-		gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+	label = gtk_label_new(_("Please enter the URL and description of "
+							"the link that you want to insert.  The "
+							"description is optional.\n"));
+	gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+	gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
+	gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
 
-		table = gtk_table_new(2, 2, FALSE);
-		gtk_table_set_row_spacings(GTK_TABLE(table), 6);
-		gtk_table_set_col_spacings(GTK_TABLE(table), 6);
-		gtk_container_set_border_width(GTK_CONTAINER(table), 0);
-		gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
+	table = gtk_table_new(2, 2, FALSE);
+	gtk_table_set_row_spacings(GTK_TABLE(table), 6);
+	gtk_table_set_col_spacings(GTK_TABLE(table), 6);
+	gtk_container_set_border_width(GTK_CONTAINER(table), 0);
+	gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
 
-		label = gtk_label_new_with_mnemonic(_("_URL:"));
-		gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-		gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
+	label = gtk_label_new_with_mnemonic(_("_URL:"));
+	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
 
-		a->url = gtk_entry_new();
-		gtk_table_attach_defaults(GTK_TABLE(table), a->url, 1, 2, 0, 1);
-		gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(a->url));
-		gtk_widget_grab_focus(a->url);
+	a->url = gtk_entry_new();
+	gtk_table_attach_defaults(GTK_TABLE(table), a->url, 1, 2, 0, 1);
+	gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(a->url));
+	gtk_widget_grab_focus(a->url);
 
-		gtk_entry_set_activates_default (GTK_ENTRY(a->url), TRUE);
-		g_signal_connect(G_OBJECT(a->url), "changed",
-				G_CALLBACK(gaim_gtk_set_sensitive_if_input), a->window);
-
-		label = gtk_label_new_with_mnemonic(_("_Description:"));
-		gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-		gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
+	gtk_entry_set_activates_default (GTK_ENTRY(a->url), TRUE);
+	g_signal_connect(G_OBJECT(a->url), "changed",
+			G_CALLBACK(gaim_gtk_set_sensitive_if_input), a->window);
 
-		a->text = gtk_entry_new();
-		gtk_table_attach_defaults(GTK_TABLE(table), a->text, 1, 2, 1, 2);
-		gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(a->text));
-		gtk_entry_set_activates_default (GTK_ENTRY(a->text), TRUE);
+	label = gtk_label_new_with_mnemonic(_("_Description:"));
+	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
 
-		g_signal_connect(G_OBJECT(a->window), "destroy",
-						 G_CALLBACK(free_dialog), a);
-		dialogwindows = g_list_prepend(dialogwindows, a->window);
+	a->text = gtk_entry_new();
+	gtk_table_attach_defaults(GTK_TABLE(table), a->text, 1, 2, 1, 2);
+	gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(a->text));
+	gtk_entry_set_activates_default (GTK_ENTRY(a->text), TRUE);
 
-		a->toggle = linky;
-		gtkconv->dialogs.link = a->window;
-	}
+	gtkconv->dialogs.link = a->window;
 
 	gtk_widget_show_all(gtkconv->dialogs.link);
 	gdk_window_raise(gtkconv->dialogs.link->window);