diff --git a/src/setup.c b/src/setup.c index 7070ae975..f546372d2 100644 --- a/src/setup.c +++ b/src/setup.c @@ -551,6 +551,49 @@ setup__move_panels_config_into_separate_file(const char*profile) } + +static int +setup_srt_to_char (char* str) +{ + int res = -1; + + if (!str) + return (int) ' '; + res = g_utf8_get_char_validated (str, -1); + + if ( res < 0 ) { + return (int) *str; + } else { + return res; + } +} + +static inline int +setup_load_lines_frm(const char *name) +{ + int ret; + char *frm_val = NULL; + frm_val = mc_config_get_string(mc_main_config, "Lines", name, " "); + ret = setup_srt_to_char (frm_val); + g_free (frm_val); + return ret; +} + +static void +setup_load_lines_tty(void) +{ + mc_tty_ugly_frm[MC_TTY_FRM_horiz] = setup_load_lines_frm("horiz"); + mc_tty_ugly_frm[MC_TTY_FRM_vert] = setup_load_lines_frm("vert"); + mc_tty_ugly_frm[MC_TTY_FRM_lefttop] = setup_load_lines_frm("lefttop"); + mc_tty_ugly_frm[MC_TTY_FRM_righttop] = setup_load_lines_frm("righttop"); + mc_tty_ugly_frm[MC_TTY_FRM_leftbottom] = setup_load_lines_frm("leftbottom"); + mc_tty_ugly_frm[MC_TTY_FRM_rightbottom] = setup_load_lines_frm("rightbottom"); + mc_tty_ugly_frm[MC_TTY_FRM_thinvert] = setup_load_lines_frm("thinvert"); + mc_tty_ugly_frm[MC_TTY_FRM_thinhoriz] = setup_load_lines_frm("thinhoriz"); + mc_tty_ugly_frm[MC_TTY_FRM_rightmiddle] = setup_load_lines_frm("rightmiddle"); + mc_tty_ugly_frm[MC_TTY_FRM_leftmiddle] = setup_load_lines_frm("leftmiddle"); +} + char * setup_init (void) { @@ -582,29 +625,12 @@ setup_init (void) return profile; } -int -setup_srt_to_char (char* str) -{ - int res = -1; - - if (!str) - return (int) ' '; - res = g_utf8_get_char_validated (str, -1); - - if ( res < 0 ) { - return (int) *str; - } else { - return res; - } -} - void load_setup (void) { char *profile; int i; char *buffer; - char *frm_val = NULL; profile = setup_init (); @@ -699,48 +725,8 @@ load_setup (void) utf8_display = str_isutf8 (get_codepage_id( display_codepage )); #endif /* HAVE_CHARSET */ - if (!mc_args__ugly_line_drawing) { - frm_val = mc_config_get_string(mc_main_config, "Frames", "horiz", " "); - ugly_frm_horiz = setup_srt_to_char (frm_val); - g_free (frm_val); - - frm_val = mc_config_get_string(mc_main_config, "Frames", "vert", " "); - ugly_frm_vert = setup_srt_to_char (frm_val); - g_free (frm_val); - - frm_val = mc_config_get_string(mc_main_config, "Frames", "lefttop", " "); - ugly_frm_lefttop = setup_srt_to_char (frm_val); - g_free (frm_val); - - frm_val = mc_config_get_string(mc_main_config, "Frames", "righttop", " "); - ugly_frm_righttop = setup_srt_to_char (frm_val); - g_free (frm_val); - - frm_val = mc_config_get_string(mc_main_config, "Frames", "leftbottom", " "); - ugly_frm_leftbottom = setup_srt_to_char (frm_val); - g_free (frm_val); - - frm_val = mc_config_get_string(mc_main_config, "Frames", "rightbottom", " "); - ugly_frm_rightbottom = setup_srt_to_char (frm_val); - g_free (frm_val); - - frm_val = mc_config_get_string(mc_main_config, "Frames", "thinvert", " "); - ugly_frm_thinvert = setup_srt_to_char (frm_val); - g_free (frm_val); - - frm_val = mc_config_get_string(mc_main_config, "Frames", "thinhoriz", "-"); - ugly_frm_thinhoriz = setup_srt_to_char (frm_val); - g_free (frm_val); - - frm_val = mc_config_get_string(mc_main_config, "Frames", "rightmiddle", " "); - ugly_frm_rightmiddle = setup_srt_to_char (frm_val); - g_free (frm_val); - - frm_val = mc_config_get_string(mc_main_config, "Frames", "leftmiddle", " "); - ugly_frm_leftmiddle = setup_srt_to_char (frm_val); - g_free (frm_val); - } - + if (!mc_args__ugly_line_drawing) + setup_load_lines_tty(); } #if defined(USE_VFS) && defined (USE_NETCODE) diff --git a/src/tty/tty-slang.c b/src/tty/tty-slang.c index 47151f8bc..b9ae4430d 100644 --- a/src/tty/tty-slang.c +++ b/src/tty/tty-slang.c @@ -388,7 +388,7 @@ void tty_draw_hline (int y, int x, int ch, int len) { if (ch == ACS_HLINE && (ugly_line_drawing || slow_tty)) { - ch = ugly_frm_thinhoriz; + ch = mc_tty_ugly_frm[MC_TTY_FRM_thinhoriz]; } if ((y < 0) || (x < 0)) { @@ -475,11 +475,11 @@ void tty_print_alt_char (int c) { if (c == ACS_RTEE && (ugly_line_drawing || slow_tty)) { - c = ugly_frm_rightmiddle; + c = mc_tty_ugly_frm[MC_TTY_FRM_rightmiddle]; } if (c == ACS_LTEE && (ugly_line_drawing || slow_tty)) { - c = ugly_frm_leftmiddle; + c = mc_tty_ugly_frm[MC_TTY_FRM_leftmiddle]; } if (ugly_line_drawing || slow_tty) { tty_print_char (c); diff --git a/src/tty/tty.c b/src/tty/tty.c index cf1f7accc..682134a6f 100644 --- a/src/tty/tty.c +++ b/src/tty/tty.c @@ -49,16 +49,7 @@ gboolean slow_tty = FALSE; /* If true use +, -, | for line drawing */ gboolean ugly_line_drawing = FALSE; -int ugly_frm_thinvert = '|'; -int ugly_frm_thinhoriz = '-'; -int ugly_frm_vert = '|'; -int ugly_frm_horiz = '-'; -int ugly_frm_lefttop = '+'; -int ugly_frm_righttop = '+'; -int ugly_frm_leftbottom = '+'; -int ugly_frm_rightbottom = '+'; -int ugly_frm_leftmiddle = '+'; -int ugly_frm_rightmiddle = '+'; +int mc_tty_ugly_frm[] = { '|', '-', '|', '-', '+', '+', '+', '+', '+', '+'}; /*** file scope macro definitions **************************************/ @@ -133,7 +124,7 @@ void tty_print_one_hline (void) { if (ugly_line_drawing || slow_tty) - tty_print_char (ugly_frm_thinhoriz); + tty_print_char (mc_tty_ugly_frm[MC_TTY_FRM_thinhoriz]); else tty_print_alt_char (ACS_HLINE); } @@ -142,7 +133,7 @@ void tty_print_one_vline (void) { if (ugly_line_drawing || slow_tty) - tty_print_char (ugly_frm_thinvert); + tty_print_char (mc_tty_ugly_frm[MC_TTY_FRM_thinvert]); else tty_print_alt_char (ACS_VLINE); } @@ -150,16 +141,16 @@ tty_print_one_vline (void) void tty_draw_box_slow (int y, int x, int ys, int xs) { - tty_draw_vline (y, x, ugly_frm_vert, ys); - tty_draw_vline (y, x + xs - 1, ugly_frm_vert, ys); - tty_draw_hline (y, x, ugly_frm_horiz, xs); - tty_draw_hline (y + ys - 1, x, ugly_frm_horiz, xs); + tty_draw_vline (y, x, mc_tty_ugly_frm[MC_TTY_FRM_vert], ys); + tty_draw_vline (y, x + xs - 1, mc_tty_ugly_frm[MC_TTY_FRM_vert], ys); + tty_draw_hline (y, x, mc_tty_ugly_frm[MC_TTY_FRM_horiz], xs); + tty_draw_hline (y + ys - 1, x, mc_tty_ugly_frm[MC_TTY_FRM_horiz], xs); tty_gotoyx (y, x); - tty_print_char (ugly_frm_lefttop); + tty_print_char (mc_tty_ugly_frm[MC_TTY_FRM_lefttop]); tty_gotoyx (y + ys - 1, x); - tty_print_char (ugly_frm_leftbottom); + tty_print_char (mc_tty_ugly_frm[MC_TTY_FRM_leftbottom]); tty_gotoyx (y, x + xs - 1); - tty_print_char (ugly_frm_righttop); + tty_print_char (mc_tty_ugly_frm[MC_TTY_FRM_righttop]); tty_gotoyx (y + ys - 1, x + xs - 1); - tty_print_char (ugly_frm_rightbottom); + tty_print_char (mc_tty_ugly_frm[MC_TTY_FRM_rightbottom]); } diff --git a/src/tty/tty.h b/src/tty/tty.h index 2bdeb24b9..51f411323 100644 --- a/src/tty/tty.h +++ b/src/tty/tty.h @@ -77,16 +77,20 @@ extern void tty_draw_box (int y, int x, int rows, int cols); extern void tty_draw_box_slow (int y, int x, int ys, int xs); extern void tty_fill_region (int y, int x, int rows, int cols, unsigned char ch); -extern int ugly_frm_thinvert; -extern int ugly_frm_thinhoriz; -extern int ugly_frm_vert; -extern int ugly_frm_horiz; -extern int ugly_frm_lefttop; -extern int ugly_frm_righttop; -extern int ugly_frm_leftbottom; -extern int ugly_frm_rightbottom; -extern int ugly_frm_leftmiddle; -extern int ugly_frm_rightmiddle; +extern int mc_tty_ugly_frm[]; + +typedef enum{ + MC_TTY_FRM_thinvert, + MC_TTY_FRM_thinhoriz, + MC_TTY_FRM_vert, + MC_TTY_FRM_horiz, + MC_TTY_FRM_lefttop, + MC_TTY_FRM_righttop, + MC_TTY_FRM_leftbottom, + MC_TTY_FRM_rightbottom, + MC_TTY_FRM_leftmiddle, + MC_TTY_FRM_rightmiddle +} mc_tty_frm_t; extern char *tty_tgetstr (const char *name);