about summary refs log tree commit diff stats
path: root/src/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/console.c3
-rw-r--r--src/ui/core.c10
-rw-r--r--src/ui/inputwin.c5
-rw-r--r--src/ui/ui.h111
-rw-r--r--src/ui/win_types.h145
5 files changed, 153 insertions, 121 deletions
diff --git a/src/ui/console.c b/src/ui/console.c
index 5f6b1ef0..7e071bd9 100644
--- a/src/ui/console.c
+++ b/src/ui/console.c
@@ -1560,7 +1560,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 20c9900f..e29cec6c 100644
--- a/src/ui/inputwin.c
+++ b/src/ui/inputwin.c
@@ -436,8 +436,9 @@ _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;
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