]> git.deb.at Git - pkg/abook.git/blobdiff - filter.c
*** empty log message ***
[pkg/abook.git] / filter.c
index 34f35b1ac0e7ff39ff85230b4cd938d9c21588cc..62394ca0cf2c1b05fca28541c600b3b1b99e4603 100644 (file)
--- a/filter.c
+++ b/filter.c
 #include "abook.h"
 #include "database.h"
 #include "edit.h"
+#include "gettext.h"
 #include "list.h"
 #include "misc.h"
 #include "options.h"
+#include "ui.h"
 #include "xmalloc.h"
 #include <assert.h>
 
@@ -59,35 +61,37 @@ static int  mutt_alias_export(FILE *out, struct db_enumerator e);
 static int     elm_alias_export(FILE *out, struct db_enumerator e);
 static int     text_export_database(FILE *out, struct db_enumerator e);
 static int     spruce_export_database(FILE *out, struct db_enumerator e);
+static int     wl_export_database(FILE *out, struct db_enumerator e);
 
 /*
  * end of function declarations
  */
 
 struct abook_input_filter i_filters[] = {
-       { "abook", "abook native format", parse_database },
-       { "ldif", "ldif / Netscape addressbook", ldif_parse_file },
-       { "mutt", "mutt alias", mutt_parse_file },
-       { "pine", "pine addressbook", pine_parse_file },
-       { "csv", "comma separated values", csv_parse_file },
-       { "allcsv", "comma separated all values", allcsv_parse_file },
-       { "palmcsv", "Palm comma separated values", palmcsv_parse_file },
+       { "abook", N_("abook native format"), parse_database },
+       { "ldif", N_("ldif / Netscape addressbook"), ldif_parse_file },
+       { "mutt", N_("mutt alias"), mutt_parse_file },
+       { "pine", N_("pine addressbook"), pine_parse_file },
+       { "csv", N_("comma separated values"), csv_parse_file },
+       { "allcsv", N_("comma separated values (all fields)"), allcsv_parse_file },
+       { "palmcsv", N_("Palm comma separated values"), palmcsv_parse_file },
        { "\0", NULL, NULL }
 };
 
 struct abook_output_filter e_filters[] = {
-       { "abook", "abook native format", write_database },
-       { "ldif", "ldif / Netscape addressbook (.4ld)", ldif_export_database },
-       { "mutt", "mutt alias", mutt_alias_export },
-       { "html", "html document", html_export_database },
-       { "pine", "pine addressbook", pine_export_database },
-       { "gcrd", "GnomeCard (VCard) addressbook", gcrd_export_database },
-       { "csv", "comma separated values", csv_export_database },
-       { "allcsv", "comma separated all values", allcsv_export_database },
-       { "palmcsv", "Palm comma separated values", palm_export_database},
-       { "elm", "elm alias", elm_alias_export },
-       { "text", "plain text", text_export_database },
-       { "spruce", "Spruce address book", spruce_export_database },
+       { "abook", N_("abook native format"), write_database },
+       { "ldif", N_("ldif / Netscape addressbook (.4ld)"), ldif_export_database },
+       { "mutt", N_("mutt alias"), mutt_alias_export },
+       { "html", N_("html document"), html_export_database },
+       { "pine", N_("pine addressbook"), pine_export_database },
+       { "gcrd", N_("GnomeCard (VCard) addressbook"), gcrd_export_database },
+       { "csv", N_("comma separated values"), csv_export_database },
+       { "allcsv", N_("comma separated values (all fields)"), allcsv_export_database },
+       { "palmcsv", N_("Palm comma separated values"), palm_export_database},
+       { "elm", N_("elm alias"), elm_alias_export },
+       { "text", N_("plain text"), text_export_database },
+       { "wl", N_("Wanderlust address book"), wl_export_database },
+       { "spruce", N_("Spruce address book"), spruce_export_database },
        { "\0", NULL, NULL }
 };
 
@@ -100,17 +104,17 @@ print_filters()
 {
        int i;
 
-       puts("input:");
+       puts(_("input:"));
        for(i=0; *i_filters[i].filtname ; i++)
                printf("\t%s\t%s\n", i_filters[i].filtname,
-                       i_filters[i].desc);
+                       gettext(i_filters[i].desc));
 
        putchar('\n');
 
-       puts("output:");
+       puts(_("output:"));
        for(i=0; *e_filters[i].filtname ; i++)
                printf("\t%s\t%s\n", e_filters[i].filtname,
-                       e_filters[i].desc);
+                       gettext(e_filters[i].desc));
 
        putchar('\n');
 }
@@ -172,17 +176,17 @@ import_screen()
        clear();
 
        refresh_statusline();
