# HG changeset patch # User Eric Warmenhoven # Date 960545366 0 # Node ID 9d22acf6db735b3bcf7d051dc13b94e853093f2e # Parent 5842aa11ab7878e8fa93a4de3c2101e5415ce466 [gaim-migrate @ 381] Whoa. sounds for chat. /me for chat. all kinds of things for chat. my god. committer: Tailor Script diff -r 5842aa11ab78 -r 9d22acf6db73 ChangeLog --- a/ChangeLog Fri Jun 09 08:17:59 2000 +0000 +++ b/ChangeLog Fri Jun 09 10:09:26 2000 +0000 @@ -4,8 +4,9 @@ * Graphical Smiley Faces * Applet got a bit of a makeover (inside & out) * Compile-time options affect Preferences dialog - * Whispering works (does anyone even use this?) + * Whispering in chat works (does anyone even use this?) * HTML-tag buttons in chat + * Chat got all kinds of new features (like IRC-sytle /me) * Locale support * Many many bugfixes diff -r 5842aa11ab78 -r 9d22acf6db73 src/buddy_chat.c --- a/src/buddy_chat.c Fri Jun 09 08:17:59 2000 +0000 +++ b/src/buddy_chat.c Fri Jun 09 10:09:26 2000 +0000 @@ -38,12 +38,12 @@ #include "pixmaps/small.xpm" #include "pixmaps/normal.xpm" #include "pixmaps/big.xpm" -/* #include "pixmaps/fontface.xpm" #include "pixmaps/palette.xpm" -*/ #include "pixmaps/link.xpm" #include "pixmaps/strike.xpm" +#include "pixmaps/speaker.xpm" +#include "pixmaps/wood.xpm" #include "pixmaps/smile_happy.xpm" #include "pixmaps/smile_sad.xpm" @@ -229,6 +229,7 @@ void chat_write(struct buddy_chat *b, char *who, int flag, char *message) { char *buf; + char *buf2; GList *ignore = b->ignored; char *str; char colour[10]; @@ -239,29 +240,54 @@ return; ignore = ignore->next; } + buf = g_malloc(BUF_LONG); if (flag & WFLAG_WHISPER) { - str = g_malloc(64); - g_snprintf(str, 62, "*%s*", who); - strcpy(colour, "#00ff00\0"); + buf2 = g_strdup(message); + if (!strncmp(buf2, "/me ", 4)) { + str = g_malloc(64); + g_snprintf(str, 62, "***%s", who); + strcpy(colour, "#6C2585\0"); + sprintf(message, "%s", buf2 + 4); + } else { + str = g_malloc(64); + g_snprintf(str, 62, "*%s*:", who); + strcpy(colour, "#00ff00\0"); + } + g_free(buf2); } else { - str = g_strdup(normalize(who)); - if (!strcasecmp(str, normalize(current_user->username))) - strcpy(colour, "#0000ff\0"); - else - strcpy(colour, "#ff0000\0"); - g_free(str); - str = who; + buf2 = g_strdup(message); + if (!strncmp(buf2, "/me ", 4)) { + str = g_malloc(64); + g_snprintf(str, 62, "***%s", who); + strcpy(colour, "#6C2585\0"); + sprintf(message, "%s", buf2 + 4); + } else { + str = g_strdup(normalize(who)); + if (!strcasecmp(str, normalize(current_user->username))) { + if (b->makesound && (sound_options & OPT_SOUND_CHAT_SAY)) + play_sound(SEND); + strcpy(colour, "#0000ff\0"); + } else { + if (b->makesound && (sound_options & OPT_SOUND_CHAT_SAY)) + play_sound(RECEIVE); + strcpy(colour, "#ff0000\0"); + } + g_free(str); + str = g_malloc(64); + g_snprintf(str, 62, "%s:", who); + } + g_free(buf2); } if (display_options & OPT_DISP_SHOW_TIME) - g_snprintf(buf, BUF_LONG, "%s %s: ", colour, date(), str); + g_snprintf(buf, BUF_LONG, "%s %s ", colour, date(), str); else - g_snprintf(buf, BUF_LONG, "%s: ", colour, str); + g_snprintf(buf, BUF_LONG, "%s ", colour, str); gtk_html_freeze(GTK_HTML(b->text)); @@ -271,10 +297,8 @@ gtk_html_thaw(GTK_HTML(b->text)); - if (flag & WFLAG_WHISPER) - g_free(str); - - g_free(buf); + g_free(str); + g_free(buf); } static void close_callback(GtkWidget *widget, struct buddy_chat *b) @@ -379,6 +403,20 @@ else quiet_set(c->italic, FALSE); + if (invert_tags(entry, "", 0)) + quiet_set(c->palette, TRUE); + else if (count_tag(entry, "")) + quiet_set(c->palette, TRUE); + else + quiet_set(c->palette, FALSE); + + if (invert_tags(entry, "", 0)) + quiet_set(c->font, TRUE); + else if (count_tag(entry, "")) + quiet_set(c->font, TRUE); + else + quiet_set(c->font, FALSE); + if (invert_tags(c->entry, "", 0)) quiet_set(c->link, TRUE); else if (count_tag(c->entry, "")) @@ -398,6 +436,7 @@ else if (count_tag(entry, "", "")) quiet_set(c->strike, TRUE); else + quiet_set(c->strike, FALSE); return TRUE; @@ -443,6 +482,8 @@ update_chat_list(b); + if (b->makesound && (sound_options & OPT_SOUND_CHAT_JOIN)) + play_sound(BUDDY_ARRIVE); } @@ -460,6 +501,9 @@ } names = names->next; } + + if (b->makesound && (sound_options & OPT_SOUND_CHAT_JOIN)) + play_sound(BUDDY_LEAVE); } @@ -542,9 +586,9 @@ GtkWidget *vpaned; GtkWidget *hpaned; GtkWidget *toolbar; - GdkPixmap *strike_i, *small_i, *normal_i, *big_i, *bold_i, *italic_i, *underline_i, *link_i; - GtkWidget *strike_p, *small_p, *normal_p, *big_p, *bold_p, *italic_p, *underline_p, *link_p; - GtkWidget *strike, *small, *normal, *big, *bold, *italic, *underline, *link; + GdkPixmap *strike_i, *small_i, *normal_i, *big_i, *bold_i, *italic_i, *underline_i, *speaker_i, *wood_i, *palette_i, *link_i, *font_i; + GtkWidget *strike_p, *small_p, *normal_p, *big_p, *bold_p, *italic_p, *underline_p, *speaker_p, *wood_p, *palette_p, *link_p, *font_p; + GtkWidget *strike, *small, *normal, *big, *bold, *italic, *underline, *speaker, *wood, *palette, *link, *font; GdkBitmap *mask; win = gtk_window_new(GTK_WINDOW_TOPLEVEL); @@ -594,6 +638,11 @@ strike_p = gtk_pixmap_new(strike_i, mask); gtk_widget_show(strike_p); + palette_i = gdk_pixmap_create_from_xpm_d (win->window, &mask, + &win->style->white, palette_xpm ); + palette_p = gtk_pixmap_new(palette_i, mask); + gtk_widget_show(palette_p); + bold_i = gdk_pixmap_create_from_xpm_d ( win->window, &mask, &win->style->white, bold_xpm ); bold_p = gtk_pixmap_new(bold_i, mask); @@ -624,6 +673,22 @@ big_p = gtk_pixmap_new(big_i, mask); gtk_widget_show(big_p); + wood_i = gdk_pixmap_create_from_xpm_d ( win->window, &mask, + &win->style->white, wood_xpm ); + wood_p = gtk_pixmap_new(wood_i, mask); + gtk_widget_show(wood_p); + + font_i = gdk_pixmap_create_from_xpm_d ( win->window, &mask, + &win->style->white, fontface_xpm ); + font_p = gtk_pixmap_new(font_i, mask); + gtk_widget_show(font_p); + + speaker_i = gdk_pixmap_create_from_xpm_d ( win->window, &mask, + &win->style->white, speaker_xpm ); + speaker_p = gtk_pixmap_new(speaker_i, mask); + gtk_widget_show(speaker_p); + b->makesound=1; + bold = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, _("Bold"), _("Bold Text"), _("Bold"), bold_p, @@ -644,11 +709,33 @@ small = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), _("Small"), _("Decrease font size"), _("Small"), small_p, GTK_SIGNAL_FUNC(do_small), chatentry); normal = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), _("Normal"), _("Normal font size"), _("Normal"), normal_p, GTK_SIGNAL_FUNC(do_normal), chatentry); big = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), _("Big"), _("Increase font size"), _("Big"), big_p, GTK_SIGNAL_FUNC(do_big), chatentry); - + font = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), + GTK_TOOLBAR_CHILD_TOGGLEBUTTON, + NULL, _("Font"), _("Select Font"), + _("Font"), font_p, NULL, NULL); + gtk_widget_set_sensitive(GTK_WIDGET(font), FALSE); + gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); link = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, _("Link"), _("Insert Link"), _("Link"), link_p, GTK_SIGNAL_FUNC(do_link), chatentry); + palette = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), + GTK_TOOLBAR_CHILD_TOGGLEBUTTON, + NULL, _("Color"), _("Text Color"), + _("Color"), palette_p, NULL, NULL); + gtk_widget_set_sensitive(GTK_WIDGET(palette), FALSE); + wood = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), + GTK_TOOLBAR_CHILD_TOGGLEBUTTON, + NULL, _("Logging"), _("Enable logging"), + _("Logging"), wood_p, NULL, NULL); + gtk_widget_set_sensitive(GTK_WIDGET(palette), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(wood), FALSE); + speaker = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), + GTK_TOOLBAR_CHILD_TOGGLEBUTTON, + NULL, _("Sound"), _("Enable sounds"), + _("Sound"), speaker_p, GTK_SIGNAL_FUNC(set_option), &b->makesound); + b->makesound = 0; + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(speaker), TRUE); gtk_widget_show(toolbar); @@ -657,8 +744,14 @@ b->italic = italic; b->underline = underline; b->link = link; + b->palette = palette; + b->font = font; + b->wood = wood; - b->makesound=1; + if (find_log_info(b->name)) + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(wood), TRUE); + else + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(wood), FALSE); gtk_object_set_user_data(GTK_OBJECT(chatentry), b); b->entry = chatentry; diff -r 5842aa11ab78 -r 9d22acf6db73 src/gaim.h --- a/src/gaim.h Fri Jun 09 08:17:59 2000 +0000 +++ b/src/gaim.h Fri Jun 09 10:09:26 2000 +0000 @@ -224,6 +224,7 @@ GtkWidget *link; GtkWidget *strike; GtkWidget *font; + GtkWidget *wood; GtkWidget *color_dialog; GtkWidget *font_dialog; GList *in_room; @@ -375,7 +376,7 @@ #define TYPE_SIGNOFF 4 #define TYPE_KEEPALIVE 5 -#define REVISION "gaim:$Revision: 359 $" +#define REVISION "gaim:$Revision: 381 $" #define FLAPON "FLAPON\r\n\r\n" #define ROAST "Tic/Toc" @@ -474,6 +475,8 @@ #define OPT_SOUND_WHEN_AWAY 0x00000020 #define OPT_SOUND_SILENT_SIGNON 0x00000040 #define OPT_SOUND_THROUGH_GNOME 0x00000080 +#define OPT_SOUND_CHAT_JOIN 0x00000100 +#define OPT_SOUND_CHAT_SAY 0x00000200 extern int font_options; diff -r 5842aa11ab78 -r 9d22acf6db73 src/prefs.c --- a/src/prefs.c Fri Jun 09 08:17:59 2000 +0000 +++ b/src/prefs.c Fri Jun 09 10:09:26 2000 +0000 @@ -673,6 +673,8 @@ gaim_button(_("Sound when first message is received"), &sound_options, OPT_SOUND_FIRST_RCV, sound_page); gaim_button(_("Sound when message is received if away"), &sound_options, OPT_SOUND_WHEN_AWAY, sound_page); gaim_button(_("No sound for buddies signed on when you log in"), &sound_options, OPT_SOUND_SILENT_SIGNON, sound_page); + gaim_button(_("Sounds in chat rooms when people enter/leave"), &sound_options, OPT_SOUND_CHAT_JOIN, sound_page); + gaim_button(_("Sounds in chat rooms when people talk"), &sound_options, OPT_SOUND_CHAT_SAY, sound_page); gtk_widget_show(sound_page);