Mercurial > pidgin.yaz
diff src/dialogs.c @ 3035:0f1766887ddd
[gaim-migrate @ 3048]
Maybe this totally sucks, maybe it doesn't. If you like this, please let me know.
If you have geniunely sincere constructive criticism, then approach me in a nic way.
If you think it sucks then you can build yourself a wee little bridge and get the hell on over it.
committer: Tailor Script <tailor@pidgin.im>
author | Rob Flynn <gaim@robflynn.com> |
---|---|
date | Wed, 13 Mar 2002 04:06:23 +0000 |
parents | f42b738368bb |
children | 910fbed99c2e |
line wrap: on
line diff
--- a/src/dialogs.c Tue Mar 12 21:22:56 2002 +0000 +++ b/src/dialogs.c Wed Mar 13 04:06:23 2002 +0000 @@ -82,6 +82,7 @@ #define PATHSIZE 1024 int smiley_array[FACE_TOTAL]; +char *current_smiley; GdkColor bgcolor; GdkColor fgcolor; @@ -3182,6 +3183,11 @@ c->smiley_dialog = NULL; } +void set_smiley(GtkWidget *w, char *face) +{ + current_smiley = face; +} + void set_smiley_array(GtkWidget *widget, int smiley_type) { int i; @@ -3199,64 +3205,70 @@ char *smiley_text; int i; - for (i = 0; i < FACE_TOTAL; i++) - if (smiley_array[i] == 1) + if (c->gc->prpl->smiley_list) { + smiley_text = strdup(current_smiley); + } else { + + for (i = 0; i < FACE_TOTAL; i++) + if (smiley_array[i] == 1) + break; + + switch (i) { + case (FACE_ANGEL): + smiley_text = g_strndup("O:-)", strlen("O:-)")); + break; + case (FACE_BIGSMILE): + smiley_text = g_strndup(":-D", strlen(":-D")); + break; + case (FACE_BURP): + smiley_text = g_strndup(":-!", strlen(":-!")); + break; + case (FACE_CROSSEDLIPS): + smiley_text = g_strndup(":-X", strlen(":-X")); + break; + case (FACE_CRY): + smiley_text = g_strndup(":'(", strlen(":'(")); + break; + case (FACE_EMBARRASSED): + smiley_text = g_strndup(":-[", strlen(":-[")); + break; + case (FACE_KISS): + smiley_text = g_strndup(":-*", strlen(":-*")); break; - - switch (i) { - case (FACE_ANGEL): - smiley_text = g_strndup("O:-)", strlen("O:-)")); - break; - case (FACE_BIGSMILE): - smiley_text = g_strndup(":-D", strlen(":-D")); - break; - case (FACE_BURP): - smiley_text = g_strndup(":-!", strlen(":-!")); - break; - case (FACE_CROSSEDLIPS): - smiley_text = g_strndup(":-X", strlen(":-X")); - break; - case (FACE_CRY): - smiley_text = g_strndup(":'(", strlen(":'(")); - break; - case (FACE_EMBARRASSED): - smiley_text = g_strndup(":-[", strlen(":-[")); - break; - case (FACE_KISS): - smiley_text = g_strndup(":-*", strlen(":-*")); - break; - case (FACE_MONEYMOUTH): - smiley_text = g_strndup(":-$", strlen(":-$")); - break; - case (FACE_SAD): - smiley_text = g_strndup(":-(", strlen(":-(")); - break; - case (FACE_SCREAM): - smiley_text = g_strndup("=-O", strlen("=-O")); - break; - case (FACE_SMILE): - smiley_text = g_strndup(":-)", strlen(":-)")); - break; - case (FACE_SMILE8): - smiley_text = g_strndup("8-)", strlen("8-)")); - break; - case (FACE_THINK): - smiley_text = g_strndup(":-/", strlen(":-/")); - break; - case (FACE_TONGUE): - smiley_text = g_strndup(":-P", strlen(":-p")); - break; - case (FACE_WINK): - smiley_text = g_strndup(";-)", strlen(";-)")); - break; - case (FACE_YELL): - smiley_text = g_strndup(">:o", strlen(">:o")); - break; - default: - smiley_text = g_strndup(":-)", strlen(":-)")); - break; + case (FACE_MONEYMOUTH): + smiley_text = g_strndup(":-$", strlen(":-$")); + break; + case (FACE_SAD): + smiley_text = g_strndup(":-(", strlen(":-(")); + break; + case (FACE_SCREAM): + smiley_text = g_strndup("=-O", strlen("=-O")); + break; + case (FACE_SMILE): + smiley_text = g_strndup(":-)", strlen(":-)")); + break; + case (FACE_SMILE8): + smiley_text = g_strndup("8-)", strlen("8-)")); + break; + case (FACE_THINK): + smiley_text = g_strndup(":-/", strlen(":-/")); + break; + case (FACE_TONGUE): + smiley_text = g_strndup(":-P", strlen(":-p")); + break; + case (FACE_WINK): + smiley_text = g_strndup(";-)", strlen(";-)")); + break; + case (FACE_YELL): + smiley_text = g_strndup(">:o", strlen(">:o")); + break; + default: + smiley_text = g_strndup(":-)", strlen(":-)")); + break; + } } + /* surround(c->entry, smiley_text, ""); */ if (GTK_OLD_EDITABLE(c->entry)->has_selection) { @@ -3276,7 +3288,7 @@ } static void toolbar_add_smiley(struct conversation *c, GtkWidget *bar, char **xpm, GtkWidget *win, - int face) + char *face) { GtkWidget *tpm; GdkBitmap *mask; @@ -3290,7 +3302,7 @@ gdk_bitmap_unref(mask); button = gtk_toolbar_append_element(GTK_TOOLBAR(bar), GTK_TOOLBAR_CHILD_BUTTON, NULL, NULL, NULL, - NULL, tpm, GTK_SIGNAL_FUNC(set_smiley_array), (int *)face); + NULL, tpm, GTK_SIGNAL_FUNC(set_smiley), (char *)face); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(insert_smiley_text), c); /* these look really weird with borders */ @@ -3300,9 +3312,11 @@ void show_smiley_dialog(struct conversation *c, GtkWidget *widget) { GtkWidget *dialog; - GtkWidget *vbox, *smiley_box_1, *smiley_box_2, *smiley_box_3, *smiley_box_4; + GtkWidget *vbox, *smiley_box = NULL; GtkWidget *win; GtkWidget *bbox; + GSList *smilies; + int smiley_count = 0; if (c->smiley_dialog) return; @@ -3318,39 +3332,65 @@ vbox = gtk_vbox_new(TRUE, 5); bbox = gtk_hbox_new(FALSE, 5); - smiley_box_1 = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); - smiley_box_2 = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); - smiley_box_3 = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); - smiley_box_4 = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); /* setup buttons */ /* pack buttons */ - toolbar_add_smiley(c, smiley_box_1, angel_xpm, win, FACE_ANGEL); - toolbar_add_smiley(c, smiley_box_1, bigsmile_xpm, win, FACE_BIGSMILE); - toolbar_add_smiley(c, smiley_box_1, burp_xpm, win, FACE_BURP); - toolbar_add_smiley(c, smiley_box_1, crossedlips_xpm, win, FACE_CROSSEDLIPS); - - toolbar_add_smiley(c, smiley_box_2, cry_xpm, win, FACE_CRY); - toolbar_add_smiley(c, smiley_box_2, embarrassed_xpm, win, FACE_EMBARRASSED); - toolbar_add_smiley(c, smiley_box_2, kiss_xpm, win, FACE_KISS); - toolbar_add_smiley(c, smiley_box_2, moneymouth_xpm, win, FACE_MONEYMOUTH); - - toolbar_add_smiley(c, smiley_box_3, sad_xpm, win, FACE_SAD); - toolbar_add_smiley(c, smiley_box_3, scream_xpm, win, FACE_SCREAM); - toolbar_add_smiley(c, smiley_box_3, smile_xpm, win, FACE_SMILE); - toolbar_add_smiley(c, smiley_box_3, smile8_xpm, win, FACE_SMILE8); - - toolbar_add_smiley(c, smiley_box_4, think_xpm, win, FACE_THINK); - toolbar_add_smiley(c, smiley_box_4, tongue_xpm, win, FACE_TONGUE); - toolbar_add_smiley(c, smiley_box_4, wink_xpm, win, FACE_WINK); - toolbar_add_smiley(c, smiley_box_4, yell_xpm, win, FACE_YELL); - - /* pack containers */ - gtk_box_pack_start(GTK_BOX(vbox), smiley_box_1, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(vbox), smiley_box_2, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(vbox), smiley_box_3, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(vbox), smiley_box_4, TRUE, TRUE, 0); + if (c->gc->prpl->smiley_list == NULL) { + smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); + gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0); + + toolbar_add_smiley(c, smiley_box, angel_xpm, win, "O:-)"); + toolbar_add_smiley(c, smiley_box, bigsmile_xpm, win, ":-D"); + toolbar_add_smiley(c, smiley_box, burp_xpm, win, ":-!"); + toolbar_add_smiley(c, smiley_box, crossedlips_xpm, win, ":-X"); + + smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); + gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0); + + toolbar_add_smiley(c, smiley_box, cry_xpm, win, ":'("); + toolbar_add_smiley(c, smiley_box, embarrassed_xpm, win, ":-["); + toolbar_add_smiley(c, smiley_box, kiss_xpm, win, ":-*"); + toolbar_add_smiley(c, smiley_box, moneymouth_xpm, win, ":-$"); + + smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); + gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0); + + toolbar_add_smiley(c, smiley_box, sad_xpm, win, ":-("); + toolbar_add_smiley(c, smiley_box, scream_xpm, win, "=-O"); + toolbar_add_smiley(c, smiley_box, smile_xpm, win, ":-)"); + toolbar_add_smiley(c, smiley_box, smile8_xpm, win, "8-)"); + + smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); + gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0); + + toolbar_add_smiley(c, smiley_box, think_xpm, win, ":-/"); + toolbar_add_smiley(c, smiley_box, tongue_xpm, win, ":-P"); + toolbar_add_smiley(c, smiley_box, wink_xpm, win, ";-)"); + toolbar_add_smiley(c, smiley_box, yell_xpm, win, ">:o"); + } else { + + smilies = c->gc->prpl->smiley_list(); + + while (smilies) { + struct _prpl_smiley *smile = + (struct _prpl_smiley *)smilies->data; + + if ((!(smiley_count % 4)) && (smiley_count > 0)) { + smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); + gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0); + } + + if (smile->show) { + toolbar_add_smiley(c, smiley_box, smile->xpm, win, smile->key); + smiley_count++; + } + + smilies = g_slist_next(smilies); + + } + } + gtk_container_add(GTK_CONTAINER(dialog), vbox); gtk_container_set_border_width(GTK_CONTAINER(dialog), 5);