-       headerline("import database");
+       headerline(_("import database"));
 
-       mvaddstr(3, 1, "please select a filter");
+       mvaddstr(3, 1, _("please select a filter"));
 
 
        for(i=0; *i_filters[i].filtname ; i++)
                mvprintw(5 + i, 6, "%c -\t%s\t%s\n", 'a' + i,
                        i_filters[i].filtname,
-                       i_filters[i].desc);
+                       gettext(i_filters[i].desc));
 
-       mvprintw(6 + i, 6, "x -\tcancel");
+       mvprintw(6 + i, 6, _("x -\tcancel"));
 }
 
 int
@@ -203,16 +207,16 @@ import_database()
 
        mvaddstr(5+filter, 2, "->");
 
-       filename = ask_filename("Filename: ");
+       filename = ask_filename(_("Filename: "));
        if(!filename) {
                refresh_screen();
                return 2;
        }
 
        if(i_read_file(filename, i_filters[filter].func ))
-               statusline_msg("Error occured while opening the file");
+               statusline_msg(_("Error occured while opening the file"));
        else if(tmp == items)
-               statusline_msg("Hmm.., file seems not to be a valid file");
+               statusline_msg(_("File does not seem to be a valid addressbook"));
 
        refresh_screen();
        free(filename);
@@ -289,17 +293,17 @@ export_screen()
 
 
        refresh_statusline();
-       headerline("export database");
+       headerline(_("export database"));
 
-       mvaddstr(3, 1, "please select a filter");
+       mvaddstr(3, 1, _("please select a filter"));
 
 
        for(i = 0; *e_filters[i].filtname ; i++)
                mvprintw(5 + i, 6, "%c -\t%s\t%s\n", 'a' + i,
                        e_filters[i].filtname,
-                       e_filters[i].desc);
+                       gettext(e_filters[i].desc));
 
-       mvprintw(6 + i, 6, "x -\tcancel");
+       mvprintw(6 + i, 6, _("x -\tcancel"));
 }
 
 int
@@ -318,29 +322,33 @@ export_database()
                return 1;
        }
 
-       mvaddstr(5+filter, 2, "->");
+       mvaddstr(5 + filter, 2, "->");
 
        if(selected_items()) {
-               statusline_addstr("Export All/Selected/Cancel (A/s/c)");
-               switch( tolower(getch()) ) {
-                       case 's':
+               switch(statusline_askchoice(
+                       _("Export <a>ll, export <s>elected, or <c>ancel?"),
+                       S_("keybindings:all/selected/cancel|asc"), 3)) {
+                       case 1:
+                               break;
+                       case 2:
                                enum_mode = ENUM_SELECTED;
                                break;
-                       case 'c':
-                               clear_statusline();
+                       case 0:
+                       case 3:
+                               refresh_screen();
                                return 1;
                }
                clear_statusline();
        }
 
-       filename = ask_filename("Filename: ");
+       filename = ask_filename(_("Filename: "));
        if(!filename) {
                refresh_screen();
                return 2;
        }
 
        if( e_write_file(filename, e_filters[filter].func, enum_mode))
-               statusline_msg("Error occured while exporting");
+               statusline_msg(_("Error occured while exporting"));
 
        refresh_screen();
        free(filename);
@@ -787,7 +795,7 @@ ldif_export_database(FILE *out, struct db_enumerator e)
                int j;
                get_first_email(email, e.item);
 
-               tmp = mkstr("cn=%s,mail=%s", database[e.item][NAME], email);
+               tmp = strdup_printf("cn=%s,mail=%s", database[e.item][NAME], email);
                ldif_fput_type_and_value(out, "dn", tmp);
                free(tmp);
 
@@ -1808,3 +1816,34 @@ spruce_export_database (FILE *out, struct db_enumerator e)
  * end of Spruce export filter
  */
 
+/*
+ * wanderlust addressbook export filter
+ */
+
+static int
+wl_export_database(FILE *out, struct db_enumerator e)
+{
+       char emails[MAX_EMAILS][MAX_EMAIL_LEN];
+
+       fprintf (out, "# Wanderlust address book written by %s\n\n", PACKAGE);
+       db_enumerate_items(e) {
+               split_emailstr(e.item, emails);
+               if (**emails) {
+                       fprintf(out,
+                               "%s\t\"%s\"\t\"%s\"\n",
+                               *emails,
+                               safe_str(database[e.item][NICK]),
+                               safe_str(database[e.item][NAME])
+                       );
+               }
+       }
+
+       fprintf (out, "\n# End of address book file.\n");
+
+       return 0;
+}
+
+/*
+ * end of wanderlust addressbook export filter
+ */
+