From 711c5b8e452f2ebc121474269812095153f27608 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sat, 15 Oct 2016 19:19:44 +0100 Subject: [PATCH] Add win_appendln --- src/command/cmd_funcs.c | 2 +- src/ui/console.c | 52 ++++++++++++++++++------------------ src/ui/core.c | 5 ++-- src/ui/mucconfwin.c | 14 +++++----- src/ui/mucwin.c | 23 ++++++++-------- src/ui/ui.h | 1 + src/ui/window.c | 48 ++++++++++++++++++++++----------- tests/unittests/ui/stub_ui.c | 1 + 8 files changed, 82 insertions(+), 64 deletions(-) diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index c0212f73..d052d77f 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -3940,7 +3940,7 @@ cmd_subject(ProfWin *window, const char *const command, gchar **args) char *subject = muc_subject(mucwin->roomjid); if (subject) { win_print(window, THEME_ROOMINFO, '!', "Room subject: "); - win_printf(window, '!', 0, NULL, NO_DATE, THEME_DEFAULT, "", "%s", subject); + win_appendln(window, THEME_DEFAULT, "%s", subject); } else { win_println(window, THEME_ROOMINFO, '!', "Room has no subject"); } diff --git a/src/ui/console.c b/src/ui/console.c index 48d33bfb..df9a7b43 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -130,7 +130,7 @@ cons_show_help(const char *const cmd, CommandHelp *help) for (i = 0; i < strlen(cmd) - 1 ; i++) { win_printf(console, '-', 0, NULL, NO_EOL | NO_DATE, THEME_WHITE_BOLD, "", "-"); } - win_printf(console, '-', 0, NULL, NO_DATE, THEME_WHITE_BOLD, "", ""); + win_appendln(console, THEME_WHITE_BOLD, ""); cons_show(""); win_println(console, THEME_WHITE_BOLD, '-', "Synopsis"); @@ -484,7 +484,7 @@ cons_show_login_success(ProfAccount *account, gboolean secured) win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", "%s", presence_str); win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", " (priority %d)", accounts_get_priority_for_presence_type(account->name, presence)); - win_printf(console, '-', 0, NULL, NO_DATE, THEME_DEFAULT, "", "."); + win_appendln(console, THEME_DEFAULT, "."); if (!secured) { cons_show_error("TLS connection not established"); } @@ -555,7 +555,7 @@ cons_show_caps(const char *const fulljid, resource_presence_t presence) theme_item_t presence_colour = theme_main_presence_attrs(resource_presence); win_print(console, presence_colour, '-', "%s", fulljid); - win_printf(console, '-', 0, NULL, NO_DATE, THEME_DEFAULT, "", ":"); + win_appendln(console, THEME_DEFAULT, ":"); // show identity if (caps->identity) { @@ -788,7 +788,7 @@ cons_show_disco_items(GSList *items, const char *const jid) if (item->name) { win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", (%s)", item->name); } - win_printf(console, '-', 0, NULL, NO_DATE, THEME_DEFAULT, "", ""); + win_appendln(console, THEME_DEFAULT, ""); items = g_slist_next(items); } } else { @@ -1005,7 +1005,7 @@ cons_show_account(ProfAccount *account) if (resource->status) { win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", \"%s\"", resource->status); } - win_printf(console, '-', 0, NULL, NO_DATE, THEME_DEFAULT, "", ""); + win_appendln(console, THEME_DEFAULT, ""); Jid *jidp = jid_create_from_bare_and_resource(account->jid, resource->name); EntityCapabilities *caps = caps_lookup(jidp->fulljid); jid_destroy(jidp); @@ -2192,7 +2192,7 @@ _cons_theme_bar_prop(theme_item_t theme, char *prop) g_string_append_printf(valstr, "%s ", setting); theme_free_string(setting); win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, theme, "", "%s", valstr->str); - win_printf(console, '-', 0, NULL, NO_DATE, THEME_TEXT, "", ""); + win_appendln(console, THEME_TEXT, ""); g_string_free(valstr, TRUE); } @@ -2210,7 +2210,7 @@ _cons_theme_prop(theme_item_t theme, char *prop) char *setting = theme_get_string(prop); g_string_append_printf(valstr, "%s", setting); theme_free_string(setting); - win_printf(console, '-', 0, NULL, NO_DATE, theme, "", "%s", valstr->str); + win_appendln(console, theme, "%s", valstr->str); g_string_free(valstr, TRUE); } @@ -2326,29 +2326,29 @@ cons_theme_colours(void) ProfWin *console = wins_get_console(); cons_show("Available colours:"); - win_print(console, THEME_WHITE, '-', " white "); - win_printf(console, '-', 0, NULL, NO_DATE, THEME_WHITE_BOLD, "", " bold_white"); + win_print(console, THEME_WHITE, '-', " white "); + win_appendln(console, THEME_WHITE_BOLD, " bold_white"); - win_print(console, THEME_GREEN, '-', " green "); - win_printf(console, '-', 0, NULL, NO_DATE, THEME_GREEN_BOLD, "", " bold_green"); + win_print(console, THEME_GREEN, '-', " green "); + win_appendln(console, THEME_GREEN_BOLD, " bold_green"); - win_print(console, THEME_RED, '-', " red "); - win_printf(console, '-', 0, NULL, NO_DATE, THEME_RED_BOLD, "", " bold_red"); + win_print(console, THEME_RED, '-', " red "); + win_appendln(console, THEME_RED_BOLD, " bold_red"); - win_print(console, THEME_YELLOW, '-', " yellow "); - win_printf(console, '-', 0, NULL, NO_DATE, THEME_YELLOW_BOLD, "", " bold_yellow"); + win_print(console, THEME_YELLOW, '-', " yellow "); + win_appendln(console, THEME_YELLOW_BOLD, " bold_yellow"); - win_print(console, THEME_BLUE, '-', " blue "); - win_printf(console, '-', 0, NULL, NO_DATE, THEME_BLUE_BOLD, "", " bold_blue"); + win_print(console, THEME_BLUE, '-', " blue "); + win_appendln(console, THEME_BLUE_BOLD, " bold_blue"); - win_print(console, THEME_CYAN, '-', " cyan "); - win_printf(console, '-', 0, NULL, NO_DATE, THEME_CYAN_BOLD, "", " bold_cyan"); + win_print(console, THEME_CYAN, '-', " cyan "); + win_appendln(console, THEME_CYAN_BOLD, " bold_cyan"); - win_print(console, THEME_MAGENTA, '-', " magenta "); - win_printf(console, '-', 0, NULL, NO_DATE, THEME_MAGENTA_BOLD, "", " bold_magenta"); + win_print(console, THEME_MAGENTA, '-', " magenta "); + win_appendln(console, THEME_MAGENTA_BOLD, " bold_magenta"); - win_print(console, THEME_BLACK, '-', " black "); - win_printf(console, '-', 0, NULL, NO_DATE, THEME_BLACK_BOLD, "", " bold_black"); + win_print(console, THEME_BLACK, '-', " black "); + win_appendln(console, THEME_BLACK_BOLD, " bold_black"); cons_show(""); } @@ -2424,7 +2424,7 @@ _show_roster_contacts(GSList *list, gboolean show_groups) if (show_groups) { win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", "%s", sub->str); } else { - win_printf(console, '-', 0, NULL, NO_DATE, presence_colour, "", "%s", sub->str); + win_appendln(console, presence_colour, "%s", sub->str); } g_string_free(sub, TRUE); @@ -2440,10 +2440,10 @@ _show_roster_contacts(GSList *list, gboolean show_groups) } groups = g_slist_next(groups); } - win_printf(console, '-', 0, NULL, NO_DATE, THEME_DEFAULT, "", "%s", groups_str->str); + win_appendln(console, THEME_DEFAULT, "%s", groups_str->str); g_string_free(groups_str, TRUE); } else { - win_printf(console, '-', 0, NULL, NO_DATE, THEME_DEFAULT, "", " "); + win_appendln(console, THEME_DEFAULT, " "); } } diff --git a/src/ui/core.c b/src/ui/core.c index 178823c8..9866d93b 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -800,8 +800,7 @@ ui_room_join(const char *const roomjid, gboolean focus) win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", affiliation: %s", affiliation); } } - win_printf(window, '!', 0, NULL, NO_DATE, THEME_ROOMINFO, "", ""); - + win_appendln(window, THEME_ROOMINFO, ""); if (focus) { ui_focus_win(window); @@ -1304,7 +1303,7 @@ ui_show_software_version(const char *const jid, const char *const presence, win_println(window, THEME_DEFAULT, '-', ""); theme_item_t presence_colour = theme_main_presence_attrs(presence); win_print(window, presence_colour, '-', "%s", jid); - win_printf(window, '-', 0, NULL, NO_DATE, 0, "", ":"); + win_appendln(window, THEME_DEFAULT, ":"); } if (name) { win_println(window, THEME_DEFAULT, '-', "Name : %s", name); diff --git a/src/ui/mucconfwin.c b/src/ui/mucconfwin.c index 8a9c3951..65cc6b04 100644 --- a/src/ui/mucconfwin.c +++ b/src/ui/mucconfwin.c @@ -48,7 +48,7 @@ mucconfwin_show_form(ProfMucConfWin *confwin) ProfWin *window = (ProfWin*) confwin; if (confwin->form->title) { win_print(window, THEME_DEFAULT, '-', "Form title: "); - win_printf(window, '-', 0, NULL, NO_DATE, THEME_DEFAULT, "", "%s", confwin->form->title); + win_appendln(window, THEME_DEFAULT, "%s", confwin->form->title); } else { win_println(window, THEME_DEFAULT, '-', "Configuration for room %s.", confwin->roomjid); } @@ -113,9 +113,9 @@ mucconfwin_field_help(ProfMucConfWin *confwin, char *tag) if (field) { win_print(window, THEME_DEFAULT, '-', "%s", field->label); if (field->required) { - win_printf(window, '-', 0, NULL, NO_DATE, THEME_DEFAULT, "", " (Required):"); + win_appendln(window, THEME_DEFAULT, " (Required):"); } else { - win_printf(window, '-', 0, NULL, NO_DATE, THEME_DEFAULT, "", ":"); + win_appendln(window, THEME_DEFAULT, ":"); } if (field->description) { win_println(window, THEME_DEFAULT, '-', " Description : %s", field->description); @@ -252,16 +252,16 @@ _mucconfwin_form_field(ProfWin *window, char *tag, FormField *field) break; case FIELD_BOOLEAN: if (curr_value == NULL) { - win_printf(window, '-', 0, NULL, NO_DATE, THEME_OFFLINE, "", "FALSE"); + win_appendln(window, THEME_OFFLINE, "FALSE"); } else { char *value = curr_value->data; if (value == NULL) { - win_printf(window, '-', 0, NULL, NO_DATE, THEME_OFFLINE, "", "FALSE"); + win_appendln(window, THEME_OFFLINE, "FALSE"); } else { if (g_strcmp0(value, "0") == 0) { - win_printf(window, '-', 0, NULL, NO_DATE, THEME_OFFLINE, "", "FALSE"); + win_appendln(window, THEME_OFFLINE, "FALSE"); } else { - win_printf(window, '-', 0, NULL, NO_DATE, THEME_ONLINE, "", "TRUE"); + win_appendln(window, THEME_ONLINE, "TRUE"); } } } diff --git a/src/ui/mucwin.c b/src/ui/mucwin.c index a1196ac4..62e5b997 100644 --- a/src/ui/mucwin.c +++ b/src/ui/mucwin.c @@ -58,7 +58,7 @@ mucwin_role_change(ProfMucWin *mucwin, const char *const role, const char *const if (reason) { win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", reason: %s", reason); } - win_printf(window, '!', 0, NULL, NO_DATE, THEME_ROOMINFO, "", ""); + win_appendln(window, THEME_ROOMINFO, ""); } void @@ -75,7 +75,7 @@ mucwin_affiliation_change(ProfMucWin *mucwin, const char *const affiliation, con if (reason) { win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", reason: %s", reason); } - win_printf(window, '!', 0, NULL, NO_DATE, THEME_ROOMINFO, "", ""); + win_appendln(window, THEME_ROOMINFO, ""); } void @@ -92,7 +92,7 @@ mucwin_role_and_affiliation_change(ProfMucWin *mucwin, const char *const role, c if (reason) { win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", reason: %s", reason); } - win_printf(window, '!', 0, NULL, NO_DATE, THEME_ROOMINFO, "", ""); + win_appendln(window, THEME_ROOMINFO, ""); } @@ -110,7 +110,7 @@ mucwin_occupant_role_change(ProfMucWin *mucwin, const char *const nick, const ch if (reason) { win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", reason: %s", reason); } - win_printf(window, '!', 0, NULL, NO_DATE, THEME_ROOMINFO, "", ""); + win_appendln(window, THEME_ROOMINFO, ""); } void @@ -127,7 +127,7 @@ mucwin_occupant_affiliation_change(ProfMucWin *mucwin, const char *const nick, c if (reason) { win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", reason: %s", reason); } - win_printf(window, '!', 0, NULL, NO_DATE, THEME_ROOMINFO, "", ""); + win_appendln(window, THEME_ROOMINFO, ""); } void @@ -144,7 +144,7 @@ mucwin_occupant_role_and_affiliation_change(ProfMucWin *mucwin, const char *cons if (reason) { win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", reason: %s", reason); } - win_printf(window, '!', 0, NULL, NO_DATE, THEME_ROOMINFO, "", ""); + win_appendln(window, THEME_ROOMINFO, ""); } void @@ -231,8 +231,7 @@ mucwin_roster(ProfMucWin *mucwin, GList *roster, const char *const presence) roster = g_list_next(roster); } - win_printf(window, '!', 0, NULL, NO_DATE, THEME_ONLINE, "", ""); - + win_appendln(window, THEME_ONLINE, ""); } } @@ -305,7 +304,7 @@ mucwin_occupant_online(ProfMucWin *mucwin, const char *const nick, const char *c win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ONLINE, "", ", affiliation: %s", affiliation); } } - win_printf(window, '!', 0, NULL, NO_DATE, THEME_ROOMINFO, "", ""); + win_appendln(window, THEME_ROOMINFO, ""); } void @@ -534,10 +533,10 @@ mucwin_subject(ProfMucWin *mucwin, const char *const nick, const char *const sub if (subject) { if (nick) { win_print(window, THEME_ROOMINFO, '!', "*%s has set the room subject: ", nick); - win_printf(window, '!', 0, NULL, NO_DATE, THEME_DEFAULT, "", "%s", subject); + win_appendln(window, THEME_DEFAULT, "%s", subject); } else { win_print(window, THEME_ROOMINFO, '!', "Room subject: "); - win_printf(window, '!', 0, NULL, NO_DATE, THEME_DEFAULT, "", "%s", subject); + win_appendln(window, THEME_DEFAULT, "%s", subject); } } else { if (nick) { @@ -575,7 +574,7 @@ mucwin_broadcast(ProfMucWin *mucwin, const char *const message) int num = wins_get_num(window); win_print(window, THEME_ROOMINFO, '!', "Room message: "); - win_printf(window, '!', 0, NULL, NO_DATE, THEME_DEFAULT, "", "%s", message); + win_appendln(window, THEME_DEFAULT, "%s", message); // currently in groupchat window if (wins_is_current(window)) { diff --git a/src/ui/ui.h b/src/ui/ui.h index 05cac699..0830639a 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -359,6 +359,7 @@ void win_printf(ProfWin *window, const char show_char, int pad_indent, GDateTime theme_item_t theme_item, const char *const from, const char *const message, ...); void win_print(ProfWin *window, theme_item_t theme_item, const char ch, const char *const message, ...); void win_println(ProfWin *window, theme_item_t theme_item, const char ch, const char *const message, ...); +void win_appendln(ProfWin *window, theme_item_t theme_item, const char *const message, ...); void win_println_indent(ProfWin *window, int pad, const char *const message); char* win_get_title(ProfWin *window); void win_show_occupant(ProfWin *window, Occupant *occupant); diff --git a/src/ui/window.c b/src/ui/window.c index a5b063cf..c7016b6f 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -689,7 +689,7 @@ win_show_occupant(ProfWin *window, Occupant *occupant) win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", \"%s\"", occupant->status); } - win_printf(window, '-', 0, NULL, NO_DATE, presence_colour, "", ""); + win_appendln(window, presence_colour, ""); } void @@ -734,7 +734,7 @@ win_show_contact(ProfWin *window, PContact contact) win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", \"%s\"", p_contact_status(contact)); } - win_printf(window, '-', 0, NULL, NO_DATE, presence_colour, "", ""); + win_appendln(window, presence_colour, ""); } void @@ -792,7 +792,7 @@ win_show_occupant_info(ProfWin *window, const char *const room, Occupant *occupa if (caps->software_version) { SoftwareVersion *software_version = caps->software_version; if (software_version->software) { - win_printf(window, '!', 0, NULL, NO_EOL, THEME_DEFAULT, "", " Software: %s", software_version->software); + win_print(window, THEME_DEFAULT, '!', " Software: %s", software_version->software); } if (software_version->software_version) { win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", %s", software_version->software_version); @@ -801,7 +801,7 @@ win_show_occupant_info(ProfWin *window, const char *const room, Occupant *occupa win_newline(window); } if (software_version->os) { - win_printf(window, '!', 0, NULL, NO_EOL, THEME_DEFAULT, "", " OS: %s", software_version->os); + win_print(window, THEME_DEFAULT, '!', " OS: %s", software_version->os); } if (software_version->os_version) { win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", %s", software_version->os_version); @@ -829,11 +829,11 @@ win_show_info(ProfWin *window, PContact contact) theme_item_t presence_colour = theme_main_presence_attrs(presence); win_println(window, THEME_DEFAULT, '-', ""); - win_printf(window, '-', 0, NULL, NO_EOL, presence_colour, "", "%s", barejid); + win_print(window, presence_colour, '-', "%s", barejid); if (name) { win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " (%s)", name); } - win_printf(window, '-', 0, NULL, NO_DATE, THEME_DEFAULT, "", ":"); + win_appendln(window, THEME_DEFAULT, ":"); if (sub) { win_println(window, THEME_DEFAULT, '-', "Subscription: %s", sub); @@ -880,7 +880,7 @@ win_show_info(ProfWin *window, PContact contact) Resource *resource = curr->data; const char *resource_presence = string_from_resource_presence(resource->presence); theme_item_t presence_colour = theme_main_presence_attrs(resource_presence); - win_printf(window, '-', 0, NULL, NO_EOL, presence_colour, "", " %s (%d), %s", resource->name, resource->priority, resource_presence); + win_print(window, presence_colour, '-', " %s (%d), %s", resource->name, resource->priority, resource_presence); if (resource->status) { win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", \"%s\"", resource->status); } @@ -894,7 +894,7 @@ win_show_info(ProfWin *window, PContact contact) // show identity if (caps->identity) { DiscoIdentity *identity = caps->identity; - win_printf(window, '-', 0, NULL, NO_EOL, THEME_DEFAULT, "", " Identity: "); + win_print(window, THEME_DEFAULT, '-', " Identity: "); if (identity->name) { win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", identity->name); if (identity->category || identity->type) { @@ -916,7 +916,7 @@ win_show_info(ProfWin *window, PContact contact) if (caps->software_version) { SoftwareVersion *software_version = caps->software_version; if (software_version->software) { - win_printf(window, '-', 0, NULL, NO_EOL, THEME_DEFAULT, "", " Software: %s", software_version->software); + win_print(window, THEME_DEFAULT, '-', " Software: %s", software_version->software); } if (software_version->software_version) { win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", %s", software_version->software_version); @@ -925,7 +925,7 @@ win_show_info(ProfWin *window, PContact contact) win_newline(window); } if (software_version->os) { - win_printf(window, '-', 0, NULL, NO_EOL, THEME_DEFAULT, "", " OS: %s", software_version->os); + win_print(window, THEME_DEFAULT, '-', " OS: %s", software_version->os); } if (software_version->os_version) { win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", %s", software_version->os_version); @@ -959,8 +959,7 @@ win_show_status_string(ProfWin *window, const char *const from, presence_colour = THEME_OFFLINE; } - - win_printf(window, '-', 0, NULL, NO_EOL, presence_colour, "", "%s %s", pre, from); + win_print(window, presence_colour, '-', "%s %s", pre, from); if (show) win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " is %s", show); @@ -982,8 +981,7 @@ win_show_status_string(ProfWin *window, const char *const from, if (status) win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", \"%s\"", status); - win_printf(window, '-', 0, NULL, NO_DATE, presence_colour, "", ""); - + win_appendln(window, presence_colour, ""); } void @@ -1076,6 +1074,26 @@ win_println(ProfWin *window, theme_item_t theme_item, const char ch, const char va_end(arg); } +void +win_appendln(ProfWin *window, theme_item_t theme_item, const char *const message, ...) +{ + GDateTime *timestamp = g_date_time_new_now_local(); + + va_list arg; + va_start(arg, message); + GString *fmt_msg = g_string_new(NULL); + g_string_vprintf(fmt_msg, message, arg); + + buffer_push(window->layout->buffer, '-', 0, timestamp, NO_EOL, theme_item, "", fmt_msg->str, NULL); + + _win_print(window, '-', 0, timestamp, NO_DATE, theme_item, "", fmt_msg->str, NULL); + inp_nonblocking(TRUE); + g_date_time_unref(timestamp); + + g_string_free(fmt_msg, TRUE); + va_end(arg); + +} void win_print_http_upload(ProfWin *window, const char *const message, char *url) { @@ -1138,7 +1156,7 @@ win_println_indent(ProfWin *window, int pad, const char *const message) void win_newline(ProfWin *window) { - win_printf(window, '-', 0, NULL, NO_DATE, THEME_DEFAULT, "", ""); + win_appendln(window, THEME_DEFAULT, ""); } static void diff --git a/tests/unittests/ui/stub_ui.c b/tests/unittests/ui/stub_ui.c index 1cf58e6e..ac08665e 100644 --- a/tests/unittests/ui/stub_ui.c +++ b/tests/unittests/ui/stub_ui.c @@ -520,6 +520,7 @@ void win_refresh_with_subwin(ProfWin *window) {} void win_printf(ProfWin *window, const char show_char, int pad_indent, GDateTime *timestamp, int flags, theme_item_t theme_item, const char * const from, const char * const message, ...) {} void win_print(ProfWin *window, theme_item_t theme_item, const char ch, const char *const message, ...) {} void win_println(ProfWin *window, theme_item_t theme_item, const char ch, const char *const message, ...) {} +void win_appendln(ProfWin *window, theme_item_t theme_item, const char *const message, ...) {} char* win_get_title(ProfWin *window) {