From: Niki Roo Date: Mon, 4 Mar 2019 17:15:33 +0000 (+0100) Subject: update to more upstream-y jexer lib, fix library X-Git-Url: https://git.nikiroo.be/?a=commitdiff_plain;h=4f66bfa85209c2c1683f938df9b43fa2924b351e;p=fanfix-jexer.git update to more upstream-y jexer lib, fix library --- diff --git a/libs/jexer-0.0.4-dev-sources.jar b/libs/jexer-0.0.4-dev-sources.jar new file mode 100644 index 0000000..1c09bd8 Binary files /dev/null and b/libs/jexer-0.0.4-dev-sources.jar differ diff --git a/libs/jexer-0.0.4-niki1-sources.jar b/libs/jexer-0.0.4-niki1-sources.jar deleted file mode 100644 index c213e75..0000000 Binary files a/libs/jexer-0.0.4-niki1-sources.jar and /dev/null differ diff --git a/src/be/nikiroo/fanfix/reader/tui/TuiReaderApplication.java b/src/be/nikiroo/fanfix/reader/tui/TuiReaderApplication.java index b7109ab..6fa969b 100644 --- a/src/be/nikiroo/fanfix/reader/tui/TuiReaderApplication.java +++ b/src/be/nikiroo/fanfix/reader/tui/TuiReaderApplication.java @@ -34,11 +34,16 @@ class TuiReaderApplication extends TApplication implements Reader { public static final int MENU_IMPORT_URL = 1026; public static final int MENU_IMPORT_FILE = 1027; public static final int MENU_EXPORT = 1028; - public static final int MENU_EXIT = 1029; + public static final int MENU_LIBRARY = 1029; + public static final int MENU_EXIT = 1030; private Reader reader; private TuiReaderMainWindow main; + private MetaData meta; + private String source; + private boolean useMeta; + // start reading if meta present public TuiReaderApplication(Reader reader, BackendType backend) throws Exception { @@ -47,11 +52,7 @@ class TuiReaderApplication extends TApplication implements Reader { MetaData meta = getMeta(); - main = new TuiReaderMainWindow(this); - main.setMeta(meta); - if (meta != null) { - read(); - } + showMain(meta, null, true); } public TuiReaderApplication(Reader reader, String source, @@ -59,8 +60,32 @@ class TuiReaderApplication extends TApplication implements Reader { super(backend); init(reader); - main = new TuiReaderMainWindow(this); - main.setSource(source); + showMain(null, source, false); + } + + private void showMain(MetaData meta, String source, boolean useMeta) + throws IOException { + // TODO: thread-safety + this.meta = meta; + this.source = source; + this.useMeta = useMeta; + + if (main != null && main.isVisible()) { + main.activate(); + } else { + if (main != null) { + main.close(); + } + main = new TuiReaderMainWindow(this); + if (useMeta) { + main.setMeta(meta); + if (meta != null) { + read(); + } + } else { + main.setSource(source); + } + } } @Override @@ -151,6 +176,8 @@ class TuiReaderApplication extends TApplication implements Reader { fileMenu.addItem(MENU_IMPORT_URL, "Import &URL..."); fileMenu.addItem(MENU_IMPORT_FILE, "Import &file..."); fileMenu.addSeparator(); + fileMenu.addItem(MENU_LIBRARY, "Lib&rary"); + fileMenu.addSeparator(); fileMenu.addItem(MENU_EXIT, "E&xit"); TStatusBar statusBar = fileMenu.newStatusBar("File-management " @@ -174,7 +201,7 @@ class TuiReaderApplication extends TApplication implements Reader { case MENU_EXIT: if (messageBox("Confirmation", "(TODO: i18n) Exit application?", TMessageBox.Type.YESNO).getResult() == TMessageBox.Result.YES) { - // exit(false); + exit(); // TODO: exit(false) for "no confirm box" } return true; @@ -211,6 +238,14 @@ class TuiReaderApplication extends TApplication implements Reader { e.printStackTrace(); } + return true; + case MENU_LIBRARY: + try { + showMain(meta, source, useMeta); + } catch (IOException e) { + e.printStackTrace(); + } + return true; } diff --git a/src/be/nikiroo/fanfix/reader/tui/TuiReaderMainWindow.java b/src/be/nikiroo/fanfix/reader/tui/TuiReaderMainWindow.java index 0fccfaf..1fa6d8b 100644 --- a/src/be/nikiroo/fanfix/reader/tui/TuiReaderMainWindow.java +++ b/src/be/nikiroo/fanfix/reader/tui/TuiReaderMainWindow.java @@ -39,8 +39,7 @@ class TuiReaderMainWindow extends TWindow { public TuiReaderMainWindow(TuiReaderApplication reader) { // Construct a demo window. X and Y don't matter because it will be // centred on screen. - super(reader, "Library", 0, 0, 60, 18, CENTERED | RESIZABLE - | UNCLOSABLE); + super(reader, "Library", 0, 0, 60, 18, CENTERED | RESIZABLE); this.reader = reader; @@ -87,6 +86,12 @@ class TuiReaderMainWindow extends TWindow { // root.addChild("child 2").addChild("sub child"); } + @Override + public void onClose() { + setVisible(false); + super.onClose(); + } + /** * Change the source filter and display all stories matching this source. * diff --git a/src/be/nikiroo/fanfix/reader/tui/TuiReaderStoryWindow.java b/src/be/nikiroo/fanfix/reader/tui/TuiReaderStoryWindow.java index 51d8fa0..01db6e2 100644 --- a/src/be/nikiroo/fanfix/reader/tui/TuiReaderStoryWindow.java +++ b/src/be/nikiroo/fanfix/reader/tui/TuiReaderStoryWindow.java @@ -12,6 +12,7 @@ import jexer.TLabel; import jexer.TText; import jexer.TWindow; import jexer.event.TResizeEvent; +import jexer.event.TResizeEvent.Type; import be.nikiroo.fanfix.data.Chapter; import be.nikiroo.fanfix.data.MetaData; import be.nikiroo.fanfix.data.Paragraph; @@ -90,10 +91,10 @@ class TuiReaderStoryWindow extends TWindow { public void onResize(TResizeEvent resize) { super.onResize(resize); - // Resize the text field - textField.setWidth(resize.getWidth() - 2); - textField.setHeight(resize.getHeight() - 2); - textField.reflow(); + // Resize the text field TODO: why setW/setH/reflow not enough for the + // scrollbars? + textField.onResize(new TResizeEvent(Type.WIDGET, resize.getWidth() - 2, + resize.getHeight() - 2)); // -3 because 0-based and 2 for borders int row = getHeight() - 3; @@ -171,7 +172,7 @@ class TuiReaderStoryWindow extends TWindow { } } textField.setText(builder.toString()); - textField.reflow(); + textField.reflowData(); textField.toTop(); } }