diff options
author | Sebastian Reichel <sre@ring0.de> | 2013-03-26 15:52:57 +0100 |
---|---|---|
committer | Sebastian Reichel <sre@ring0.de> | 2013-03-26 15:52:57 +0100 |
commit | 7bfb48ef84384ff0460f273ea5841fba628d2a46 (patch) | |
tree | 898d019f33a554f03cac91495adcb7165344382e /src/curses-ui/curses-ui.vala | |
parent | 03a4e9f901cd36792de2172b4ebb8f6e852fe1cd (diff) | |
download | serial-barcode-scanner-7bfb48ef84384ff0460f273ea5841fba628d2a46.tar.bz2 |
code restructure
Diffstat (limited to 'src/curses-ui/curses-ui.vala')
-rw-r--r-- | src/curses-ui/curses-ui.vala | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/curses-ui/curses-ui.vala b/src/curses-ui/curses-ui.vala new file mode 100644 index 0000000..ec007f2 --- /dev/null +++ b/src/curses-ui/curses-ui.vala @@ -0,0 +1,83 @@ +/* Copyright 2013, Sebastian Reichel <sre@ring0.de> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +public class CursesUI { + MessageBox messages; + Dialog dialog; + Logo banner; + ClockWindow clkwin; + StatusPanel statuswin; + + public CursesUI() { + /* unicode support */ + Intl.setlocale(LocaleCategory.CTYPE, ""); + + /* initialize curses */ + Curses.initscr(); + + /* disable cursor */ + Curses.curs_set(0); + + /* initialize color mode and define color pairs */ + Curses.start_color(); + Curses.init_pair(0, Curses.Color.WHITE, Curses.Color.BLACK); + Curses.init_pair(1, Curses.Color.GREEN, Curses.Color.BLACK); + Curses.init_pair(2, Curses.Color.WHITE, Curses.Color.RED); + + /* initialize widgets */ + banner = new Logo(); + statuswin = new StatusPanel(); + messages = new MessageBox(); + clkwin = new ClockWindow(); + + clkwin.update(); + + Timeout.add_seconds(10, update_time); + } + + ~CursesUI() { + exit(); + } + + public void exit() { + /* Reset the terminal mode */ + Curses.endwin(); + } + + bool update_time() { + clkwin.update(); + return true; + } + + public void status(string message) { + statuswin.set(message); + } + + public void log(string message) { + messages.add(message); + } + + public void dialog_open(string title, string message) { + dialog = new Dialog(message, title); + } + + public void dialog_close() { + dialog = null; + messages.redraw(); + banner.redraw(); + clkwin.redraw(); + statuswin.redraw(); + } +} |