about summary refs log tree commit diff stats
path: root/src/ui
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2013-05-12 22:57:36 +0100
committerJames Booth <boothj5@gmail.com>2013-05-12 23:00:29 +0100
commit57e64bebe58f051eafc90b27ebe328128fe47095 (patch)
tree54b3e7b6daac3c9a3afcf258ee59474df0fb9892 /src/ui
parentc1ee75da40b5fa633cb7a3efd699c217a3c88ff0 (diff)
downloadprofani-tty-57e64bebe58f051eafc90b27ebe328128fe47095.tar.gz
Added parameter to /close
2,3,4,5,6,7,8,9,0 will close specified window.
'all' will close all windows.

closes #159
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/core.c39
-rw-r--r--src/ui/ui.h6
2 files changed, 45 insertions, 0 deletions
diff --git a/src/ui/core.c b/src/ui/core.c
index 1e9d18e4..992a5701 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -205,6 +205,11 @@ ui_windows_full(void)
     return TRUE;
 }
 
+gboolean ui_win_exists(int index)
+{
+    return (windows[index] != NULL);
+}
+
 gboolean
 ui_duck_exists(void)
 {
@@ -550,12 +555,46 @@ ui_close_current(void)
     current_win_dirty = TRUE;
 }
 
+void ui_close_win(int index)
+{
+    win_free(windows[index]);
+    windows[index] = NULL;
+    status_bar_inactive(index);
+
+    if (index == current_index) {
+        _set_current(0);
+    }
+
+    status_bar_active(0);
+    title_bar_title();
+
+    current_win_dirty = TRUE;
+}
+
 win_type_t
 ui_current_win_type(void)
 {
     return current->type;
 }
 
+int
+ui_current_win_index(void)
+{
+    return current_index;
+}
+
+win_type_t
+ui_win_type(int index)
+{
+    return windows[index]->type;
+}
+
+char *
+ui_recipient(int index)
+{
+    return strdup(windows[index]->from);
+}
+
 char *
 ui_current_recipient(void)
 {
diff --git a/src/ui/ui.h b/src/ui/ui.h
index 6d110100..83441311 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -69,11 +69,17 @@ void ui_console_dirty(void);
 void ui_close_current(void);
 void ui_clear_current(void);
 win_type_t ui_current_win_type(void);
+int ui_current_win_index(void);
 char* ui_current_recipient(void);
 void ui_current_print_line(const char * const msg, ...);
 void ui_current_error_line(const char * const msg);
 void ui_current_page_off(void);
 
+win_type_t ui_win_type(int index);
+char * ui_recipient(int index);
+void ui_close_win(int index);
+gboolean ui_win_exists(int index);
+
 // ui events
 void ui_contact_typing(const char * const from);
 void ui_incoming_msg(const char * const from, const char * const message,