diff src/conversation.c @ 830:60284aef22f0

[gaim-migrate @ 840] ctrl-1 = :-) committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Sat, 02 Sep 2000 08:42:40 +0000
parents 9a123b171f46
children bac7089491c1
line wrap: on
line diff
--- a/src/conversation.c	Sat Sep 02 02:41:57 2000 +0000
+++ b/src/conversation.c	Sat Sep 02 08:42:40 2000 +0000
@@ -498,29 +498,96 @@
 			pos=gtk_editable_get_position(GTK_EDITABLE(entry));
 			gtk_editable_insert_text(GTK_EDITABLE(entry), "\n", 1, &pos);
 		}
-	} else if ((event->state & GDK_CONTROL_MASK)
-		   && (general_options & OPT_GEN_CTL_CHARS)) {
-		switch (event->keyval) {
-		case 'i':
-			quiet_set(c->italic, !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(c->italic)));
-			do_italic(c->italic, c->entry);
-			gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event");
-			break;
-		case 'u': /* ctl-u is GDK_Clear, which clears the line */
-			quiet_set(c->underline, !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(c->underline)));
-			do_underline(c->underline, c->entry);
-			gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event");
-			break;
-		case 'b': /* ctl-b is GDK_Left, which moves backwards */
-			quiet_set(c->bold, !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(c->bold)));
-			do_bold(c->bold, c->entry);
-			gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event");
-			break;
-		case 's':
-			quiet_set(c->strike, !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(c->strike)));
-			do_strike(c->strike, c->entry);
-			gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event");
-			break;
+	} else if (event->state & GDK_CONTROL_MASK) {
+		if (general_options & OPT_GEN_CTL_CHARS) {
+			switch (event->keyval) {
+			case 'i':
+				quiet_set(c->italic, !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(c->italic)));
+				do_italic(c->italic, c->entry);
+				gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event");
+				break;
+			case 'u': /* ctl-u is GDK_Clear, which clears the line */
+				quiet_set(c->underline, !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(c->underline)));
+				do_underline(c->underline, c->entry);
+				gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event");
+				break;
+			case 'b': /* ctl-b is GDK_Left, which moves backwards */
+				quiet_set(c->bold, !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(c->bold)));
+				do_bold(c->bold, c->entry);
+				gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event");
+				break;
+			case 's':
+				quiet_set(c->strike, !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(c->strike)));
+				do_strike(c->strike, c->entry);
+				gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event");
+				break;
+			}
+		}
+		if (general_options & OPT_GEN_CTL_SMILEYS) {
+			char buf[7];
+			buf[0] = '\0';
+			switch (event->keyval) {
+				case '1':
+					sprintf(buf, ":-)");
+					break;
+				case '2':
+					sprintf(buf, ":-(");
+					break;
+				case '3':
+					sprintf(buf, ";-)");
+					break;
+				case '4':
+					sprintf(buf, ":-P");
+					break;
+				case '5':
+					sprintf(buf, "=-O");
+					break;
+				case '6':
+					sprintf(buf, ":-*");
+					break;
+				case '7':
+					sprintf(buf, ">:o");
+					break;
+				case '8':
+					sprintf(buf, "8-)");
+					break;
+				case '!':
+					sprintf(buf, ":-$");
+					break;
+				case '@':
+					sprintf(buf, ":-!");
+					break;
+				case '#':
+					sprintf(buf, ":-[");
+					break;
+				case '$':
+					sprintf(buf, "O:-)");
+					break;
+				case '%':
+					sprintf(buf, ":-/");
+					break;
+				case '^':
+					sprintf(buf, ":'(");
+					break;
+				case '&':
+					sprintf(buf, ":-X");
+					break;
+				case '*':
+					sprintf(buf, ":-D");
+					break;
+			}
+			if (buf[0]) {
+				if (GTK_EDITABLE(c->entry)->has_selection) {
+					int finish = GTK_EDITABLE(c->entry)->selection_end_pos;
+					gtk_editable_insert_text(GTK_EDITABLE(c->entry),
+								 buf, strlen(buf), &finish);
+				} else {
+					pos = GTK_EDITABLE(c->entry)->current_pos;
+					gtk_editable_insert_text(GTK_EDITABLE(c->entry),
+								 buf, strlen(buf), &pos);
+				}
+				gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event");
+			}
 		}
 	}