]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - gui.c
gui: Use whline() for drawing the separator.
[paraslash.git] / gui.c
diff --git a/gui.c b/gui.c
index 49f595137ac4c18315ba36e9fa5ffbdef2f69663..a6bc54a738ff5e255675fbbe9902d09afabc281f 100644 (file)
--- a/gui.c
+++ b/gui.c
@@ -30,8 +30,6 @@
 INIT_GUI_ERRLISTS;
 static char *stat_content[NUM_STAT_ITEMS];
 
-#define STANDARD_STATUS_BAR "para_gui " PACKAGE_VERSION " (hit ? for help)"
-
 static int signal_pipe;
 
 static struct gui_window {
@@ -75,7 +73,6 @@ enum gui_color_pair {
        COLOR_OUTPUT,
        COLOR_MSG,
        COLOR_ERRMSG,
-       COLOR_WELCOME,
        COLOR_SEPARATOR,
        COLOR_TOP,
        COLOR_BOT,
@@ -362,20 +359,14 @@ __printf_2_3 static void print_in_bar(int color, const char *fmt,...)
        wrefresh(in.win);
 }
 
-/*
- * update the status bar
- */
 static void print_status_bar(void)
 {
        char *tmp;
 
-       if (!curses_active)
-               return;
-       tmp = para_strdup(STANDARD_STATUS_BAR);
+       tmp = para_strdup("para_gui " PACKAGE_VERSION " (hit ? for help)");
        wmove(sb.win, 0, 0);
        align_str(sb.win, tmp, sb.cols, CENTER);
        free(tmp);
-       wrefresh(sb.win);
 }
 
 /*
@@ -597,22 +588,11 @@ __noreturn __printf_2_3 static void msg_n_exit(int ret, const char* fmt, ...)
        kill_pg_and_die(ret);
 }
 
-static void print_welcome(void)
-{
-       if (loglevel > LL_NOTICE)
-               return;
-       outputf(COLOR_WELCOME, "Welcome to %s. Theme: %s",
-               version_single_line("gui"), theme.name);
-       wclrtoeol(bot.win);
-}
-
 /*
  * init all windows
  */
 static void init_wins(int top_lines)
 {
-       int i;
-
        top.lines = top_lines;
        top.cols = COLS;
        top.begy = 0;
@@ -679,17 +659,15 @@ static void init_wins(int top_lines)
                keypad(bot.win, 1);
                keypad(sb.win, 1);
                keypad(in.win, 1);
-               print_status_bar();
        }
        wmove(sep.win, 0, 0);
-       for (i = 1; i <= COLS; i++)
-               waddstr(sep.win, theme.sep_str);
+       whline(sep.win, theme.sep_char, COLS);
        wclear(top.win);
        //wclear(bot.win);
        wnoutrefresh(top.win);
        wnoutrefresh(bot.win);
-       //wnoutrefresh(sb.win);
        print_status_bar();
+       wnoutrefresh(sb.win);
        wnoutrefresh(in.win);
        wnoutrefresh(sep.win);
        doupdate();
@@ -822,7 +800,6 @@ static void init_colors_or_die(void)
        init_pair_or_die(COLOR_OUTPUT, theme.output_fg, theme.output_bg);
        init_pair_or_die(COLOR_MSG, theme.msg_fg, theme.msg_bg);
        init_pair_or_die(COLOR_ERRMSG, theme.err_msg_fg, theme.err_msg_bg);
-       init_pair_or_die(COLOR_WELCOME, theme.welcome_fg, theme.welcome_bg);
        init_pair_or_die(COLOR_SEPARATOR, theme.sep_fg, theme.sep_bg);
        init_pair_or_die(COLOR_TOP, theme.default_fg, theme.default_bg);
        init_pair_or_die(COLOR_BOT, theme.default_fg, theme.default_bg);
@@ -1079,14 +1056,6 @@ check_return:
        case COMMAND_MODE:
                ret = wgetch(top.win);
                if (ret != ERR && ret != KEY_RESIZE) {
-                       if (command_fds[0] >= 0) {
-                               close(command_fds[0]);
-                               command_fds[0] = -1;
-                       }
-                       if (command_fds[1] >= 0) {
-                               close(command_fds[1]);
-                               command_fds[1] = -1;
-                       }
                        if (cmd_pid)
                                kill(cmd_pid, SIGTERM);
                        return -1;
@@ -1104,19 +1073,23 @@ check_return:
        goto repeat;
 }
 
-/*
- * read from command pipe and print data to bot window
- */
-static void send_output(void)
+/* read from command pipe and print data to bot window */
+static void exec_and_display_cmd(const char *cmd)
 {
-       int ret;
+       int ret, fds[3] = {0, 1, 1};
 
-       ret = mark_fd_nonblocking(command_fds[0]);
+       outputf(COLOR_COMMAND, "%s", cmd);
+       ret = para_exec_cmdline_pid(&cmd_pid, cmd, fds);
+       if (ret < 0)
+               return;
+       ret = mark_fd_nonblocking(fds[1]);
        if (ret < 0)
                goto fail;
-       ret = mark_fd_nonblocking(command_fds[1]);
+       ret = mark_fd_nonblocking(fds[2]);
        if (ret < 0)
                goto fail;
+       command_fds[0] = fds[1];
+       command_fds[1] = fds[2];
        if (do_select(COMMAND_MODE) >= 0)
                PARA_INFO_LOG("command complete\n");
        else
@@ -1131,34 +1104,18 @@ fail:
 
 static void para_cmd(char *cmd)
 {
-       int ret, fds[3] = {0, 1, 1};
-       char *c = make_message(BINDIR "/para_client -- %s", cmd);
+       char *c;
 
-       outputf(COLOR_COMMAND, "%s", c);
        print_in_bar(COLOR_MSG, "executing client command, hit any key to abort\n");
-       ret = para_exec_cmdline_pid(&cmd_pid, c, fds);
+       c = make_message(BINDIR "/para_client -- %s", cmd);
+       exec_and_display_cmd(c);
        free(c);
-       if (ret < 0)
-               return;
-       command_fds[0] = fds[1];
-       command_fds[1] = fds[2];
-       send_output();
 }
 
-/*
- * exec command and print output to bot win
- */
 static void display_cmd(char *cmd)
 {
-       int fds[3] = {0, 1, 1};
-
        print_in_bar(COLOR_MSG, "executing display command, hit any key to abort");
-       outputf(COLOR_COMMAND, "%s", cmd);
-       if (para_exec_cmdline_pid(&cmd_pid, cmd, fds) < 0)
-               return;
-       command_fds[0] = fds[1];
-       command_fds[1] = fds[2];
-       send_output();
+       exec_and_display_cmd(cmd);
 }
 
 /*
@@ -1566,7 +1523,6 @@ int main(int argc, char *argv[])
        setlocale(LC_CTYPE, "");
        initscr(); /* needed only once, always successful */
        init_curses();
-       print_welcome();
        for (;;) {
                print_status_bar();
                ret = do_select(GETCH_MODE);