From: Eric W. <war...@us...> - 2001-10-18 20:57:02
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv14705/src Modified Files: about.c conversation.c core.c gtkimhtml.c html.c prpl.c prpl.h Log Message: fun stuff. Index: about.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/about.c,v retrieving revision 1.52 retrieving revision 1.53 diff -u -d -r1.52 -r1.53 --- about.c 2001/10/18 07:29:13 1.52 +++ about.c 2001/10/18 20:56:59 1.53 @@ -134,8 +134,8 @@ text = gtk_text_new(NULL, NULL); gtk_text_insert(GTK_TEXT(text), NULL, NULL, NULL, - _("Rob Flynn (maintainer) ro...@ma...\nEric Warmenhoven (lead coder) war...@ya...\n\nBenjamin Miller\nDecklin Foster\nJim Duchek\nMark Spencer (original author) mar...@ma..."), - 198); + _("Rob Flynn (maintainer) ro...@ma...\nEric Warmenhoven (lead coder) war...@ya...\n\nBenjamin Miller\nDecklin Foster\nSean Egan\nJim Duchek\nMark Spencer (original author) mar...@ma..."), + 208); gtk_box_pack_start(GTK_BOX(fbox), text, TRUE, TRUE, 0); gtk_widget_show(text); Index: conversation.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/conversation.c,v retrieving revision 1.282 retrieving revision 1.283 diff -u -d -r1.282 -r1.283 --- conversation.c 2001/10/17 01:33:00 1.282 +++ conversation.c 2001/10/18 20:56:59 1.283 @@ -2118,7 +2118,6 @@ GtkWidget *toolbar; GtkWidget *hbox; GtkWidget *label; - GtkStyle *style; int dispstyle = set_dispstyle(0); c->font_dialog = NULL; @@ -2322,10 +2321,6 @@ gtk_widget_show(send); update_buttons_by_protocol(c); - - style = gtk_widget_get_style(GTK_WIDGET(entry)); - gtk_imhtml_set_defaults(GTK_IMHTML(text), 0, &style->fg[GTK_STATE_NORMAL], - &style->base[GTK_STATE_NORMAL]); gtk_widget_show(win); } Index: core.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/core.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- core.c 2001/10/14 19:43:25 1.14 +++ core.c 2001/10/18 20:56:59 1.15 @@ -277,7 +277,7 @@ } } -static gint gaim_recv(GIOChannel *source, void *buf, gint len) +static gint gaim_recv(GIOChannel *source, guchar *buf, gint len) { gint total = 0; gint cur; @@ -322,7 +322,7 @@ return FALSE; } - if (gaim_recv(source, &len, sizeof(len)) != sizeof(len)) { + if (gaim_recv(source, (guchar *)&len, sizeof(len)) != sizeof(len)) { debug_printf("UI has abandoned us!\n"); uis = g_slist_remove(uis, ui); g_io_channel_close(ui->channel); Index: gtkimhtml.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/gtkimhtml.c,v retrieving revision 1.54 retrieving revision 1.55 diff -u -d -r1.54 -r1.55 --- gtkimhtml.c 2001/09/26 22:23:59 1.54 +++ gtkimhtml.c 2001/10/18 20:56:59 1.55 @@ -19,6 +19,9 @@ * */ +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif #include "gtkimhtml.h" #include <X11/Xlib.h> #include <gdk/gdkx.h> @@ -27,6 +30,10 @@ #include <ctype.h> #include <stdio.h> #include <math.h> +#ifdef HAVE_LANGINFO_CODESET +#include <langinfo.h> +#include <locale.h> +#endif #include "pixmaps/angel.xpm" #include "pixmaps/bigsmile.xpm" @@ -79,6 +86,21 @@ gchar **image; }; +static gchar* getcharset() +{ + static gchar charset[64]; +#ifdef HAVE_LANGINFO_CODESET + gchar *ch = nl_langinfo(CODESET); + if (strncasecmp(ch, "iso-", 4) == 0) + g_snprintf(charset, sizeof(charset), "iso%s", ch + 4); + else + g_snprintf(charset, sizeof(charset), ch); +#else + g_snprintf(charset, sizeof(charset), "iso8859-*"); +#endif + return charset; +} + static GtkSmileyTree* gtk_smiley_tree_new () { @@ -348,9 +370,12 @@ } imhtml->tip_bit = NULL; - gdk_font_unref (imhtml->default_font); - gdk_color_free (imhtml->default_fg_color); - gdk_color_free (imhtml->default_bg_color); + if (imhtml->default_font) + gdk_font_unref (imhtml->default_font); + if (imhtml->default_fg_color) + gdk_color_free (imhtml->default_fg_color); + if (imhtml->default_bg_color) + gdk_color_free (imhtml->default_bg_color); gdk_cursor_destroy (imhtml->hand_cursor); gdk_cursor_destroy (imhtml->arrow_cursor); @@ -406,10 +431,15 @@ gdk_window_set_cursor (widget->window, imhtml->arrow_cursor); + imhtml->default_font = gdk_font_ref (GTK_WIDGET (imhtml)->style->font); + gdk_window_set_background (widget->window, &widget->style->base [GTK_STATE_NORMAL]); gdk_window_set_background (GTK_LAYOUT (imhtml)->bin_window, &widget->style->base [GTK_STATE_NORMAL]); + imhtml->default_fg_color = gdk_color_copy (>K_WIDGET (imhtml)->style->fg [GTK_STATE_NORMAL]); + imhtml->default_bg_color = gdk_color_copy (>K_WIDGET (imhtml)->style->base [GTK_STATE_NORMAL]); + gdk_window_show (GTK_LAYOUT (imhtml)->bin_window); } @@ -1781,53 +1811,60 @@ return gdk_fontset_load ("-*-*-*-*-*-*-*-*-*-*-*-*-*-*,*"); } - g_snprintf (buf, sizeof (buf), "-*-%s-%s-%c-*-*-*-%d-*-*-*-*-iso8859-*", + g_snprintf (buf, sizeof (buf), "-*-%s-%s-%c-*-*-*-%d-*-*-*-*-%s", choice, bold ? "bold" : "medium", italics ? 'i' : 'r', - size); + size, + getcharset()); font = gdk_font_load (buf); if (!font && italics) { - g_snprintf (buf, sizeof (buf), "-*-%s-%s-o-*-*-*-%d-*-*-*-*-iso8859-*", + g_snprintf (buf, sizeof (buf), "-*-%s-%s-o-*-*-*-%d-*-*-*-*-%s", choice, bold ? "bold" : "medium", - size); + size, + getcharset()); font = gdk_font_load (buf); } if (!font) { - g_snprintf (buf, sizeof (buf), "-*-%s-%s-%c-*-*-*-*-*-*-*-*-iso8859-*", + g_snprintf (buf, sizeof (buf), "-*-%s-%s-%c-*-*-*-*-*-*-*-*-%s", choice, bold ? "bold" : "medium", - italics ? 'i' : 'r'); + italics ? 'i' : 'r', + getcharset()); font = gdk_font_load (buf); } if (!font && italics) { - g_snprintf (buf, sizeof (buf), "-*-%s-%s-o-*-*-*-*-*-*-*-*-iso8859-*", + g_snprintf (buf, sizeof (buf), "-*-%s-%s-o-*-*-*-*-*-*-*-*-%s", choice, - bold ? "bold" : "medium"); + bold ? "bold" : "medium", + getcharset()); font = gdk_font_load (buf); } if (!font) { - g_snprintf (buf, sizeof (buf), "-*-%s-*-%c-*-*-*-*-*-*-*-*-iso8859-*", + g_snprintf (buf, sizeof (buf), "-*-%s-*-%c-*-*-*-*-*-*-*-*-%s", choice, - italics ? 'i' : 'r'); + italics ? 'i' : 'r', + getcharset()); font = gdk_font_load (buf); } if (!font) { - g_snprintf (buf, sizeof (buf), "-*-%s-*-%c-*-*-*-*-*-*-*-*-iso8859-*", + g_snprintf (buf, sizeof (buf), "-*-%s-*-%c-*-*-*-*-*-*-*-*-%s", choice, - italics ? 'o' : '*'); + italics ? 'o' : '*', + getcharset()); font = gdk_font_load (buf); } if (!font && italics) { - g_snprintf (buf, sizeof (buf), "-*-%s-*-*-*-*-*-*-*-*-*-*-iso8859-*", - choice); + g_snprintf (buf, sizeof (buf), "-*-%s-*-*-*-*-*-*-*-*-*-*-%s", + choice, + getcharset()); font = gdk_font_load (buf); } @@ -1914,9 +1951,7 @@ { "COMPOUND_TEXT", 0, TARGET_COMPOUND_TEXT } }; - imhtml->default_font = gdk_font_ref (GTK_WIDGET (imhtml)->style->font); - imhtml->default_fg_color = gdk_color_copy (>K_WIDGET (imhtml)->style->fg [GTK_STATE_NORMAL]); - imhtml->default_bg_color = gdk_color_copy (>K_WIDGET (imhtml)->style->base [GTK_STATE_NORMAL]); + imhtml->default_font = gtk_imhtml_font_load (imhtml, DEFAULT_FONT_NAME, FALSE, FALSE, 0); imhtml->hand_cursor = gdk_cursor_new (GDK_HAND2); imhtml->arrow_cursor = gdk_cursor_new (GDK_LEFT_PTR); Index: html.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/html.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- html.c 2001/10/03 09:48:33 1.21 +++ html.c 2001/10/18 20:56:59 1.22 @@ -74,9 +74,9 @@ return text2; } -static struct g_url parse_url(char *url) +static struct g_url *parse_url(char *url) { - struct g_url test; + struct g_url *test = g_new0(struct g_url, 1); char scan_info[255]; char port[5]; int f; @@ -87,7 +87,7 @@ else g_snprintf(scan_info, sizeof(scan_info), "%%[A-Za-z0-9.]:%%[0-9]/%%[A-Za-z0-9.~_-/&%%?=+^]"); - f = sscanf(url, scan_info, test.address, port, test.page); + f = sscanf(url, scan_info, test->address, port, test->page); if (f == 1) { if (strstr(url, "http://")) g_snprintf(scan_info, sizeof(scan_info), @@ -95,8 +95,8 @@ else g_snprintf(scan_info, sizeof(scan_info), "%%[A-Za-z0-9.]/%%[A-Za-z0-9.~_-/&%%?=+^]"); - f = sscanf(url, scan_info, test.address, test.page); - g_snprintf(port, sizeof(test.port), "80"); + f = sscanf(url, scan_info, test->address, test->page); + g_snprintf(port, sizeof(test->port), "80"); port[2] = 0; } if (f == 1) { @@ -104,18 +104,18 @@ g_snprintf(scan_info, sizeof(scan_info), "http://%%[A-Za-z0-9.]"); else g_snprintf(scan_info, sizeof(scan_info), "%%[A-Za-z0-9.]"); - f = sscanf(url, scan_info, test.address); - g_snprintf(test.page, sizeof(test.page), "%c", '\0'); + f = sscanf(url, scan_info, test->address); + g_snprintf(test->page, sizeof(test->page), "%c", '\0'); } - sscanf(port, "%d", &test.port); + sscanf(port, "%d", &test->port); return test; } struct grab_url_data { void (*callback)(gpointer, char *); gpointer data; - struct g_url website; + struct g_url *website; char *url; int inpa; @@ -133,6 +133,7 @@ if (sock == -1) { gunk->callback(gunk->data, NULL); + g_free(gunk->website); g_free(gunk->url); g_free(gunk); return; @@ -140,7 +141,7 @@ if (!gunk->sentreq) { char buf[256]; - g_snprintf(buf, sizeof(buf), "GET /%s HTTP/1.0\r\n\r\n", gunk->website.page); + g_snprintf(buf, sizeof(buf), "GET /%s HTTP/1.0\r\n\r\n", gunk->website->page); debug_printf("Request: %s\n", buf); write(sock, buf, strlen(buf)); fcntl(sock, F_SETFL, O_NONBLOCK); @@ -178,6 +179,7 @@ gunk->callback(gunk->data, gunk->webdata); if (gunk->webdata) g_free(gunk->webdata); + g_free(gunk->website); g_free(gunk->url); g_free(gunk); } else { @@ -186,6 +188,7 @@ gunk->callback(gunk->data, NULL); if (gunk->webdata) g_free(gunk->webdata); + g_free(gunk->website); g_free(gunk->url); g_free(gunk); } @@ -201,8 +204,9 @@ gunk->url = g_strdup(url); gunk->website = parse_url(url); - if ((sock = proxy_connect(gunk->website.address, gunk->website.port, + if ((sock = proxy_connect(gunk->website->address, gunk->website->port, grab_url_callback, gunk)) < 0) { + g_free(gunk->website); g_free(gunk->url); g_free(gunk); callback(data, g_strdup(_("g003: Error opening connection.\n"))); Index: prpl.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/prpl.c,v retrieving revision 1.38 retrieving revision 1.39 diff -u -d -r1.38 -r1.39 --- prpl.c 2001/10/04 23:10:51 1.38 +++ prpl.c 2001/10/18 20:56:59 1.39 @@ -27,6 +27,7 @@ #include "pixmaps/ok.xpm" #include "pixmaps/cancel.xpm" +#include "pixmaps/tb_forward.xpm" GSList *protocols = NULL; @@ -176,7 +177,7 @@ gtk_widget_destroy(p->window); } -void do_prompt_dialog(const char *text, void *data, void *doit, void *dont) +void do_prompt_dialog(const char *text, const char *def, void *data, void *doit, void *dont) { GtkWidget *window; GtkWidget *vbox; @@ -212,6 +213,8 @@ entry = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0); + if (def) + gtk_entry_set_text(GTK_ENTRY(entry), text); gtk_signal_connect(GTK_OBJECT(entry), "activate", GTK_SIGNAL_FUNC(act_prompt), p); p->entry = entry; @@ -346,6 +349,7 @@ struct gaim_connection *gc; GtkWidget *email_win; GtkWidget *email_label; + char *url; }; GSList *mailnots = NULL; @@ -368,11 +372,18 @@ } debug_printf("removing mail notification\n"); mailnots = g_slist_remove(mailnots, mn); + if (mn->url) + g_free(mn->url); g_free(mn); } -void connection_has_mail(struct gaim_connection *gc, int count, const char *from, const char *subject) +void connection_has_mail(struct gaim_connection *gc, int count, const char *from, const char *subject, const char *url) { + GtkWidget *hbox; + GtkWidget *vbox; + GtkWidget *urlbut; + GtkWidget *close; + struct mail_notify *mn; char buf[2048]; @@ -387,65 +398,55 @@ if (count < 0 && from && subject) { g_snprintf(buf, sizeof buf, "%s has mail from %s: %s", gc->username, from, subject); - if (!mn->email_win) { - GtkWidget *close; + } else if (count) { + g_snprintf(buf, sizeof buf, "%s has %d new message%s.", + gc->username, count, count == 1 ? "" : "s"); + } else if (mn->email_win) { + gtk_widget_destroy(mn->email_win); + return; + } - mn->email_win = gtk_dialog_new(); - gtk_window_set_policy(GTK_WINDOW(mn->email_win), 0, 0, 1); - gtk_container_set_border_width(GTK_CONTAINER(mn->email_win), 5); - gtk_window_set_title(GTK_WINDOW(mn->email_win), "New Mail"); - gtk_signal_connect(GTK_OBJECT(mn->email_win), "destroy", - GTK_SIGNAL_FUNC(des_email_win), mn); - gtk_widget_realize(mn->email_win); - aol_icon(mn->email_win->window); + if (mn->email_win) { + gtk_label_set_text(GTK_LABEL(mn->email_label), buf); + return; + } - mn->email_label = gtk_label_new(buf); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(mn->email_win)->vbox), - mn->email_label, 0, 0, 5); - gtk_widget_show(mn->email_label); - close = picture_button(mn->email_win, _("Close"), cancel_xpm); - gtk_window_set_focus(GTK_WINDOW(mn->email_win), close); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(mn->email_win)->action_area), - close, 0, 0, 5); - gtk_signal_connect(GTK_OBJECT(close), "clicked", - GTK_SIGNAL_FUNC(des_email_win), mn); + mn->email_win = gtk_window_new(GTK_WINDOW_DIALOG); + gtk_window_set_wmclass(GTK_WINDOW(mn->email_win), "mail", "Gaim"); + gtk_window_set_policy(GTK_WINDOW(mn->email_win), FALSE, TRUE, TRUE); + gtk_window_set_title(GTK_WINDOW(mn->email_win), _("Gaim - New Mail")); + gtk_signal_connect(GTK_OBJECT(mn->email_win), "destroy", GTK_SIGNAL_FUNC(des_email_win), mn); + gtk_widget_realize(mn->email_win); + aol_icon(mn->email_win->window); - gtk_widget_show(mn->email_win); - } - gtk_label_set_text(GTK_LABEL(mn->email_label), buf); - } else if (count) { - g_snprintf(buf, sizeof buf, "%s has %d new message%s.", - gc->username, count, count == 1 ? "" : "s"); - if (!mn->email_win) { - GtkWidget *close; + vbox = gtk_vbox_new(FALSE, 5); + gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); + gtk_container_add(GTK_CONTAINER(mn->email_win), vbox); + gtk_widget_show(vbox); - mn->email_win = gtk_dialog_new(); - gtk_window_set_policy(GTK_WINDOW(mn->email_win), 0, 0, 1); - gtk_container_set_border_width(GTK_CONTAINER(mn->email_win), 5); - gtk_window_set_title(GTK_WINDOW(mn->email_win), "New Mail"); - gtk_signal_connect(GTK_OBJECT(mn->email_win), "destroy", - GTK_SIGNAL_FUNC(des_email_win), mn); - gtk_widget_realize(mn->email_win); - aol_icon(mn->email_win->window); + mn->email_label = gtk_label_new(buf); + gtk_label_set_text(GTK_LABEL(mn->email_label), buf); + gtk_box_pack_start(GTK_BOX(vbox), mn->email_label, 0, 0, 5); + gtk_widget_show(mn->email_label); - mn->email_label = gtk_label_new(buf); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(mn->email_win)->vbox), - mn->email_label, 0, 0, 5); - gtk_widget_show(mn->email_label); + hbox = gtk_hbox_new(FALSE, 5); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show(hbox); - close = picture_button(mn->email_win, _("Close"), cancel_xpm); - gtk_window_set_focus(GTK_WINDOW(mn->email_win), close); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(mn->email_win)->action_area), - close, 0, 0, 5); - gtk_signal_connect(GTK_OBJECT(close), "clicked", - GTK_SIGNAL_FUNC(des_email_win), mn); + close = picture_button(mn->email_win, _("Close"), cancel_xpm); + gtk_window_set_focus(GTK_WINDOW(mn->email_win), close); + gtk_box_pack_end(GTK_BOX(hbox), close, 0, 0, 5); + gtk_signal_connect(GTK_OBJECT(close), "clicked", GTK_SIGNAL_FUNC(des_email_win), mn); - gtk_widget_show(mn->email_win); - } - gtk_label_set_text(GTK_LABEL(mn->email_label), buf); - } else if (mn->email_win) - gtk_widget_destroy(mn->email_win); + if (url) { + mn->url = g_strdup(url); + urlbut = picture_button(mn->email_win, _("Open Mail"), tb_forward_xpm); + gtk_box_pack_end(GTK_BOX(hbox), urlbut, 0, 0, 5); + gtk_signal_connect(GTK_OBJECT(urlbut), "clicked", GTK_SIGNAL_FUNC(open_url_nw), mn->url); + } + + gtk_widget_show(mn->email_win); } struct icon_data { Index: prpl.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/prpl.h,v retrieving revision 1.51 retrieving revision 1.52 diff -u -d -r1.51 -r1.52 --- prpl.h 2001/10/14 11:36:36 1.51 +++ prpl.h 2001/10/18 20:56:59 1.52 @@ -161,9 +161,9 @@ extern void do_proto_menu(); extern void do_ask_dialog(const char *, void *, void *, void *); -extern void do_prompt_dialog(const char *, void *, void *, void *); +extern void do_prompt_dialog(const char *, const char *, void *, void *, void *); -extern void connection_has_mail(struct gaim_connection *, int, const char *, const char *); +extern void connection_has_mail(struct gaim_connection *, int, const char *, const char *, const char *); extern void set_icon_data(struct gaim_connection *, char *, void *, int); extern void *get_icon_data(struct gaim_connection *, char *, int *); |