diff options
Diffstat (limited to 'src/ui')
-rw-r--r-- | src/ui/console.c | 3 | ||||
-rw-r--r-- | src/ui/core.c | 10 | ||||
-rw-r--r-- | src/ui/inputwin.c | 11 | ||||
-rw-r--r-- | src/ui/ui.h | 111 | ||||
-rw-r--r-- | src/ui/win_types.h | 145 |
5 files changed, 157 insertions, 123 deletions
diff --git a/src/ui/console.c b/src/ui/console.c index 118656dd..1e20c964 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -1564,7 +1564,8 @@ cons_show_contacts(GSList *list) void cons_alert(void) { - if (ui_current_win_type() != WIN_CONSOLE) { + ProfWin *current = wins_get_current(); + if (current->type != WIN_CONSOLE) { status_bar_new(1); } } diff --git a/src/ui/core.c b/src/ui/core.c index f517d51d..10c5d347 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -689,7 +689,8 @@ ui_invalid_command_usage(const char * const usage, void (*setting_func)(void)) } else { cons_show(""); cons_show("Usage: %s", usage); - if (ui_current_win_type() == WIN_CHAT) { + ProfWin *current = wins_get_current(); + if (current->type == WIN_CHAT) { char usage_cpy[strlen(usage) + 8]; sprintf(usage_cpy, "Usage: %s", usage); ui_current_print_line(usage_cpy); @@ -1145,13 +1146,6 @@ ui_swap_wins(int source_win, int target_win) } win_type_t -ui_current_win_type(void) -{ - ProfWin *current = wins_get_current(); - return current->type; -} - -win_type_t ui_win_type(int index) { ProfWin *window = wins_get_by_num(index); diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c index 57814414..e29cec6c 100644 --- a/src/ui/inputwin.c +++ b/src/ui/inputwin.c @@ -415,7 +415,8 @@ _inp_rl_getc(FILE *stream) { int ch = rl_getc(stream); if (_inp_printable(ch)) { - cmd_reset_autocomplete(); + ProfWin *window = wins_get_current(); + cmd_reset_autocomplete(window); } return ch; } @@ -435,14 +436,16 @@ _inp_rl_tab_handler(int count, int key) return 0; } - if ((strncmp(rl_line_buffer, "/", 1) != 0) && (ui_current_win_type() == WIN_MUC)) { - char *result = muc_autocomplete(rl_line_buffer); + ProfWin *current = wins_get_current(); + if ((strncmp(rl_line_buffer, "/", 1) != 0) && (current->type == WIN_MUC)) { + char *result = muc_autocomplete(current, rl_line_buffer); if (result) { rl_replace_line(result, 0); rl_point = rl_end; } } else if (strncmp(rl_line_buffer, "/", 1) == 0) { - char *result = cmd_autocomplete(rl_line_buffer); + ProfWin *window = wins_get_current(); + char *result = cmd_autocomplete(window, rl_line_buffer); if (result) { rl_replace_line(result, 0); rl_point = rl_end; diff --git a/src/ui/ui.h b/src/ui/ui.h index abe50435..396bae1c 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -35,122 +35,15 @@ #ifndef UI_UI_H #define UI_UI_H -#include "config.h" - -#include <wchar.h> -#include <glib.h> -#ifdef HAVE_NCURSESW_NCURSES_H -#include <ncursesw/ncurses.h> -#elif HAVE_NCURSES_H -#include <ncurses.h> -#endif - -#include "contact.h" -#include "jid.h" -#include "xmpp/xmpp.h" -#include "ui/buffer.h" -#include "chat_state.h" +#include "ui/win_types.h" #include "muc.h" -#define LAYOUT_SPLIT_MEMCHECK 12345671 -#define PROFCHATWIN_MEMCHECK 22374522 -#define PROFMUCWIN_MEMCHECK 52345276 -#define PROFPRIVATEWIN_MEMCHECK 77437483 -#define PROFCONFWIN_MEMCHECK 64334685 -#define PROFXMLWIN_MEMCHECK 87333463 - #define NO_ME 1 #define NO_DATE 2 #define NO_EOL 4 #define NO_COLOUR_FROM 8 #define NO_COLOUR_DATE 16 -typedef enum { - LAYOUT_SIMPLE, - LAYOUT_SPLIT -} layout_type_t; - -typedef struct prof_layout_t { - layout_type_t type; - WINDOW *win; - ProfBuff buffer; - int y_pos; - int paged; -} ProfLayout; - -typedef struct prof_layout_simple_t { - ProfLayout base; -} ProfLayoutSimple; - -typedef struct prof_layout_split_t { - ProfLayout base; - WINDOW *subwin; - int sub_y_pos; - unsigned long memcheck; -} ProfLayoutSplit; - -typedef enum { - WIN_CONSOLE, - WIN_CHAT, - WIN_MUC, - WIN_MUC_CONFIG, - WIN_PRIVATE, - WIN_XML -} win_type_t; - -typedef enum { - PROF_ENC_NONE, - PROF_ENC_OTR -} prof_enc_t; - -typedef struct prof_win_t { - win_type_t type; - ProfLayout *layout; -} ProfWin; - -typedef struct prof_console_win_t { - ProfWin window; -} ProfConsoleWin; - -typedef struct prof_chat_win_t { - ProfWin window; - char *barejid; - int unread; - ChatState *state; - prof_enc_t enc_mode; - gboolean otr_is_trusted; - char *resource_override; - gboolean history_shown; - unsigned long memcheck; -} ProfChatWin; - -typedef struct prof_muc_win_t { - ProfWin window; - char *roomjid; - int unread; - gboolean showjid; - unsigned long memcheck; -} ProfMucWin; - -typedef struct prof_mucconf_win_t { - ProfWin window; - char *roomjid; - DataForm *form; - unsigned long memcheck; -} ProfMucConfWin; - -typedef struct prof_private_win_t { - ProfWin window; - char *fulljid; - int unread; - unsigned long memcheck; -} ProfPrivateWin; - -typedef struct prof_xml_win_t { - ProfWin window; - unsigned long memcheck; -} ProfXMLWin; - // ui startup and control void ui_init(void); void ui_load_colours(void); @@ -193,8 +86,6 @@ int ui_close_all_wins(void); int ui_close_read_wins(void); // current window actions -win_type_t ui_current_win_type(void); - void ui_current_print_line(const char * const msg, ...); void ui_current_print_formatted_line(const char show_char, int attrs, const char * const msg, ...); void ui_current_error_line(const char * const msg); diff --git a/src/ui/win_types.h b/src/ui/win_types.h new file mode 100644 index 00000000..7e757b88 --- /dev/null +++ b/src/ui/win_types.h @@ -0,0 +1,145 @@ +/* + * win_types.h + * + * Copyright (C) 2012 - 2015 James Booth <boothj5@gmail.com> + * + * This file is part of Profanity. + * + * Profanity is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Profanity is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Profanity. If not, see <http://www.gnu.org/licenses/>. + * + * In addition, as a special exception, the copyright holders give permission to + * link the code of portions of this program with the OpenSSL library under + * certain conditions as described in each individual source file, and + * distribute linked combinations including the two. + * + * You must obey the GNU General Public License in all respects for all of the + * code used other than OpenSSL. If you modify file(s) with this exception, you + * may extend this exception to your version of the file(s), but you are not + * obligated to do so. If you do not wish to do so, delete this exception + * statement from your version. If you delete this exception statement from all + * source files in the program, then also delete it here. + * + */ + +#ifndef UI_WIN_TYPES_H +#define UI_WIN_TYPES_H + +#include "config.h" + +#include <wchar.h> +#include <glib.h> +#ifdef HAVE_NCURSESW_NCURSES_H +#include <ncursesw/ncurses.h> +#elif HAVE_NCURSES_H +#include <ncurses.h> +#endif + +#include "xmpp/xmpp.h" +#include "ui/buffer.h" +#include "chat_state.h" + +#define LAYOUT_SPLIT_MEMCHECK 12345671 +#define PROFCHATWIN_MEMCHECK 22374522 +#define PROFMUCWIN_MEMCHECK 52345276 +#define PROFPRIVATEWIN_MEMCHECK 77437483 +#define PROFCONFWIN_MEMCHECK 64334685 +#define PROFXMLWIN_MEMCHECK 87333463 + +typedef enum { + LAYOUT_SIMPLE, + LAYOUT_SPLIT +} layout_type_t; + +typedef struct prof_layout_t { + layout_type_t type; + WINDOW *win; + ProfBuff buffer; + int y_pos; + int paged; +} ProfLayout; + +typedef struct prof_layout_simple_t { + ProfLayout base; +} ProfLayoutSimple; + +typedef struct prof_layout_split_t { + ProfLayout base; + WINDOW *subwin; + int sub_y_pos; + unsigned long memcheck; +} ProfLayoutSplit; + +typedef enum { + WIN_CONSOLE, + WIN_CHAT, + WIN_MUC, + WIN_MUC_CONFIG, + WIN_PRIVATE, + WIN_XML +} win_type_t; + +typedef enum { + PROF_ENC_NONE, + PROF_ENC_OTR +} prof_enc_t; + +typedef struct prof_win_t { + win_type_t type; + ProfLayout *layout; +} ProfWin; + +typedef struct prof_console_win_t { + ProfWin window; +} ProfConsoleWin; + +typedef struct prof_chat_win_t { + ProfWin window; + char *barejid; + int unread; + ChatState *state; + prof_enc_t enc_mode; + gboolean otr_is_trusted; + char *resource_override; + gboolean history_shown; + unsigned long memcheck; +} ProfChatWin; + +typedef struct prof_muc_win_t { + ProfWin window; + char *roomjid; + int unread; + gboolean showjid; + unsigned long memcheck; +} ProfMucWin; + +typedef struct prof_mucconf_win_t { + ProfWin window; + char *roomjid; + DataForm *form; + unsigned long memcheck; +} ProfMucConfWin; + +typedef struct prof_private_win_t { + ProfWin window; + char *fulljid; + int unread; + unsigned long memcheck; +} ProfPrivateWin; + +typedef struct prof_xml_win_t { + ProfWin window; + unsigned long memcheck; +} ProfXMLWin; + +#endif |