diff --git a/example/source/app.d b/example/source/app.d index 7ca321f..7f94f86 100644 --- a/example/source/app.d +++ b/example/source/app.d @@ -1,24 +1,13 @@ import ncui; -import std.stdio : writeln; +import simple; void main() { - auto config = SessionConfig(InputMode.raw, Cursor.normal, Echo.on, Keypad.on); - Session session; - try { - session = new Session(config); - } catch (Exception e) { - writeln("Не удалось инициализировать сессию:\n\t", e.msg); - return; - } - - try { - session.close(); - } catch (Exception e) { - writeln("Не удалось закрыть сессию:\n\t", e.msg); - return; - } + setLogLevel(LogLevel.info); - writeln("OK"); + auto config = SessionConfig(InputMode.raw, Cursor.hidden, Echo.off, Keypad.on); + NCUI ncui = new NCUI(config); + auto window = new Simple(); + ncui.run(window); } diff --git a/example/source/simple/app.d b/example/source/simple/app.d new file mode 100644 index 0000000..ba8b522 --- /dev/null +++ b/example/source/simple/app.d @@ -0,0 +1,45 @@ +module simple.app; + +import ncui; + +import deimos.ncurses; + +final class Simple : ScreenBase +{ + override ScreenAction onShow(ScreenContext context) + { + int height = getmaxy(context.session.root()); + int width = getmaxx(context.session.root()); + + if (_window !is null) + { + _window.close(); + } + + _window = new Window(height / 2, width / 2, 0, 0); + _window.erase(); + + _window.border(); + + _window.refresh(); + + return ScreenAction.none(); + } + + override ScreenAction handle(ScreenContext context, KeyEvent event) + { + if (event.status == ERR) + { + return ScreenAction.quit(ScreenResult.none()); + } + + if (event.isChar) + { + if (event.ch == 27) { + return ScreenAction.quit(ScreenResult.none()); + } + } + + return ScreenAction.none(); + } +} diff --git a/example/source/simple/package.d b/example/source/simple/package.d new file mode 100644 index 0000000..6db600c --- /dev/null +++ b/example/source/simple/package.d @@ -0,0 +1,3 @@ +module simple; + +public import simple.app;