123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373 |
- MODULE StdLog;
- (* THIS IS TEXT COPY OF BlackBox 1.6-rc6 Std/Mod/Log.odc *)
- (* DO NOT EDIT *)
- IMPORT
- Log, Fonts, Ports, Stores, Models, Views, Dialog, HostDialog, StdDialog,
- TextModels, TextMappers, TextRulers, TextViews, TextControllers;
- CONST
- (** IntForm base **)
- charCode* = TextMappers.charCode; decimal* = TextMappers.decimal; hexadecimal* = TextMappers.hexadecimal;
- (** IntForm showBase **)
- hideBase* = TextMappers.hideBase; showBase* = TextMappers.showBase;
- mm = Ports.mm;
- TYPE
- ShowHook = POINTER TO RECORD (Dialog.ShowHook) END;
- LogHook = POINTER TO RECORD (Log.Hook) END;
- VAR
- logAlerts: BOOLEAN;
- text-, buf-: TextModels.Model;
- defruler-: TextRulers.Ruler;
- dir-: TextViews.Directory;
- out, subOut: TextMappers.Formatter;
-
- showHook: ShowHook;
- PROCEDURE Flush;
- BEGIN
- text.Append(buf); Views.RestoreDomain(text.Domain())
- END Flush;
- PROCEDURE Char* (ch: CHAR);
- BEGIN
- out.WriteChar(ch); Flush
- END Char;
- PROCEDURE Int* (i: LONGINT);
- BEGIN
- out.WriteChar(" "); out.WriteInt(i); Flush
- END Int;
- PROCEDURE Real* (x: REAL);
- BEGIN
- out.WriteChar(" "); out.WriteReal(x); Flush
- END Real;
- PROCEDURE String* (IN str: ARRAY OF CHAR);
- BEGIN
- out.WriteString(str); Flush
- END String;
- PROCEDURE Bool* (x: BOOLEAN);
- BEGIN
- out.WriteChar(" "); out.WriteBool(x); Flush
- END Bool;
- PROCEDURE Set* (x: SET);
- BEGIN
- out.WriteChar(" "); out.WriteSet(x); Flush
- END Set;
- PROCEDURE IntForm* (x: LONGINT; base, minWidth: INTEGER; fillCh: CHAR; showBase: BOOLEAN);
- BEGIN
- out.WriteIntForm(x, base, minWidth, fillCh, showBase); Flush
- END IntForm;
- PROCEDURE RealForm* (x: REAL; precision, minW, expW: INTEGER; fillCh: CHAR);
- BEGIN
- out.WriteRealForm(x, precision, minW, expW, fillCh); Flush
- END RealForm;
- PROCEDURE Tab*;
- BEGIN
- out.WriteTab; Flush
- END Tab;
- PROCEDURE Ln*;
- BEGIN
- out.WriteLn; Flush;
- TextViews.ShowRange(text, text.Length(), text.Length(), TextViews.any)
- END Ln;
- PROCEDURE Para*;
- BEGIN
- out.WritePara; Flush;
- TextViews.ShowRange(text, text.Length(), text.Length(), TextViews.any)
- END Para;
- PROCEDURE View* (v: Views.View);
- BEGIN
- out.WriteView(v); Flush
- END View;
- PROCEDURE ViewForm* (v: Views.View; w, h: INTEGER);
- BEGIN
- out.WriteViewForm(v, w, h); Flush
- END ViewForm;
- PROCEDURE ParamMsg* (IN msg, p0, p1, p2: ARRAY OF CHAR);
- BEGIN
- out.WriteParamMsg(msg, p0, p1, p2); Flush
- END ParamMsg;
- PROCEDURE Msg* (IN msg: ARRAY OF CHAR);
- BEGIN
- out.WriteMsg(msg); Flush
- END Msg;
-
- PROCEDURE^ Open*;
- PROCEDURE (hook: ShowHook) ShowParamMsg (IN s, p0, p1, p2: ARRAY OF CHAR);
- BEGIN
- IF Dialog.showsStatus THEN
- Dialog.ShowParamStatus(s, p0, p1, p2);
- IF logAlerts THEN
- ParamMsg(s, p0, p1, p2); Ln
- END
- ELSE
- IF logAlerts THEN
- Open;
- ParamMsg(s, p0, p1, p2); Ln
- ELSE
- HostDialog.ShowParamMsg(s, p0, p1, p2)
- END
- END
- END ShowParamMsg;
-
- PROCEDURE (hook: ShowHook) ShowParamStatus (IN s, p0, p1, p2: ARRAY OF CHAR);
- BEGIN
- HostDialog.ShowParamStatus(s, p0, p1, p2)
- END ShowParamStatus;
- PROCEDURE NewView* (): TextViews.View;
- VAR v: TextViews.View;
- BEGIN
- Flush;
- Dialog.SetShowHook(showHook); (* attach alert dialogs *)
- v := dir.New(text);
- v.SetDefaults(TextRulers.CopyOf(defruler, Views.deep), dir.defAttr);
- RETURN v
- END NewView;
- PROCEDURE New*;
- BEGIN
- Views.Deposit(NewView())
- END New;
- PROCEDURE SetDefaultRuler* (ruler: TextRulers.Ruler);
- BEGIN
- defruler := ruler
- END SetDefaultRuler;
- PROCEDURE SetDir* (d: TextViews.Directory);
- BEGIN
- ASSERT(d # NIL, 20); dir := d
- END SetDir;
- PROCEDURE Open*;
- VAR v: Views.View; pos: INTEGER;
- BEGIN
- v := NewView();
- StdDialog.Open(v, "#Dev:Log", NIL, "", NIL, FALSE, TRUE, FALSE, FALSE, TRUE);
- Views.RestoreDomain(text.Domain());
- pos := text.Length();
- TextViews.ShowRange(text, pos, pos, TextViews.any);
- TextControllers.SetCaret(text, pos)
- END Open;
- PROCEDURE Clear*;
- BEGIN
- Models.BeginModification(Models.notUndoable, text);
- text.Delete(0, text.Length());
- buf.Delete(0, buf.Length());
- Models.EndModification(Models.notUndoable, text)
- END Clear;
-
- (* Sub support *)
- PROCEDURE* Guard (o: ANYPTR): BOOLEAN;
- BEGIN
- RETURN
- (o # NIL) &
- ~( (o IS TextModels.Model) & (o = text)
- OR (o IS Stores.Domain) & (o = text.Domain())
- OR (o IS TextViews.View) & (o(TextViews.View).ThisModel() = text)
- )
- END Guard;
- PROCEDURE* ClearBuf;
- VAR subBuf: TextModels.Model;
- BEGIN
- subBuf := subOut.rider.Base(); subBuf.Delete(0, subBuf.Length())
- END ClearBuf;
- PROCEDURE* FlushBuf;
- VAR buf: TextModels.Model;
- BEGIN
- buf := subOut.rider.Base();
- IF buf.Length() > 0 THEN
- IF ~Log.synch THEN Open() END;
- text.Append(buf)
- END
- END FlushBuf;
- PROCEDURE* SubFlush;
- BEGIN
- IF Log.synch THEN
- FlushBuf;
- IF Log.force THEN Views.RestoreDomain(text.Domain()) END
- END;
- END SubFlush;
- PROCEDURE (log: LogHook) Guard* (o: ANYPTR): BOOLEAN;
- BEGIN RETURN Guard(o)
- END Guard;
-
- PROCEDURE (log: LogHook) ClearBuf*;
- BEGIN ClearBuf
- END ClearBuf;
-
- PROCEDURE (log: LogHook) FlushBuf*;
- BEGIN FlushBuf
- END FlushBuf;
-
- PROCEDURE (log: LogHook) Beep*;
- BEGIN Dialog.Beep
- END Beep;
-
- PROCEDURE (log: LogHook) Char* (ch: CHAR);
- BEGIN
- subOut.WriteChar(ch); SubFlush
- END Char;
-
- PROCEDURE (log: LogHook) Int* (n: INTEGER);
- BEGIN
- subOut.WriteChar(" "); subOut.WriteInt(n); SubFlush
- END Int;
-
- PROCEDURE (log: LogHook) Real* (x: REAL);
- BEGIN
- subOut.WriteChar(" "); subOut.WriteReal(x); SubFlush
- END Real;
-
- PROCEDURE (log: LogHook) String* (IN str: ARRAY OF CHAR);
- BEGIN
- subOut.WriteString(str); SubFlush
- END String;
-
- PROCEDURE (log: LogHook) Bool* (x: BOOLEAN);
- BEGIN
- subOut.WriteChar(" "); subOut.WriteBool(x); SubFlush
- END Bool;
-
- PROCEDURE (log: LogHook) Set* (x: SET);
- BEGIN
- subOut.WriteChar(" "); subOut.WriteSet(x); SubFlush
- END Set;
-
- PROCEDURE (log: LogHook) IntForm* (x: INTEGER; base, minWidth: INTEGER; fillCh: CHAR; showBase: BOOLEAN);
- BEGIN
- subOut.WriteIntForm(x, base, minWidth, fillCh, showBase); SubFlush
- END IntForm;
-
- PROCEDURE (log: LogHook) RealForm* (x: REAL; precision, minW, expW: INTEGER; fillCh: CHAR);
- BEGIN
- subOut.WriteRealForm(x, precision, minW, expW, fillCh); SubFlush
- END RealForm;
-
- PROCEDURE (log: LogHook) Tab*;
- BEGIN
- subOut.WriteTab; SubFlush
- END Tab;
-
- PROCEDURE (log: LogHook) Ln*;
- BEGIN
- subOut.WriteLn; SubFlush;
- IF Log.synch THEN Views.RestoreDomain(text.Domain()) END
- END Ln;
-
- PROCEDURE (log: LogHook) Para*;
- BEGIN
- subOut.WritePara; SubFlush;
- IF Log.synch THEN Views.RestoreDomain(text.Domain()) END
- END Para;
-
- PROCEDURE (log: LogHook) View* (v: ANYPTR);
- BEGIN
- IF (v # NIL) & (v IS Views.View) THEN
- subOut.WriteView(v(Views.View)); SubFlush
- END
- END View;
-
- PROCEDURE (log: LogHook) ViewForm* (v: ANYPTR; w, h: INTEGER);
- BEGIN
- ASSERT(v # NIL, 20);
- IF (v # NIL) & (v IS Views.View) THEN
- subOut.WriteViewForm(v(Views.View), w, h); SubFlush
- END
- END ViewForm;
- PROCEDURE (log: LogHook) ParamMsg* (IN s, p0, p1, p2: ARRAY OF CHAR);
- VAR msg: ARRAY 256 OF CHAR; i: INTEGER; ch: CHAR;
- BEGIN
- IF logAlerts THEN
- IF Log.synch THEN Open END;
- Dialog.MapParamString(s, p0, p1, p2, msg);
- i := 0; ch := msg[0];
- WHILE ch # 0X DO
- IF ch = TextModels.line THEN subOut.WriteLn
- ELSIF ch = TextModels.para THEN subOut.WritePara
- ELSIF ch = TextModels.tab THEN subOut.WriteTab
- ELSIF ch >= " " THEN subOut.WriteChar(ch)
- END;
- INC(i); ch := msg[i];
- END;
- subOut.WriteLn; SubFlush
- ELSE
- HostDialog.ShowParamMsg(s, p0, p1, p2)
- END
- END ParamMsg;
- PROCEDURE AttachSubLog;
- VAR h: LogHook;
- BEGIN
- subOut.ConnectTo(TextModels.dir.New());
- NEW(h);
- Log.SetHook(h);
- END AttachSubLog;
- PROCEDURE DetachSubLog;
- BEGIN
- Log.SetHook(NIL);
- END DetachSubLog;
- PROCEDURE Init;
- VAR font: Fonts.Font; p: TextRulers.Prop; x: INTEGER; i: INTEGER;
- BEGIN
- logAlerts := TRUE; (* logReports := FALSE; *)
- text := TextModels.dir.New();
- buf := TextModels.CloneOf(text);
- out.ConnectTo(buf);
- font := TextModels.dir.attr.font;
- defruler := TextRulers.dir.New(NIL);
- TextRulers.SetRight(defruler, 80*mm);
- dir := TextViews.dir;
- NEW(showHook)
- END Init;
- BEGIN
- Init; AttachSubLog
- CLOSE
- DetachSubLog;
- END StdLog.
|