Reorganise luacurses
[project/luci.git] / contrib / luacurses / test / filter.lua
diff --git a/contrib/luacurses/test/filter.lua b/contrib/luacurses/test/filter.lua
new file mode 100644 (file)
index 0000000..f8f6ef5
--- /dev/null
@@ -0,0 +1,49 @@
+
+require("curses");
+
+function read_cmd()
+    curses.attron(curses.A_BOLD);
+    curses.addstr("Command: ");
+    curses.attron(underline);
+    local s = "";
+    while (true) do
+       local c = string.char(curses.getch());
+       if (c == '\n') then break; end
+       s = s .. c;
+    end
+    curses.attroff(underline);
+    curses.attroff(curses.A_BOLD);
+    curses.addch("\n");
+
+    return s;
+end
+
+
+curses.filter();
+curses.initscr();
+curses.cbreak();
+curses.keypad(curses.stdscr(), TRUE);
+
+if (curses.has_colors()) then
+    curses.start_color();
+    curses.init_pair(1, curses.COLOR_CYAN, curses.COLOR_BLACK);
+    underline = curses.COLOR_PAIR(1);
+else
+    underline = curses.A_UNDERLINE;
+end
+
+while (true) do
+    local s = read_cmd();
+    if (s == "exit") then break; end
+    curses.reset_shell_mode();
+    io.write("\n");
+    io.flush(io.stdout);
+    os.execute(s);
+    curses.reset_prog_mode();
+    curses.touchwin(curses.stdscr());
+    curses.erase();
+    curses.refresh();
+end
+
+curses.endwin();
+