about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2012-02-08 23:55:11 +0000
committerJames Booth <boothj5@gmail.com>2012-02-08 23:55:11 +0000
commitc8bf654e2cd234bfd35ca97d6994b078b1b9b5ba (patch)
tree068ab93e8a581829237357a01d254dacf8a94dfb
parenta7190ed7e483c6791e8f05fd3564d31bd17c8cfa (diff)
downloadprofani-tty-c8bf654e2cd234bfd35ca97d6994b078b1b9b5ba.tar.gz
Added seperate window modules
-rw-r--r--console_win.c18
-rw-r--r--input_bar.c36
-rw-r--r--input_win.c84
-rw-r--r--title_bar.c17
4 files changed, 155 insertions, 0 deletions
diff --git a/console_win.c b/console_win.c
new file mode 100644
index 00000000..b303d0e3
--- /dev/null
+++ b/console_win.c
@@ -0,0 +1,18 @@
+#include <ncurses.h>
+#include "windows.h"
+
+static WINDOW *cons_win;
+
+void create_console_window(void)
+{
+    int rows, cols;
+    getmaxyx(stdscr, rows, cols);
+
+    cons_win = newwin(rows-3, cols, 1, 0);
+    scrollok(cons_win, TRUE);
+
+    waddstr(cons_win, "Welcome to Profanity.\n");
+    touchwin(cons_win);
+    wrefresh(cons_win);
+}
+
diff --git a/input_bar.c b/input_bar.c
new file mode 100644
index 00000000..3d44e69b
--- /dev/null
+++ b/input_bar.c
@@ -0,0 +1,36 @@
+#include <ncurses.h>
+#include "windows.h"
+
+static WINDOW *inp_bar;
+
+void create_input_bar(void)
+{
+    int rows, cols;
+    getmaxyx(stdscr, rows, cols);
+
+    inp_bar = newwin(1, cols, rows-2, 0);
+    wbkgd(inp_bar, COLOR_PAIR(3));
+    wrefresh(inp_bar);
+}
+
+void inp_bar_inactive(int win)
+{
+    mvwaddch(inp_bar, 0, 30 + win, ' ');
+    if (win == 9)
+        mvwaddch(inp_bar, 0, 30 + win + 1, ' ');
+    wrefresh(inp_bar);
+}
+
+void inp_bar_active(int win)
+{
+    mvwprintw(inp_bar, 0, 30 + win, "%d", win+1);
+    touchwin(inp_bar);
+    wrefresh(inp_bar);
+}
+
+void inp_bar_print_message(char *msg)
+{
+    mvwprintw(inp_bar, 0, 0, msg);
+    wrefresh(inp_bar);
+}
+
diff --git a/input_win.c b/input_win.c
new file mode 100644
index 00000000..76ec2829
--- /dev/null
+++ b/input_win.c
@@ -0,0 +1,84 @@
+#include <ncurses.h>
+#include "windows.h"
+
+static WINDOW *inp_win;
+
+void create_input_window(void)
+{
+    int rows, cols;
+    getmaxyx(stdscr, rows, cols);
+
+    inp_win = newwin(1, cols, rows-1, 0);
+    keypad(inp_win, TRUE);
+    wrefresh(inp_win);
+}
+
+void inp_get_command_str(char *cmd)
+{
+    wmove(inp_win, 0, 0);
+    wgetstr(inp_win, cmd);
+}
+
+void inp_clear(void)
+{
+    wclear(inp_win);
+    wmove(inp_win, 0, 0);
+    wrefresh(inp_win);
+}
+
+void inp_non_block(void)
+{
+    wtimeout(inp_win, 0);
+}
+
+void inp_poll_char(int *ch, char command[], int *size)
+{
+    int inp_y = 0;
+    int inp_x = 0;
+
+    // move cursor back to inp_win
+    getyx(inp_win, inp_y, inp_x);
+    wmove(inp_win, inp_y, inp_x);
+
+    // echo off, and get some more input
+    noecho();
+    *ch = wgetch(inp_win);
+
+    // if delete pressed, go back and delete it
+    if (*ch == 127) {
+        if (*size > 0) {
+            getyx(inp_win, inp_y, inp_x);
+            wmove(inp_win, inp_y, inp_x-1);
+            wdelch(inp_win);
+            (*size)--;
+        }
+    }
+
+    // else if not error or newline, show it and store it
+    else if (*ch != ERR &&
+             *ch != '\n' &&
+             *ch != KEY_F(1) &&
+             *ch != KEY_F(2) &&
+             *ch != KEY_F(3) &&
+             *ch != KEY_F(4) &&
+             *ch != KEY_F(5) &&
+             *ch != KEY_F(6) &&
+             *ch != KEY_F(7) &&
+             *ch != KEY_F(8) &&
+             *ch != KEY_F(9) &&
+             *ch != KEY_F(10)) {
+        waddch(inp_win, *ch);
+        command[(*size)++] = *ch;
+    }
+
+    echo();
+}
+
+void inp_get_password(char *passwd)
+{
+    wclear(inp_win);
+    noecho();
+    mvwgetstr(inp_win, 0, 0, passwd);
+    echo();
+}
+
diff --git a/title_bar.c b/title_bar.c
new file mode 100644
index 00000000..61e3776e
--- /dev/null
+++ b/title_bar.c
@@ -0,0 +1,17 @@
+#include <ncurses.h>
+#include "windows.h"
+
+static WINDOW *title_bar;
+
+void create_title_bar(void)
+{
+    char *title = "Profanity";
+
+    int rows, cols;
+    getmaxyx(stdscr, rows, cols);
+
+    title_bar = newwin(1, cols, 0, 0);
+    wbkgd(title_bar, COLOR_PAIR(3));
+    mvwprintw(title_bar, 0, 0, title);
+    wrefresh(title_bar);
+}