From e091b36b14ac404246aa899c5c3b50f6f6d8d527 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Fri, 15 Nov 2013 14:38:58 -0500 Subject: [PATCH] move prompt help command to global_commands.c --- src/execute.c | 31 +++++++++++++++++-------------- src/global_commands.c | 27 +++++++++++++++++++++++++++ src/global_commands.h | 1 + src/main.c | 3 --- src/prompt.c | 36 ++---------------------------------- 5 files changed, 47 insertions(+), 51 deletions(-) diff --git a/src/execute.c b/src/execute.c index 0a2a285..182761d 100644 --- a/src/execute.c +++ b/src/execute.c @@ -15,21 +15,22 @@ struct cmd_func { void (*func)(WINDOW *, ToxWindow *, Tox *m, int num, int argc, char (*argv)[MAX_STR_SIZE]); }; -#define GLOBAL_NUM_COMMANDS 12 +#define GLOBAL_NUM_COMMANDS 13 static struct cmd_func global_commands[] = { - { "/accept", cmd_accept }, - { "/add", cmd_add }, - { "/clear", cmd_clear }, - { "/connect", cmd_connect }, - { "/exit", cmd_quit }, - { "/groupchat", cmd_groupchat }, - { "/myid", cmd_myid }, - { "/nick", cmd_nick }, - { "/note", cmd_note }, - { "/q", cmd_quit }, - { "/quit", cmd_quit }, - { "/status", cmd_status }, + { "/accept", cmd_accept }, + { "/add", cmd_add }, + { "/clear", cmd_clear }, + { "/connect", cmd_connect }, + { "/exit", cmd_quit }, + { "/groupchat", cmd_groupchat }, + { "/help", cmd_prompt_help }, + { "/myid", cmd_myid }, + { "/nick", cmd_nick }, + { "/note", cmd_note }, + { "/q", cmd_quit }, + { "/quit", cmd_quit }, + { "/status", cmd_status }, }; #define CHAT_NUM_COMMANDS 5 @@ -105,7 +106,9 @@ void execute(WINDOW *w, ToxWindow *prompt, Tox *m, int num, char *cmd, int mode) return; /* Try to match input command to command functions. If non-global command mode is specified, - try specified mode's commands first, then upon failure try global commands. */ + try specified mode's commands first, then upon failure try global commands. + + Note: Global commands must come last in case of duplicate command names */ switch (mode) { case CHAT_COMMAND_MODE: if (do_command(w, prompt, m, num, num_args, CHAT_NUM_COMMANDS, chat_commands, args) == 0) diff --git a/src/global_commands.c b/src/global_commands.c index 78111af..80c5a4f 100644 --- a/src/global_commands.c +++ b/src/global_commands.c @@ -260,6 +260,33 @@ void cmd_note(WINDOW *window, ToxWindow *prompt, Tox *m, int num, int argc, char prompt_update_statusmessage(prompt, msg, len); } +void cmd_prompt_help(WINDOW *window, ToxWindow *prompt, Tox *m, int num, int argc, char (*argv)[MAX_STR_SIZE]) +{ + wclear(window); + wattron(window, COLOR_PAIR(CYAN) | A_BOLD); + wprintw(window, "\n\nCommands:\n"); + wattroff(window, A_BOLD); + + wprintw(window, " /add : Add friend with optional message\n"); + wprintw(window, " /accept : Accept friend request\n"); + wprintw(window, " /connect : Manually connect to a DHT server\n"); + wprintw(window, " /status : Set your status with optional note\n"); + wprintw(window, " /note : Set a personal note\n"); + wprintw(window, " /nick : Set your nickname\n"); + wprintw(window, " /groupchat : Create a group chat\n"); + wprintw(window, " /myid : Print your ID\n"); + wprintw(window, " /quit or /exit : Exit Toxic\n"); + wprintw(window, " /help : Print this message again\n"); + wprintw(window, " /clear : Clear this window\n"); + + wattron(window, A_BOLD); + wprintw(window, " * Argument messages must be enclosed in quotation marks.\n"); + wprintw(window, " * Use the TAB key to navigate through the tabs.\n"); + wattroff(window, A_BOLD); + + wattroff(window, COLOR_PAIR(CYAN)); +} + void cmd_quit(WINDOW *window, ToxWindow *prompt, Tox *m, int num, int argc, char (*argv)[MAX_STR_SIZE]) { exit_toxic(m); diff --git a/src/global_commands.h b/src/global_commands.h index d83e2b2..fe167c2 100644 --- a/src/global_commands.h +++ b/src/global_commands.h @@ -10,5 +10,6 @@ void cmd_groupchat(WINDOW *, ToxWindow *, Tox *m, int num, int argc, char (*argv void cmd_myid(WINDOW *, ToxWindow *, Tox *m, int num, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_nick(WINDOW *, ToxWindow *, Tox *m, int num, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_note(WINDOW *, ToxWindow *, Tox *m, int num, int argc, char (*argv)[MAX_STR_SIZE]); +void cmd_prompt_help(WINDOW *window, ToxWindow *prompt, Tox *m, int num, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_quit(WINDOW *, ToxWindow *, Tox *m, int num, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_status(WINDOW *, ToxWindow *, Tox *m, int num, int argc, char (*argv)[MAX_STR_SIZE]); diff --git a/src/main.c b/src/main.c index 9cda387..0eb141c 100644 --- a/src/main.c +++ b/src/main.c @@ -365,9 +365,6 @@ static void close_file_sender(Tox *m, int i) static void do_file_senders(Tox *m) { - if (num_file_senders == 0) - return; - int i; for (i = 0; i < num_file_senders; ++i) { diff --git a/src/prompt.c b/src/prompt.c index 5800906..69e4820 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -72,33 +72,6 @@ static int add_friend_request(uint8_t *public_key) return -1; } -static void print_prompt_help(ToxWindow *self) -{ - wclear(self->window); - wattron(self->window, COLOR_PAIR(CYAN) | A_BOLD); - wprintw(self->window, "\n\nCommands:\n"); - wattroff(self->window, A_BOLD); - - wprintw(self->window, " /add : Add friend with optional message\n"); - wprintw(self->window, " /accept : Accept friend request\n"); - wprintw(self->window, " /connect : Manually connect to a DHT server\n"); - wprintw(self->window, " /status : Set your status with optional note\n"); - wprintw(self->window, " /note : Set a personal note\n"); - wprintw(self->window, " /nick : Set your nickname\n"); - wprintw(self->window, " /groupchat : Create a group chat\n"); - wprintw(self->window, " /myid : Print your ID\n"); - wprintw(self->window, " /quit or /exit : Exit Toxic\n"); - wprintw(self->window, " /help : Print this message again\n"); - wprintw(self->window, " /clear : Clear this window\n"); - - wattron(self->window, A_BOLD); - wprintw(self->window, " * Argument messages must be enclosed in quotation marks.\n"); - wprintw(self->window, " * Use the TAB key to navigate through the tabs.\n"); - wattroff(self->window, A_BOLD); - - wattroff(self->window, COLOR_PAIR(CYAN)); -} - static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key) { int x, y, y2, x2; @@ -129,12 +102,7 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key) /* RETURN key: execute command */ else if (key == '\n') { wprintw(self->window, "\n"); - - if (!strncmp(prompt_buf, "/help", strlen("/help"))) - print_prompt_help(self); - else - execute(self->window, self, m, self->num, prompt_buf, GLOBAL_COMMAND_MODE); - + execute(self->window, self, m, self->num, prompt_buf, GLOBAL_COMMAND_MODE); prompt_buf_pos = 0; prompt_buf[0] = '\0'; } @@ -212,7 +180,7 @@ static void prompt_onDraw(ToxWindow *self, Tox *m) static void prompt_onInit(ToxWindow *self, Tox *m) { scrollok(self->window, true); - print_prompt_help(self); + execute(self->window, self, m, self->num, "/help", GLOBAL_COMMAND_MODE); wclrtoeol(self->window); }