diff src/conversation.c @ 230:83dd297aa363

[gaim-migrate @ 240] Added a few patches from fflewddur to add default away messages, save prefs after deleting an away message, and *duh* *duh* *duh* *duh* presenting..... font face selection dialog! Thanks fflewddur. I also added a pixmap for font face to eventually go on the conversation windows, but I didn't implement it yet. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Wed, 10 May 2000 10:56:25 +0000
parents ec0686b3b03f
children 985635758c33
line wrap: on
line diff
--- a/src/conversation.c	Wed May 10 08:29:02 2000 +0000
+++ b/src/conversation.c	Wed May 10 10:56:25 2000 +0000
@@ -37,6 +37,7 @@
 #include "pixmaps/small.xpm"
 #include "pixmaps/normal.xpm"
 #include "pixmaps/big.xpm"
+/* #include "pixmaps/fontface.xpm" */
 #include "pixmaps/speaker.xpm"
 /* #include "pixmaps/aimicon2.xpm" */
 #include "pixmaps/wood.xpm"
@@ -49,10 +50,11 @@
 GdkPixmap *dark_icon_pm = NULL;
 GdkBitmap *dark_icon_bm = NULL;
 
+char *fontface;
 
 void check_everything(GtkWidget *entry);
 gboolean user_keypress_callback(GtkWidget *entry, GdkEventKey *event,  struct conversation *c);
-
+void set_font_face(GtkWidget *widget, struct conversation *c);
 
 /*------------------------------------------------------------------------*/
 /*  Helpers                                                               */
@@ -247,7 +249,6 @@
 		show_log_dialog(p->name);
 }
 
-
 static int close_callback(GtkWidget *widget, struct conversation *c)
 {
         gtk_widget_destroy(c->window);
@@ -255,6 +256,30 @@
         return TRUE;
 }
 
+void set_font_face(GtkWidget *widget, struct conversation *c)
+{
+	char *pre_fontface;
+	int alloc = 0;
+
+	if (!(font_options & OPT_FONT_FACE))
+		return;
+
+	if (fontface)
+	{
+		pre_fontface = g_strconcat("<FONT FACE=\"", fontface, "\">", '\0');
+		alloc++;
+	}
+	else
+		pre_fontface = "<FONT FACE=\"Helvetica\">";
+		
+	surround(c->entry, pre_fontface, "</FONT>");
+	gtk_widget_grab_focus(c->entry);
+	
+	if (alloc)
+		g_free(pre_fontface);
+	return;
+}
+
 static gint delete_event_convo(GtkWidget *w, GdkEventAny *e, struct conversation *c)
 {
 	delete_conversation(c);
@@ -419,7 +444,8 @@
 		do_im_back();
 	}
 
-
+    set_font_face(NULL, c);
+	
 	gtk_widget_grab_focus(c->entry);
 
         g_free(buf2);
@@ -502,12 +528,27 @@
 	int finish = GTK_EDITABLE(entry)->selection_end_pos;
 	s = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1); 
 	t = s;
-	while((t = strstr(t, tag))) {
-		if (((t-s) < finish) && ((t-s) >= start)) { 
-			gtk_editable_delete_text(GTK_EDITABLE(entry), (t-s), (t-s) + strlen(tag));
-			t = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
+	if (strstr(tag, "<FONT SIZE="))
+	{
+		while((t = strstr(t, "<FONT SIZE="))) {
+			if (((t-s) < finish) && ((t-s) >= start)) {
+				gtk_editable_delete_text(GTK_EDITABLE(entry), (t-s), (t-s) + strlen(tag));
+				s = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
+				t = s;
+			}
+			else t++;
 		}
-		else t++;
+	}
+	else
+	{
+		while((t = strstr(t, tag))) {
+			if (((t-s) < finish) && ((t-s) >= start)) {
+				gtk_editable_delete_text(GTK_EDITABLE(entry), (t-s), (t-s) + strlen(tag));
+				s = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
+				t = s;
+			}
+			else t++;
+		}
 	}
 	g_free(s);
 }
@@ -622,11 +663,14 @@
 		advance_past(entry, "<I>", "</I>");
 }
 
+/* html code to modify font sizes must all be the same length, */
+/* currently set to 15 chars */
+
 static void do_small(GtkWidget *small, GtkWidget *entry)
 {
 	if (state_lock)
 		return;
-	surround(entry, "<FONT SIZE=\"-2\">","</FONT>");
+	surround(entry, "<FONT SIZE=\"1\">","</FONT>");
 }
 
 static void do_normal(GtkWidget *normal, GtkWidget *entry)
@@ -640,7 +684,7 @@
 {
 	if (state_lock)
 		return;
-	surround(entry, "<FONT SIZE=\"+5\">","</FONT>");
+	surround(entry, "<FONT SIZE=\"5\">","</FONT>");
 }
 
 void check_everything(GtkWidget *entry)
@@ -884,7 +928,7 @@
 	entry = gtk_text_new(NULL, NULL);
 	gtk_text_set_editable(GTK_TEXT(entry), TRUE);
 	gtk_text_set_word_wrap(GTK_TEXT(entry), TRUE);
-        
+
 	/* Toolbar */
 	toolbar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
 
@@ -1093,8 +1137,9 @@
 	gtk_signal_connect(GTK_OBJECT(entry), "insert-text", GTK_SIGNAL_FUNC(check_spelling), entry);
 	gtk_signal_connect(GTK_OBJECT(entry), "key_press_event", GTK_SIGNAL_FUNC(entry_key_pressed), entry);
 
+	set_font_face(NULL, c);
+	
 	gtk_widget_show(win);
-	
 }