Windowm : module {
	PATH : con "/dis/acme/wind.dis";

	init : fn(mods : ref Dat->Mods);

	Window : adt {
		qlock : ref Dat->Lock;
		refx : ref Dat->Ref;
		tag : 	cyclic ref Textm->Text;
		body : cyclic ref Textm->Text;
		r : Draw->Rect;
		isdir : int;
		isscratch : int;
		filemenu : int;
		dirty : int;
		id : int;
		addr : Dat->Range;
		limit : Dat->Range;
		nopen : array of byte;
		nomark : int;
		noscroll : int;
		echomode : int;
		wrselrange : Dat->Range;
		rdselfd : ref Sys->FD;
		col : cyclic ref Columnm->Column;
		eventx : cyclic ref Xfidm->Xfid;
		events : string;
		nevents : int;
		owner : int;
		maxlines :	int;
		dlp : array of ref Dat->Dirlist;
		ndl : int;
		putseq : int;
		nincl : int;
		incl : array of string;
		reffont : ref Dat->Reffont;
		ctllock : ref Dat->Lock;
		ctlfid : int;
		dumpstr : string;
		dumpdir : string;
		dumpid : int;
		utflastqid : int;
		utflastboff : int;
		utflastq : int;

		init : fn(w : self ref Window, w0 : ref Window, r : Draw->Rect);
		lock : fn(w : self ref Window, n : int);
		lock1 : fn(w : self ref Window, n : int);
		unlock : fn(w : self ref Window);
		typex : fn(w : self ref Window, t : ref Textm->Text, r : int);
		undo : fn(w : self ref Window, n : int);
		setname : fn(w : self ref Window, r : string, n : int);
		settag : fn(w : self ref Window);
		settag1 : fn(w : self ref Window);
		commit : fn(w : self ref Window, t : ref Textm->Text);
		reshape : fn(w : self ref Window, r : Draw->Rect, n : int) : int;
		close : fn(w : self ref Window);
		delete : fn(w : self ref Window);
		clean : fn(w : self ref Window, n : int, exiting : int) : int;
		dirfree : fn(w : self ref Window);
		event : fn(w : self ref Window, b : string);
		mousebut : fn(w : self ref Window);
		addincl : fn(w : self ref Window, r : string, n : int);
		cleartag : fn(w : self ref Window);
		ctlprint : fn(w : self ref Window, fonts : int) : string;
	};
};
