X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=README.md;h=9ffed93744fd9fb9127e5991e32e0f397583a809;hb=9b1afdde02c30f0d4a80ba330a4bc72384093253;hp=1e1bb544bbaa83f05eda45babc25eef10c57b1dc;hpb=b5f2a6dbf2f2b925007a85f68665103ec3514f84;p=nikiroo-utils.git diff --git a/README.md b/README.md index 1e1bb54..9ffed93 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ wishing to use the actual C++ Turbo Vision library, see [Sergio Sigala's updated version](http://tvision.sourceforge.net/) that runs on many more platforms. -Two backends are available: +Three backends are available: * System.in/out to a command-line ECMA-48 / ANSI X3.64 type terminal (tested on Linux + xterm). I/O is handled through terminal escape @@ -20,13 +20,29 @@ Two backends are available: are supported. For the demo application, this is the default backend on non-Windows platforms. +* The same command-line ECMA-48 / ANSI X3.64 type terminal as above, + but to any general InputStream/OutputStream. See the file + jexer.demos.Demo2 for an example of running the demo over a TCP + socket. + * Java Swing UI. This backend can be selected by setting jexer.Swing=true. The default window size for Swing is 132x40, which is set in jexer.session.SwingSession. For the demo application, this is the default backend on Windows platforms. -The demo application showing the existing UI controls is available via -'java -jar jexer.jar' or 'java -Djexer.Swing=true -jar jexer.jar' . +The demo application showing the existing UI controls can be seen in +three ways: + + * 'java -jar jexer.jar' . This will use System.in/out on + non-Windows, or Swing on Windows. + + * 'java -Djexer.Swing=true -jar jexer.jar' . This will always use + Swing. + + * 'java -cp jexer.jar jexer.demos.Demo2 PORT' (where PORT is a + number to run the TCP daemon on). This will use the telnet + protocol to establish an 8-bit clean channel and be aware of + screen size changes. Additional backends can be created by subclassing jexer.backend.Backend and passing it into the TApplication @@ -82,7 +98,7 @@ public class MyApplication extends TApplication { } ``` -See the file demos/Demo1.java for detailed examples. +See the files in jexer.demos for more detailed examples. @@ -93,9 +109,6 @@ Some arbitrary design decisions had to be made when either the obviously expected behavior did not happen or when a specification was ambiguous. This section describes such issues. - TTerminalWindow - --------------- - - TTerminalWindow will hang on input from the remote if the TApplication is exited before the TTerminalWindow's process has closed on its own. This is due to a Java limitation/interaction @@ -115,28 +128,24 @@ ambiguous. This section describes such issues. checking for a tty: script launches $SHELL in a pseudo-tty. This works on Linux but might not on other Posix-y platforms. - ECMA48 Backend - -------------- - - - Java's InputStreamReader requires a valid UTF-8 stream. The - default X10 encoding for mouse coordinates outside (160,94) can - corrupt that stream, at best putting garbage keyboard events in - the input queue but at worst causing the backend reader thread to - throw an Exception and exit and make the entire UI unusable. - Mouse support therefore requires a terminal that can deliver - either UTF-8 coordinates (1005 mode) or SGR coordinates (1006 - mode). Most modern terminals can do this. - - Use of 'stty' - ------------- + - Java's InputStreamReader as used by the ECMA48 backend requires a + valid UTF-8 stream. The default X10 encoding for mouse + coordinates outside (160,94) can corrupt that stream, at best + putting garbage keyboard events in the input queue but at worst + causing the backend reader thread to throw an Exception and exit + and make the entire UI unusable. Mouse support therefore requires + a terminal that can deliver either UTF-8 coordinates (1005 mode) + or SGR coordinates (1006 mode). Most modern terminals can do + this. - jexer.session.TTYSession calls 'stty size' once every second to check the current window size, performing the same function as ioctl(TIOCGWINSZ) but without requiring a native library. - jexer.io.ECMA48Terminal calls 'stty' to perform the equivalent of - cfmakeraw(). The terminal is (blindly!) put back in 'stty sane - cooked' mode when exiting. + cfmakeraw() when using System.in/out. System.out is also + (blindly!) put in 'stty sane cooked' mode when exiting. + System Properties @@ -164,10 +173,6 @@ Roadmap Many tasks remain before calling this version 1.0: -0.0.2: STABILIZE EXISTING - -- ECMA48Backend running on socket - 0.0.3: FINISH PORTING - TTreeView @@ -187,6 +192,7 @@ Many tasks remain before calling this version 1.0: 0.0.5: BUG HUNT - TSubMenu keyboard mnemonic not working +- Swing performance. Even with double buffering it isn't great. 0.1.0: BETA RELEASE