1
1
/* Directory tree browser for the Midnight Commander
2
Copyright (C) 1994, 1995, 1996, 1997 The Free Software Foundation
2
Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
3
2003, 2004, 2005, 2007 Free Software Foundation, Inc.
4
5
Written: 1994, 1996 Janne Kukonlehto
48
50
#include "treestore.h"
53
#define tlines(t) (t->is_panel ? t->widget.lines-2 - (show_mini_info ? 2 : 0) : t->widget.lines)
51
55
extern int command_prompt;
53
57
/* Use the color of the parent widget for the unselected entries */
54
#define TREE_NORMALC NORMALC
58
#define TREE_NORMALC(h) (DLG_NORMALC (h))
56
60
/* Specifies the display mode: 1d or 2d */
57
61
static int tree_navigation_flag;
168
173
if (tree->searching){
169
174
/* Show search string */
170
attrset (TREE_NORMALC);
175
attrset (TREE_NORMALC (h));
176
attrset (DLG_FOCUSC (h));
172
177
addch (PATH_SEP);
174
179
addstr ((char *) name_trunc (tree->search_buffer, tree_cols-2));
181
attrset (DLG_FOCUSC (h));
178
183
/* Show full name of selected directory */
179
184
addstr ((char *) name_trunc (tree->selected_ptr->name, tree_cols));
660
tree_move_cmd (WTree *tree)
673
tree_move_cmd (void *data)
662
676
tree_move (tree, "");
668
681
tree_mkdir_cmd (WTree *tree)
670
683
char old_dir [MC_MAXPATHLEN];
672
685
if (!tree->selected_ptr)
674
687
if (!mc_get_current_wd (old_dir, MC_MAXPATHLEN))
676
689
if (chdir (tree->selected_ptr->name))
679
692
mkdir_cmd (tree);
681
694
tree_rescan_cmd (tree);
729
743
set_navig_label (WTree *tree)
731
define_label_data (tree->widget.parent, 4,
745
buttonbar_set_label_data (tree->widget.parent, 4,
732
746
tree_navigation_flag ? _("Static") : _("Dynamc"),
733
(buttonbarfn) tree_toggle_navig, tree);
747
tree_toggle_navig, tree);
903
917
/* We do not want to use them if we do not need to */
904
918
/* Input line may want to take the motion key event */
905
919
if (key == KEY_LEFT)
906
return move_left (tree);
920
return move_left (tree) ? MSG_HANDLED : MSG_NOT_HANDLED;
908
922
if (key == KEY_RIGHT)
909
return move_right (tree);
923
return move_right (tree) ? MSG_HANDLED : MSG_NOT_HANDLED;
911
925
if (is_abort_char (key)) {
912
926
if (tree->is_panel) {
971
tree_rescan_command (void *data)
974
tree_rescan_cmd (tree);
978
tree_rmdir_command (void *data)
981
tree_rmdir_cmd (tree);
958
tree_callback (WTree *tree, widget_msg_t msg, int parm)
985
tree_callback (Widget *w, widget_msg_t msg, int parm)
987
WTree *tree = (WTree *) w;
960
988
Dlg_head *h = tree->widget.parent;
971
999
case WIDGET_FOCUS:
972
1000
tree->active = 1;
973
define_label (h, 1, _("Help"), (voidfn) tree_help_cmd);
974
define_label_data (h, 2, _("Rescan"),
975
(buttonbarfn) tree_rescan_cmd, tree);
976
define_label_data (h, 3, _("Forget"),
977
(buttonbarfn) tree_forget_cmd, tree);
978
define_label_data (h, 5, _("Copy"), (buttonbarfn) tree_copy_cmd,
980
define_label_data (h, 6, _("RenMov"), (buttonbarfn) tree_move_cmd,
1001
buttonbar_set_label (h, 1, _("Help"), tree_help_cmd);
1002
buttonbar_set_label_data (h, 2, _("Rescan"),
1003
tree_rescan_command, tree);
1004
buttonbar_set_label_data (h, 3, _("Forget"), tree_forget_cmd, tree);
1005
buttonbar_set_label_data (h, 5, _("Copy"), tree_copy_cmd, tree);
1006
buttonbar_set_label_data (h, 6, _("RenMov"), tree_move_cmd, tree);
983
1008
/* FIXME: mkdir is currently defunct */
984
define_label_data (h, 7, _("Mkdir"), (buttonbarfn) tree_mkdir_cmd,
1009
buttonbar_set_label_data (h, 7, _("Mkdir"), tree_mkdir_cmd, tree);
987
define_label (h, 7, "", 0);
1011
buttonbar_clear_label (h, 7);
989
define_label_data (h, 8, _("Rmdir"), (buttonbarfn) tree_rmdir_cmd,
1013
buttonbar_set_label_data (h, 8, _("Rmdir"), tree_rmdir_command, tree);
991
1014
set_navig_label (tree);
1015
buttonbar_redraw (h);
995
1018
/* FIXME: Should find a better way of only displaying the
1020
1043
WTree *tree = g_new (WTree, 1);
1022
1045
init_widget (&tree->widget, y, x, lines, cols,
1023
(callback_fn) tree_callback, (mouse_h) event_callback);
1046
tree_callback, event_callback);
1024
1047
tree->is_panel = is_panel;
1025
1048
tree->selected_ptr = 0;