From 685cccabe3159dc05d8df4ff7784aa6e6e8a5c79 Mon Sep 17 00:00:00 2001 From: "Michael J. Chudobiak" Date: Tue, 11 Dec 2012 15:47:38 -0500 Subject: better construction of remote-mode string on main menu --- menus.c | 60 ++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/menus.c b/menus.c index 7a161cf..40d4e87 100644 --- a/menus.c +++ b/menus.c @@ -898,36 +898,44 @@ void Show_Main_Menu(void) LCD_row=LCD_entry % LCD_rows; LCD_col=((LCD_entry % LCD_max_entries_per_page) / LCD_rows) * LCD_col_width + 1; - gchar *ctrl_str = NULL; - update_remote_mode(); - switch (globals.Remote.mode) { - case (RM_NOT_TERM | RM_NOT_REM | RM_NOT_LOCK): - case (RM_NOT_TERM | RM_NOT_REM | RM_LOCK): - ctrl_str = g_strdup ("LOCAL"); - break; - case (RM_NOT_TERM | RM_REM | RM_NOT_LOCK): - ctrl_str = g_strdup ("LOCAL+GPIB"); - break; - case (RM_NOT_TERM | RM_REM | RM_LOCK): - ctrl_str = g_strdup ("GPIB"); - break; - case (RM_TERM | RM_NOT_REM | RM_NOT_LOCK): - case (RM_TERM | RM_NOT_REM | RM_LOCK): - ctrl_str = g_strdup_printf ("LOCAL+%dTER", globals.Remote.terminal_connections); - break; - case (RM_TERM | RM_REM | RM_NOT_LOCK): - ctrl_str = g_strdup_printf ("LO+GPIB+%dTER", globals.Remote.terminal_connections); - break; - case (RM_TERM | RM_REM | RM_LOCK): - ctrl_str = g_strdup_printf ("GPIB+%dTER", globals.Remote.terminal_connections); - break; - default: - ctrl_str = g_strdup ("LOCAL"); - break; + GString *raw_str = g_string_new (""); + + if (!GPIB_REMOTE_AND_LOCKED) { + raw_str = g_string_append (raw_str, "LOCAL+"); } + if (globals.Remote.mode & RM_REM) { + raw_str = g_string_append (raw_str, "GPIB+"); + } + + if (globals.Remote.mode & RM_TERM) { + g_string_append_printf (raw_str, "%dTER", globals.Remote.terminal_connections); + } + + gchar *step1 = g_strdup (raw_str->str); + g_string_free (raw_str, TRUE); + + // remove semicolon at end + gchar *step2 = conditional_regex_replace (TRUE, step1, "+$", ""); + g_free (step1); + + // shorten as required + gchar *step3 = conditional_regex_replace (strlen(step2) > LCD_col_width, step2, "LOCAL", "LO"); + g_free (step2); + + // shorten as required + gchar *step4 = conditional_regex_replace (strlen(step2) > LCD_col_width, step3, "TER", "T"); + g_free (step3); + + // shorten as required + gchar *step5 = conditional_regex_replace (strlen(step2) > LCD_col_width, step4, "GPIB", "GP"); + g_free (step4); + + // finish + gchar *ctrl_str = g_strdup (step5); + g_free (step5); if (Menu_Is_Item_Visible(LCD_entry)) { LCD_write_padded_spaces(LCD_row,LCD_col,ctrl_str,LCD_col_width); -- cgit