DEADSOFTWARE

92b7617558c1d4669076ef4a76e6af5d466270fa
[bbcp.git] / Trurl-based / Std / Mod / Log.txt
1 MODULE StdLog;
3 (* THIS IS TEXT COPY OF BlackBox 1.6-rc6 Std/Mod/Log.odc *)
4 (* DO NOT EDIT *)
6 IMPORT
7 Log, Fonts, Ports, Stores, Models, Views, Dialog, HostDialog, StdDialog,
8 TextModels, TextMappers, TextRulers, TextViews, TextControllers;
10 CONST
11 (** IntForm base **)
12 charCode* = TextMappers.charCode; decimal* = TextMappers.decimal; hexadecimal* = TextMappers.hexadecimal;
14 (** IntForm showBase **)
15 hideBase* = TextMappers.hideBase; showBase* = TextMappers.showBase;
17 mm = Ports.mm;
19 TYPE
20 ShowHook = POINTER TO RECORD (Dialog.ShowHook) END;
21 LogHook = POINTER TO RECORD (Log.Hook) END;
23 VAR
24 logAlerts: BOOLEAN;
26 text-, buf-: TextModels.Model;
27 defruler-: TextRulers.Ruler;
28 dir-: TextViews.Directory;
30 out, subOut: TextMappers.Formatter;
32 showHook: ShowHook;
35 PROCEDURE Flush;
36 BEGIN
37 text.Append(buf); Views.RestoreDomain(text.Domain())
38 END Flush;
40 PROCEDURE Char* (ch: CHAR);
41 BEGIN
42 out.WriteChar(ch); Flush
43 END Char;
45 PROCEDURE Int* (i: LONGINT);
46 BEGIN
47 out.WriteChar(" "); out.WriteInt(i); Flush
48 END Int;
50 PROCEDURE Real* (x: REAL);
51 BEGIN
52 out.WriteChar(" "); out.WriteReal(x); Flush
53 END Real;
55 PROCEDURE String* (IN str: ARRAY OF CHAR);
56 BEGIN
57 out.WriteString(str); Flush
58 END String;
60 PROCEDURE Bool* (x: BOOLEAN);
61 BEGIN
62 out.WriteChar(" "); out.WriteBool(x); Flush
63 END Bool;
65 PROCEDURE Set* (x: SET);
66 BEGIN
67 out.WriteChar(" "); out.WriteSet(x); Flush
68 END Set;
70 PROCEDURE IntForm* (x: LONGINT; base, minWidth: INTEGER; fillCh: CHAR; showBase: BOOLEAN);
71 BEGIN
72 out.WriteIntForm(x, base, minWidth, fillCh, showBase); Flush
73 END IntForm;
75 PROCEDURE RealForm* (x: REAL; precision, minW, expW: INTEGER; fillCh: CHAR);
76 BEGIN
77 out.WriteRealForm(x, precision, minW, expW, fillCh); Flush
78 END RealForm;
80 PROCEDURE Tab*;
81 BEGIN
82 out.WriteTab; Flush
83 END Tab;
85 PROCEDURE Ln*;
86 BEGIN
87 out.WriteLn; Flush;
88 TextViews.ShowRange(text, text.Length(), text.Length(), TextViews.any)
89 END Ln;
91 PROCEDURE Para*;
92 BEGIN
93 out.WritePara; Flush;
94 TextViews.ShowRange(text, text.Length(), text.Length(), TextViews.any)
95 END Para;
97 PROCEDURE View* (v: Views.View);
98 BEGIN
99 out.WriteView(v); Flush
100 END View;
102 PROCEDURE ViewForm* (v: Views.View; w, h: INTEGER);
103 BEGIN
104 out.WriteViewForm(v, w, h); Flush
105 END ViewForm;
107 PROCEDURE ParamMsg* (IN msg, p0, p1, p2: ARRAY OF CHAR);
108 BEGIN
109 out.WriteParamMsg(msg, p0, p1, p2); Flush
110 END ParamMsg;
112 PROCEDURE Msg* (IN msg: ARRAY OF CHAR);
113 BEGIN
114 out.WriteMsg(msg); Flush
115 END Msg;
118 PROCEDURE^ Open*;
120 PROCEDURE (hook: ShowHook) ShowParamMsg (IN s, p0, p1, p2: ARRAY OF CHAR);
121 BEGIN
122 IF Dialog.showsStatus THEN
123 Dialog.ShowParamStatus(s, p0, p1, p2);
124 IF logAlerts THEN
125 ParamMsg(s, p0, p1, p2); Ln
126 END
127 ELSE
128 IF logAlerts THEN
129 Open;
130 ParamMsg(s, p0, p1, p2); Ln
131 ELSE
132 HostDialog.ShowParamMsg(s, p0, p1, p2)
133 END
134 END
135 END ShowParamMsg;
137 PROCEDURE (hook: ShowHook) ShowParamStatus (IN s, p0, p1, p2: ARRAY OF CHAR);
138 BEGIN
139 HostDialog.ShowParamStatus(s, p0, p1, p2)
140 END ShowParamStatus;
143 PROCEDURE NewView* (): TextViews.View;
144 VAR v: TextViews.View;
145 BEGIN
146 Flush;
147 Dialog.SetShowHook(showHook); (* attach alert dialogs *)
148 v := dir.New(text);
149 v.SetDefaults(TextRulers.CopyOf(defruler, Views.deep), dir.defAttr);
150 RETURN v
151 END NewView;
153 PROCEDURE New*;
154 BEGIN
155 Views.Deposit(NewView())
156 END New;
159 PROCEDURE SetDefaultRuler* (ruler: TextRulers.Ruler);
160 BEGIN
161 defruler := ruler
162 END SetDefaultRuler;
164 PROCEDURE SetDir* (d: TextViews.Directory);
165 BEGIN
166 ASSERT(d # NIL, 20); dir := d
167 END SetDir;
170 PROCEDURE Open*;
171 VAR v: Views.View; pos: INTEGER;
172 BEGIN
173 v := NewView();
174 StdDialog.Open(v, "#Dev:Log", NIL, "", NIL, FALSE, TRUE, FALSE, FALSE, TRUE);
175 Views.RestoreDomain(text.Domain());
176 pos := text.Length();
177 TextViews.ShowRange(text, pos, pos, TextViews.any);
178 TextControllers.SetCaret(text, pos)
179 END Open;
181 PROCEDURE Clear*;
182 BEGIN
183 Models.BeginModification(Models.notUndoable, text);
184 text.Delete(0, text.Length());
185 buf.Delete(0, buf.Length());
186 Models.EndModification(Models.notUndoable, text)
187 END Clear;
190 (* Sub support *)
192 PROCEDURE* Guard (o: ANYPTR): BOOLEAN;
193 BEGIN
194 RETURN
195 (o # NIL) &
196 ~( (o IS TextModels.Model) & (o = text)
197 OR (o IS Stores.Domain) & (o = text.Domain())
198 OR (o IS TextViews.View) & (o(TextViews.View).ThisModel() = text)
200 END Guard;
202 PROCEDURE* ClearBuf;
203 VAR subBuf: TextModels.Model;
204 BEGIN
205 subBuf := subOut.rider.Base(); subBuf.Delete(0, subBuf.Length())
206 END ClearBuf;
208 PROCEDURE* FlushBuf;
209 VAR buf: TextModels.Model;
210 BEGIN
211 buf := subOut.rider.Base();
212 IF buf.Length() > 0 THEN
213 IF ~Log.synch THEN Open() END;
214 text.Append(buf)
215 END
216 END FlushBuf;
218 PROCEDURE* SubFlush;
219 BEGIN
220 IF Log.synch THEN
221 FlushBuf;
222 IF Log.force THEN Views.RestoreDomain(text.Domain()) END
223 END;
224 END SubFlush;
229 PROCEDURE (log: LogHook) Guard* (o: ANYPTR): BOOLEAN;
230 BEGIN RETURN Guard(o)
231 END Guard;
233 PROCEDURE (log: LogHook) ClearBuf*;
234 BEGIN ClearBuf
235 END ClearBuf;
237 PROCEDURE (log: LogHook) FlushBuf*;
238 BEGIN FlushBuf
239 END FlushBuf;
241 PROCEDURE (log: LogHook) Beep*;
242 BEGIN Dialog.Beep
243 END Beep;
245 PROCEDURE (log: LogHook) Char* (ch: CHAR);
246 BEGIN
247 subOut.WriteChar(ch); SubFlush
248 END Char;
250 PROCEDURE (log: LogHook) Int* (n: INTEGER);
251 BEGIN
252 subOut.WriteChar(" "); subOut.WriteInt(n); SubFlush
253 END Int;
255 PROCEDURE (log: LogHook) Real* (x: REAL);
256 BEGIN
257 subOut.WriteChar(" "); subOut.WriteReal(x); SubFlush
258 END Real;
260 PROCEDURE (log: LogHook) String* (IN str: ARRAY OF CHAR);
261 BEGIN
262 subOut.WriteString(str); SubFlush
263 END String;
265 PROCEDURE (log: LogHook) Bool* (x: BOOLEAN);
266 BEGIN
267 subOut.WriteChar(" "); subOut.WriteBool(x); SubFlush
268 END Bool;
270 PROCEDURE (log: LogHook) Set* (x: SET);
271 BEGIN
272 subOut.WriteChar(" "); subOut.WriteSet(x); SubFlush
273 END Set;
275 PROCEDURE (log: LogHook) IntForm* (x: INTEGER; base, minWidth: INTEGER; fillCh: CHAR; showBase: BOOLEAN);
276 BEGIN
277 subOut.WriteIntForm(x, base, minWidth, fillCh, showBase); SubFlush
278 END IntForm;
280 PROCEDURE (log: LogHook) RealForm* (x: REAL; precision, minW, expW: INTEGER; fillCh: CHAR);
281 BEGIN
282 subOut.WriteRealForm(x, precision, minW, expW, fillCh); SubFlush
283 END RealForm;
285 PROCEDURE (log: LogHook) Tab*;
286 BEGIN
287 subOut.WriteTab; SubFlush
288 END Tab;
290 PROCEDURE (log: LogHook) Ln*;
291 BEGIN
292 subOut.WriteLn; SubFlush;
293 IF Log.synch THEN Views.RestoreDomain(text.Domain()) END
294 END Ln;
296 PROCEDURE (log: LogHook) Para*;
297 BEGIN
298 subOut.WritePara; SubFlush;
299 IF Log.synch THEN Views.RestoreDomain(text.Domain()) END
300 END Para;
302 PROCEDURE (log: LogHook) View* (v: ANYPTR);
303 BEGIN
304 IF (v # NIL) & (v IS Views.View) THEN
305 subOut.WriteView(v(Views.View)); SubFlush
306 END
307 END View;
309 PROCEDURE (log: LogHook) ViewForm* (v: ANYPTR; w, h: INTEGER);
310 BEGIN
311 ASSERT(v # NIL, 20);
312 IF (v # NIL) & (v IS Views.View) THEN
313 subOut.WriteViewForm(v(Views.View), w, h); SubFlush
314 END
315 END ViewForm;
317 PROCEDURE (log: LogHook) ParamMsg* (IN s, p0, p1, p2: ARRAY OF CHAR);
318 VAR msg: ARRAY 256 OF CHAR; i: INTEGER; ch: CHAR;
319 BEGIN
320 IF logAlerts THEN
321 IF Log.synch THEN Open END;
322 Dialog.MapParamString(s, p0, p1, p2, msg);
323 i := 0; ch := msg[0];
324 WHILE ch # 0X DO
325 IF ch = TextModels.line THEN subOut.WriteLn
326 ELSIF ch = TextModels.para THEN subOut.WritePara
327 ELSIF ch = TextModels.tab THEN subOut.WriteTab
328 ELSIF ch >= " " THEN subOut.WriteChar(ch)
329 END;
330 INC(i); ch := msg[i];
331 END;
332 subOut.WriteLn; SubFlush
333 ELSE
334 HostDialog.ShowParamMsg(s, p0, p1, p2)
335 END
336 END ParamMsg;
339 PROCEDURE AttachSubLog;
340 VAR h: LogHook;
341 BEGIN
342 subOut.ConnectTo(TextModels.dir.New());
343 NEW(h);
344 Log.SetHook(h);
345 END AttachSubLog;
347 PROCEDURE DetachSubLog;
348 BEGIN
349 Log.SetHook(NIL);
350 END DetachSubLog;
353 PROCEDURE Init;
354 VAR font: Fonts.Font; p: TextRulers.Prop; x: INTEGER; i: INTEGER;
355 BEGIN
356 logAlerts := TRUE; (* logReports := FALSE; *)
358 text := TextModels.dir.New();
359 buf := TextModels.CloneOf(text);
360 out.ConnectTo(buf);
362 font := TextModels.dir.attr.font;
363 defruler := TextRulers.dir.New(NIL);
364 TextRulers.SetRight(defruler, 80*mm);
365 dir := TextViews.dir;
366 NEW(showHook)
367 END Init;
369 BEGIN
370 Init; AttachSubLog
371 CLOSE
372 DetachSubLog;
373 END StdLog.