summaryrefslogtreecommitdiffstats
path: root/src/ui/curses-ui.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/curses-ui.vala')
-rw-r--r--src/ui/curses-ui.vala68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/ui/curses-ui.vala b/src/ui/curses-ui.vala
new file mode 100644
index 0000000..6676eea
--- /dev/null
+++ b/src/ui/curses-ui.vala
@@ -0,0 +1,68 @@
+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();
+ }
+}