From a780168566eb4594b811c3324ff2456a9ba1358d Mon Sep 17 00:00:00 2001 From: James Booth Date: Mon, 15 Jun 2015 16:27:42 +0100 Subject: [PATCH 1/8] Updated boothj5 theme --- themes/boothj5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/boothj5 b/themes/boothj5 index 0a710889..3f591fc1 100644 --- a/themes/boothj5 +++ b/themes/boothj5 @@ -17,7 +17,7 @@ statusbar=blue statusbar.text=bold_white statusbar.brackets=white statusbar.active=bold_cyan -statusbar.new=bold_green +statusbar.new=bold_white main.text=white main.text.me=cyan main.text.them=bold_white From 732533ee5ab58a6f0da2d90423d54e9e4520db04 Mon Sep 17 00:00:00 2001 From: James Booth Date: Mon, 15 Jun 2015 17:11:11 +0100 Subject: [PATCH 2/8] I removed ncurses header dependencies, removed unused code --- src/common.c | 12 ------------ src/common.h | 7 ------- src/config/preferences.c | 6 ------ src/config/preferences.h | 5 ----- src/config/theme.h | 5 ----- src/ui/ui.h | 5 ----- src/ui/window.h | 12 ++++++------ src/ui/windows.c | 6 ------ 8 files changed, 6 insertions(+), 52 deletions(-) diff --git a/src/common.c b/src/common.c index 4fa45608..832e85dd 100644 --- a/src/common.c +++ b/src/common.c @@ -253,18 +253,6 @@ utf8_display_len(const char * const str) return len; } -gboolean -utf8_is_printable(const wint_t ch) -{ - char bytes[MB_CUR_MAX+1]; - size_t utf_len = wcrtomb(bytes, ch, NULL); - bytes[utf_len] = '\0'; - - gunichar unichar = g_utf8_get_char(bytes); - - return g_unichar_isprint(unichar) && (ch != KEY_MOUSE); -} - char * prof_getline(FILE *stream) { diff --git a/src/common.h b/src/common.h index c1aa532d..9da0c974 100644 --- a/src/common.h +++ b/src/common.h @@ -38,12 +38,6 @@ #include #include -#ifdef HAVE_NCURSESW_NCURSES_H -#include -#elif HAVE_NCURSES_H -#include -#endif - #include #if !GLIB_CHECK_VERSION(2,28,0) @@ -113,7 +107,6 @@ char * str_replace(const char *string, const char *substr, int str_contains(const char str[], int size, char ch); gboolean strtoi_range(char *str, int *saveptr, int min, int max, char **err_msg); int utf8_display_len(const char * const str); -gboolean utf8_is_printable(const wint_t ch); char * prof_getline(FILE *stream); char* release_get_latest(void); gboolean release_is_new(char *found_version); diff --git a/src/config/preferences.c b/src/config/preferences.c index 36250cd8..62e2522b 100644 --- a/src/config/preferences.c +++ b/src/config/preferences.c @@ -41,12 +41,6 @@ #include #include -#ifdef HAVE_NCURSESW_NCURSES_H -#include -#elif HAVE_NCURSES_H -#include -#endif - #include "common.h" #include "log.h" #include "preferences.h" diff --git a/src/config/preferences.h b/src/config/preferences.h index d1faca63..273ce6bb 100644 --- a/src/config/preferences.h +++ b/src/config/preferences.h @@ -38,11 +38,6 @@ #include "config.h" #include -#ifdef HAVE_NCURSESW_NCURSES_H -#include -#elif HAVE_NCURSES_H -#include -#endif #define PREFS_MIN_LOG_SIZE 64 #define PREFS_MAX_LOG_SIZE 1048580 diff --git a/src/config/theme.h b/src/config/theme.h index 13099eb4..2ddbb17b 100644 --- a/src/config/theme.h +++ b/src/config/theme.h @@ -38,11 +38,6 @@ #include "config.h" #include -#ifdef HAVE_NCURSESW_NCURSES_H -#include -#elif HAVE_NCURSES_H -#include -#endif typedef enum { THEME_TEXT, diff --git a/src/ui/ui.h b/src/ui/ui.h index 29ee6bef..7a2c956b 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -40,11 +40,6 @@ #include #include -#ifdef HAVE_NCURSESW_NCURSES_H -#include -#elif HAVE_NCURSES_H -#include -#endif #include "contact.h" #include "jid.h" diff --git a/src/ui/window.h b/src/ui/window.h index 06fbf7b5..e4d9ca33 100644 --- a/src/ui/window.h +++ b/src/ui/window.h @@ -39,18 +39,18 @@ #include -#ifdef HAVE_NCURSESW_NCURSES_H -#include -#elif HAVE_NCURSES_H -#include -#endif - #include "contact.h" #include "muc.h" #include "ui/buffer.h" #include "xmpp/xmpp.h" #include "chat_state.h" +#ifdef HAVE_NCURSESW_NCURSES_H +#include +#elif HAVE_NCURSES_H +#include +#endif + #define NO_ME 1 #define NO_DATE 2 #define NO_EOL 4 diff --git a/src/ui/windows.c b/src/ui/windows.c index 2334efc8..38c7079a 100644 --- a/src/ui/windows.c +++ b/src/ui/windows.c @@ -40,12 +40,6 @@ #include -#ifdef HAVE_NCURSESW_NCURSES_H -#include -#elif HAVE_NCURSES_H -#include -#endif - #include "common.h" #include "roster_list.h" #include "config/theme.h" From e9aa4ea0845b2e387a6512402d73fbc31b7bd393 Mon Sep 17 00:00:00 2001 From: James Booth Date: Mon, 15 Jun 2015 17:40:22 +0100 Subject: [PATCH 3/8] Removed unused variable --- src/ui/windows.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/ui/windows.c b/src/ui/windows.c index 38c7079a..f3f6967b 100644 --- a/src/ui/windows.c +++ b/src/ui/windows.c @@ -51,7 +51,6 @@ static GHashTable *windows; static int current; -static int max_cols; void wins_init(void) @@ -59,7 +58,6 @@ wins_init(void) windows = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, (GDestroyNotify)win_free); - max_cols = getmaxx(stdscr); ProfWin *console = win_create_console(); g_hash_table_insert(windows, GINT_TO_POINTER(1), console); From a849b200b368a74da18291e875b3e6d37ea729f2 Mon Sep 17 00:00:00 2001 From: James Booth Date: Mon, 15 Jun 2015 17:54:47 +0100 Subject: [PATCH 4/8] Added win_clear() function --- src/command/commands.c | 3 ++- src/ui/core.c | 6 ------ src/ui/inputwin.c | 3 ++- src/ui/ui.h | 1 - src/ui/window.c | 7 +++++++ src/ui/window.h | 2 ++ src/ui/windows.c | 8 -------- src/ui/windows.h | 1 - 8 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/command/commands.c b/src/command/commands.c index 5d0f7a16..28cba7d7 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -3229,7 +3229,8 @@ cmd_tiny(gchar **args, struct cmd_help_t help) gboolean cmd_clear(gchar **args, struct cmd_help_t help) { - ui_clear_current(); + ProfWin *win = wins_get_current(); + win_clear(win); return TRUE; } diff --git a/src/ui/core.c b/src/ui/core.c index 3b29c094..e2efcb55 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -1082,12 +1082,6 @@ ui_untrust(const char * const barejid) } } -void -ui_clear_current(void) -{ - wins_clear_current(); -} - void ui_close_win(int index) { diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c index caea8ea9..6ef829a7 100644 --- a/src/ui/inputwin.c +++ b/src/ui/inputwin.c @@ -422,7 +422,8 @@ _inp_rl_getc(FILE *stream) static int _inp_rl_clear_handler(int count, int key) { - ui_clear_current(); + ProfWin *win = wins_get_current(); + win_clear(win); return 0; } diff --git a/src/ui/ui.h b/src/ui/ui.h index 7a2c956b..8e5ca6ab 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -88,7 +88,6 @@ int ui_close_all_wins(void); int ui_close_read_wins(void); // current window actions -void ui_clear_current(void); win_type_t ui_current_win_type(void); gboolean ui_current_win_is_otr(void); diff --git a/src/ui/window.c b/src/ui/window.c index 95b5e996..d6446ff1 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -458,6 +458,13 @@ win_sub_page_up(ProfWin *window) } } +void +win_clear(ProfWin *window) +{ + werase(window->layout->win); + win_update_virtual(window); +} + void win_mouse(ProfWin *window, const wint_t ch, const int result) { diff --git a/src/ui/window.h b/src/ui/window.h index e4d9ca33..8e5d17e8 100644 --- a/src/ui/window.h +++ b/src/ui/window.h @@ -192,6 +192,8 @@ void win_mark_received(ProfWin *window, const char * const id); int win_unread(ProfWin *window); gboolean win_has_active_subwin(ProfWin *window); +void win_clear(ProfWin *window); + void win_page_up(ProfWin *window); void win_page_down(ProfWin *window); void win_sub_page_down(ProfWin *window); diff --git a/src/ui/windows.c b/src/ui/windows.c index f3f6967b..cb0f00de 100644 --- a/src/ui/windows.c +++ b/src/ui/windows.c @@ -378,14 +378,6 @@ wins_close_by_num(int i) } } -void -wins_clear_current(void) -{ - ProfWin *window = wins_get_current(); - werase(window->layout->win); - win_update_virtual(window); -} - gboolean wins_is_current(ProfWin *window) { diff --git a/src/ui/windows.h b/src/ui/windows.h index 4cc527ca..4c753c03 100644 --- a/src/ui/windows.h +++ b/src/ui/windows.h @@ -68,7 +68,6 @@ int wins_get_num(ProfWin *window); int wins_get_current_num(void); void wins_close_current(void); void wins_close_by_num(int i); -void wins_clear_current(void); gboolean wins_is_current(ProfWin *window); int wins_get_total_unread(void); void wins_resize_all(void); From 989dde77cd545ea4cfdf23fbcd445eb121f4ae33 Mon Sep 17 00:00:00 2001 From: James Booth Date: Mon, 15 Jun 2015 18:08:47 +0100 Subject: [PATCH 5/8] Added win_resize() function --- src/ui/window.c | 33 +++++++++++++++++++++++++++++++++ src/ui/window.h | 1 + src/ui/windows.c | 30 +----------------------------- 3 files changed, 35 insertions(+), 29 deletions(-) diff --git a/src/ui/window.c b/src/ui/window.c index d6446ff1..b84755b5 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -465,6 +465,39 @@ win_clear(ProfWin *window) win_update_virtual(window); } +void +win_resize(ProfWin *window) +{ + int subwin_cols = 0; + int cols = getmaxx(stdscr); + + if (window->layout->type == LAYOUT_SPLIT) { + ProfLayoutSplit *layout = (ProfLayoutSplit*)window->layout; + if (layout->subwin) { + if (window->type == WIN_CONSOLE) { + subwin_cols = win_roster_cols(); + } else if (window->type == WIN_MUC) { + subwin_cols = win_occpuants_cols(); + } + wresize(layout->base.win, PAD_SIZE, cols - subwin_cols); + wresize(layout->subwin, PAD_SIZE, subwin_cols); + if (window->type == WIN_CONSOLE) { + rosterwin_roster(); + } else if (window->type == WIN_MUC) { + ProfMucWin *mucwin = (ProfMucWin *)window; + assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK); + occupantswin_occupants(mucwin->roomjid); + } + } else { + wresize(layout->base.win, PAD_SIZE, cols); + } + } else { + wresize(window->layout->win, PAD_SIZE, cols); + } + + win_redraw(window); +} + void win_mouse(ProfWin *window, const wint_t ch, const int result) { diff --git a/src/ui/window.h b/src/ui/window.h index 8e5d17e8..f799b1a6 100644 --- a/src/ui/window.h +++ b/src/ui/window.h @@ -193,6 +193,7 @@ int win_unread(ProfWin *window); gboolean win_has_active_subwin(ProfWin *window); void win_clear(ProfWin *window); +void win_resize(ProfWin *window); void win_page_up(ProfWin *window); void win_page_down(ProfWin *window); diff --git a/src/ui/windows.c b/src/ui/windows.c index cb0f00de..54bdb55e 100644 --- a/src/ui/windows.c +++ b/src/ui/windows.c @@ -464,39 +464,11 @@ wins_get_total_unread(void) void wins_resize_all(void) { - int cols = getmaxx(stdscr); - GList *values = g_hash_table_get_values(windows); GList *curr = values; while (curr) { ProfWin *window = curr->data; - int subwin_cols = 0; - - if (window->layout->type == LAYOUT_SPLIT) { - ProfLayoutSplit *layout = (ProfLayoutSplit*)window->layout; - if (layout->subwin) { - if (window->type == WIN_CONSOLE) { - subwin_cols = win_roster_cols(); - } else if (window->type == WIN_MUC) { - subwin_cols = win_occpuants_cols(); - } - wresize(layout->base.win, PAD_SIZE, cols - subwin_cols); - wresize(layout->subwin, PAD_SIZE, subwin_cols); - if (window->type == WIN_CONSOLE) { - rosterwin_roster(); - } else if (window->type == WIN_MUC) { - ProfMucWin *mucwin = (ProfMucWin *)window; - assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK); - occupantswin_occupants(mucwin->roomjid); - } - } else { - wresize(layout->base.win, PAD_SIZE, cols); - } - } else { - wresize(window->layout->win, PAD_SIZE, cols); - } - - win_redraw(window); + win_resize(window); curr = g_list_next(curr); } g_list_free(values); From 6b44b988f4bf8b8f63e6d9261b7ae9a05635bbc8 Mon Sep 17 00:00:00 2001 From: James Booth Date: Mon, 15 Jun 2015 18:59:20 +0100 Subject: [PATCH 6/8] Moved refresh subwin logic to window.c --- src/ui/window.c | 31 +++++++++++++++++++++++++++++++ src/ui/window.h | 3 +++ src/ui/windows.c | 23 ++--------------------- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/src/ui/window.c b/src/ui/window.c index b84755b5..92db25fa 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -570,6 +570,37 @@ win_update_virtual(ProfWin *window) } } +void +win_refresh_without_subwin(ProfWin *window) +{ + int rows, cols; + getmaxyx(stdscr, rows, cols); + + if ((window->type == WIN_MUC) || (window->type == WIN_CONSOLE)) { + pnoutrefresh(window->layout->win, window->layout->y_pos, 0, 1, 0, rows-3, cols-1); + } +} + +void +win_refresh_with_subwin(ProfWin *window) +{ + int rows, cols; + getmaxyx(stdscr, rows, cols); + int subwin_cols = 0; + + if (window->type == WIN_MUC) { + ProfLayoutSplit *layout = (ProfLayoutSplit*)window->layout; + subwin_cols = win_occpuants_cols(); + pnoutrefresh(layout->base.win, layout->base.y_pos, 0, 1, 0, rows-3, (cols-subwin_cols)-1); + pnoutrefresh(layout->subwin, layout->sub_y_pos, 0, 1, (cols-subwin_cols), rows-3, cols-1); + } else if (window->type == WIN_CONSOLE) { + ProfLayoutSplit *layout = (ProfLayoutSplit*)window->layout; + subwin_cols = win_roster_cols(); + pnoutrefresh(layout->base.win, layout->base.y_pos, 0, 1, 0, rows-3, (cols-subwin_cols)-1); + pnoutrefresh(layout->subwin, layout->sub_y_pos, 0, 1, (cols-subwin_cols), rows-3, cols-1); + } +} + void win_move_to_end(ProfWin *window) { diff --git a/src/ui/window.h b/src/ui/window.h index f799b1a6..6678da07 100644 --- a/src/ui/window.h +++ b/src/ui/window.h @@ -195,6 +195,9 @@ gboolean win_has_active_subwin(ProfWin *window); void win_clear(ProfWin *window); void win_resize(ProfWin *window); +void win_refresh_without_subwin(ProfWin *window); +void win_refresh_with_subwin(ProfWin *window); + void win_page_up(ProfWin *window); void win_page_down(ProfWin *window); void win_sub_page_down(ProfWin *window); diff --git a/src/ui/windows.c b/src/ui/windows.c index 54bdb55e..6472ce0c 100644 --- a/src/ui/windows.c +++ b/src/ui/windows.c @@ -480,38 +480,19 @@ wins_resize_all(void) void wins_hide_subwin(ProfWin *window) { - int rows, cols; - getmaxyx(stdscr, rows, cols); - win_hide_subwin(window); ProfWin *current_win = wins_get_current(); - if ((current_win->type == WIN_MUC) || (current_win->type == WIN_CONSOLE)) { - pnoutrefresh(current_win->layout->win, current_win->layout->y_pos, 0, 1, 0, rows-3, cols-1); - } + win_refresh_without_subwin(current_win); } void wins_show_subwin(ProfWin *window) { - int rows, cols; - getmaxyx(stdscr, rows, cols); - int subwin_cols = 0; - win_show_subwin(window); ProfWin *current_win = wins_get_current(); - if (current_win->type == WIN_MUC) { - ProfLayoutSplit *layout = (ProfLayoutSplit*)current_win->layout; - subwin_cols = win_occpuants_cols(); - pnoutrefresh(layout->base.win, layout->base.y_pos, 0, 1, 0, rows-3, (cols-subwin_cols)-1); - pnoutrefresh(layout->subwin, layout->sub_y_pos, 0, 1, (cols-subwin_cols), rows-3, cols-1); - } else if (current_win->type == WIN_CONSOLE) { - ProfLayoutSplit *layout = (ProfLayoutSplit*)current_win->layout; - subwin_cols = win_roster_cols(); - pnoutrefresh(layout->base.win, layout->base.y_pos, 0, 1, 0, rows-3, (cols-subwin_cols)-1); - pnoutrefresh(layout->subwin, layout->sub_y_pos, 0, 1, (cols-subwin_cols), rows-3, cols-1); - } + win_refresh_with_subwin(current_win); } ProfXMLWin * From 38ed9188d30b5968fc6b311597e82d8648b73819 Mon Sep 17 00:00:00 2001 From: James Booth Date: Mon, 15 Jun 2015 19:26:28 +0100 Subject: [PATCH 7/8] Moved ui/windows -> window_list --- Makefile.am | 4 ++-- src/command/command.c | 2 +- src/command/commands.c | 2 +- src/event/client_events.c | 2 +- src/event/ui_events.c | 4 ++-- src/muc.c | 4 ++-- src/profanity.c | 2 +- src/ui/console.c | 2 +- src/ui/core.c | 2 +- src/ui/inputwin.c | 2 +- src/ui/notifier.c | 2 +- src/ui/occupantswin.c | 4 ++-- src/ui/rosterwin.c | 4 ++-- src/ui/titlebar.c | 2 +- src/{ui/windows.c => window_list.c} | 4 ++-- src/{ui/windows.h => window_list.h} | 6 +++--- 16 files changed, 24 insertions(+), 24 deletions(-) rename src/{ui/windows.c => window_list.c} (99%) rename src/{ui/windows.h => window_list.h} (98%) diff --git a/Makefile.am b/Makefile.am index ef1477f3..987a4784 100644 --- a/Makefile.am +++ b/Makefile.am @@ -20,7 +20,7 @@ core_sources = \ src/ui/titlebar.c src/ui/statusbar.c src/ui/inputwin.c \ src/ui/titlebar.h src/ui/statusbar.h src/ui/inputwin.h \ src/ui/console.c src/ui/notifier.c \ - src/ui/windows.c src/ui/windows.h \ + src/window_list.c src/window_list.h \ src/ui/rosterwin.c src/ui/occupantswin.c \ src/ui/buffer.c src/ui/buffer.h \ src/command/command.h src/command/command.c \ @@ -57,7 +57,7 @@ unittest_sources = \ src/config/account.c src/config/account.h \ src/config/preferences.c src/config/preferences.h \ src/config/theme.c src/config/theme.h \ - src/ui/windows.c src/ui/windows.h \ + src/window_list.c src/window_list.h \ src/ui/window.c src/ui/window.h \ src/ui/buffer.c \ src/ui/titlebar.c src/ui/statusbar.c src/ui/inputwin.c \ diff --git a/src/command/command.c b/src/command/command.c index c62c7784..00223b29 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -66,7 +66,7 @@ #include "xmpp/xmpp.h" #include "xmpp/bookmark.h" #include "ui/ui.h" -#include "ui/windows.h" +#include "window_list.h" typedef char*(*autocompleter)(char*, int*); diff --git a/src/command/commands.c b/src/command/commands.c index 28cba7d7..e439c198 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -64,7 +64,7 @@ #include "xmpp/xmpp.h" #include "xmpp/bookmark.h" #include "ui/ui.h" -#include "ui/windows.h" +#include "window_list.h" #include "event/client_events.h" #include "event/ui_events.h" diff --git a/src/event/client_events.c b/src/event/client_events.c index 8f8501e1..7936a446 100644 --- a/src/event/client_events.c +++ b/src/event/client_events.c @@ -37,7 +37,7 @@ #include "config.h" #include "log.h" #include "ui/ui.h" -#include "ui/windows.h" +#include "window_list.h" #include "xmpp/xmpp.h" #ifdef HAVE_LIBOTR #include "otr/otr.h" diff --git a/src/event/ui_events.c b/src/event/ui_events.c index ff1d7273..11296739 100644 --- a/src/event/ui_events.c +++ b/src/event/ui_events.c @@ -33,7 +33,7 @@ */ #include "ui/ui.h" -#include "ui/windows.h" +#include "window_list.h" void ui_ev_focus_win(ProfWin *win) @@ -53,4 +53,4 @@ ProfPrivateWin* ui_ev_new_private_win(const char * const fulljid) { return ui_new_private_win(fulljid); -} \ No newline at end of file +} diff --git a/src/muc.c b/src/muc.c index d283b55e..8110f9a5 100644 --- a/src/muc.c +++ b/src/muc.c @@ -42,7 +42,7 @@ #include "jid.h" #include "tools/autocomplete.h" #include "ui/ui.h" -#include "ui/windows.h" +#include "window_list.h" #include "muc.h" typedef struct _muc_room_t { @@ -978,4 +978,4 @@ _occupant_free(Occupant *occupant) free(occupant); occupant = NULL; } -} \ No newline at end of file +} diff --git a/src/profanity.c b/src/profanity.c index 0908c658..e2372548 100644 --- a/src/profanity.c +++ b/src/profanity.c @@ -62,7 +62,7 @@ #include "resource.h" #include "xmpp/xmpp.h" #include "ui/ui.h" -#include "ui/windows.h" +#include "window_list.h" #include "event/client_events.h" static void _check_autoaway(void); diff --git a/src/ui/console.c b/src/ui/console.c index 1fa8b7b1..5f6b1ef0 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -50,7 +50,7 @@ #include "config/preferences.h" #include "config/theme.h" #include "ui/window.h" -#include "ui/windows.h" +#include "window_list.h" #include "ui/ui.h" #include "ui/statusbar.h" #include "xmpp/xmpp.h" diff --git a/src/ui/core.c b/src/ui/core.c index e2efcb55..78a5e026 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -72,7 +72,7 @@ #include "ui/statusbar.h" #include "ui/inputwin.h" #include "ui/window.h" -#include "ui/windows.h" +#include "window_list.h" #include "xmpp/xmpp.h" #include "event/ui_events.h" diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c index 6ef829a7..1cbf5249 100644 --- a/src/ui/inputwin.c +++ b/src/ui/inputwin.c @@ -62,7 +62,7 @@ #include "ui/ui.h" #include "ui/statusbar.h" #include "ui/inputwin.h" -#include "ui/windows.h" +#include "window_list.h" #include "event/ui_events.h" #include "xmpp/xmpp.h" diff --git a/src/ui/notifier.c b/src/ui/notifier.c index 76290daf..12367190 100644 --- a/src/ui/notifier.c +++ b/src/ui/notifier.c @@ -48,7 +48,7 @@ #include "log.h" #include "muc.h" #include "ui/ui.h" -#include "ui/windows.h" +#include "window_list.h" #include "config/preferences.h" static void _notify(const char * const message, int timeout, const char * const category); diff --git a/src/ui/occupantswin.c b/src/ui/occupantswin.c index bba9d0b9..fe4a600c 100644 --- a/src/ui/occupantswin.c +++ b/src/ui/occupantswin.c @@ -36,7 +36,7 @@ #include "ui/ui.h" #include "ui/window.h" -#include "ui/windows.h" +#include "window_list.h" #include "config/preferences.h" static void @@ -124,4 +124,4 @@ occupantswin_occupants(const char * const roomjid) g_list_free(occupants); } -} \ No newline at end of file +} diff --git a/src/ui/rosterwin.c b/src/ui/rosterwin.c index 763490c3..00bc28a4 100644 --- a/src/ui/rosterwin.c +++ b/src/ui/rosterwin.c @@ -38,7 +38,7 @@ #include "contact.h" #include "ui/ui.h" #include "ui/window.h" -#include "ui/windows.h" +#include "window_list.h" #include "config/preferences.h" #include "roster_list.h" @@ -192,4 +192,4 @@ rosterwin_roster(void) } free(by); } -} \ No newline at end of file +} diff --git a/src/ui/titlebar.c b/src/ui/titlebar.c index 55710c7a..746d2782 100644 --- a/src/ui/titlebar.c +++ b/src/ui/titlebar.c @@ -44,7 +44,7 @@ #include "ui/ui.h" #include "ui/titlebar.h" #include "ui/inputwin.h" -#include "ui/windows.h" +#include "window_list.h" #include "ui/window.h" #include "roster_list.h" #include "chat_session.h" diff --git a/src/ui/windows.c b/src/window_list.c similarity index 99% rename from src/ui/windows.c rename to src/window_list.c index 6472ce0c..40bc30e2 100644 --- a/src/ui/windows.c +++ b/src/window_list.c @@ -1,5 +1,5 @@ /* - * windows.c + * window_list.c * * Copyright (C) 2012 - 2015 James Booth * @@ -46,7 +46,7 @@ #include "ui/ui.h" #include "ui/statusbar.h" #include "ui/window.h" -#include "ui/windows.h" +#include "window_list.h" #include "event/ui_events.h" static GHashTable *windows; diff --git a/src/ui/windows.h b/src/window_list.h similarity index 98% rename from src/ui/windows.h rename to src/window_list.h index 4c753c03..48910461 100644 --- a/src/ui/windows.h +++ b/src/window_list.h @@ -1,5 +1,5 @@ /* - * windows.h + * window_list.h * * Copyright (C) 2012 - 2015 James Booth * @@ -32,8 +32,8 @@ * */ -#ifndef UI_WINDOWS_H -#define UI_WINDOWS_H +#ifndef WINDOW_LIST_H +#define WINDOW_LIST_H #include "ui/window.h" From 5cdd69f478e6bbd4b8b0ca03daab56e6206c3ab2 Mon Sep 17 00:00:00 2001 From: James Booth Date: Mon, 15 Jun 2015 20:11:34 +0100 Subject: [PATCH 8/8] Moved UI interfaces to ui.h --- Makefile.am | 4 - src/command/commands.c | 2 +- src/otr/otr.h | 2 +- src/ui/core.c | 6 ++ src/ui/inputwin.c | 1 + src/ui/statusbar.h | 6 +- src/ui/ui.h | 141 ++++++++++++++++++++++++++++++++++- src/ui/window.h | 125 +------------------------------ src/window_list.c | 1 - src/window_list.h | 2 +- tests/unittests/ui/stub_ui.c | 57 ++++++++++++++ 11 files changed, 208 insertions(+), 139 deletions(-) diff --git a/Makefile.am b/Makefile.am index 987a4784..a18bedcc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -58,10 +58,6 @@ unittest_sources = \ src/config/preferences.c src/config/preferences.h \ src/config/theme.c src/config/theme.h \ src/window_list.c src/window_list.h \ - src/ui/window.c src/ui/window.h \ - src/ui/buffer.c \ - src/ui/titlebar.c src/ui/statusbar.c src/ui/inputwin.c \ - src/ui/titlebar.h src/ui/statusbar.h src/ui/inputwin.h \ src/event/server_events.c src/event/server_events.h \ src/event/client_events.c src/event/client_events.h \ src/event/ui_events.c src/event/ui_events.h \ diff --git a/src/command/commands.c b/src/command/commands.c index e439c198..106ef4c8 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -3230,7 +3230,7 @@ gboolean cmd_clear(gchar **args, struct cmd_help_t help) { ProfWin *win = wins_get_current(); - win_clear(win); + ui_clear_win(win); return TRUE; } diff --git a/src/otr/otr.h b/src/otr/otr.h index e020c0c8..3c46ac3d 100644 --- a/src/otr/otr.h +++ b/src/otr/otr.h @@ -39,7 +39,7 @@ #include #include "config/accounts.h" -#include "ui/window.h" +#include "ui/ui.h" typedef enum { PROF_OTRPOLICY_MANUAL, diff --git a/src/ui/core.c b/src/ui/core.c index 78a5e026..127405f6 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -2216,6 +2216,12 @@ ui_clear_win_title(void) printf("%c]0;%c", '\033', '\007'); } +void +ui_clear_win(ProfWin *window) +{ + win_clear(window); +} + void ui_goodbye_title(void) { diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c index 1cbf5249..57814414 100644 --- a/src/ui/inputwin.c +++ b/src/ui/inputwin.c @@ -62,6 +62,7 @@ #include "ui/ui.h" #include "ui/statusbar.h" #include "ui/inputwin.h" +#include "ui/window.h" #include "window_list.h" #include "event/ui_events.h" #include "xmpp/xmpp.h" diff --git a/src/ui/statusbar.h b/src/ui/statusbar.h index 7d2c5ea0..c37f43f3 100644 --- a/src/ui/statusbar.h +++ b/src/ui/statusbar.h @@ -42,10 +42,6 @@ void status_bar_clear(void); void status_bar_clear_message(void); void status_bar_get_password(void); void status_bar_print_message(const char * const msg); -void status_bar_inactive(const int win); -void status_bar_active(const int win); -void status_bar_new(const int win); -void status_bar_set_all_inactive(void); void status_bar_current(int i); -#endif \ No newline at end of file +#endif diff --git a/src/ui/ui.h b/src/ui/ui.h index 8e5ca6ab..434fab24 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -38,13 +38,118 @@ #include "config.h" #include - #include +#ifdef HAVE_NCURSESW_NCURSES_H +#include +#elif HAVE_NCURSES_H +#include +#endif #include "contact.h" #include "jid.h" -#include "ui/window.h" #include "xmpp/xmpp.h" +#include "ui/buffer.h" +#include "chat_state.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); @@ -218,6 +323,7 @@ void ui_page_up(void); void ui_page_down(void); void ui_subwin_page_up(void); void ui_subwin_page_down(void); +void ui_clear_win(ProfWin *window); void ui_auto_away(void); void ui_end_auto_away(void); @@ -326,12 +432,43 @@ void cons_show_contact_online(PContact contact, Resource *resource, GDateTime *l void cons_show_contact_offline(PContact contact, char *resource, char *status); void cons_theme_colours(void); +// status bar +void status_bar_inactive(const int win); +void status_bar_active(const int win); +void status_bar_new(const int win); +void status_bar_set_all_inactive(void); + // roster window void rosterwin_roster(void); // occupants window void occupantswin_occupants(const char * const room); +// window interface +ProfWin* win_create_console(void); +ProfWin* win_create_xmlconsole(void); +ProfWin* win_create_chat(const char * const barejid); +ProfWin* win_create_muc(const char * const roomjid); +ProfWin* win_create_muc_config(const char * const title, DataForm *form); +ProfWin* win_create_private(const char * const fulljid); + +void win_update_virtual(ProfWin *window); +void win_free(ProfWin *window); +int win_unread(ProfWin *window); +void win_resize(ProfWin *window); +void win_hide_subwin(ProfWin *window); +void win_show_subwin(ProfWin *window); +void win_refresh_without_subwin(ProfWin *window); +void win_refresh_with_subwin(ProfWin *window); +void win_print(ProfWin *window, const char show_char, GTimeVal *tstamp, int flags, theme_item_t theme_item, const char * const from, const char * const message); +void win_vprint(ProfWin *window, const char show_char, GTimeVal *tstamp, int flags, theme_item_t theme_item, const char * const from, const char * const message, ...); +char* win_get_title(ProfWin *window); +void win_show_occupant(ProfWin *window, Occupant *occupant); +void win_show_occupant_info(ProfWin *window, const char * const room, Occupant *occupant); +void win_show_contact(ProfWin *window, PContact contact); +void win_show_info(ProfWin *window, PContact contact); +void win_println(ProfWin *window, const char * const message); + // desktop notifier actions void notifier_initialise(void); void notifier_uninit(void); diff --git a/src/ui/window.h b/src/ui/window.h index 6678da07..4b11ade0 100644 --- a/src/ui/window.h +++ b/src/ui/window.h @@ -41,6 +41,7 @@ #include "contact.h" #include "muc.h" +#include "ui/ui.h" #include "ui/buffer.h" #include "xmpp/xmpp.h" #include "chat_state.h" @@ -51,152 +52,28 @@ #include #endif -#define NO_ME 1 -#define NO_DATE 2 -#define NO_EOL 4 -#define NO_COLOUR_FROM 8 -#define NO_COLOUR_DATE 16 - #define PAD_SIZE 1000 -#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; - -ProfWin* win_create_console(void); -ProfWin* win_create_chat(const char * const barejid); -ProfWin* win_create_muc(const char * const roomjid); -ProfWin* win_create_muc_config(const char * const title, DataForm *form); -ProfWin* win_create_private(const char * const fulljid); -ProfWin* win_create_xmlconsole(void); - -char *win_get_title(ProfWin *window); - -void win_free(ProfWin *window); -void win_update_virtual(ProfWin *window); void win_move_to_end(ProfWin *window); -void win_show_contact(ProfWin *window, PContact contact); -void win_show_occupant(ProfWin *window, Occupant *occupant); void win_show_status_string(ProfWin *window, const char * const from, const char * const show, const char * const status, GDateTime *last_activity, const char * const pre, const char * const default_show); void win_print_incoming_message(ProfWin *window, GTimeVal *tv_stamp, const char * const from, const char * const message); -void win_show_info(ProfWin *window, PContact contact); -void win_show_occupant_info(ProfWin *window, const char * const room, Occupant *occupant); -void win_vprint(ProfWin *window, const char show_char, GTimeVal *tstamp, int flags, theme_item_t theme_item, const char * const from, const char * const message, ...); -void win_print(ProfWin *window, const char show_char, GTimeVal *tstamp, int flags, theme_item_t theme_item, const char * const from, const char * const message); void win_print_with_receipt(ProfWin *window, const char show_char, GTimeVal *tstamp, int flags, theme_item_t theme_item, const char * const from, const char * const message, char *id); -void win_println(ProfWin *window, const char * const message); void win_newline(ProfWin *window); void win_redraw(ProfWin *window); -void win_hide_subwin(ProfWin *window); -void win_show_subwin(ProfWin *window); int win_roster_cols(void); int win_occpuants_cols(void); void win_printline_nowrap(WINDOW *win, char *msg); void win_mouse(ProfWin *current, const wint_t ch, const int result); void win_mark_received(ProfWin *window, const char * const id); -int win_unread(ProfWin *window); gboolean win_has_active_subwin(ProfWin *window); void win_clear(ProfWin *window); -void win_resize(ProfWin *window); - -void win_refresh_without_subwin(ProfWin *window); -void win_refresh_with_subwin(ProfWin *window); void win_page_up(ProfWin *window); void win_page_down(ProfWin *window); diff --git a/src/window_list.c b/src/window_list.c index 40bc30e2..ff040d63 100644 --- a/src/window_list.c +++ b/src/window_list.c @@ -45,7 +45,6 @@ #include "config/theme.h" #include "ui/ui.h" #include "ui/statusbar.h" -#include "ui/window.h" #include "window_list.h" #include "event/ui_events.h" diff --git a/src/window_list.h b/src/window_list.h index 48910461..8e8e72eb 100644 --- a/src/window_list.h +++ b/src/window_list.h @@ -35,7 +35,7 @@ #ifndef WINDOW_LIST_H #define WINDOW_LIST_H -#include "ui/window.h" +#include "ui/ui.h" void wins_init(void); diff --git a/tests/unittests/ui/stub_ui.c b/tests/unittests/ui/stub_ui.c index 1289aa4b..c94e17fd 100644 --- a/tests/unittests/ui/stub_ui.c +++ b/tests/unittests/ui/stub_ui.c @@ -176,6 +176,7 @@ void ui_page_up(void) {} void ui_page_down(void) {} void ui_subwin_page_up(void) {} void ui_subwin_page_down(void) {} +void ui_clear_win(ProfWin *window) {} char * ui_ask_password(void) { @@ -493,12 +494,68 @@ void cons_show_contact_online(PContact contact, Resource *resource, GDateTime *l void cons_show_contact_offline(PContact contact, char *resource, char *status) {} void cons_theme_colours(void) {} +// status bar +void status_bar_inactive(const int win) {} +void status_bar_active(const int win) {} +void status_bar_new(const int win) {} +void status_bar_set_all_inactive(void) {} + // roster window void rosterwin_roster(void) {} // occupants window void occupantswin_occupants(const char * const room) {} +// window interface +ProfWin* win_create_console(void) +{ + return NULL; +} +ProfWin* win_create_xmlconsole(void) +{ + return NULL; +} +ProfWin* win_create_chat(const char * const barejid) +{ + return NULL; +} +ProfWin* win_create_muc(const char * const roomjid) +{ + return NULL; +} +ProfWin* win_create_muc_config(const char * const title, DataForm *form) +{ + return NULL; +} +ProfWin* win_create_private(const char * const fulljid) +{ + return NULL; +} + +void win_update_virtual(ProfWin *window) {} +void win_free(ProfWin *window) {} +int win_unread(ProfWin *window) +{ + return 0; +} + +void win_resize(ProfWin *window) {} +void win_hide_subwin(ProfWin *window) {} +void win_show_subwin(ProfWin *window) {} +void win_refresh_without_subwin(ProfWin *window) {} +void win_refresh_with_subwin(ProfWin *window) {} +void win_print(ProfWin *window, const char show_char, GTimeVal *tstamp, int flags, theme_item_t theme_item, const char * const from, const char * const message) {} +void win_vprint(ProfWin *window, const char show_char, GTimeVal *tstamp, int flags, theme_item_t theme_item, const char * const from, const char * const message, ...) {} +char* win_get_title(ProfWin *window) +{ + return NULL; +} +void win_show_occupant(ProfWin *window, Occupant *occupant) {} +void win_show_occupant_info(ProfWin *window, const char * const room, Occupant *occupant) {} +void win_show_contact(ProfWin *window, PContact contact) {} +void win_show_info(ProfWin *window, PContact contact) {} +void win_println(ProfWin *window, const char * const message) {} + // desktop notifier actions void notifier_uninit(void) {}