a few more thingies altered: - fixed page up/down (it didn't update the mini status).
- an option to disable the panel header (Name Size MTime) in Options|Layout|panel heaDer. - the command line history icon [^] seems to have slight cosmetic errors. in ncurses i've improved it a little, but it'll need more work. -- Shiar m00h ( _ ) [EMAIL PROTECTED] \ ~O o~__ [EMAIL PROTECTED] (._.) |\ http://www.shiar.org |_|_|
Index: src/layout.c =================================================================== RCS file: /cvs/gnome/mc/src/layout.c,v retrieving revision 1.35 diff -u -r1.35 layout.c --- src/layout.c 6 Feb 2002 05:23:50 -0000 1.35 +++ src/layout.c 10 Apr 2002 14:03:29 -0000 @@ -93,6 +93,9 @@ int output_lines = 0; /* Set if the command prompt is to be displayed */ +int panel_header = 1; + +/* Set if the command prompt is to be displayed */ int command_prompt = 1; /* Set if the nice and usefull keybar is visible */ @@ -128,6 +131,7 @@ static int _equal_split; static int _first_panel_size; static int _menubar_visible; +static int _panel_header; static int _output_lines; static int _command_prompt; static int _keybar_visible; @@ -169,6 +173,7 @@ { N_("&Keybar visible"), &keybar_visible, 0, "k" }, { N_("command &Prompt"), &command_prompt, 0, "p" }, { N_("show &Mini status"), &show_mini_info, 0, "m" }, + { N_("panel hea&Der"), &panel_header, 0, "hd" }, { N_("menu&Bar visible"), &menubar_visible, 0, "me" }, { N_("&Equal split"), &equal_split, 0, "eq" }, { N_("pe&Rmissions"), &permission_mode, 0, "pr" }, @@ -233,8 +238,8 @@ if (_equal_split){ /* Turn equal split off */ _equal_split = 0; - check_options [6].widget->state = check_options [6].widget->state & ~C_BOOL; - dlg_select_widget (layout_dlg, check_options [6].widget); + check_options [7].widget->state = check_options [7].widget->state & ~C_BOOL; + dlg_select_widget (layout_dlg, check_options [7].widget); dlg_select_widget (layout_dlg, bleft_widget); } _first_panel_size++; @@ -246,8 +251,8 @@ if (_equal_split){ /* Turn equal split off */ _equal_split = 0; - check_options [6].widget->state = check_options [6].widget->state & ~C_BOOL; - dlg_select_widget (layout_dlg, check_options [6].widget); + check_options [7].widget->state = check_options [7].widget->state & ~C_BOOL; + dlg_select_widget (layout_dlg, check_options [7].widget); dlg_select_widget (layout_dlg, bright_widget); } _first_panel_size--; @@ -300,19 +305,20 @@ if (old_output_lines != _output_lines){ old_output_lines = _output_lines; attrset (COLOR_NORMAL); - dlg_move (h, 9, 16 + first_width); + dlg_move (h, 10, 16 + first_width); addstr (output_lines_label); - dlg_move (h, 9, 10 + first_width); + dlg_move (h, 10, 10 + first_width); printw ("%02d", _output_lines); } } break; case DLG_POST_KEY: - _filetype_mode = check_options [8].widget->state & C_BOOL; - _permission_mode = check_options [7].widget->state & C_BOOL; - _equal_split = check_options [6].widget->state & C_BOOL; - _menubar_visible = check_options [5].widget->state & C_BOOL; + _filetype_mode = check_options [9].widget->state & C_BOOL; + _permission_mode = check_options [8].widget->state & C_BOOL; + _equal_split = check_options [7].widget->state & C_BOOL; + _menubar_visible = check_options [6].widget->state & C_BOOL; + _panel_header = check_options [5].widget->state & C_BOOL; _command_prompt = check_options [4].widget->state & C_BOOL; _keybar_visible = check_options [2].widget->state & C_BOOL; _message_visible = check_options [1].widget->state & C_BOOL; @@ -346,7 +352,7 @@ if (old_output_lines != _output_lines){ old_output_lines = _output_lines; attrset (COLOR_NORMAL); - dlg_move (h, 9, 10 + first_width); + dlg_move (h, 10, 10 + first_width); printw ("%02d", _output_lines); } } @@ -387,7 +393,7 @@ first_width = l1; } - for (i = 0; i <= 8; i++) + for (i = 0; i <= 9; i++) { check_options[i].text = _(check_options[i].text); l1 = strlen (check_options[i].text) + 7; @@ -405,7 +411,7 @@ 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); l1 = strlen (check_options[i].text) + 7; @@ -454,28 +460,29 @@ button_new (BY, b1, B_ENTER, DEFPUSH_BUTTON, ok_button, 0, 0, "o")); if (console_flag){ add_widget (layout_dlg, - button_new (9, 12 + first_width, B_MINUS, NARROW_BUTTON, "&-", + button_new (10, 12 + first_width, B_MINUS, NARROW_BUTTON, "&-", bminus_cback, 0, NULL)); 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, 0, NULL)); } #define XTRACT(i) *check_options[i].variable, check_options[i].text, check_options[i].tkname - for (i = 0; i < 6; i++){ - check_options [i].widget = check_new (8 - i, 7 + first_width, XTRACT(i)); + for (i = 0; i < 7; i++){ + check_options [i].widget = check_new (9 - i, 7 + first_width, XTRACT(i)); 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); - check_options [7].widget = check_new (9, 6, XTRACT(7)); - add_widget (layout_dlg, check_options [7].widget); _filetype_mode = filetype_mode; _permission_mode = permission_mode; _equal_split = equal_split; _menubar_visible = menubar_visible; + _panel_header = panel_header; _command_prompt = command_prompt; _keybar_visible = keybar_visible; _message_visible = message_visible; @@ -484,14 +491,14 @@ add_widget (layout_dlg, bright_widget); bleft_widget = button_new (6, 9, B_2LEFT, NARROW_BUTTON, "&<", b2left_cback, 0, "<"); 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_horizontal_split = -1; old_output_lines = -1; _first_panel_size = first_panel_size; _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, 1, "r"); add_widget (layout_dlg, radio_widget); radio_widget->sel = horizontal_split; @@ -666,7 +673,12 @@ widget_set_size (&cmdline->input.widget, LINES-1-keybar_visible, promptl, 1, COLS-promptl-(keybar_visible ? 0 : 1)); - winput_set_origin (&cmdline->input, promptl, COLS-promptl-(keybar_visible ? 0 : 1)); + #ifdef HAVE_SLANG + winput_set_origin (&cmdline->input, promptl, + COLS-promptl-(keybar_visible ? 0 : 1)); + #else + winput_set_origin (&cmdline->input, promptl, COLS-promptl); + #endif widget_set_size (&the_prompt->widget, LINES-1-keybar_visible, 0, 1, promptl); Index: src/layout.h =================================================================== RCS file: /cvs/gnome/mc/src/layout.h,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 layout.h --- src/layout.h 27 Feb 1998 04:54:43 -0000 1.1.1.1 +++ src/layout.h 10 Apr 2002 14:03:29 -0000 @@ -29,6 +29,7 @@ extern int equal_split; extern int first_panel_size; extern int output_lines; +extern int panel_header; extern int command_prompt; extern int keybar_visible; extern int layout_do_change; Index: src/main.c =================================================================== RCS file: /cvs/gnome/mc/src/main.c,v retrieving revision 1.185 diff -u -r1.185 main.c --- src/main.c 25 Mar 2002 07:46:19 -0000 1.185 +++ src/main.c 10 Apr 2002 14:03:34 -0000 @@ -129,6 +129,9 @@ /* they do a complete refresh, refreshing all the parts of the program */ int fast_refresh = 0; +/* If true, scolls panels no more than one file at a time */ +int panel_scroll_pages = 0; + /* If true, marking a files moves the cursor down */ int mark_moves_down = 1; @@ -1727,6 +1730,7 @@ if (baudrate () < 9600 || slow_terminal){ verbose = 0; + panel_scroll_pages = 1; } init_mouse (); Index: src/main.h =================================================================== RCS file: /cvs/gnome/mc/src/main.h,v retrieving revision 1.29 diff -u -r1.29 main.h --- src/main.h 17 Jan 2002 07:17:54 -0000 1.29 +++ src/main.h 10 Apr 2002 14:03:35 -0000 @@ -34,6 +34,7 @@ void subshell_chdir (char *command); /* See main.c for details on these variables */ +extern int panel_scroll_pages; extern int mark_moves_down; extern int auto_menu; extern int pause_after_run; Index: src/option.c =================================================================== RCS file: /cvs/gnome/mc/src/option.c,v retrieving revision 1.15 diff -u -r1.15 option.c --- src/option.c 3 Sep 2001 05:07:41 -0000 1.15 +++ src/option.c 10 Apr 2002 14:03:35 -0000 @@ -80,11 +80,12 @@ {N_("auto m&Enus"), &auto_menu, TOGGLE_VARIABLE, 0, "auto-menus" }, {N_("&Auto save setup"), &auto_save_setup, TOGGLE_VARIABLE, 0, "auto-save" }, {N_("shell &Patterns"), &easy_patterns, TOGGLE_VARIABLE, 0, "shell-patt" }, - {N_("Compute &Totals"), &file_op_compute_totals, TOGGLE_VARIABLE, 0, "compute-totals" }, + {N_("Compute &Totals"), &file_op_compute_totals,TOGGLE_VARIABLE, 0, +"compute-totals" }, {N_("&Verbose operation"), &verbose, TOGGLE_VARIABLE, 0, "verbose" }, {N_("&Fast dir reload"), &fast_reload, toggle_fast_reload, 0, "fast-reload" }, {N_("mi&X all files"), &mix_all_files, toggle_mix_all_files, 0, "mix-files" }, {N_("&Drop down menus"), &drop_menus, TOGGLE_VARIABLE, 0, "drop-menus" }, + {N_("scroll paged"), &panel_scroll_pages,TOGGLE_VARIABLE, 0, +"panel-scroll-pages" }, {N_("ma&Rk moves down"), &mark_moves_down, TOGGLE_VARIABLE, 0, "mark-moves" }, {N_("show &Hidden files"), &show_dot_files, toggle_show_hidden, 0, "show-hidden" }, {N_("show &Backup files"), &show_backups, toggle_show_backup, 0, "show-backup" }, @@ -95,8 +96,8 @@ static char *pause_options [3] = { N_("&Never"), - N_("on dumb &Terminals"), - N_("alwa&Ys") }; + N_("on dumb terminals"), + N_("always") }; static int configure_callback (struct Dlg_head *h, int Id, int Msg) { @@ -105,7 +106,7 @@ attrset (COLOR_NORMAL); dlg_erase (h); draw_box (h, 1, 2, h->lines - 2, h->cols - 4); - draw_box (h, PY, PX, 8, first_width); + draw_box (h, PY, PX, 9, first_width); draw_box (h, RY, RX, 5, first_width); draw_box (h, OY, OX, 15, second_width); @@ -148,7 +149,7 @@ title3 = _(" Other options "); first_width = strlen (title1) + 1; - for (i = 13; i < 19; i++) + for (i = 13; i < 20; i++) { check_options[i].text = _(check_options[i].text); l1 = strlen (check_options[i].text) + 7; @@ -221,8 +222,8 @@ pause_radio = radio_new (RY+1, RX+2, 3, pause_options, 1, "pause-radio"); pause_radio->sel = pause_after_run; add_widget (conf_dlg, pause_radio); - for (i = 0; i < 6; i++){ - check_options [i+13].widget = check_new (PY + (6-i), PX+2, + for (i = 0; i < 7; i++){ + check_options [i+13].widget = check_new (PY + (7-i), PX+2, XTRACT(i+13)); add_widget (conf_dlg, check_options [i+13].widget); } Index: src/panel.h =================================================================== RCS file: /cvs/gnome/mc/src/panel.h,v retrieving revision 1.54 diff -u -r1.54 panel.h --- src/panel.h 22 Jan 2002 23:16:21 -0000 1.54 +++ src/panel.h 10 Apr 2002 14:03:36 -0000 @@ -136,7 +136,6 @@ extern int permission_mode; extern int filetype_mode; extern int show_mini_info; -extern int panel_scroll_pages; #define selection(p) (&(p->dir.list [p->selected])) Index: src/screen.c =================================================================== RCS file: /cvs/gnome/mc/src/screen.c,v retrieving revision 1.109 diff -u -r1.109 screen.c --- src/screen.c 6 Feb 2002 05:14:17 -0000 1.109 +++ src/screen.c 10 Apr 2002 14:03:40 -0000 @@ -61,9 +61,6 @@ /* If true, use some usability hacks by Torben */ int torben_fj_mode = 0; -/* If true, up/down keys scroll the pane listing by pages */ -int panel_scroll_pages = 1; - /* If 1, we use permission hilighting */ int permission_mode = 0; @@ -86,7 +83,7 @@ #define x_reset_sort_labels(x) /* This macro extracts the number of available lines in a panel */ -#define llines(p) (p->widget.lines-3 - (show_mini_info ? 2 : 0)) +#define llines(p) (p->widget.lines - 2 - panel_header - (show_mini_info ? 2 : 0)) #ifdef PORT_NOT_FOCUS_SELECT_ITEM # define focus_select_item(x) @@ -594,11 +591,11 @@ if (mv){ if (!isstatus && panel->split){ widget_move (&panel->widget, - (file_index - panel->top_file) % - llines (panel) + 2, - (offset + 1)); + (file_index - panel->top_file) % llines (panel) + panel_header + 1, + (offset + 1)); } else - widget_move (&panel->widget, file_index - panel->top_file + 2, 1); + widget_move (&panel->widget, + file_index - panel->top_file + panel_header + 1, 1); } format_file (buffer, sizeof(buffer), panel, file_index, width, attr, isstatus); @@ -619,7 +616,7 @@ if (!show_mini_info) return; - widget_move (&panel->widget, llines (panel)+3, 1); + widget_move (&panel->widget, panel->widget.lines - 2, 1); if (panel->searching){ attrset (INPUT_COLOR); @@ -636,7 +633,7 @@ attrset (MARKED_COLOR); printw ("%*s", cols, " "); - widget_move (&panel->widget, llines (panel)+3, 1); + widget_move (&panel->widget, panel->widget.lines - 2, 1); /* FIXME: use ngettext() here when gettext-0.10.35 becomes history */ g_snprintf (buffer, sizeof (buffer), (panel->marked == 1) ? _("%s bytes in %d file") : _("%s bytes in %d files"), @@ -703,7 +700,7 @@ return; standend (); - widget_move (&panel->widget, llines (panel)+2, 1); + widget_move (&panel->widget, panel->widget.lines - 3, 1); #ifdef HAVE_SLANG attrset (NORMAL_COLOR); hline (ACS_HLINE, panel->widget.cols-2); @@ -1040,48 +1037,50 @@ widget_erase (&panel->widget); show_dir (panel); - widget_move (&panel->widget, 1, 1); + if (panel_header){ + widget_move (&panel->widget, 1, 1); - for (side = 0; side <= panel->split; side++){ - format_e *format; + for (side = 0; side <= panel->split; side++){ + format_e *format; - if (side){ - attrset (NORMAL_COLOR); - one_vline (); - width = panel->widget.cols - panel->widget.cols/2 - 1; - } else if (panel->split) - width = panel->widget.cols/2 - 3; - else - width = panel->widget.cols - 2; + if (side){ + attrset (NORMAL_COLOR); + one_vline (); + width = panel->widget.cols - panel->widget.cols/2 - 1; + } else if (panel->split) + width = panel->widget.cols/2 - 3; + else + width = panel->widget.cols - 2; + + for (format = panel->format; format; format = format->next){ + if (format->string_fn){ + txt = format->title; - for (format = panel->format; format; format = format->next){ - if (format->string_fn){ - txt = format->title; - - header_len = strlen (txt); - if (header_len > format->field_len){ - strcpy (buffer, txt); - txt = buffer; - txt [format->field_len] = 0; header_len = strlen (txt); + if (header_len > format->field_len){ + strcpy (buffer, txt); + txt = buffer; + txt [format->field_len] = 0; + header_len = strlen (txt); + } + + attrset (MARKED_COLOR); + spaces = (format->field_len - header_len) / 2; + extra = (format->field_len - header_len) % 2; + printw ("%*s%-s%*s", spaces, "", + txt, spaces+extra, ""); + width -= 2 * spaces + extra + header_len; + } else { + attrset (NORMAL_COLOR); + one_vline (); + width --; + continue; } - - attrset (MARKED_COLOR); - spaces = (format->field_len - header_len) / 2; - extra = (format->field_len - header_len) % 2; - printw ("%*s%-s%*s", spaces, "", - txt, spaces+extra, ""); - width -= 2 * spaces + extra + header_len; - } else { - attrset (NORMAL_COLOR); - one_vline (); - width --; - continue; } - } - if (width > 0) - printw ("%*s", width, ""); + if (width > 0) + printw ("%*s", width, ""); + } } } @@ -1475,10 +1474,10 @@ if (panel->selected < 0) panel->selected = 0; - if (panel->selected > panel->count-1) + if (panel->selected >= panel->count) panel->selected = panel->count - 1; - if (panel->top_file > panel->count-1){ + if (panel->top_file >= panel->count){ repaint = 1; panel->top_file = panel->count-1; } @@ -1541,14 +1540,16 @@ unselect_item (panel); panel->selected++; - if (panel->selected - panel->top_file == ITEMS (panel) && - panel_scroll_pages){ - /* Scroll window half screen */ - panel->top_file += ITEMS (panel)/2; - if (panel->top_file > panel->count - ITEMS (panel)) + if (panel->selected - panel->top_file == ITEMS (panel)){ + if (panel_scroll_pages){ + /* Scroll window half screen */ + panel->top_file += ITEMS (panel)/2; + /* w/o the following select_item will correct and redraw */ + if (panel->top_file > panel->count - ITEMS (panel)) panel->top_file = panel->count - ITEMS (panel); + } else panel->top_file++; + /* scroll dir (faster than allowing select_item to do so) */ paint_dir (panel); - select_item (panel); } select_item (panel); } @@ -1561,10 +1562,13 @@ unselect_item (panel); panel->selected--; - if (panel->selected < panel->top_file && panel_scroll_pages){ - /* Scroll window half screen */ - panel->top_file -= ITEMS (panel)/2; - if (panel->top_file < 0) panel->top_file = 0; + if (panel->selected < panel->top_file){ + if (panel_scroll_pages){ + /* Scroll window half screen */ + panel->top_file -= ITEMS (panel)/2; + if (panel->top_file < 0) panel->top_file = 0; + } else panel->top_file--; + /* scroll dir (faster than allowing select_item to do so) */ paint_dir (panel); } select_item (panel); @@ -1574,18 +1578,7 @@ move_rel (WPanel *panel, int rel) { unselect_item (panel); - - if (rel < 0){ - if (panel->selected + rel < 0) - panel->selected = 0; - else - panel->selected = panel->selected + rel; - } else { - if (panel->selected + rel >= panel->count) - panel->selected = panel->count - 1; - else - panel->selected = panel->selected + rel; - } + panel->selected = panel->selected + rel; select_item (panel); } @@ -1686,22 +1679,24 @@ return; unselect_item (panel); items = ITEMS (panel); - if (panel->top_file < items) - items = panel->top_file; + if (!panel_scroll_pages) items--; if (!items) panel->selected = 0; else panel->selected -= items; - panel->top_file -= items; + /* This keeps the selection in it's relative position */ + if (panel->selected < 0) panel->selected = 0; - /* This keeps the selection in a reasonable place */ - if (panel->selected < 0) - panel->selected = 0; - if (panel->top_file < 0) - panel->top_file = 0; - x_adjust_top_file (panel); - select_item (panel); + if (panel_scroll_pages){ + panel->top_file -= items; + if (panel->top_file < 0) panel->top_file = 0; + } else { + panel->top_file = panel->selected; + } + +// x_adjust_top_file (panel); //what's this?? paint_dir (panel); + select_item (panel); } static void @@ -1723,24 +1718,27 @@ return; unselect_item (panel); items = ITEMS (panel); - if (panel->top_file > panel->count - 2 * items) - items = panel->count - items - panel->top_file; - if (panel->top_file + items < 0) - items = - panel->top_file; + if (!panel_scroll_pages) items--; if (!items) - panel->selected = panel->count - 1; + panel->selected = panel->count - 1; else - panel->selected += items; - panel->top_file += items; - + panel->selected += items; /* This keeps the selection in it's relative position */ if (panel->selected >= panel->count) panel->selected = panel->count - 1; - if (panel->top_file >= panel->count) - panel->top_file = panel->count - 1; - x_adjust_top_file (panel); - select_item (panel); + + if (panel_scroll_pages){ + panel->top_file += items; + if (panel->top_file > panel->count - 1) + panel->top_file = panel->count - 1; //items; + } else { + panel->top_file = panel->selected - items; + if (panel->top_file < 0) panel->top_file = 0; + } + +// x_adjust_top_file (panel); //what's this?? paint_dir (panel); + select_item (panel); } static void next_page_key (WPanel *panel) Index: src/setup.c =================================================================== RCS file: /cvs/gnome/mc/src/setup.c,v retrieving revision 1.58 diff -u -r1.58 setup.c --- src/setup.c 4 Feb 2002 18:09:42 -0000 1.58 +++ src/setup.c 10 Apr 2002 14:03:42 -0000 @@ -135,6 +135,7 @@ { "xterm_hintbar", &xterm_hintbar }, { "output_lines", &output_lines }, { "command_prompt", &command_prompt }, + { "panel_header", &panel_header }, { "menubar_visible", &menubar_visible }, { "show_mini_info", &show_mini_info }, { "permission_mode", &permission_mode },