# HG changeset patch # User Eric Warmenhoven # Date 1002921176 0 # Node ID 1b7a1133962dd208fa136f461a5973a9caf44670 # Parent 1a25e4869e7d49babee15f66afa91c7e8eed6b48 [gaim-migrate @ 2506] select which connection to import to committer: Tailor Script diff -r 1a25e4869e7d -r 1b7a1133962d src/dialogs.c --- a/src/dialogs.c Fri Oct 12 18:24:46 2001 +0000 +++ b/src/dialogs.c Fri Oct 12 21:12:56 2001 +0000 @@ -86,7 +86,8 @@ static GtkWidget *imdialog = NULL; /*I only want ONE of these :) */ static GtkWidget *infodialog = NULL; static GList *dialogwindows = NULL; -static GtkWidget *exportdialog, *importdialog; +static GtkWidget *importdialog; +static struct gaim_connection *importgc; static GtkWidget *icondlg; static GtkWidget *aliasdlg = NULL; static GtkWidget *aliasentry = NULL; @@ -277,11 +278,10 @@ if (dest == infodialog) infodialog = NULL; - if (dest == exportdialog) - exportdialog = NULL; - - if (dest == importdialog) + if (dest == importdialog) { importdialog = NULL; + importgc = NULL; + } if (dest == icondlg) icondlg = NULL; @@ -329,11 +329,6 @@ infodialog = NULL; } - if (exportdialog) { - destroy_dialog(NULL, exportdialog); - exportdialog = NULL; - } - if (importdialog) { destroy_dialog(NULL, importdialog); importdialog = NULL; @@ -2616,11 +2611,59 @@ if (file_is_dir(file, importdialog)) { return; } - /* FIXME : import buddy list file. moderately important */ - do_import(connections->data, file); + do_import(importgc, file); + do_export(importgc); destroy_dialog(NULL, importdialog); - importdialog = NULL; - do_export(connections->data); +} + +static void set_import_gc(gpointer data, struct gaim_connection *gc) +{ + importgc = gc; +} + +static void create_import_dropdown(GtkFileSelection *fs) +{ + GtkWidget *hbox; + GtkWidget *label; + GSList *g = connections; + struct gaim_connection *c; + GtkWidget *optmenu; + GtkWidget *menu; + char buf[256]; + GtkWidget *opt; + + if (!connections) + return; + importgc = connections->data; + if (!connections->next) + return; + + hbox = gtk_hbox_new(FALSE, 0); + gtk_box_pack_end(GTK_BOX(fs->action_area), hbox, FALSE, FALSE, 0); + gtk_widget_show(hbox); + + optmenu = gtk_option_menu_new(); + gtk_box_pack_end(GTK_BOX(hbox), optmenu, FALSE, FALSE, 5); + gtk_widget_show(optmenu); + + label = gtk_label_new(_("Import to:")); + gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 5); + gtk_widget_show(label); + + menu = gtk_menu_new(); + + while (g) { + c = (struct gaim_connection *)g->data; + g_snprintf(buf, sizeof buf, "%s (%s)", c->username, (*c->prpl->name)()); + opt = gtk_menu_item_new_with_label(buf); + gtk_signal_connect(GTK_OBJECT(opt), "activate", GTK_SIGNAL_FUNC(set_import_gc), c); + gtk_widget_show(opt); + gtk_menu_append(GTK_MENU(menu), opt); + g = g->next; + } + + gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu); + gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), 0); } void show_import_dialog() @@ -2642,7 +2685,7 @@ gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(importdialog)->cancel_button), "clicked", GTK_SIGNAL_FUNC(destroy_dialog), importdialog); - + create_import_dropdown(GTK_FILE_SELECTION(importdialog)); } g_free(buf); @@ -2650,37 +2693,6 @@ gdk_window_raise(importdialog->window); } -/* -void show_export_dialog() -{ - char *buf = g_malloc(BUF_LEN); - if (!exportdialog) { - exportdialog = gtk_file_selection_new(_("Gaim - Export Buddy List")); - - gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(exportdialog)); - - g_snprintf(buf, BUF_LEN - 1, "%s/gaim.buddy", getenv("HOME")); - - gtk_file_selection_set_filename(GTK_FILE_SELECTION(exportdialog), buf); - gtk_signal_connect(GTK_OBJECT(exportdialog), "destroy", - GTK_SIGNAL_FUNC(destroy_dialog), exportdialog); - - gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(exportdialog)->ok_button), - "clicked", GTK_SIGNAL_FUNC(do_export), (void*)1); - gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(exportdialog)->cancel_button), - "clicked", GTK_SIGNAL_FUNC(destroy_dialog), exportdialog); - - - } - - g_free(buf); - - gtk_widget_show(exportdialog); - gdk_window_raise(exportdialog->window); - -} -*/ - /*------------------------------------------------------------------------*/ /* The dialog for new away messages */ /*------------------------------------------------------------------------*/ diff -r 1a25e4869e7d -r 1b7a1133962d src/gaim.h --- a/src/gaim.h Fri Oct 12 18:24:46 2001 +0000 +++ b/src/gaim.h Fri Oct 12 21:12:56 2001 +0000 @@ -179,7 +179,6 @@ /* Globals in aim.c */ extern GList *buddy_pounces; extern GList *conversations; -extern GtkWidget *mainwindow; extern int opt_away; extern char *opt_away_arg; extern char *opt_rcfile_arg; diff -r 1a25e4869e7d -r 1b7a1133962d src/ui.h --- a/src/ui.h Fri Oct 12 18:24:46 2001 +0000 +++ b/src/ui.h Fri Oct 12 21:12:56 2001 +0000 @@ -220,6 +220,7 @@ /* Globals in aim.c */ extern GList *log_conversations; /* this should be moved to conversations.c */ extern GSList *away_messages; /* this should be moved to away.c */ +extern GtkWidget *mainwindow; /* Globals in away.c */ extern struct away_message *awaymessage;