feat(ui): add cons_show_warning() (issue #87)
All checks were successful
CI Code / Check coding style (pull_request) Successful in 25s
CI Code / Check spelling (pull_request) Successful in 14s
CI Code / Code Coverage (pull_request) Successful in 3m16s
CI Code / Linux (ubuntu) (pull_request) Successful in 5m7s
CI Code / Linux (arch) (pull_request) Successful in 6m50s
CI Code / Linux (debian) (pull_request) Successful in 8m26s

The console had cons_show() for information and cons_show_error() for
failures, but nothing in between, so callers reporting a condition the
user should notice had to pick between hiding it and dressing it up as
an error.

cons_show_warning() prints through the new THEME_WARNING item, yellow
by default, and prefixes the text with "Warning: ". Themes that do not
set the "warning" colour fall back to that default, so the bundled
themes need no change. Logging stays with the caller, as it does for
the other console functions.
This commit is contained in:
2026-08-01 12:59:28 +03:00
parent d914e42ff6
commit a878b1e629
6 changed files with 45 additions and 0 deletions

View File

@@ -87,6 +87,7 @@ theme_init(const char* const theme_name)
g_hash_table_insert(defaults, strdup("main.help.header"), strdup("default"));
g_hash_table_insert(defaults, strdup("main.trackbar"), strdup("default"));
g_hash_table_insert(defaults, strdup("error"), strdup("red"));
g_hash_table_insert(defaults, strdup("warning"), strdup("yellow"));
g_hash_table_insert(defaults, strdup("incoming"), strdup("yellow"));
g_hash_table_insert(defaults, strdup("mention"), strdup("yellow"));
g_hash_table_insert(defaults, strdup("trigger"), strdup("yellow"));
@@ -703,6 +704,9 @@ theme_attrs(theme_item_t attrs)
case THEME_ERROR:
_theme_prep_fgnd("error", lookup_str, &bold);
break;
case THEME_WARNING:
_theme_prep_fgnd("warning", lookup_str, &bold);
break;
case THEME_INCOMING:
_theme_prep_fgnd("incoming", lookup_str, &bold);
break;

View File

@@ -23,6 +23,7 @@ typedef enum {
THEME_SPLASH,
THEME_HELP_HEADER,
THEME_ERROR,
THEME_WARNING,
THEME_INCOMING,
THEME_MENTION,
THEME_TRIGGER,

View File

@@ -155,6 +155,20 @@ cons_show_error(const char* const msg, ...)
cons_alert(NULL);
}
void
cons_show_warning(const char* const msg, ...)
{
va_list arg;
va_start(arg, msg);
GString* fmt_msg = g_string_new(NULL);
g_string_vprintf(fmt_msg, msg, arg);
win_println(wins_get_console(), THEME_WARNING, "-", "Warning: %s", fmt_msg->str);
g_string_free(fmt_msg, TRUE);
va_end(arg);
cons_alert(NULL);
}
void
cons_show_tlscert_summary(const TLSCertificate* cert)
{

View File

@@ -252,6 +252,8 @@ G_GNUC_PRINTF(1, 2)
void cons_debug(const char* const msg, ...);
G_GNUC_PRINTF(1, 2)
void cons_show_error(const char* const cmd, ...);
G_GNUC_PRINTF(1, 2)
void cons_show_warning(const char* const msg, ...);
void cons_show_contacts(GSList* list);
void cons_show_roster(GSList* list);
void cons_show_roster_group(const char* const group, GSList* list);

View File

@@ -49,6 +49,18 @@ expect_any_cons_show_error(void)
expect_any(cons_show_error, output);
}
void
expect_cons_show_warning(char* expected)
{
expect_string(cons_show_warning, output, expected);
}
void
expect_any_cons_show_warning(void)
{
expect_any(cons_show_warning, output);
}
void
expect_win_println(char* message)
{
@@ -845,6 +857,16 @@ cons_show_error(const char* const cmd, ...)
va_end(args);
}
void
cons_show_warning(const char* const msg, ...)
{
va_list args;
va_start(args, msg);
vsnprintf(output, sizeof(output), msg, args);
check_expected(output);
va_end(args);
}
void
cons_show_contacts(GSList* list)
{

View File

@@ -10,4 +10,6 @@ void expect_cons_show(char* expected);
void expect_any_cons_show(void);
void expect_cons_show_error(char* expected);
void expect_any_cons_show_error(void);
void expect_cons_show_warning(char* expected);
void expect_any_cons_show_warning(void);
void expect_win_println(char* message);