home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / ECO30603.ZIP / ECO30603.LZH / ECOLIBII / DEMOS / DEMOTREE.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-03-02  |  3.6 KB  |  115 lines

  1. {$A-,B-,D-,E-,F-,I-,L-,N-,O-,R-,S-,V-}
  2. {$M 63768, 0, 655360}
  3. uses
  4.   dos,
  5.   eco_lib, eco_tree
  6.  
  7.   ;
  8.  
  9.  
  10. const
  11.   nrofrets = 4;
  12.   rets : array[1..nrofrets] of word = (
  13.     _space, { pad } _c_r, { treescan } _enter, { confirmation }
  14.     _a_q
  15.   );
  16.  
  17. var
  18.   oup       :         text;
  19.   buf       : array[1..4096] of char;
  20.   checkdriv :         char;
  21.   retkey,
  22.   i, j      :         word;
  23.   st        :       string;
  24.   tree      : treepanelobj;
  25.  
  26.  
  27. {main}begin
  28.   __stdio;
  29.   st := getenv('WTREEINFO');
  30.   if st = '' then st := __curdir;
  31.   checkdriv := upcase(st[1]);
  32.  
  33.   with tree do begin
  34.     init; putdefaults;
  35.     setoptions(
  36.       false,  { auto }
  37.       false,   { wide }
  38.       true, 0,
  39.       11, 3, 70, 23, lightgray, black, yellow, black, yellow, black,
  40.       true,   31, 10, 49, 11,    black, lightgray,   black, lightgray,
  41.       lightblue, black, black, lightgray, black, lightgray
  42.     );
  43.     st := __curdir;
  44.     drivechar := upcase(st[1]);
  45.     horspace := '  '; horbar := '──';
  46.     writeln(checkdriv + treeinfofile + drivechar);
  47.     __savscn(scn1);
  48.     if (paramstr(1)='/r') or not(__existfil(
  49.       checkdriv + treeinfofile + drivechar)
  50.     ) then begin
  51.       __bandwin(true, 25, 9, 55, 12, 0, 7, sh_default, 0); trace_tree;
  52.       save_tree(checkdriv + treeinfofile + drivechar);
  53.     end else begin
  54.       load_tree(checkdriv + treeinfofile + drivechar);
  55.     end;
  56.     build_tree(false); jump_curpath; draw;
  57.     repeat
  58.       retkey := 0;
  59.       walk_tree_(@rets, nrofrets, retkey);
  60.  
  61.       if retkey = _c_e then begin
  62.         assign(oup, 'tree.'+drivechar); rewrite(oup); settextbuf(oup, buf);
  63.         for i := 0 to nodenumber-1 do writeln(oup, '   ' + nodedispptr^[i]);
  64.         close(oup);
  65.       end;
  66.  
  67.        if retkey = _c_c then begin
  68.          jump_curpath; draw;
  69.        end;
  70.  
  71.       if retkey = _c_p then begin
  72.         widetree := not widetree; build_tree(true); newtreeoff := true;
  73.         draw;
  74.       end;
  75.  
  76.       if retkey = _c_f6 then begin
  77.         case length(horspace) of
  78.           0: begin horspace := ' ';    horbar := '─'    end;
  79.           1: begin horspace := '  ';   horbar := '──'   end;
  80.           2: begin horspace := '   ';  horbar := '───'  end;
  81.           3: begin horspace := '    '; horbar := '────' end;
  82.           else begin horspace := '';     horbar := ''     end;
  83.         end; build_tree(true); newtreeoff := true; draw
  84.       end;
  85.  
  86.       if retkey = _c_f5 then begin
  87.         case length(horspace) of
  88.           0: begin horspace := '    ';    horbar := '────'    end;
  89.           1: begin horspace := '';   horbar := ''   end;
  90.           2: begin horspace := ' ';  horbar := '─'  end;
  91.           3: begin horspace := '  '; horbar := '──' end;
  92.           else begin horspace := '   ';     horbar := '───'     end;
  93.         end; build_tree(true); newtreeoff := true; draw;
  94.       end;
  95.  
  96.       if retkey = _enter then begin
  97.         if __existpath(copy(fexpand(trace_path(walkcsr)), 1,
  98.           length(fexpand(trace_path(walkcsr)))-1)) or (s='\') then begin
  99.             if s <> '\' then chdir(copy(fexpand(trace_path(walkcsr)), 1,
  100.               length(fexpand(trace_path(walkcsr)))-1)) else chdir('\');
  101.         end else begin
  102.           newtreeoff := true;
  103.           walkoffset := 0; walkcsr := 0;
  104.           trace_tree; save_tree(treeinfofile);
  105.           build_tree(true); chdir(drivechar+':\');
  106.           retkey := 0;
  107.         end;
  108.       end;
  109.     until (retkey=_esc) or (retkey=_enter);
  110.     __resscn(scn1);
  111.     { for i := 0 to nodenumber-1 do writeln('   ' + nodedispptr^[i]); }
  112.     writeln; writeln(__num(nodenumber-1), ' directories were scanned.');
  113.   end;
  114. end.
  115.