mirror of
https://github.com/MidnightCommander/mc
synced 2025-01-10 13:32:31 +03:00
Merge branch '1497_stickchars'
* 1497_stickchars: add info into mc.1 the man page. refatoring: move init of tty lines drawing onto separate function Ticket #1497 (stickchars)
This commit is contained in:
commit
a301a7c8a5
@ -66,10 +66,51 @@ the last directory the Midnight Commander was in. Source the file
|
|||||||
.B mc
|
.B mc
|
||||||
as an alias to the appropriate shell script.
|
as an alias to the appropriate shell script.
|
||||||
.TP
|
.TP
|
||||||
.I \-s, \-\-slow
|
.I \-s
|
||||||
Turn on the slow terminal mode, in this mode the program will not
|
Set alternative mode drawing of frameworks.
|
||||||
draw expensive line drawing characters and will toggle verbose mode
|
If the section [Lines] is not filled, the symbol for the pseudographics
|
||||||
off.
|
frame is a space, otherwise the frame characters are taken from follow params.
|
||||||
|
|
||||||
|
.B You can redefine follow variables:
|
||||||
|
.TP
|
||||||
|
.B lefttop
|
||||||
|
left\-top corner
|
||||||
|
.TP
|
||||||
|
.B righttop
|
||||||
|
right\-top corner
|
||||||
|
.TP
|
||||||
|
.B centertop
|
||||||
|
center-top cross
|
||||||
|
.TP
|
||||||
|
.B centerbottom
|
||||||
|
center\-bottom cross
|
||||||
|
.TP
|
||||||
|
.B leftbottom
|
||||||
|
left\-bottom corner
|
||||||
|
.TP
|
||||||
|
.B rightbottom
|
||||||
|
right\-bottom corner
|
||||||
|
.TP
|
||||||
|
.B leftmiddle
|
||||||
|
left\-middle cross
|
||||||
|
.TP
|
||||||
|
.B rightmiddle
|
||||||
|
right\-middle cross
|
||||||
|
.TP
|
||||||
|
.B centermiddle
|
||||||
|
center cross
|
||||||
|
.TP
|
||||||
|
.B horiz
|
||||||
|
default horizontal line
|
||||||
|
.TP
|
||||||
|
.B vert
|
||||||
|
default vertical line
|
||||||
|
.TP
|
||||||
|
.B thinhoriz
|
||||||
|
thin horizontal line
|
||||||
|
.TP
|
||||||
|
.B thinvert
|
||||||
|
thin vertical line
|
||||||
.TP
|
.TP
|
||||||
.I \-t, \-\-termcap
|
.I \-t, \-\-termcap
|
||||||
Used only if the code was compiled with Slang and terminfo: it makes
|
Used only if the code was compiled with Slang and terminfo: it makes
|
||||||
|
14
src/menu.c
14
src/menu.c
@ -90,18 +90,14 @@ static void menubar_paint_idx (WMenu *menubar, int idx, int color)
|
|||||||
/* menu separator */
|
/* menu separator */
|
||||||
tty_setcolor (MENU_ENTRY_COLOR);
|
tty_setcolor (MENU_ENTRY_COLOR);
|
||||||
|
|
||||||
if (!tty_is_slow ()) {
|
widget_move (&menubar->widget, y, x - 1);
|
||||||
widget_move (&menubar->widget, y, x - 1);
|
tty_print_alt_char (ACS_LTEE);
|
||||||
tty_print_alt_char (ACS_LTEE);
|
|
||||||
}
|
|
||||||
|
|
||||||
tty_draw_hline (menubar->widget.y + y, menubar->widget.x + x,
|
tty_draw_hline (menubar->widget.y + y, menubar->widget.x + x,
|
||||||
tty_is_slow () ? ' ' : ACS_HLINE, menubar->max_entry_len + 2);
|
ACS_HLINE, menubar->max_entry_len + 2);
|
||||||
|
|
||||||
if (!tty_is_slow ()) {
|
widget_move (&menubar->widget, y, x + menubar->max_entry_len + 2);
|
||||||
widget_move (&menubar->widget, y, x + menubar->max_entry_len + 2);
|
tty_print_alt_char (ACS_RTEE);
|
||||||
tty_print_alt_char (ACS_RTEE);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
/* menu text */
|
/* menu text */
|
||||||
tty_setcolor (color);
|
tty_setcolor (color);
|
||||||
|
@ -715,8 +715,7 @@ mini_info_separator (WPanel *panel)
|
|||||||
|
|
||||||
tty_setcolor (NORMAL_COLOR);
|
tty_setcolor (NORMAL_COLOR);
|
||||||
tty_draw_hline (panel->widget.y + y, panel->widget.x + 1,
|
tty_draw_hline (panel->widget.y + y, panel->widget.x + 1,
|
||||||
tty_is_slow () ? '-' : ACS_HLINE,
|
ACS_HLINE, panel->widget.cols - 2);
|
||||||
panel->widget.cols - 2);
|
|
||||||
/* Status displays total marked size.
|
/* Status displays total marked size.
|
||||||
* Centered in panel, full format. */
|
* Centered in panel, full format. */
|
||||||
display_total_marked_size (panel, y, -1, FALSE);
|
display_total_marked_size (panel, y, -1, FALSE);
|
||||||
@ -769,7 +768,7 @@ show_dir (WPanel *panel)
|
|||||||
panel->widget.y, panel->widget.x,
|
panel->widget.y, panel->widget.x,
|
||||||
panel->widget.lines, panel->widget.cols);
|
panel->widget.lines, panel->widget.cols);
|
||||||
|
|
||||||
if (show_mini_info && !tty_is_slow ()) {
|
if (show_mini_info) {
|
||||||
widget_move (&panel->widget, llines (panel) + 2, 0);
|
widget_move (&panel->widget, llines (panel) + 2, 0);
|
||||||
tty_print_alt_char (ACS_LTEE);
|
tty_print_alt_char (ACS_LTEE);
|
||||||
widget_move (&panel->widget, llines (panel) + 2,
|
widget_move (&panel->widget, llines (panel) + 2,
|
||||||
|
47
src/setup.c
47
src/setup.c
@ -34,6 +34,7 @@
|
|||||||
#include "../src/tty/key.h"
|
#include "../src/tty/key.h"
|
||||||
#include "../src/tty/mouse.h" /* To make view.h happy */
|
#include "../src/tty/mouse.h" /* To make view.h happy */
|
||||||
|
|
||||||
|
#include "args.h"
|
||||||
#include "dir.h"
|
#include "dir.h"
|
||||||
#include "panel.h"
|
#include "panel.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
@ -550,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 *
|
char *
|
||||||
setup_init (void)
|
setup_init (void)
|
||||||
{
|
{
|
||||||
@ -680,6 +724,9 @@ load_setup (void)
|
|||||||
if ( get_codepage_id( display_codepage ) )
|
if ( get_codepage_id( display_codepage ) )
|
||||||
utf8_display = str_isutf8 (get_codepage_id( display_codepage ));
|
utf8_display = str_isutf8 (get_codepage_id( display_codepage ));
|
||||||
#endif /* HAVE_CHARSET */
|
#endif /* HAVE_CHARSET */
|
||||||
|
|
||||||
|
if (!mc_args__ugly_line_drawing)
|
||||||
|
setup_load_lines_tty();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(USE_VFS) && defined (USE_NETCODE)
|
#if defined(USE_VFS) && defined (USE_NETCODE)
|
||||||
|
@ -257,8 +257,7 @@ static void show_tree (WTree *tree)
|
|||||||
/* Loop for every line */
|
/* Loop for every line */
|
||||||
for (i = 0; i < tree_lines; i++){
|
for (i = 0; i < tree_lines; i++){
|
||||||
/* Move to the beginning of the line */
|
/* Move to the beginning of the line */
|
||||||
tty_draw_hline (tree->widget.y + y + i, tree->widget.x + x,
|
tty_draw_hline (tree->widget.y + y + i, tree->widget.x + x, ' ', tree_cols);
|
||||||
' ', tree_cols);
|
|
||||||
|
|
||||||
if (!current)
|
if (!current)
|
||||||
continue;
|
continue;
|
||||||
|
@ -11,6 +11,9 @@
|
|||||||
/* If true lines are shown by spaces */
|
/* If true lines are shown by spaces */
|
||||||
extern gboolean slow_tty;
|
extern gboolean slow_tty;
|
||||||
|
|
||||||
|
/* If true use +, -, | for line drawing */
|
||||||
|
extern gboolean ugly_line_drawing;
|
||||||
|
|
||||||
/* The mouse is currently: TRUE - enabled, FALSE - disabled */
|
/* The mouse is currently: TRUE - enabled, FALSE - disabled */
|
||||||
extern gboolean mouse_enabled;
|
extern gboolean mouse_enabled;
|
||||||
|
|
||||||
|
@ -216,8 +216,12 @@ tty_getyx (int *py, int *px)
|
|||||||
void
|
void
|
||||||
tty_draw_hline (int y, int x, int ch, int len)
|
tty_draw_hline (int y, int x, int ch, int len)
|
||||||
{
|
{
|
||||||
|
if (ch == ACS_HLINE && slow_tty) {
|
||||||
|
ch = ugly_frm_thinhoriz;
|
||||||
|
}
|
||||||
|
|
||||||
if ((y >= 0) && (x >= 0))
|
if ((y >= 0) && (x >= 0))
|
||||||
move (y, x);
|
move (y, x);
|
||||||
hline (ch, len);
|
hline (ch, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -290,6 +294,14 @@ tty_print_anychar (int c)
|
|||||||
{
|
{
|
||||||
unsigned char str[6 + 1];
|
unsigned char str[6 + 1];
|
||||||
|
|
||||||
|
if (c == ACS_RTEE && (ugly_line_drawing || slow_tty)) {
|
||||||
|
c = ugly_frm_rightmiddle;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c == ACS_LTEE && (ugly_line_drawing || slow_tty)) {
|
||||||
|
c = ugly_frm_leftmiddle;
|
||||||
|
}
|
||||||
|
|
||||||
if ( c > 255 ) {
|
if ( c > 255 ) {
|
||||||
int res = g_unichar_to_utf8 (c, (char *)str);
|
int res = g_unichar_to_utf8 (c, (char *)str);
|
||||||
if ( res == 0 ) {
|
if ( res == 0 ) {
|
||||||
|
@ -197,6 +197,7 @@ void
|
|||||||
tty_init (gboolean slow, gboolean ugly_lines)
|
tty_init (gboolean slow, gboolean ugly_lines)
|
||||||
{
|
{
|
||||||
slow_tty = slow;
|
slow_tty = slow;
|
||||||
|
ugly_line_drawing = ugly_lines;
|
||||||
|
|
||||||
SLtt_get_terminfo ();
|
SLtt_get_terminfo ();
|
||||||
SLutf8_enable (-1);
|
SLutf8_enable (-1);
|
||||||
@ -386,6 +387,10 @@ tty_getyx (int *py, int *px)
|
|||||||
void
|
void
|
||||||
tty_draw_hline (int y, int x, int ch, int len)
|
tty_draw_hline (int y, int x, int ch, int len)
|
||||||
{
|
{
|
||||||
|
if (ch == ACS_HLINE && (ugly_line_drawing || slow_tty)) {
|
||||||
|
ch = mc_tty_ugly_frm[MC_TTY_FRM_thinhoriz];
|
||||||
|
}
|
||||||
|
|
||||||
if ((y < 0) || (x < 0)) {
|
if ((y < 0) || (x < 0)) {
|
||||||
y = SLsmg_get_row ();
|
y = SLsmg_get_row ();
|
||||||
x = SLsmg_get_column ();
|
x = SLsmg_get_column ();
|
||||||
@ -435,7 +440,8 @@ tty_draw_vline (int y, int x, int ch, int len)
|
|||||||
void
|
void
|
||||||
tty_draw_box (int y, int x, int rows, int cols)
|
tty_draw_box (int y, int x, int rows, int cols)
|
||||||
{
|
{
|
||||||
if (slow_tty)
|
/* this fix slang drawing stickchars bug */
|
||||||
|
if (ugly_line_drawing || slow_tty)
|
||||||
tty_draw_box_slow (y, x, rows, cols);
|
tty_draw_box_slow (y, x, rows, cols);
|
||||||
else
|
else
|
||||||
SLsmg_draw_box (y, x, rows, cols);
|
SLsmg_draw_box (y, x, rows, cols);
|
||||||
@ -468,7 +474,18 @@ tty_print_char (int c)
|
|||||||
void
|
void
|
||||||
tty_print_alt_char (int c)
|
tty_print_alt_char (int c)
|
||||||
{
|
{
|
||||||
SLsmg_draw_object (SLsmg_get_row(), SLsmg_get_column(), c);
|
if (c == ACS_RTEE && (ugly_line_drawing || slow_tty)) {
|
||||||
|
c = mc_tty_ugly_frm[MC_TTY_FRM_rightmiddle];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c == ACS_LTEE && (ugly_line_drawing || slow_tty)) {
|
||||||
|
c = mc_tty_ugly_frm[MC_TTY_FRM_leftmiddle];
|
||||||
|
}
|
||||||
|
if (ugly_line_drawing || slow_tty) {
|
||||||
|
tty_print_char (c);
|
||||||
|
} else {
|
||||||
|
SLsmg_draw_object (SLsmg_get_row(), SLsmg_get_column(), c);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -49,6 +49,8 @@ gboolean slow_tty = FALSE;
|
|||||||
/* If true use +, -, | for line drawing */
|
/* If true use +, -, | for line drawing */
|
||||||
gboolean ugly_line_drawing = FALSE;
|
gboolean ugly_line_drawing = FALSE;
|
||||||
|
|
||||||
|
int mc_tty_ugly_frm[] = { '|', '-', '|', '-', '+', '+', '+', '+', '+', '+'};
|
||||||
|
|
||||||
/*** file scope macro definitions **************************************/
|
/*** file scope macro definitions **************************************/
|
||||||
|
|
||||||
/*** file scope type declarations **************************************/
|
/*** file scope type declarations **************************************/
|
||||||
@ -121,8 +123,8 @@ tty_got_interrupt(void)
|
|||||||
void
|
void
|
||||||
tty_print_one_hline (void)
|
tty_print_one_hline (void)
|
||||||
{
|
{
|
||||||
if (slow_tty)
|
if (ugly_line_drawing || slow_tty)
|
||||||
tty_print_char (' ');
|
tty_print_char (mc_tty_ugly_frm[MC_TTY_FRM_thinhoriz]);
|
||||||
else
|
else
|
||||||
tty_print_alt_char (ACS_HLINE);
|
tty_print_alt_char (ACS_HLINE);
|
||||||
}
|
}
|
||||||
@ -130,8 +132,8 @@ tty_print_one_hline (void)
|
|||||||
void
|
void
|
||||||
tty_print_one_vline (void)
|
tty_print_one_vline (void)
|
||||||
{
|
{
|
||||||
if (slow_tty)
|
if (ugly_line_drawing || slow_tty)
|
||||||
tty_print_char (' ');
|
tty_print_char (mc_tty_ugly_frm[MC_TTY_FRM_thinvert]);
|
||||||
else
|
else
|
||||||
tty_print_alt_char (ACS_VLINE);
|
tty_print_alt_char (ACS_VLINE);
|
||||||
}
|
}
|
||||||
@ -139,8 +141,16 @@ tty_print_one_vline (void)
|
|||||||
void
|
void
|
||||||
tty_draw_box_slow (int y, int x, int ys, int xs)
|
tty_draw_box_slow (int y, int x, int ys, int xs)
|
||||||
{
|
{
|
||||||
tty_draw_hline (y, x, ' ', xs);
|
tty_draw_vline (y, x, mc_tty_ugly_frm[MC_TTY_FRM_vert], ys);
|
||||||
tty_draw_vline (y, x, ' ', ys);
|
tty_draw_vline (y, x + xs - 1, mc_tty_ugly_frm[MC_TTY_FRM_vert], ys);
|
||||||
tty_draw_vline (y, x + xs - 1, ' ', ys);
|
tty_draw_hline (y, x, mc_tty_ugly_frm[MC_TTY_FRM_horiz], xs);
|
||||||
tty_draw_hline (y + ys - 1, x, ' ', xs);
|
tty_draw_hline (y + ys - 1, x, mc_tty_ugly_frm[MC_TTY_FRM_horiz], xs);
|
||||||
|
tty_gotoyx (y, x);
|
||||||
|
tty_print_char (mc_tty_ugly_frm[MC_TTY_FRM_lefttop]);
|
||||||
|
tty_gotoyx (y + ys - 1, x);
|
||||||
|
tty_print_char (mc_tty_ugly_frm[MC_TTY_FRM_leftbottom]);
|
||||||
|
tty_gotoyx (y, x + xs - 1);
|
||||||
|
tty_print_char (mc_tty_ugly_frm[MC_TTY_FRM_righttop]);
|
||||||
|
tty_gotoyx (y + ys - 1, x + xs - 1);
|
||||||
|
tty_print_char (mc_tty_ugly_frm[MC_TTY_FRM_rightbottom]);
|
||||||
}
|
}
|
||||||
|
@ -77,6 +77,21 @@ 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_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 void tty_fill_region (int y, int x, int rows, int cols, unsigned char ch);
|
||||||
|
|
||||||
|
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);
|
extern char *tty_tgetstr (const char *name);
|
||||||
|
|
||||||
extern void tty_beep (void);
|
extern void tty_beep (void);
|
||||||
|
Loading…
Reference in New Issue
Block a user