DEADSOFTWARE

42006302cb6a888d5a8322aedc1dc3f2fa8925f8
[bbcp.git] / Trurl-based / __Interp / Host / Mod / Windows.txt
1 MODULE HostWindows;
3 (* for Views *)
5 IMPORT Windows, Controllers, Views, Files, Converters, Documents, Ports;
7 TYPE
8 Window = POINTER TO EXTENSIBLE RECORD (Windows.Window)
9 next: Window; (* window ring, to prevent garbage collection of windows *)
10 END;
12 Directory = POINTER TO EXTENSIBLE RECORD (Windows.Directory)
13 END;
15 VAR
16 dir: Directory;
17 winAnchor: Window; (* list of all windows, from top to bottom, first is dumy header *)
19 (** Window **)
21 PROCEDURE (w: Window) ForwardCtrlMsg (VAR msg: Controllers.Message), EXTENSIBLE;
22 BEGIN
23 HALT(126)
24 END ForwardCtrlMsg;
26 PROCEDURE (w: Window) SetSize (width, height: INTEGER);
27 BEGIN
28 HALT(126)
29 END SetSize;
31 PROCEDURE (w: Window) SetTitle (title: Views.Title);
32 BEGIN
33 HALT(126)
34 END SetTitle;
36 PROCEDURE (w: Window) RefreshTitle;
37 BEGIN
38 HALT(126)
39 END RefreshTitle;
41 PROCEDURE (w: Window) GetTitle (OUT title: Views.Title);
42 BEGIN
43 HALT(126)
44 END GetTitle;
46 PROCEDURE (w: Window) SetSpec (loc: Files.Locator; name: Files.Name; conv: Converters.Converter);
47 BEGIN
48 HALT(126)
49 END SetSpec;
51 PROCEDURE (w: Window) MouseDown (x, y, time: INTEGER; modifiers: SET);
52 BEGIN
53 HALT(126)
54 END MouseDown;
56 PROCEDURE (w: Window) KeyDown (ch: CHAR; buttons: SET);
57 BEGIN
58 HALT(126)
59 END KeyDown;
61 PROCEDURE (w: Window) Close;
62 BEGIN
63 ASSERT(w.frame # NIL, 20);
64 HALT(126);
65 w.Close^;
66 ASSERT(w.frame = NIL, 60)
67 END Close;
69 (* Directory *)
71 PROCEDURE (d: Directory) Open (
72 w: Windows.Window; doc: Documents.Document; flags: SET; name: Views.Title;
73 loc: Files.Locator; fname: Files.Name; conv: Converters.Converter
74 );
75 VAR p: Ports.Port;
76 BEGIN
77 WITH w: Window DO
78 END
79 END Open;
81 PROCEDURE (d: Directory) First (): Window;
82 BEGIN
83 RETURN winAnchor.next
84 END First;
86 PROCEDURE (d: Directory) Next (w: Windows.Window): Window;
87 BEGIN
88 IF w # NIL THEN RETURN w(Window).next ELSE RETURN NIL END
89 END Next;
91 PROCEDURE (d: Directory) New (): Window, EXTENSIBLE;
92 VAR w: Window;
93 BEGIN
94 NEW(w); RETURN w
95 END New;
97 PROCEDURE (d: Directory) Focus (target: BOOLEAN): Window;
98 BEGIN
99 HALT(126);
100 RETURN NIL
101 END Focus;
103 PROCEDURE (d: Directory) Select (w: Windows.Window; lazy: BOOLEAN);
104 BEGIN
105 WITH w: Window DO
106 HALT(126)
107 END
108 END Select;
110 PROCEDURE (d: Directory) GetThisWindow (p: Ports.Port; px, py: INTEGER;
111 OUT x, y: INTEGER; OUT w: Windows.Window);
112 BEGIN
113 w := NIL
114 END GetThisWindow;
116 PROCEDURE (d: Directory) Close (w: Windows.Window);
117 VAR v, u: Windows.Window; h: Window;
118 BEGIN
119 h := winAnchor; WHILE (h.next # NIL) & (h.next # w) DO h := h.next END;
120 IF h.next = w THEN
121 IF ~w.sub THEN
122 v := w.link;
123 WHILE v # w DO u := v.link; v.Close; v := u END
124 END;
125 w.Close
126 END
127 END Close;
129 PROCEDURE (d: Directory) GetBounds (OUT w, h: INTEGER);
130 BEGIN
131 HALT(126)
132 END GetBounds;
134 PROCEDURE Init;
135 VAR d: Directory;
136 BEGIN
137 NEW(d); d.l := -1; d.t := -1; d.r := -1; d.b := -1; dir := d; Windows.SetDir(d);
138 NEW(winAnchor); winAnchor.next := NIL; (* dummy header *)
139 END Init;
141 BEGIN
142 Init
143 END HostWindows.