comparison src/conversation.c @ 337:f5b199e20d12

[gaim-migrate @ 347] Cheese first look at graphical smileys. These are subject to change quite a bit :0 committer: Tailor Script <tailor@pidgin.im>
author Rob Flynn <gaim@robflynn.com>
date Tue, 06 Jun 2000 09:36:12 +0000
parents 68637b451377
children 2434adbb8703
comparison
equal deleted inserted replaced
336:5a88018cc555 337:f5b199e20d12
42 /* #include "pixmaps/aimicon2.xpm" */ 42 /* #include "pixmaps/aimicon2.xpm" */
43 #include "pixmaps/wood.xpm" 43 #include "pixmaps/wood.xpm"
44 #include "pixmaps/palette.xpm" 44 #include "pixmaps/palette.xpm"
45 #include "pixmaps/link.xpm" 45 #include "pixmaps/link.xpm"
46 #include "pixmaps/strike.xpm" 46 #include "pixmaps/strike.xpm"
47
48 #include "pixmaps/smile_happy.xpm"
49 #include "pixmaps/smile_sad.xpm"
50 #include "pixmaps/smile_wink.xpm"
47 51
48 int state_lock=0; 52 int state_lock=0;
49 53
50 GdkPixmap *dark_icon_pm = NULL; 54 GdkPixmap *dark_icon_pm = NULL;
51 GdkBitmap *dark_icon_bm = NULL; 55 GdkBitmap *dark_icon_bm = NULL;
835 char *buf = g_malloc(BUF_LONG); 839 char *buf = g_malloc(BUF_LONG);
836 char *buf2 = g_malloc(BUF_LONG); 840 char *buf2 = g_malloc(BUF_LONG);
837 char *who = NULL; 841 char *who = NULL;
838 FILE *fd; 842 FILE *fd;
839 char colour[10]; 843 char colour[10];
840 844 GdkBitmap *mask;
845 GdkPixmap *face;
846 int state;
847 int y;
848 int i;
849 char *smiley = g_malloc(5);
850
841 if (flags & WFLAG_SYSTEM) { 851 if (flags & WFLAG_SYSTEM) {
842 852
843 gtk_html_freeze(GTK_HTML(c->text)); 853 gtk_html_freeze(GTK_HTML(c->text));
844 854
845 gtk_html_append_text(GTK_HTML(c->text), what, 0); 855 gtk_html_append_text(GTK_HTML(c->text), what, 0);
846 856
847 gtk_html_append_text(GTK_HTML(c->text), "<BR>", 0); 857 gtk_html_append_text(GTK_HTML(c->text), "<BR>", 0);
848 858
849 gtk_html_thaw(GTK_HTML(c->text)); 859 gtk_html_thaw(GTK_HTML(c->text));
850
851 860
852 if ((general_options & OPT_GEN_LOG_ALL) || find_log_info(c->name)) { 861 if ((general_options & OPT_GEN_LOG_ALL) || find_log_info(c->name)) {
853 char *t1; 862 char *t1;
854 863
855 if (general_options & OPT_GEN_STRIP_HTML) { 864 if (general_options & OPT_GEN_STRIP_HTML) {
885 else 894 else
886 g_snprintf(buf, BUF_LONG, "<FONT COLOR=\"%s\"><B>%s:%s</B></FONT> ", colour, who, buf2); 895 g_snprintf(buf, BUF_LONG, "<FONT COLOR=\"%s\"><B>%s:%s</B></FONT> ", colour, who, buf2);
887 896
888 gtk_html_freeze(GTK_HTML(c->text)); 897 gtk_html_freeze(GTK_HTML(c->text));
889 898
890 gtk_html_append_text(GTK_HTML(c->text), buf, 0); 899 y = 0;
891 gtk_html_append_text(GTK_HTML(c->text), what, (display_options & OPT_DISP_IGNORE_COLOUR) ? HTML_OPTION_NO_COLOURS : 0); 900 state = 0;
901 buf2[0] = 0;
902
903
904 gtk_html_append_text(GTK_HTML(c->text), buf, 0);
905
906 if (display_options & OPT_DISP_SHOW_SMILEY)
907 {
908 for (i = 0; i < strlen(what); i++)
909 {
910 buf2[y] = what[i];
911 y++;
912
913 if ((what[i] == ':') || (what[i] == ';'))
914 {
915 if (state == 0)
916 {
917 smiley[state] = what[i];
918 state = 1;
919 }
920 else
921 state = 0;
922 }
923 else if ((what[i] == '-'))
924 {
925 if (state == 1)
926 {
927 smiley[state] = what[i];
928 state = 2;
929 }
930 else
931 state = 0;
932 }
933 else if ((what[i] == ')') || (what[i] == '*') || (what[i] == '(') ||
934 (what[i] == 'p') || (what[i] == 'P') || (what[i] == '$') ||
935 (what[i] == '!') || (what[i] == 'D') || (what[i] == 'X') )
936 {
937 if ( (state == 1) && (what[i] == ')') )
938 {
939 smiley[state] = what[i];
940 smiley[state+1] = 0;
941 buf2[y - state - 1] = 0;
942 y = 0;
943 face = gdk_pixmap_create_from_xpm_d(c->window->window, &mask, &c->window->style->white, smile_happy_xpm);
944 gtk_html_append_text(GTK_HTML(c->text), buf2, (display_options & OPT_DISP_IGNORE_COLOUR) ? HTML_OPTION_NO_COLOURS : 0);
945 gtk_html_add_pixmap(GTK_HTML(c->text), face, 0);
946 state = 0;
947 }
948 else if (state == 2)
949 {
950 smiley[state] = what[i];
951 smiley[state+1] = 0;
952 buf2[y - state - 1] = 0;
953 y = 0;
954
955 if (!strcasecmp(smiley, ":-("))
956 {
957 face = gdk_pixmap_create_from_xpm_d(c->window->window, &mask, &c->window->style->white, smile_sad_xpm);
958 }
959 else if (!strcasecmp(smiley, ";-)"))
960 {
961 face = gdk_pixmap_create_from_xpm_d(c->window->window, &mask, &c->window->style->white, smile_wink_xpm);
962 }
963 else
964 {
965 face = gdk_pixmap_create_from_xpm_d(c->window->window, &mask, &c->window->style->white, smile_happy_xpm);
966 }
967
968 gtk_html_append_text(GTK_HTML(c->text), buf2, (display_options & OPT_DISP_IGNORE_COLOUR) ? HTML_OPTION_NO_COLOURS : 0);
969 gtk_html_add_pixmap(GTK_HTML(c->text), face, 0);
970 state = 0;
971 }
972 else
973 state = 0;
974 }
975 else
976 {
977 state = 0;
978 }
979 }
980
981 if (buf2)
982 {
983 buf2[y] = 0;
984 gtk_html_append_text(GTK_HTML(c->text), buf2, (display_options & OPT_DISP_IGNORE_COLOUR) ? HTML_OPTION_NO_COLOURS : 0);
985 }
986 }
987 else
988 {
989 gtk_html_append_text(GTK_HTML(c->text), what, (display_options & OPT_DISP_IGNORE_COLOUR) ? HTML_OPTION_NO_COLOURS : 0);
990 }
892 991
893 gtk_html_append_text(GTK_HTML(c->text), "<BR>", 0); 992 gtk_html_append_text(GTK_HTML(c->text), "<BR>", 0);
894 993
895 994
896 gtk_html_thaw(GTK_HTML(c->text)); 995 gtk_html_thaw(GTK_HTML(c->text));
925 */ 1024 */
926 1025
927 if (general_options & OPT_GEN_POPUP_WINDOWS) 1026 if (general_options & OPT_GEN_POPUP_WINDOWS)
928 gdk_window_show(c->window->window); 1027 gdk_window_show(c->window->window);
929 1028
930 1029 g_free(smiley);
931 g_free(buf); 1030 g_free(buf);
932 g_free(buf2); 1031 g_free(buf2);
933 } 1032 }
934 1033
935 1034