X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fjvcard%2Ftui%2FMain.java;h=eda0c69407059a7a200fa4e43d6dce2186eeae4e;hb=d66e24cca3ce3d2dc683358b4bcc99593900e77f;hp=8e34e00b1e51a430ae93e8a29f4da07a232be61c;hpb=ce822a7cd8ff95a031e477e37d23c114228cc5b6;p=jvcard.git diff --git a/src/be/nikiroo/jvcard/tui/Main.java b/src/be/nikiroo/jvcard/tui/Main.java index 8e34e00..eda0c69 100644 --- a/src/be/nikiroo/jvcard/tui/Main.java +++ b/src/be/nikiroo/jvcard/tui/Main.java @@ -2,9 +2,13 @@ package be.nikiroo.jvcard.tui; import java.io.File; import java.io.IOException; +import java.lang.reflect.Field; +import java.nio.charset.Charset; import java.util.LinkedList; import java.util.List; +import be.nikiroo.jvcard.i18n.Trans; +import be.nikiroo.jvcard.i18n.Trans.StringId; import be.nikiroo.jvcard.tui.panes.FileList; import com.googlecode.lanterna.TextColor; @@ -14,6 +18,7 @@ import com.googlecode.lanterna.gui2.EmptySpace; import com.googlecode.lanterna.gui2.MultiWindowTextGUI; import com.googlecode.lanterna.gui2.Window; import com.googlecode.lanterna.gui2.table.Table; +import com.googlecode.lanterna.input.KeyStroke; import com.googlecode.lanterna.screen.Screen; import com.googlecode.lanterna.screen.TerminalScreen; import com.googlecode.lanterna.terminal.DefaultTerminalFactory; @@ -29,15 +34,59 @@ import com.googlecode.lanterna.terminal.Terminal; */ public class Main { public static final String APPLICATION_TITLE = "jVcard"; - public static final String APPLICATION_VERSION = "1.0-beta1-dev"; + public static final String APPLICATION_VERSION = "1.0-beta2-dev"; + static private Trans transService; + + /** + * Translate the given {@link StringId}. + * + * @param id + * the ID to translate + * + * @return the translation + */ + static public String trans(StringId id) { + if (transService == null) + return ""; + + return transService.trans(id); + } + + /** + * Translate the given {@link KeyStroke}. + * + * @param key + * the key to translate + * + * @return the translation + */ + static public String trans(KeyStroke key) { + if (transService == null) + return ""; + + return transService.trans(key); + } + + /** + * Start the application. + * + * @param args + * the parameters (see --help to know hich are supported) + */ public static void main(String[] args) { Boolean textMode = null; boolean noMoreParams = false; boolean filesTried = false; + // get the "system default" language to help translate the --help + // message if needed + String language = null; + transService = new Trans(null); + List files = new LinkedList(); - for (String arg : args) { + for (int index = 0; index < args.length; index++) { + String arg = args[index]; if (!noMoreParams && arg.equals("--")) { noMoreParams = true; } else if (!noMoreParams && arg.equals("--help")) { @@ -46,6 +95,7 @@ public class Main { + "Usable switches:\n" + "\t--: stop looking for switches\n" + "\t--help: this here thingy\n" + + "\t--lang LANGUAGE: choose the language, for instance en_GB\n" + "\t--tui: force pure text mode even if swing treminal is available\n" + "\t--gui: force swing terminal mode\n" + "\t--noutf: force non-utf8 mode if you need it\n" @@ -59,12 +109,21 @@ public class Main { textMode = false; } else if (!noMoreParams && arg.equals("--noutf")) { UiColors.getInstance().setUnicode(false); + } else if (!noMoreParams && arg.equals("--lang")) { + index++; + if (index < args.length) + language = args[index]; + transService = new Trans(language); } else { filesTried = true; files.addAll(open(arg)); } } + if (UiColors.getInstance().isUnicode()) { + utf8(); + } + if (files.size() == 0) { if (filesTried) { System.exit(1); @@ -82,23 +141,6 @@ public class Main { ioe.printStackTrace(); System.exit(2); } - - /* - * String file = args.length > 0 ? args[0] : null; String file2 = - * args.length > 1 ? args[1] : null; - * - * if (file == null) file = - * "/home/niki/workspace/rcard/utils/CVcard/test.vcf"; if (file2 == - * null) file2 = "/home/niki/workspace/rcard/utils/CVcard/test.abook"; - * - * Card card = new Card(new File(file), Format.VCard21); - * System.out.println(card.toString()); - * - * System.out.println("\n -- PINE -- \n"); - * - * card = new Card(new File(file2), Format.Abook); - * System.out.println(card.toString(Format.Abook)); - */ } /** @@ -130,6 +172,20 @@ public class Main { return files; } + /** + * Really, really ask for UTF-8 encoding. + */ + static private void utf8() { + try { + System.setProperty("file.encoding", "UTF-8"); + Field charset = Charset.class.getDeclaredField("defaultCharset"); + charset.setAccessible(true); + charset.set(null, null); + } catch (SecurityException | NoSuchFieldException + | IllegalArgumentException | IllegalAccessException e) { + } + } + static private void fullTestTable() throws IOException { final Table table = new Table("Column 1", "Column 2", "Column 3");