Mercurial > pidgin
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 |