From c768a00683f4774116b4a01e194fc964e2464fd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= Date: Mon, 16 Feb 2015 13:13:15 +0100 Subject: nmcli: colorize 'general', 'radio' and 'networking' outputs --- clients/cli/general.c | 89 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 70 insertions(+), 19 deletions(-) diff --git a/clients/cli/general.c b/clients/cli/general.c index 44c63c356c..c252427c44 100644 --- a/clients/cli/general.c +++ b/clients/cli/general.c @@ -14,7 +14,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Copyright 2010 - 2014 Red Hat, Inc. + * Copyright 2010 - 2015 Red Hat, Inc. */ #include "config.h" @@ -264,6 +264,26 @@ nm_state_to_string (NMState state) } } +static NmcTermColor +state_to_color (NMState state) +{ + switch (state) { + case NM_STATE_CONNECTING: + return NMC_TERM_COLOR_YELLOW; + case NM_STATE_CONNECTED_LOCAL: + case NM_STATE_CONNECTED_SITE: + case NM_STATE_CONNECTED_GLOBAL: + return NMC_TERM_COLOR_GREEN; + case NM_STATE_DISCONNECTING: + return NMC_TERM_COLOR_YELLOW; + case NM_STATE_ASLEEP: + case NM_STATE_DISCONNECTED: + return NMC_TERM_COLOR_RED; + default: + return NMC_TERM_COLOR_NORMAL; + } +} + static const char * nm_connectivity_to_string (NMConnectivityState connectivity) { @@ -282,17 +302,33 @@ nm_connectivity_to_string (NMConnectivityState connectivity) } } +static NmcTermColor +connectivity_to_color (NMConnectivityState connectivity) +{ + switch (connectivity) { + case NM_CONNECTIVITY_NONE: + return NMC_TERM_COLOR_RED; + case NM_CONNECTIVITY_PORTAL: + case NM_CONNECTIVITY_LIMITED: + return NMC_TERM_COLOR_YELLOW; + case NM_CONNECTIVITY_FULL: + return NMC_TERM_COLOR_GREEN; + default: + return NMC_TERM_COLOR_NORMAL; + } +} + static gboolean show_nm_status (NmCli *nmc, const char *pretty_header_name, const char *print_flds) { gboolean startup = FALSE; NMState state = NM_STATE_UNKNOWN; NMConnectivityState connectivity = NM_CONNECTIVITY_UNKNOWN; - const char *net_enabled_str; - const char *wireless_hw_enabled_str, *wireless_enabled_str; - const char *wwan_hw_enabled_str, *wwan_enabled_str; + gboolean net_enabled; + gboolean wireless_hw_enabled, wireless_enabled; + gboolean wwan_hw_enabled, wwan_enabled; #if WITH_WIMAX - const char *wimax_hw_enabled_str, *wimax_enabled_str; + gboolean wimax_hw_enabled, wimax_enabled; #endif GError *error = NULL; const char *fields_str; @@ -333,14 +369,14 @@ show_nm_status (NmCli *nmc, const char *pretty_header_name, const char *print_fl state = nm_client_get_state (nmc->client); startup = nm_client_get_startup (nmc->client); connectivity = nm_client_get_connectivity (nmc->client); - net_enabled_str = nm_client_networking_get_enabled (nmc->client) ? _("enabled") : _("disabled"); - wireless_hw_enabled_str = nm_client_wireless_hardware_get_enabled (nmc->client) ? _("enabled") : _("disabled"); - wireless_enabled_str = nm_client_wireless_get_enabled (nmc->client) ? _("enabled") : _("disabled"); - wwan_hw_enabled_str = nm_client_wwan_hardware_get_enabled (nmc->client) ? _("enabled") : _("disabled"); - wwan_enabled_str = nm_client_wwan_get_enabled (nmc->client) ? _("enabled") : _("disabled"); + net_enabled = nm_client_networking_get_enabled (nmc->client); + wireless_hw_enabled = nm_client_wireless_hardware_get_enabled (nmc->client); + wireless_enabled = nm_client_wireless_get_enabled (nmc->client); + wwan_hw_enabled = nm_client_wwan_hardware_get_enabled (nmc->client); + wwan_enabled = nm_client_wwan_get_enabled (nmc->client); #if WITH_WIMAX - wimax_hw_enabled_str = nm_client_wimax_hardware_get_enabled (nmc->client) ? _("enabled") : _("disabled"); - wimax_enabled_str = nm_client_wimax_get_enabled (nmc->client) ? _("enabled") : _("disabled"); + wimax_hw_enabled = nm_client_wimax_hardware_get_enabled (nmc->client); + wimax_enabled = nm_client_wimax_get_enabled (nmc->client); #endif nmc->print_fields.header_name = pretty_header_name ? (char *) pretty_header_name : _("NetworkManager status"); @@ -353,15 +389,30 @@ show_nm_status (NmCli *nmc, const char *pretty_header_name, const char *print_fl set_val_strc (arr, 2, nm_state_to_string (state)); set_val_strc (arr, 3, startup ? _("starting") : _("started")); set_val_strc (arr, 4, nm_connectivity_to_string (connectivity)); - set_val_strc (arr, 5, net_enabled_str); - set_val_strc (arr, 6, wireless_hw_enabled_str); - set_val_strc (arr, 7, wireless_enabled_str); - set_val_strc (arr, 8, wwan_hw_enabled_str); - set_val_strc (arr, 9, wwan_enabled_str); + set_val_strc (arr, 5, net_enabled ? _("enabled") : _("disabled")); + set_val_strc (arr, 6, wireless_hw_enabled ? _("enabled") : _("disabled")); + set_val_strc (arr, 7, wireless_enabled ? _("enabled") : _("disabled")); + set_val_strc (arr, 8, wwan_hw_enabled ? _("enabled") : _("disabled")); + set_val_strc (arr, 9, wwan_enabled ? _("enabled") : _("disabled")); +#if WITH_WIMAX + set_val_strc (arr, 10, wimax_hw_enabled ? _("enabled") : _("disabled")); + set_val_strc (arr, 11, wimax_enabled ? _("enabled") : _("disabled")); +#endif + + /* Set colors */ + arr[2].color = state_to_color (state); + arr[3].color = startup ? NMC_TERM_COLOR_YELLOW : NMC_TERM_COLOR_GREEN; + arr[4].color = connectivity_to_color (connectivity); + arr[5].color = net_enabled ? NMC_TERM_COLOR_GREEN : NMC_TERM_COLOR_RED; + arr[6].color = wireless_hw_enabled ? NMC_TERM_COLOR_GREEN : NMC_TERM_COLOR_RED; + arr[7].color = wireless_enabled ? NMC_TERM_COLOR_GREEN : NMC_TERM_COLOR_RED; + arr[8].color = wwan_hw_enabled ? NMC_TERM_COLOR_GREEN : NMC_TERM_COLOR_RED; + arr[9].color = wwan_enabled ? NMC_TERM_COLOR_GREEN : NMC_TERM_COLOR_RED; #if WITH_WIMAX - set_val_strc (arr, 10, wimax_hw_enabled_str); - set_val_strc (arr, 11, wimax_enabled_str); + arr[10].color = wimax_hw_enabled ? NMC_TERM_COLOR_GREEN : NMC_TERM_COLOR_RED; + arr[11].color = wimax_enabled ? NMC_TERM_COLOR_GREEN : NMC_TERM_COLOR_RED; #endif + g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ -- cgit v1.2.1