Plan 9 from Bell Labs’s /usr/web/sources/contrib/nemo/octopus/port/live/wtree.m

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


# Generic panel coordination
# One process coordinates operations within the tree, so that
# there are no races.
Wtree: module {
	PATH: con "/dis/o/wtree.dis";

	# to implement tree. internal use only.
	Treeop: adt {
		rc:	chan of ref Wpanel->Panel;
		path:	string;
		pick {
		Walk or Update or Sync or Layout or Dump or Tags or Image or Focus =>
		Size =>
			op:	int;
		Ptwalk =>
			pt:	Draw->Point;
			atomok: int;
		Mouse =>
			m:	ref Gui->Cpointer;
			mc:	chan of ref Gui->Cpointer;
		Kbd =>
			r:	int;
		}
	};

	Min, Max, Full: con iota;	# for Tree.size and Treeop.Size.to

	Tree: adt {
		omero:	string;
		slash:	ref Wpanel->Panel;			# "/" for the entire tree
		dslash:	ref Wpanel->Panel;			# "/" for the shown portion
		opc:		chan of ref Treeop;		# internal use only
		donec:	chan of ref Wpanel->Panel;
		focus:	ref Wpanel->Panel;
		lastxy:	Draw->Point;

		start:		fn(omero: string, name: string): ref Tree;
		terminate:	fn(t: self ref Tree);

		path:		fn(t: self ref Tree, p: ref Wpanel->Panel): string;	# path in tree
		walk:		fn(t: self ref Tree, path: string): ref Wpanel->Panel;
		ptwalk:	fn(t: self ref Tree, xy: Draw->Point, atomok: int): ref Wpanel->Panel;
		mouse:	fn(t: self ref Tree, m: ref Gui->Cpointer, mc: chan of ref Gui->Cpointer): ref Wpanel->Panel;
		kbd:		fn(t: self ref Tree, r: int): ref Wpanel->Panel;
		update:	fn(t: self ref Tree, path: string);
		sync:	fn(t: self ref Tree, path: string);
		size:		fn(t: self ref Tree, path: string, op: int);
		layout:	fn(t: self ref Tree, path: string);
		image:	fn(t: self ref Tree, path: string);
		tags:		fn(t: self ref Tree, path: string);
		dump:	fn(t: self ref Tree, path: string);
	};

	init:			fn(d: Livedat);

	panelmouse:	fn(t: ref Tree, p: ref Wpanel->Panel, m: ref Gui->Cpointer, cm: chan of ref Gui->Cpointer): int;
	panelkbd:		fn(t: ref Tree, p: ref Wpanel->Panel, k: int);
	tagmouse:	fn(t: ref Tree, p: ref Wpanel->Panel, m: ref Gui->Cpointer, mc: chan of ref Gui->Cpointer);
	panelctl:		fn(t: ref Tree, p: ref Wpanel->Panel, s: string): int;
};

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].