home *** CD-ROM | disk | FTP | other *** search
- {$A-,B-,D-,E-,F-,I-,L-,N-,O-,R-,S-,V-}
- {$M 63768, 0, 655360}
- uses
- dos,
- eco_lib, eco_tree
-
- ;
-
-
- const
- nrofrets = 4;
- rets : array[1..nrofrets] of word = (
- _space, { pad } _c_r, { treescan } _enter, { confirmation }
- _a_q
- );
-
- var
- oup : text;
- buf : array[1..4096] of char;
- checkdriv : char;
- retkey,
- i, j : word;
- st : string;
- tree : treepanelobj;
-
-
- {main}begin
- __stdio;
- st := getenv('WTREEINFO');
- if st = '' then st := __curdir;
- checkdriv := upcase(st[1]);
-
- with tree do begin
- init; putdefaults;
- setoptions(
- false, { auto }
- false, { wide }
- true, 0,
- 11, 3, 70, 23, lightgray, black, yellow, black, yellow, black,
- true, 31, 10, 49, 11, black, lightgray, black, lightgray,
- lightblue, black, black, lightgray, black, lightgray
- );
- st := __curdir;
- drivechar := upcase(st[1]);
- horspace := ' '; horbar := '──';
- writeln(checkdriv + treeinfofile + drivechar);
- __savscn(scn1);
- if (paramstr(1)='/r') or not(__existfil(
- checkdriv + treeinfofile + drivechar)
- ) then begin
- __bandwin(true, 25, 9, 55, 12, 0, 7, sh_default, 0); trace_tree;
- save_tree(checkdriv + treeinfofile + drivechar);
- end else begin
- load_tree(checkdriv + treeinfofile + drivechar);
- end;
- build_tree(false); jump_curpath; draw;
- repeat
- retkey := 0;
- walk_tree_(@rets, nrofrets, retkey);
-
- if retkey = _c_e then begin
- assign(oup, 'tree.'+drivechar); rewrite(oup); settextbuf(oup, buf);
- for i := 0 to nodenumber-1 do writeln(oup, ' ' + nodedispptr^[i]);
- close(oup);
- end;
-
- if retkey = _c_c then begin
- jump_curpath; draw;
- end;
-
- if retkey = _c_p then begin
- widetree := not widetree; build_tree(true); newtreeoff := true;
- draw;
- end;
-
- if retkey = _c_f6 then begin
- case length(horspace) of
- 0: begin horspace := ' '; horbar := '─' end;
- 1: begin horspace := ' '; horbar := '──' end;
- 2: begin horspace := ' '; horbar := '───' end;
- 3: begin horspace := ' '; horbar := '────' end;
- else begin horspace := ''; horbar := '' end;
- end; build_tree(true); newtreeoff := true; draw
- end;
-
- if retkey = _c_f5 then begin
- case length(horspace) of
- 0: begin horspace := ' '; horbar := '────' end;
- 1: begin horspace := ''; horbar := '' end;
- 2: begin horspace := ' '; horbar := '─' end;
- 3: begin horspace := ' '; horbar := '──' end;
- else begin horspace := ' '; horbar := '───' end;
- end; build_tree(true); newtreeoff := true; draw;
- end;
-
- if retkey = _enter then begin
- if __existpath(copy(fexpand(trace_path(walkcsr)), 1,
- length(fexpand(trace_path(walkcsr)))-1)) or (s='\') then begin
- if s <> '\' then chdir(copy(fexpand(trace_path(walkcsr)), 1,
- length(fexpand(trace_path(walkcsr)))-1)) else chdir('\');
- end else begin
- newtreeoff := true;
- walkoffset := 0; walkcsr := 0;
- trace_tree; save_tree(treeinfofile);
- build_tree(true); chdir(drivechar+':\');
- retkey := 0;
- end;
- end;
- until (retkey=_esc) or (retkey=_enter);
- __resscn(scn1);
- { for i := 0 to nodenumber-1 do writeln(' ' + nodedispptr^[i]); }
- writeln; writeln(__num(nodenumber-1), ' directories were scanned.');
- end;
- end.
-