1Browser: module { 2 3 PATH: con "/dis/scheduler/browser.dis"; 4 5 DESELECT: con 0; 6 SELECT: con 1; 7 TOGGLE: con 2; 8 OPEN: con 3; 9 CLOSE: con 4; 10 11 init: fn (); 12 dialog: fn (ctxt: ref draw->Context, oldtop: ref Tk->Toplevel, butlist: list of string, title, msg: string): int; 13 prevpath: fn (path: string): string; 14 setcentre: fn (top1, top2: ref Tk->Toplevel); 15 16 Browse: adt { 17 new: fn (top: ref Tk->Toplevel, tkchanname, root, rlabel: string, nopanes: int, reader: PathReader): ref Browse; 18 refresh: fn (b: self ref Browse); 19 defaultaction: fn (b: self ref Browse, lst: list of string, f: ref File); 20 getpath: fn (b: self ref Browse, tkpath: string): ref File; 21 opendir: fn (b: self ref Browse, file: File, tkpath: string, action: int): int; 22 newroot: fn (b: self ref Browse, root, rlabel: string); 23 changeview: fn (b: self ref Browse, nopanes: int); 24 selectfile: fn (b: self ref Browse, pane, action: int, file: File, tkpath: string); 25 gotoselectfile: fn (b: self ref Browse, file: File): string; 26 gotopath: fn (b: self ref Browse, dir: File, openfinal: int): (File, string); 27 getselected: fn (b: self ref Browse, pane: int): File; 28 addopened: fn (b: self ref Browse, file: File, add: int); 29 showpath: fn (b: self ref Browse, on: int); 30 resize: fn (b: self ref Browse); 31 top: ref Tk->Toplevel; 32 tkchan: string; 33 bgnorm, bgselect: string; 34 nopanes: int; 35 selected: array of Selected; 36 opened: list of File; 37 root, rlabel: string; 38 reader: PathReader; 39 pane1: File; 40 pane0width: string; 41 width: int; 42 showpathlabel: int; 43 released: int; 44 }; 45 46 SELECTED: con 0; 47 UNSELECTED: con 1; 48 ALL: con 2; 49 50 Select: adt { 51 new: fn (top: ref Tk->Toplevel, tkchanname: string): ref Select; 52 addframe: fn (s: self ref Select, fname, title: string); 53 showframe: fn (s: self ref Select, fname: string); 54 delframe: fn (s: self ref Select, fname: string); 55 addselection: fn (s: self ref Select, fname, text: string, lp: list of ref Parameter, allowdups: int): string; 56 delselection: fn (s: self ref Select, fname, tkpath: string); 57 getselection: fn (s: self ref Select, fname: string): list of (string, list of ref Parameter); 58 getselected: fn (s: self ref Select, fname: string): string; 59 select: fn (s: self ref Select, fname, tkpath: string, action: int); 60 defaultaction: fn (s: self ref Select, lst: list of string); 61 resize: fn (s: self ref Select, width, height: int); 62 setscrollr: fn (s: self ref Select, fname: string); 63 top: ref Tk->Toplevel; 64 tkchan: string; 65 currfname, currfid: string; 66 frames: list of ref Frame; 67 }; 68 69 Frame: adt { 70 name: string; 71 path: string; 72 selected: string; 73 }; 74 75 Parameter: adt { 76 pick { 77 ArgIn => 78 name, initval: string; 79 ArgOut => 80 name, val: string; 81 IntIn => 82 min, max, initval: int; 83 IntOut => 84 val: int; 85 } 86 }; 87 88 File: adt { 89 eq: fn (a,b: File): int; 90 path, qid: string; 91 }; 92 93 Selected: adt { 94 file: File; 95 tkpath: string; 96 }; 97};