# HG changeset patch # User Eric Warmenhoven # Date 966517672 0 # Node ID efd72a117875b78bb7d8db77fe15eec3f4ec5116 # Parent 957957d0dc2c3190e5be3870be7282963001f6cc [gaim-migrate @ 720] yay, icq-style aliasing. joy. committer: Tailor Script diff -r 957957d0dc2c -r efd72a117875 ChangeLog --- a/ChangeLog Thu Aug 17 10:01:50 2000 +0000 +++ b/ChangeLog Thu Aug 17 13:07:52 2000 +0000 @@ -15,7 +15,10 @@ * Removed the Lag-O-Meter * Socks 4/5 Proxy works * Buddy Pounces are now saved in .gaimrc - # Ability to merge gaim, aim2, aim4 buddylists. Thanks again bmiller! + * Ability to merge gaim, aim2, aim4 buddylists. Thanks again bmiller! + * ICQ-style aliases. This lets you change the name you see your buddy + as. For example, if your buddy's SN is 'CouldntGetMyName', you can + alias him as 'Loser'. version 0.9.20 (07/14/2000): * More plugin events, more plugin features diff -r 957957d0dc2c -r efd72a117875 TODO --- a/TODO Thu Aug 17 10:01:50 2000 +0000 +++ b/TODO Thu Aug 17 13:07:52 2000 +0000 @@ -22,9 +22,5 @@ access items in those menus - Possibly make it so that you can create ICQ-style 'aliases' for - buddies on your buddy list. This won't be too hard it'll - just take a bit of work. Maybe we'll save this one for the - release after our next release. Maybe someday in the future gaim will be able to support multiple connections, so you can log on as 2+ names at once. Maybe. diff -r 957957d0dc2c -r efd72a117875 src/buddy.c --- a/src/buddy.c Thu Aug 17 10:01:50 2000 +0000 +++ b/src/buddy.c Thu Aug 17 13:07:52 2000 +0000 @@ -395,7 +395,11 @@ void pressed_info(GtkWidget *widget, struct buddy *b) { serv_get_info(b->name); +} +void pressed_alias(GtkWidget *widget, struct buddy *b) +{ + alias_dialog(b); } void pressed_dir_info(GtkWidget *widget, struct buddy *b) @@ -440,6 +444,12 @@ gtk_menu_append(GTK_MENU(menu), button); gtk_widget_show(button); + button = gtk_menu_item_new_with_label(_("Alias")); + gtk_signal_connect(GTK_OBJECT(button), "activate", + GTK_SIGNAL_FUNC(pressed_alias), b); + gtk_menu_append(GTK_MENU(menu), button); + gtk_widget_show(button); + button = gtk_menu_item_new_with_label(_("Dir Info")); gtk_signal_connect(GTK_OBJECT(button), "activate", GTK_SIGNAL_FUNC(pressed_dir_info), b); @@ -806,7 +816,7 @@ } -struct buddy *add_buddy(char *group, char *buddy) +struct buddy *add_buddy(char *group, char *buddy, char *show) { struct buddy *b; struct group *g; @@ -832,6 +842,8 @@ b->item = gtk_tree_item_new(); g_snprintf(b->name, sizeof(b->name), "%s", buddy); + g_snprintf(b->show, sizeof(b->show), "%s", show ? (show[0] ? show : buddy) : buddy); + g->members = g_list_append(g->members, b); @@ -1407,7 +1419,7 @@ } else caps[0] = '\0'; - i = g_snprintf(infotip, sizeof(infotip), _("Name: %s \nLogged in: %s\n%s%s%s%s%s"), b->name, sotime, warn, ((b->idle) ? _("Idle: ") : ""), itime, ((b->idle) ? "\n" : ""), caps); + i = g_snprintf(infotip, sizeof(infotip), _("Name: %s \nLogged in: %s\n%s%s%s%s%s"), b->show, sotime, warn, ((b->idle) ? _("Idle: ") : ""), itime, ((b->idle) ? "\n" : ""), caps); gtk_tooltips_set_tip(tips, GTK_WIDGET(b->item), infotip, ""); @@ -1437,8 +1449,8 @@ play_sound(BUDDY_ARRIVE); b->present = 2; - who = g_malloc(sizeof(b->name) + 10); - strcpy(who, b->name); + who = g_malloc(sizeof(b->show) + 10); + strcpy(who, b->show); gtk_label_set(GTK_LABEL(b->label), who); g_free(who); diff -r 957957d0dc2c -r efd72a117875 src/dialogs.c --- a/src/dialogs.c Thu Aug 17 10:01:50 2000 +0000 +++ b/src/dialogs.c Thu Aug 17 13:07:52 2000 +0000 @@ -71,6 +71,9 @@ static GtkWidget *imdialog = NULL; /*I only want ONE of these :) */ static GList *dialogwindows = NULL; static GtkWidget *exportdialog, *importdialog; +static GtkWidget *aliasdlg = NULL; +static GtkWidget *aliasentry = NULL; +static GtkWidget *aliasname = NULL; struct create_away { GtkWidget *window; @@ -327,6 +330,12 @@ if (dest == importdialog) importdialog = NULL; + if (dest == aliasdlg) { + aliasdlg = NULL; + aliasentry = NULL; + aliasname = NULL; + } + dialogwindows = g_list_remove(dialogwindows, dest); gtk_widget_destroy(dest); @@ -766,7 +775,7 @@ c = find_conversation(who); - add_buddy(grp, who); + add_buddy(grp, who, NULL); if (c != NULL) { GtkWidget *parent = c->add_button->parent; @@ -893,7 +902,7 @@ gtk_widget_show(bbox); gtk_widget_show(vbox); gtk_widget_show(frame); - gtk_window_set_title(GTK_WINDOW(a->window), _("Gaim - Add Buddy")); + gtk_window_set_title(GTK_WINDOW(a->window), _("Gaim - Add Group")); gtk_window_set_focus(GTK_WINDOW(a->window), a->entry); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_add(GTK_CONTAINER(a->window), frame); @@ -2614,7 +2623,7 @@ return; } if ((f = fopen(path,"w"))) { - serv_build_config(buf, 8192 - 1); + serv_build_config(buf, 8192 - 1, TRUE); fprintf(f, "%s\n", buf); fclose(f); chmod(buf, S_IRUSR | S_IWUSR); @@ -3080,3 +3089,110 @@ return; } + +static void do_alias(GtkWidget *w, gpointer n) +{ + char *name, *who; + struct buddy *b; + name = g_strdup(gtk_entry_get_text(GTK_ENTRY(aliasentry))); + if ((b = find_buddy(name)) == NULL) { + g_free(name); + destroy_dialog(aliasdlg, aliasdlg); + return; + } + g_snprintf(b->show, sizeof(b->show), "%s", gtk_entry_get_text(GTK_ENTRY(aliasname))); + do_export(0, 0); + who = g_malloc(sizeof(b->show) + 10); + strcpy(who, b->show); + gtk_label_set(GTK_LABEL(b->label), who); + g_free(who); + set_buddy(b); + g_free(name); + destroy_dialog(aliasdlg, aliasdlg); +} + +void alias_dialog(struct buddy *b) +{ + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *bbox; + GtkWidget *cancel; + GtkWidget *add; + GtkWidget *label; + GtkWidget *topbox; + + if (aliasdlg) { + gtk_entry_set_text(GTK_ENTRY(aliasentry), b->name); + gtk_widget_show(aliasdlg); + return; + } + + aliasdlg = gtk_window_new(GTK_WINDOW_DIALOG); + gtk_window_set_policy(GTK_WINDOW(aliasdlg), FALSE, FALSE, TRUE); + gtk_widget_show(aliasdlg); + dialogwindows = g_list_prepend(dialogwindows, aliasdlg); + + bbox = gtk_hbox_new(TRUE, 10); + topbox = gtk_hbox_new(FALSE, 5); + vbox = gtk_vbox_new(FALSE, 5); + + aliasentry = gtk_entry_new(); + aliasname = gtk_entry_new(); + /* Put the buttons in the box */ + + add = picture_button(aliasdlg, _("Add"), add_xpm); + + cancel = picture_button(aliasdlg, _("Cancel"), cancel_xpm); + + gtk_box_pack_start(GTK_BOX(bbox), add, FALSE, FALSE, 5); + gtk_box_pack_end(GTK_BOX(bbox), cancel, FALSE, FALSE, 5); + + frame = gtk_frame_new(NULL); + gtk_frame_set_label(GTK_FRAME(frame), _("Alias Buddy")); + + label = gtk_label_new(_("Buddy")); + gtk_widget_show(label); + gtk_box_pack_start(GTK_BOX(topbox), label, FALSE, FALSE, 5); + gtk_box_pack_start(GTK_BOX(topbox), aliasentry, FALSE, FALSE, 5); + label = gtk_label_new(_("Alias")); + gtk_widget_show(label); + gtk_box_pack_start(GTK_BOX(topbox), label, FALSE, FALSE, 5); + gtk_box_pack_start(GTK_BOX(topbox), aliasname, FALSE, FALSE, 5); + + gtk_entry_set_text(GTK_ENTRY(aliasentry), b->name); + gtk_entry_set_text(GTK_ENTRY(aliasname), b->show); + + /* And the boxes in the box */ + gtk_box_pack_start(GTK_BOX(vbox), topbox, TRUE, TRUE, 5); + gtk_box_pack_start(GTK_BOX(vbox), bbox, TRUE, TRUE, 5); + + /* Handle closes right */ + gtk_signal_connect(GTK_OBJECT(aliasdlg), "destroy", + GTK_SIGNAL_FUNC(destroy_dialog), aliasdlg); + gtk_signal_connect(GTK_OBJECT(cancel), "clicked", + GTK_SIGNAL_FUNC(destroy_dialog), aliasdlg); + gtk_signal_connect(GTK_OBJECT(add), "clicked", + GTK_SIGNAL_FUNC(do_alias), NULL); + gtk_signal_connect(GTK_OBJECT(aliasentry), "activate", + GTK_SIGNAL_FUNC(do_alias), NULL); + gtk_signal_connect(GTK_OBJECT(aliasname), "activate", + GTK_SIGNAL_FUNC(do_alias), NULL); + /* Finish up */ + gtk_widget_show(add); + gtk_widget_show(cancel); + gtk_widget_show(aliasentry); + gtk_widget_show(aliasname); + gtk_widget_show(topbox); + gtk_widget_show(bbox); + gtk_widget_show(vbox); + gtk_widget_show(frame); + gtk_window_set_title(GTK_WINDOW(aliasdlg), _("Gaim - Alias Buddy")); + gtk_window_set_focus(GTK_WINDOW(aliasdlg), aliasentry); + gtk_container_add(GTK_CONTAINER(frame), vbox); + gtk_container_add(GTK_CONTAINER(aliasdlg), frame); + gtk_container_set_border_width(GTK_CONTAINER(aliasdlg), 5); + gtk_widget_realize(aliasdlg); + aol_icon(aliasdlg->window); + + gtk_widget_show(aliasdlg); +} diff -r 957957d0dc2c -r efd72a117875 src/gaim.h --- a/src/gaim.h Thu Aug 17 10:01:50 2000 +0000 +++ b/src/gaim.h Thu Aug 17 13:07:52 2000 +0000 @@ -196,6 +196,7 @@ struct buddy { char name[80]; + char show[80]; GtkWidget *item; GtkWidget *label; GtkWidget *pix; @@ -399,7 +400,7 @@ #define TYPE_SIGNOFF 4 #define TYPE_KEEPALIVE 5 -#define REVISION "gaim:$Revision: 715 $" +#define REVISION "gaim:$Revision: 720 $" #define FLAPON "FLAPON\r\n\r\n" #define ROAST "Tic/Toc" @@ -603,7 +604,7 @@ extern void serv_add_permit(char *); extern void serv_add_deny(char *); extern void serv_set_permit_deny(); -extern void serv_build_config(char *, int); +extern void serv_build_config(char *, int, gboolean); extern void serv_save_config(); extern void serv_warn(char *, int); extern void serv_set_dir(char *, char *, char *, char *, char *, char *, char *, int); @@ -686,7 +687,7 @@ extern void update_all_buddies(); extern void show_buddy_list(); extern void refresh_buddy_window(); -extern void toc_build_config(char *, int len); +extern void toc_build_config(char *, int len, gboolean); extern void signoff(); extern void do_im_back(); extern void set_buddy(struct buddy *); @@ -702,7 +703,7 @@ extern struct group *find_group(char *); extern struct group *find_group_by_buddy(char *); extern void remove_buddy(struct group *, struct buddy *); -extern struct buddy *add_buddy(char *, char *); +extern struct buddy *add_buddy(char *, char *, char *); extern void remove_group(struct group *); extern void update_lagometer(int); @@ -757,6 +758,7 @@ /* Functions in dialogs.c */ +extern void alias_dialog(struct buddy *); extern void do_export(GtkWidget *, void *); extern void show_warn_dialog(char *); extern void do_error_dialog(char *, char *); diff -r 957957d0dc2c -r efd72a117875 src/prefs.c --- a/src/prefs.c Thu Aug 17 10:01:50 2000 +0000 +++ b/src/prefs.c Thu Aug 17 13:07:52 2000 +0000 @@ -464,8 +464,7 @@ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) { permdeny = (int)data; if (blist) { - /* We don't save this 'at home', it's on the server. - * So, we gotta resend the config to the server. */ + do_export(0, 0); serv_save_config(); /* we do this here because we can :) */ serv_set_permit_deny(); diff -r 957957d0dc2c -r efd72a117875 src/server.c --- a/src/server.c Thu Aug 17 10:01:50 2000 +0000 +++ b/src/server.c Thu Aug 17 13:07:52 2000 +0000 @@ -487,8 +487,8 @@ } } -void serv_build_config(char *buf, int len) { - toc_build_config(buf, len); +void serv_build_config(char *buf, int len, gboolean show) { + toc_build_config(buf, len, show); } @@ -497,7 +497,7 @@ if (!USE_OSCAR) { char *buf = g_malloc(BUF_LONG); char *buf2 = g_malloc(MSG_LEN); - serv_build_config(buf, BUF_LONG / 2); + serv_build_config(buf, BUF_LONG / 2, FALSE); g_snprintf(buf2, MSG_LEN, "toc_set_config {%s}", buf); sflap_send(buf2, -1, TYPE_DATA); g_free(buf2); diff -r 957957d0dc2c -r efd72a117875 src/toc.c --- a/src/toc.c Thu Aug 17 10:01:50 2000 +0000 +++ b/src/toc.c Thu Aug 17 13:07:52 2000 +0000 @@ -827,7 +827,7 @@ return NULL; } -void toc_build_config(char *s, int len) +void toc_build_config(char *s, int len, gboolean show) { GList *grp = groups; GList *mem; @@ -848,7 +848,8 @@ mem = g->members; while(mem) { b = (struct buddy *)mem->data; - pos += g_snprintf(&s[pos], len - pos, "b %s\n", b->name); + pos += g_snprintf(&s[pos], len - pos, "b %s%s%s\n", b->name, + show ? ":" : "", show ? b->show : ""); mem = mem->next; } grp = grp ->next; @@ -897,8 +898,19 @@ add_group(current); how_many++; } else if (*c == 'b' && !find_buddy(c+2)) { - add_buddy(current, c+2); + char nm[80], sw[80], *tmp = c+2; + int i = 0; + while (*tmp != ':' && *tmp) + nm[i++] = *tmp++; + if (*tmp == ':') *tmp++ = '\0'; + nm[i] = '\0'; + i = 0; + while (*tmp) sw[i++] = *tmp++; + sw[i] = '\0'; + if (!find_buddy(nm)) + add_buddy(current, nm, sw); how_many++; + bud = g_list_append(bud, c+2); } else if (*c == 'p') { GList *d = permit;