xref: /inferno-os/module/grid/browser.m (revision 7ef44d652ae9e5e1f5b3465d73684e4a54de73c0)
1Browser: module {
2
3	PATH: con "/dis/grid/lib/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};