mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 20:36:50 +03:00
fix for #188
This commit is contained in:
parent
1c977d254a
commit
4333bc4b60
@ -17,6 +17,7 @@
|
|||||||
* lib/mc.lib: added patch on #219 by angel_il
|
* lib/mc.lib: added patch on #219 by angel_il
|
||||||
* edit/editcmd.c, configure.ac: removed obsolete own implementation of memove (#242)
|
* edit/editcmd.c, configure.ac: removed obsolete own implementation of memove (#242)
|
||||||
* vfs/extfs/u7z: patch from mandriva (#194)
|
* vfs/extfs/u7z: patch from mandriva (#194)
|
||||||
|
* added andrew_b's patch for showing free space (#188)
|
||||||
|
|
||||||
2009-02-01 Enrico Weigelt, metux ITS <weigelt@metux.de>
|
2009-02-01 Enrico Weigelt, metux ITS <weigelt@metux.de>
|
||||||
|
|
||||||
|
61
src/layout.c
61
src/layout.c
@ -98,6 +98,9 @@ int message_visible = 1;
|
|||||||
/* Set to show current working dir in xterm window title */
|
/* Set to show current working dir in xterm window title */
|
||||||
int xterm_title = 1;
|
int xterm_title = 1;
|
||||||
|
|
||||||
|
/* Set to show free space on device assigned to current directory */
|
||||||
|
int free_space = 1;
|
||||||
|
|
||||||
/* The starting line for the output of the subprogram */
|
/* The starting line for the output of the subprogram */
|
||||||
int output_start_y = 0;
|
int output_start_y = 0;
|
||||||
|
|
||||||
@ -127,6 +130,7 @@ static int _command_prompt;
|
|||||||
static int _keybar_visible;
|
static int _keybar_visible;
|
||||||
static int _message_visible;
|
static int _message_visible;
|
||||||
static int _xterm_title;
|
static int _xterm_title;
|
||||||
|
static int _free_space;
|
||||||
static int _permission_mode;
|
static int _permission_mode;
|
||||||
static int _filetype_mode;
|
static int _filetype_mode;
|
||||||
|
|
||||||
@ -157,6 +161,7 @@ static struct {
|
|||||||
int *variable;
|
int *variable;
|
||||||
WCheck *widget;
|
WCheck *widget;
|
||||||
} check_options [] = {
|
} check_options [] = {
|
||||||
|
{ N_("show free sp&Ace"), &free_space, 0 },
|
||||||
{ N_("&Xterm window title"), &xterm_title, 0 },
|
{ N_("&Xterm window title"), &xterm_title, 0 },
|
||||||
{ N_("h&Intbar visible"), &message_visible, 0 },
|
{ N_("h&Intbar visible"), &message_visible, 0 },
|
||||||
{ N_("&Keybar visible"), &keybar_visible, 0 },
|
{ N_("&Keybar visible"), &keybar_visible, 0 },
|
||||||
@ -228,8 +233,8 @@ static int b2left_cback (int action)
|
|||||||
if (_equal_split){
|
if (_equal_split){
|
||||||
/* Turn equal split off */
|
/* Turn equal split off */
|
||||||
_equal_split = 0;
|
_equal_split = 0;
|
||||||
check_options [6].widget->state = check_options [6].widget->state & ~C_BOOL;
|
check_options [7].widget->state = check_options [7].widget->state & ~C_BOOL;
|
||||||
dlg_select_widget (check_options [6].widget);
|
dlg_select_widget (check_options [7].widget);
|
||||||
dlg_select_widget (bleft_widget);
|
dlg_select_widget (bleft_widget);
|
||||||
}
|
}
|
||||||
_first_panel_size++;
|
_first_panel_size++;
|
||||||
@ -243,8 +248,8 @@ static int b2right_cback (int action)
|
|||||||
if (_equal_split){
|
if (_equal_split){
|
||||||
/* Turn equal split off */
|
/* Turn equal split off */
|
||||||
_equal_split = 0;
|
_equal_split = 0;
|
||||||
check_options [6].widget->state = check_options [6].widget->state & ~C_BOOL;
|
check_options [7].widget->state = check_options [7].widget->state & ~C_BOOL;
|
||||||
dlg_select_widget (check_options [6].widget);
|
dlg_select_widget (check_options [7].widget);
|
||||||
dlg_select_widget (bright_widget);
|
dlg_select_widget (bright_widget);
|
||||||
}
|
}
|
||||||
_first_panel_size--;
|
_first_panel_size--;
|
||||||
@ -290,23 +295,24 @@ layout_callback (struct Dlg_head *h, dlg_msg_t msg, int parm)
|
|||||||
if (old_output_lines != _output_lines){
|
if (old_output_lines != _output_lines){
|
||||||
old_output_lines = _output_lines;
|
old_output_lines = _output_lines;
|
||||||
attrset (COLOR_NORMAL);
|
attrset (COLOR_NORMAL);
|
||||||
dlg_move (h, 9, 16 + first_width);
|
dlg_move (h, 10, 16 + first_width);
|
||||||
addstr (output_lines_label);
|
addstr (output_lines_label);
|
||||||
dlg_move (h, 9, 10 + first_width);
|
dlg_move (h, 10, 10 + first_width);
|
||||||
tty_printf ("%02d", _output_lines);
|
tty_printf ("%02d", _output_lines);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return MSG_HANDLED;
|
return MSG_HANDLED;
|
||||||
|
|
||||||
case DLG_POST_KEY:
|
case DLG_POST_KEY:
|
||||||
_filetype_mode = check_options [8].widget->state & C_BOOL;
|
_filetype_mode = check_options [9].widget->state & C_BOOL;
|
||||||
_permission_mode = check_options [7].widget->state & C_BOOL;
|
_permission_mode = check_options [8].widget->state & C_BOOL;
|
||||||
_equal_split = check_options [6].widget->state & C_BOOL;
|
_equal_split = check_options [7].widget->state & C_BOOL;
|
||||||
_menubar_visible = check_options [5].widget->state & C_BOOL;
|
_menubar_visible = check_options [6].widget->state & C_BOOL;
|
||||||
_command_prompt = check_options [4].widget->state & C_BOOL;
|
_command_prompt = check_options [5].widget->state & C_BOOL;
|
||||||
_keybar_visible = check_options [2].widget->state & C_BOOL;
|
_keybar_visible = check_options [3].widget->state & C_BOOL;
|
||||||
_message_visible = check_options [1].widget->state & C_BOOL;
|
_message_visible = check_options [2].widget->state & C_BOOL;
|
||||||
_xterm_title = check_options [0].widget->state & C_BOOL;
|
_xterm_title = check_options [1].widget->state & C_BOOL;
|
||||||
|
_free_space = check_options [0].widget->state & C_BOOL;
|
||||||
if (console_flag){
|
if (console_flag){
|
||||||
int minimum;
|
int minimum;
|
||||||
if (_output_lines < 0)
|
if (_output_lines < 0)
|
||||||
@ -334,7 +340,7 @@ layout_callback (struct Dlg_head *h, dlg_msg_t msg, int parm)
|
|||||||
if (old_output_lines != _output_lines){
|
if (old_output_lines != _output_lines){
|
||||||
old_output_lines = _output_lines;
|
old_output_lines = _output_lines;
|
||||||
attrset (COLOR_NORMAL);
|
attrset (COLOR_NORMAL);
|
||||||
dlg_move (h, 9, 10 + first_width);
|
dlg_move (h, 10, 10 + first_width);
|
||||||
tty_printf ("%02d", _output_lines);
|
tty_printf ("%02d", _output_lines);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -357,7 +363,7 @@ init_layout (void)
|
|||||||
static const char *title1, *title2, *title3;
|
static const char *title1, *title2, *title3;
|
||||||
|
|
||||||
if (!i18n_layt_flag) {
|
if (!i18n_layt_flag) {
|
||||||
register int l1;
|
register size_t l1;
|
||||||
|
|
||||||
first_width = 19; /* length of line with '<' '>' buttons */
|
first_width = 19; /* length of line with '<' '>' buttons */
|
||||||
|
|
||||||
@ -373,7 +379,7 @@ init_layout (void)
|
|||||||
first_width = l1;
|
first_width = l1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i <= 8; i++) {
|
for (i = 0; i <= 9; i++) {
|
||||||
check_options[i].text = _(check_options[i].text);
|
check_options[i].text = _(check_options[i].text);
|
||||||
l1 = strlen (check_options[i].text) + 7;
|
l1 = strlen (check_options[i].text) + 7;
|
||||||
if (l1 > first_width)
|
if (l1 > first_width)
|
||||||
@ -390,7 +396,7 @@ init_layout (void)
|
|||||||
|
|
||||||
|
|
||||||
second_width = strlen (title3) + 1;
|
second_width = strlen (title3) + 1;
|
||||||
for (i = 0; i < 6; i++) {
|
for (i = 0; i < 7; i++) {
|
||||||
check_options[i].text = _(check_options[i].text);
|
check_options[i].text = _(check_options[i].text);
|
||||||
l1 = strlen (check_options[i].text) + 7;
|
l1 = strlen (check_options[i].text) + 7;
|
||||||
if (l1 > second_width)
|
if (l1 > second_width)
|
||||||
@ -445,23 +451,23 @@ init_layout (void)
|
|||||||
0));
|
0));
|
||||||
if (console_flag) {
|
if (console_flag) {
|
||||||
add_widget (layout_dlg,
|
add_widget (layout_dlg,
|
||||||
button_new (9, 12 + first_width, B_MINUS,
|
button_new (10, 12 + first_width, B_MINUS,
|
||||||
NARROW_BUTTON, "&-", bminus_cback));
|
NARROW_BUTTON, "&-", bminus_cback));
|
||||||
add_widget (layout_dlg,
|
add_widget (layout_dlg,
|
||||||
button_new (9, 7 + first_width, B_PLUS, NARROW_BUTTON,
|
button_new (10, 7 + first_width, B_PLUS, NARROW_BUTTON,
|
||||||
"&+", bplus_cback));
|
"&+", bplus_cback));
|
||||||
}
|
}
|
||||||
#define XTRACT(i) *check_options[i].variable, check_options[i].text
|
#define XTRACT(i) *check_options[i].variable, check_options[i].text
|
||||||
|
|
||||||
for (i = 0; i < 6; i++) {
|
for (i = 0; i < 7; i++) {
|
||||||
check_options[i].widget =
|
check_options[i].widget =
|
||||||
check_new (8 - i, 7 + first_width, XTRACT (i));
|
check_new (9 - i, 7 + first_width, XTRACT (i));
|
||||||
add_widget (layout_dlg, check_options[i].widget);
|
add_widget (layout_dlg, check_options[i].widget);
|
||||||
}
|
}
|
||||||
check_options[8].widget = check_new (10, 6, XTRACT (8));
|
check_options[9].widget = check_new (10, 6, XTRACT (9));
|
||||||
|
add_widget (layout_dlg, check_options[9].widget);
|
||||||
|
check_options[8].widget = check_new (9, 6, XTRACT (8));
|
||||||
add_widget (layout_dlg, check_options[8].widget);
|
add_widget (layout_dlg, check_options[8].widget);
|
||||||
check_options[7].widget = check_new (9, 6, XTRACT (7));
|
|
||||||
add_widget (layout_dlg, check_options[7].widget);
|
|
||||||
|
|
||||||
_filetype_mode = filetype_mode;
|
_filetype_mode = filetype_mode;
|
||||||
_permission_mode = permission_mode;
|
_permission_mode = permission_mode;
|
||||||
@ -471,20 +477,21 @@ init_layout (void)
|
|||||||
_keybar_visible = keybar_visible;
|
_keybar_visible = keybar_visible;
|
||||||
_message_visible = message_visible;
|
_message_visible = message_visible;
|
||||||
_xterm_title = xterm_title;
|
_xterm_title = xterm_title;
|
||||||
|
_free_space = free_space;
|
||||||
bright_widget =
|
bright_widget =
|
||||||
button_new (6, 15, B_2RIGHT, NARROW_BUTTON, "&>", b2right_cback);
|
button_new (6, 15, B_2RIGHT, NARROW_BUTTON, "&>", b2right_cback);
|
||||||
add_widget (layout_dlg, bright_widget);
|
add_widget (layout_dlg, bright_widget);
|
||||||
bleft_widget =
|
bleft_widget =
|
||||||
button_new (6, 9, B_2LEFT, NARROW_BUTTON, "&<", b2left_cback);
|
button_new (6, 9, B_2LEFT, NARROW_BUTTON, "&<", b2left_cback);
|
||||||
add_widget (layout_dlg, bleft_widget);
|
add_widget (layout_dlg, bleft_widget);
|
||||||
check_options[6].widget = check_new (5, 6, XTRACT (6));
|
check_options[7].widget = check_new (5, 6, XTRACT (7));
|
||||||
old_first_panel_size = -1;
|
old_first_panel_size = -1;
|
||||||
old_horizontal_split = -1;
|
old_horizontal_split = -1;
|
||||||
old_output_lines = -1;
|
old_output_lines = -1;
|
||||||
|
|
||||||
_first_panel_size = first_panel_size;
|
_first_panel_size = first_panel_size;
|
||||||
_output_lines = output_lines;
|
_output_lines = output_lines;
|
||||||
add_widget (layout_dlg, check_options[6].widget);
|
add_widget (layout_dlg, check_options[7].widget);
|
||||||
radio_widget = radio_new (3, 6, 2, s_split_direction);
|
radio_widget = radio_new (3, 6, 2, s_split_direction);
|
||||||
add_widget (layout_dlg, radio_widget);
|
add_widget (layout_dlg, radio_widget);
|
||||||
radio_widget->sel = horizontal_split;
|
radio_widget->sel = horizontal_split;
|
||||||
|
@ -39,6 +39,7 @@ extern int keybar_visible;
|
|||||||
extern int output_start_y;
|
extern int output_start_y;
|
||||||
extern int message_visible;
|
extern int message_visible;
|
||||||
extern int xterm_title;
|
extern int xterm_title;
|
||||||
|
extern int free_space;
|
||||||
|
|
||||||
extern int horizontal_split;
|
extern int horizontal_split;
|
||||||
extern int nice_rotating_dash;
|
extern int nice_rotating_dash;
|
||||||
|
43
src/screen.c
43
src/screen.c
@ -49,6 +49,7 @@
|
|||||||
#include "main-widgets.h"
|
#include "main-widgets.h"
|
||||||
#include "main.h" /* the_menubar */
|
#include "main.h" /* the_menubar */
|
||||||
#include "unixcompat.h"
|
#include "unixcompat.h"
|
||||||
|
#include "mountlist.h" /* my_statfs */
|
||||||
|
|
||||||
#define ELEMENTS(arr) ( sizeof(arr) / sizeof((arr)[0]) )
|
#define ELEMENTS(arr) ( sizeof(arr) / sizeof((arr)[0]) )
|
||||||
|
|
||||||
@ -763,6 +764,44 @@ mini_info_separator (WPanel *panel)
|
|||||||
#endif /* !HAVE_SLANG */
|
#endif /* !HAVE_SLANG */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
show_free_space (WPanel *panel)
|
||||||
|
{
|
||||||
|
/* Used to figure out how many free space we have */
|
||||||
|
static struct my_statfs myfs_stats;
|
||||||
|
/* Old current working directory for displaying free space */
|
||||||
|
static char *old_cwd = NULL;
|
||||||
|
|
||||||
|
/* Don't try to stat non-local fs */
|
||||||
|
if (!vfs_file_is_local (panel->cwd) || !free_space)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (old_cwd == NULL || strcmp (old_cwd, panel->cwd) != 0) {
|
||||||
|
char rpath[PATH_MAX];
|
||||||
|
|
||||||
|
init_my_statfs ();
|
||||||
|
mhl_mem_free (old_cwd);
|
||||||
|
old_cwd = mhl_str_dup (panel->cwd);
|
||||||
|
|
||||||
|
if (mc_realpath (panel->cwd, rpath) == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
my_statfs (&myfs_stats, rpath);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (myfs_stats.avail > 0 || myfs_stats.total > 0) {
|
||||||
|
char buffer1 [6], buffer2[6], tmp[256];
|
||||||
|
size_trunc_len (buffer1, 5, myfs_stats.avail, 1);
|
||||||
|
size_trunc_len (buffer2, 5, myfs_stats.total, 1);
|
||||||
|
snprintf (tmp, sizeof(tmp), " %s/%s (%d%%) ", buffer1, buffer2,
|
||||||
|
myfs_stats.total > 0 ?
|
||||||
|
(int)(100 * (double)myfs_stats.avail / myfs_stats.total) : 0);
|
||||||
|
widget_move (&panel->widget, panel->widget.lines - 1,
|
||||||
|
panel->widget.cols - 2 - strlen(tmp));
|
||||||
|
addstr (tmp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
show_dir (WPanel *panel)
|
show_dir (WPanel *panel)
|
||||||
{
|
{
|
||||||
@ -805,6 +844,10 @@ show_dir (WPanel *panel)
|
|||||||
widget_move (&panel->widget, 0, panel->widget.cols - 3);
|
widget_move (&panel->widget, 0, panel->widget.cols - 3);
|
||||||
addstr ("v");
|
addstr ("v");
|
||||||
|
|
||||||
|
attrset (NORMAL_COLOR);
|
||||||
|
|
||||||
|
show_free_space (panel);
|
||||||
|
|
||||||
if (panel->active)
|
if (panel->active)
|
||||||
standend ();
|
standend ();
|
||||||
}
|
}
|
||||||
|
@ -134,6 +134,7 @@ static const struct {
|
|||||||
{ "show_mini_info", &show_mini_info },
|
{ "show_mini_info", &show_mini_info },
|
||||||
{ "permission_mode", &permission_mode },
|
{ "permission_mode", &permission_mode },
|
||||||
{ "filetype_mode", &filetype_mode },
|
{ "filetype_mode", &filetype_mode },
|
||||||
|
{ "free_space", &free_space },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user