hodza/BlackBox.Shkola.2014 huggingface dataset:
Obx/Mod/Views3.odc

MODULE ObxViews3;
(**
	project	= "BlackBox"
	organization	= "www.oberon.ch"
	contributors	= "Oberon microsystems"
	version	= "System/Rsrc/About"
	copyright	= "System/Rsrc/About"
	license	= "Docu/BB-License"
	changes	= "
	- YYYYMMDD, nn, ...
	"
	issues	= "
	- ...
	"

**)

	IMPORT Views, Ports, Properties;

	TYPE View = POINTER TO RECORD (Views.View) END;

	PROCEDURE (v: View)  Restore (f: Views.Frame; l, t, r, b: INTEGER);
	BEGIN
		f.DrawRect(l, t, r, b, Ports.fill, Ports.red)
	END Restore;

	PROCEDURE (v: View) HandlePropMsg (VAR msg: Properties.Message);
		CONST min = 5 * Ports.mm; max = 50 * Ports.mm;
	BEGIN
		WITH msg: Properties.SizePref DO
			IF (msg.w = Views.undefined) OR (msg.h = Views.undefined) THEN
				 msg.w := 20 * Ports.mm; msg.h := 10 * Ports.mm
			ELSE
				Properties.ProportionalConstraint(2, 1, msg.fixedW, msg.fixedH,
										msg.w, msg.h);
				IF msg.h < min THEN
					msg.h := min; msg.w := 2 * min
				ELSIF msg.h > max THEN
					msg.h := max; msg.w := 2 * max
				END
			END
		| msg: Properties.ResizePref DO
			msg.horFitToWin := TRUE; msg.verFitToWin := TRUE
		ELSE	(* ignore other messages *)
		END
	END HandlePropMsg;

	PROCEDURE Deposit*;
		VAR v: View;
	BEGIN
		NEW(v); Views.Deposit(v)
	END Deposit;

END ObxViews3.
Obx/Mod/Views4.odc

MODULE ObxViews4;
(**
	project	= "BlackBox"
	organization	= "www.oberon.ch"
	contributors	= "Oberon microsystems"
	version	= "System/Rsrc/About"
	copyright	= "System/Rsrc/About"
	license	= "Docu/BB-License"
	changes	= "
	- YYYYMMDD, nn, ...
	"
	issues	= "
	- ...
	"

**)

	IMPORT Views, Ports, Properties, Controllers;

	TYPE View = POINTER TO RECORD (Views.View) END;

	PROCEDURE (v: View)  Restore (f: Views.Frame; l, t, r, b: INTEGER);
	BEGIN
		f.DrawRect(l, t, r, b, Ports.fill, Ports.red)
	END Restore;

	PROCEDURE (v: View) HandlePropMsg (VAR msg: Properties.Message);
		CONST min = 5 * Ports.mm; max = 50 * Ports.mm;
	BEGIN
		WITH msg: Properties.SizePref DO
			IF (msg.w = Views.undefined) OR (msg.h = Views.undefined) THEN
				 msg.w := 20 * Ports.mm; msg.h := 10 * Ports.mm
			ELSE
				Properties.ProportionalConstraint(2, 1, msg.fixedW, msg.fixedH,
										msg.w, msg.h);
				IF msg.h < min THEN
					msg.h := min; msg.w := 2 * min
				ELSIF msg.h > max THEN
					msg.h := max; msg.w := 2 * max
				END
			END
		| msg: Properties.ResizePref DO
			msg.horFitToWin := TRUE; msg.verFitToWin := TRUE
		| msg: Properties.FocusPref DO
			msg.setFocus := TRUE
		ELSE	(* ignore other messages *)
		END
	END HandlePropMsg;

	PROCEDURE (v: View) HandleCtrlMsg (f: Views.Frame;
									VAR msg: Controllers.Message; VAR focus: Views.View);
	BEGIN
		WITH msg: Controllers.PollOpsMsg DO
			msg.valid := {Controllers.paste}; msg.selectable := TRUE;
			msg.type := "Obx.Tutorial"
		ELSE	(* ignore other messages *)
		END
	END HandleCtrlMsg;

	PROCEDURE Deposit*;
		VAR v: View;
	BEGIN
		NEW(v); Views.Deposit(v)
	END Deposit;

END ObxViews4.
Obx/Mod/Views5.odc

MODULE ObxViews5;
(**
	project	= "BlackBox"
	organization	= "www.oberon.ch"
	contributors	= "Oberon microsystems"
	version	= "System/Rsrc/About"
	copyright	= "System/Rsrc/About"
	license	= "Docu/BB-License"
	changes	= "
	- YYYYMMDD, nn, ...
	"
	issues	= "
	- ...
	"

**)

	IMPORT Views, Ports, Properties, Controllers;

	TYPE
		View = POINTER TO RECORD (Views.View)
			x, y: INTEGER
		END;

	PROCEDURE (v: View)  Restore (f: Views.Frame; l, t, r, b: INTEGER);
	BEGIN
		f.DrawRect(l, t, r, b, Ports.fill, Ports.red);
		f.DrawLine(v.x, t, v.x, b, 0, Ports.white); f.DrawLine(l, v.y, r, v.y, 0, Ports.white)
	END Restore;

	PROCEDURE (v: View) HandlePropMsg (VAR msg: Properties.Message);
		CONST min = 5 * Ports.mm; max = 50 * Ports.mm;
	BEGIN
		WITH msg: Properties.SizePref DO
			IF (msg.w = Views.undefined) OR (msg.h = Views.undefined) THEN
				 msg.w := 20 * Ports.mm; msg.h := 10 * Ports.mm
			ELSE
				Properties.ProportionalConstraint(2, 1, msg.fixedW, msg.fixedH,
										msg.w, msg.h);
				IF msg.h < min THEN msg.h := min; msg.w := 2 * min
				ELSIF msg.h > max THEN msg.h := max; msg.w := 2 * max
				END
			END
		| msg: Properties.ResizePref DO
			msg.horFitToWin := TRUE; msg.verFitToWin := TRUE
		| msg: Properties.FocusPref DO
			msg.setFocus := TRUE
		ELSE	(* ignore other messages *)
		END
	END HandlePropMsg;

	PROCEDURE (v: View) HandleCtrlMsg (f: Views.Frame;
										VAR msg: Controllers.Message; 
										VAR focus: Views.View);
		VAR x, y, w, h: INTEGER; m: SET; isDown: BOOLEAN;
	BEGIN
		WITH msg: Controllers.PollOpsMsg DO
			msg.valid := {Controllers.paste}; msg.selectable := TRUE;
			msg.type := "Obx.Tutorial"
		| msg: Controllers.EditMsg DO
			IF msg.op = Controllers.pasteChar THEN	(* cursor keys *)
				IF msg.char = 1DX THEN INC(v.x, Ports.mm)
				ELSIF msg.char = 1CX THEN DEC(v.x, Ports.mm)
				ELSIF msg.char  = 1EX THEN DEC(v.y, Ports.mm)
				ELSIF msg.char  = 1FX THEN INC(v.y, Ports.mm)
				END;
				Views.Update(v, Views.keepFrames)
			END
		| msg: Controllers.TrackMsg DO
			v.x := msg.x; v.y := msg.y;
			v.context.GetSize(w, h); v.Restore(f, 0, 0, w, h);
			REPEAT
				f.Input(x, y, m, isDown);
				IF (x # v.x) OR (y # v.y) THEN
					v.x := x; v.y := y; v.Restore(f, 0, 0, w, h)
				END
			UNTIL ~isDown;
			Views.Update(v, Views.keepFrames)
		| msg: Controllers.PollCursorMsg DO
			msg.cursor := Ports.graphicsCursor
		ELSE	(* ignore other messages *)
		END
	END HandleCtrlMsg;

	PROCEDURE Deposit*;
		VAR v: View;
	BEGIN
		NEW(v); v.x := 0; v.y := 0; Views.Deposit(v)
	END Deposit;

END ObxViews5.
Obx/Mod/Views6.odc

MODULE ObxViews6;
(**
	project	= "BlackBox"
	organization	= "www.oberon.ch"
	contributors	= "Oberon microsystems"
	version	= "System/Rsrc/About"
	copyright	= "System/Rsrc/About"
	license	= "Docu/BB-License"
	changes	= "
	- YYYYMMDD, nn, ...
	"
	issues	= "
	- ...
	"

**)

	IMPORT Views, Ports, Properties, Controllers;

	TYPE
		View = POINTER TO RECORD (Views.View)
			x, y: INTEGER;
			c: Ports.Color
		END;

	PROCEDURE (v: View)  Restore (f: Views.Frame; l, t, r, b: INTEGER);
	BEGIN
		f.DrawRect(l, t, r, b, Ports.fill, v.c);
		f.DrawLine(v.x, t, v.x, b, 0, Ports.white); f.DrawLine(l, v.y, r, v.y, 0, Ports.white)
	END Restore;
	
	PROCEDURE (v: View) HandlePropMsg (VAR msg: Properties.Message);
		CONST min = 5 * Ports.mm; max = 50 * Ports.mm;
		VAR stdProp: Properties.StdProp; prop: Properties.Property;
	BEGIN
		WITH msg: Properties.SizePref DO
			IF (msg.w = Views.undefined) OR (msg.h = Views.undefined) THEN
				 msg.w := 20 * Ports.mm; msg.h := 10 * Ports.mm
			ELSE
				Properties.ProportionalConstraint(2, 1, msg.fixedW, msg.fixedH,
										msg.w, msg.h);
				IF msg.h < min THEN msg.h := min; msg.w := 2 * min
				ELSIF msg.h > max THEN msg.h := max; msg.w := 2 * max
				END
			END
		| msg: Properties.ResizePref DO
			msg.horFitToWin := TRUE; msg.verFitToWin := TRUE
		| msg: Properties.FocusPref DO
			msg.setFocus := TRUE
		| msg: Properties.PollMsg DO
			NEW(stdProp);
			stdProp.color.val := v.c;
			stdProp.valid := {Properties.color};
			stdProp.known := {Properties.color};
			Properties.Insert(msg.prop, stdProp)
		| msg: Properties.SetMsg DO
			prop := msg.prop;
			WHILE prop # NIL DO
				WITH prop: Properties.StdProp DO
					IF Properties.color IN prop.valid THEN v.c := prop.color.val END
				ELSE
				END;
				prop := prop.next
			END;
			Views.Update(v, Views.keepFrames)
		ELSE	(* ignore other messages *)
		END
	END HandlePropMsg;

	PROCEDURE (v: View) HandleCtrlMsg (f: Views.Frame;
										VAR msg: Controllers.Message;
										VAR focus: Views.View);
		VAR x, y, w, h: INTEGER; m: SET; isDown: BOOLEAN;
	BEGIN
		WITH msg: Controllers.PollOpsMsg DO
			msg.valid := {Controllers.paste}; msg.selectable := TRUE;
			msg.type := "Obx.Tutorial"
		| msg: Controllers.EditMsg DO
			IF msg.op = Controllers.pasteChar THEN
				IF msg.char = 1DX THEN INC(v.x, Ports.mm)
				ELSIF msg.char = 1CX THEN DEC(v.x, Ports.mm)
				ELSIF msg.char  = 1EX THEN DEC(v.y, Ports.mm)
				ELSIF msg.char  = 1FX THEN INC(v.y, Ports.mm)
				END;
				Views.Update(v, Views.keepFrames)
			END
		| msg: Controllers.TrackMsg DO
			v.x := msg.x; v.y := msg.y; v.context.GetSize(w, h); v.Restore(f, 0, 0, w, h);
			REPEAT
				f.Input(x, y, m, isDown);
				IF (x # v.x) OR (y # v.y) THEN
					v.x := x; v.y := y; v.Restore(f, 0, 0, w, h)
				END
			UNTIL ~isDown;
			Views.Update(v, Views.keepFrames)
		| msg: Controllers.PollCursorMsg DO
			msg.cursor := Ports.graphicsCursor
		ELSE	(* ignore other messages *)
		END
	END HandleCtrlMsg;

	PROCEDURE Deposit*;
		VAR v: View;
	BEGIN
		NEW(v); v.x := 0; v.y := 0; v.c := Ports.black; Views.Deposit(v)
	END Deposit;

END ObxViews6.
Obx/Rsrc/Strings.odc

STRINGS
Lookup	Lookup
ObxConv.ImportTEXT	Obx Text File
Off	Switch Off
On	Switch On
list[0]	Daffy Duck
list[1]	Wile E. Coyote
list[2]	Scrooge Mc Duck
list[3]	Huey Lewis
list[4]	Thomas Dewey

CtrlCol.Prop	ObxCtrlCol.InitDialog; StdCmds.OpenToolDialog('Obx/Rsrc/CtrlCol', 'Properties')

(Obx)Actions	(Obx)Actions
Upper Bound	Предел
Start	Начать

(Obx)BlackBox	(Obx)BlackBox
Size of the board	Размер поля
Number of hidden Atoms	Число скрытых атомов
Open	Начать

Obx/Mod/BlackBox	Obx/Mod/BlackBox
atoms	Атомов: 
score	  Счёт:
Obx/Samples/MMData.odc

Name	Address0	Address1	State	Country
Mr. A. Hill	39 Sunstreet	Moon City	Alabama	USA
Mr. G. Ernst	Feldweg 28	Hochdorf	Bayern	Deutschland
Ms. P. Thompson	12 Oak Ave.	Littletown	N.Carolina	USA
Mr. W. Trou	81, rue Paris	Mantes	IledeParis	France
Ole/Docu/Views.odc

OleViews

DEFINITION OleViews;

	IMPORT CtlT, Views;

	PROCEDURE NewObjectView (name: ARRAY OF CHAR): Views.View;
	PROCEDURE NewObjectViewFromClipboard (): Views.View;
	PROCEDURE Deposit (name: ARRAY OF CHAR);
	PROCEDURE IsObjectView (v: Views.View): BOOLEAN;
	PROCEDURE IsAutoView (v: Views.View): BOOLEAN;
	PROCEDURE OleObject (v: Views.View): CtlT.Interface;
	PROCEDURE AutoObject (v: Views.View): CtlT.Object;
	PROCEDURE Connect (sink: CtlT.OutObject; source: Views.View);

END OleViews.


OleViews provides a programming interface for OLE objects used as views in BlackBox.


PROCEDURE NewObjectView (name: ARRAY OF CHAR): Views.View
Instantiates an OLE object of a given type. name can either be a valid OLE class name (e.g., "Excel.Sheet") or a GUID (global unique identifier) in string form, provided it is a valid class identifier (e.g., "{00020820-0000-0000-C000-000000000046}"). If instatiantion failed, the return value is NIL.

PROCEDURE NewObjectViewFromClipboard (): Views.View
Instantiates the OLE object currently contained in the clipboard. Returns NIL if there is no OLE object on the clipboard.

PROCEDURE Deposit (name: ARRAY OF CHAR)
Deposit command for new OLE objects of a given type. name can either be a valid OLE class name (e.g., "Excel.Sheet") or a GUID (global unique identifier) in string form, provided it is a valid class identifier (e.g., "{00020820-0000-0000-C000-000000000046}").

PROCEDURE IsObjectView (v: Views.View): BOOLEAN
Return TRUE if the given View is an OLE object, FALSE otherwise.

PROCEDURE IsAutoView (v: Views.View): BOOLEAN
Return TRUE if the given View is an OLE Automation object (an object which supports the IDispatch interface), FALSE otherwise.

PROCEDURE OleObject (v: Views.View): CtlT.Interface
Returns the IUnknown interface of the object contained in v as an automation controller object. Only useful in conjunction with the Direct-To-COM compiler (DTC). For information about automation controller objects see the CtlDocu. NIL is returned if v is not an OLE object.

PROCEDURE AutoObject (v: Views.View): CtlT.Object
Returns the automation controller object associated with v. For information about automation controller objects see the CtlDocu. NIL is returned if v is not an OLE Automation object.

PROCEDURE Connect (sink: CtlT.OutObject; source: Views.View)
Connects the automation controller callback object sink to an OLE object contained in the view source. For information about automation controller objects see the CtlDocu.
Std/Docu/Clocks.odc

StdClocks

DEFINITION StdClocks;

	IMPORT Views;

	PROCEDURE Deposit;
	PROCEDURE New (): Views.View;

END StdClocks.


This module implements a simple clock view.

Typical menu command:
	"Insert Clock"	""	"StdClocks.Deposit; StdCmds.PasteView"	"StdCmds.PasteViewGuard"

PROCEDURE New (): Views.View
Factory function for standard clocks.

PROCEDURE Deposit
Deposit command for standard clocks.
Std/Docu/Debug.odc

StdDebug

DEFINITION StdDebug;

END StdDebug.


For a distribution version of an BlackBox application or component, use this limited version of the BlackBox debugger. It is not permitted to distribute the full debugger (DevDebug). This limited version doesn't allow to follow pointers and similar interactions, it only creates a passive display of the error state. Since this is a text document that can be saved, it enables the user to send error information to the developer (e.g., via StdCoder).
StdDebug is installed during startup of BlackBox, if the full DevDebug could  not be found.
Std/Docu/ETHConv.odc

StdETHConv

DEFINITION StdETHConv;

	IMPORT Files, Stores, TextModels;

	PROCEDURE ImportETHDoc (f: Files.File; OUT s: Stores.Store);
	PROCEDURE ImportOberon (f: Files.File): TextModels.Model;

END StdETHConv.


Module StdETHConv provides an importer for ETH Oberon V4 text files.


PROCEDURE ImportETHDoc (f: Files.File; OUT s: Stores.Store)
Importer for Oberon V4 text files. Can be registered by module Config with the statement:

Windows:
	Converters.Register("StdETHConv.ImportETHDoc", "", "TextViews.View", ".ETH", {})
Mac OS:
	Converters.Register("StdETHConv.ImportETHDoc", "", "TextViews.View", ".Ob.", {})

PROCEDURE ImportOberon (f: Files.File): TextModels.Model
Directly converts an Oberon V4 text file into a BlackBox text, without using the converter mechanism of module Converters.
Std/Docu/Interpreter.odc

StdInterpreter

DEFINITION StdInterpreter;

END StdInterpreter.


Module StdInterpreter implements a plug-in service for BlackBox: an interpreter for some forms of Component Pascal procedure calls. A sequence of statements of the following forms are legal:

Proc = PROCEDURE
ProcI = PROCEDURE (x: INTEGER)
ProcII = PROCEDURE (x, y: INTEGER)
ProcS = PROCEDURE (s: ARRAY OF CHAR)
ProcSI = PROCEDURE (s: ARRAY OF CHAR; x: INTEGER)
ProcSII = PROCEDURE (s: ARRAY OF CHAR; x, y: INTEGER)
ProcSS = PROCEDURE (s, t: ARRAY OF CHAR)
ProcSSI = PROCEDURE (s, t: ARRAY OF CHAR; x: INTEGER)
ProcSSII = PROCEDURE (s, t: ARRAY OF CHAR; x, y: INTEGER)

ProcR = PROCEDURE (IN s: ARRAY OF CHAR);
ProcRI = PROCEDURE (IN s: ARRAY OF CHAR; x: INTEGER);
ProcRII = PROCEDURE (IN s: ARRAY OF CHAR; x, y: INTEGER);
ProcRS = PROCEDURE (IN s: ARRAY OF CHAR; t: ARRAY OF CHAR);
ProcRSI = PROCEDURE (IN s: ARRAY OF CHAR; t: ARRAY OF CHAR; x: INTEGER);
ProcRSII = PROCEDURE (IN s: ARRAY OF CHAR; t: ARRAY OF CHAR; x, y: INTEGER);
ProcSR = PROCEDURE (s: ARRAY OF CHAR; IN t: ARRAY OF CHAR);
ProcSRI = PROCEDURE (s: ARRAY OF CHAR; IN t: ARRAY OF CHAR; x: INTEGER);
ProcSRII = PROCEDURE (s: ARRAY OF CHAR; IN t: ARRAY OF CHAR; x, y: INTEGER);
ProcRR = PROCEDURE (IN s, t: ARRAY OF CHAR);
ProcRRI = PROCEDURE (IN s, t: ARRAY OF CHAR; x: INTEGER);
ProcRRII = PROCEDURE (IN s, t: ARRAY OF CHAR; x, y: INTEGER);

For example, a procedure call of type ProcII followed by a procedure call of type Proc could be the following string:

	 "TurtleDraw.GotoPos(35, 587); TurtleDraw.ShowPen".

Such statement sequences are used mainly in menu command configurations and in control properties.

Module StdInterpreter is installed during startup of BlackBox. Its service is made available through the procedure Dialog.Call.
Std/Docu/MenuTool.odc

StdMenuTool

DEFINITION StdMenuTool;

	IMPORT TextModels;

	PROCEDURE UpdateFromText (text: TextModels.Model);
	PROCEDURE UpdateMenus;
	PROCEDURE UpdateAllMenus;
	PROCEDURE ListAllMenus;
	PROCEDURE ThisMenu;

END StdMenuTool.


The menu tool is used during startup of BlackBox to set up the menus.

Typical menu entries:
MENU
	"&Menus"	""	"StdCmds.OpenDoc('System/Rsrc/Menus')"	""
	"&All Menus"	""	"StdMenuTool.ListAllMenus"	""
	"&Update Menus"	""	"StdMenuTool.UpdateMenus"	"TextCmds.FocusGuard"
	"U&pdate All Menus"	""	"StdMenuTool.UpdateAllMenus"	""
END


PROCEDURE UpdateFromText (text: TextModels.Model)
Clears all menus and builds up a new menu bar according to the menu specification in text.

PROCEDURE UpdateMenus
Guard: TextCmds.FocusGuard
Clears all menus and builds up a new menu bar according to the new menu specification in the focus text.

PROCEDURE UpdateAllMenus
Clears all menus and builds up a new menu bar according to the menu specification in System/Rsrc/Menus.

PROCEDURE ListAllMenus
Builds up a text with hyperlinks to all available menu configuration texts, i.e., each subsystem's /Rsrc/Menus text.

PROCEDURE ThisMenu
Used internally (in the hyperlinks of the INCLUDE statements).
Std/Docu/Stamps.odc

StdStamps

DEFINITION StdStamps;

	PROCEDURE Deposit;

	...plus some other items used internally...

END StdStamps.


Stamps are views which indicate the date when the containing document has been saved the last time.


PROCEDURE Deposit
Deposit command for standard stamps.

...plus some other items used internally...

Clicking on the stamp view shows a history of when the document has been saved. Modifier-clicking on the stamp view opens a dialog box that allows to edit the comment associated with the current session.
Std/Docu/Sys-Map.odc

Map to the Std Subsystem

StdApi 	API for StdCmds
StdClocks	analog clock views
StdCmds	cmds of std menus
StdCoder	ASCII coder
StdDebug	minimal debugger
StdFolds	fold views
StdHeaders 	headers / footers
StdLinks	hyperlink views
StdLog	standard output
StdMenuTool	menu tool
StdStamps	date stamp views
StdTables 	table controls
StdTabViews 	tabbed folder views
StdViewSizer 	set size of a view
Std/Docu/ViewSizer.odc

StdViewSizer

DEFINITION StdViewSizer;

	IMPORT Dialog;

	VAR
		size: RECORD 
			typeName-: Dialog.String;
			w, h: REAL
		END;

	PROCEDURE InitDialog;
	PROCEDURE SetViewSize;
	PROCEDURE SizeGuard (VAR par: Dialog.Par);
	PROCEDURE UnitGuard (VAR par: Dialog.Par);

END StdViewSizer.


StdViewSizer is a command package allowing the user to resize views embedded in containers by specifying width and height as numbers. This is useful whenever dragging view borders with the mouse is not precise enough. The command package works on any singleton view.

For entry in a menu, the following line is recommended:

"View Size..."	""	"StdViewSizer.InitDialog; StdCmds.OpenToolDialog('Std/Rsrc/ViewSizer', 'View Size')"	"StdCmds.SingletonGuard"


VAR size: RECORD
Interactor for setting the view size.

typeName-: Dialog.String
Type of the current singleton view.

w: INTEGER
View width in cm or inch, depending on the value of Dialog.metricSystem.

h: INTEGER
View height in cm or inch, depending on the value of Dialog.metricSystem.


PROCEDURE InitDialog
Initialization command for size interactor.

PROCEDURE SetViewSize
Applies the interactor values in size. To set up size to the selected view, InitDialog needs to be called first.

PROCEDURE SizeGuard (VAR par: Dialog.Par)
Guard which ensures that the size interactor matches the current singleton selection. If there is no singleton selection, the guard disables.

PROCEDURE UnitGuard (VAR par: Dialog.Par)
Guard that sets par.label to "cm" or "inch" respectively, depending on the value of Dialog.metricSystem.
Std/Docu/ru/Clocks.odc

StdClocks
ENGLISH
Редакция перевода: Ф.В.Ткачев, 2010-10-24

DEFINITION StdClocks;

	IMPORT Views;

	PROCEDURE Deposit;
	PROCEDURE New (): Views.View;

END StdClocks.


Модуль реализует простые вьюшки, изображающие часы.

Типичные команды меню:
	"Insert Clock"	""	"StdClocks.Deposit; StdCmds.PasteView"	"StdCmds.PasteViewGuard"

PROCEDURE New (): Views.View
Фабричная функция для стандартных часов

PROCEDURE Deposit
Стандартная команда, помещающая новую вьюшку-часы, в глобальную очередь.
Std/Docu/ru/Debug.odc

StdDebug
ENGLISH
Редакция перевода: Ф.В.Ткачев, 2010-10-24

DEFINITION StdDebug;

END StdDebug.


Для распространяемых версий приложений Блэкбокса или компонентов используйте эту ограниченную версию отладчика. Запрещается распространять полный отладчик (DevDebug). 
<Прим. перев.: начиная с версии 1.5, BlackBox распространяется в исходниках. Ознакомьтесь с лицензией от Oberon Microsystems для получения подробной информации.> 
Эта ограниченная версия не позволяет бродить по указателям и т.п., здесь только создается пассивное сообщение о состоянии при ошибке. Текстовый документ можно сохранить, что позволяет пользователю отсылать разработчику информацию об ошибке (например, с помощью StdCoder). StdDebug устанавливается при запуске Блэкбокса, если не найден полный DevDebug.
Std/Docu/ru/ETHConv.odc

StdETHConv
ENGLISH
Редакция перевода: Ф.В.Ткачев, 2010-10-24

DEFINITION StdETHConv;

	IMPORT Files, Stores, TextModels;

	PROCEDURE ImportETHDoc (f: Files.File; OUT s: Stores.Store);
	PROCEDURE ImportOberon (f: Files.File): TextModels.Model;

END StdETHConv.


Модуль StdETHConv предоставляет конвертер для текстовых файлов ETHOberonV4.


PROCEDURE ImportETHDoc (f: Files.File; OUT s: Stores.Store)
Импортер текстовых файлов OberonV4. Может быть зарегистрирован в модуле Config с помощью следующих инструкций:

Windows:
	Converters.Register("StdETHConv.ImportETHDoc", "", "TextViews.View", ".ETH", {})
Mac OS:
	Converters.Register("StdETHConv.ImportETHDoc", "", "TextViews.View", ".Ob.", {})

PROCEDURE ImportOberon (f: Files.File): TextModels.Model
Напрямую преобразует текстовый файл OberonV4 в текст Блэкбокса без использования механизма конвертеров модуля Converters.
Std/Docu/ru/Interpreter.odc

StdInterpreter
ENGLISH
Редакция перевода: Ф.В.Ткачев, 2010-10-18.

DEFINITION StdInterpreter;

END StdInterpreter.

Модуль StdInterpreter предоставляет в Блэкбоксе дополнительный сервис: вызов последовательностей некоторых типов процедур Компонентного Паскаля, которые (последовательности) заданы в виде литерных цепочек. Допустимы инструкции следующих видов:

Proc = PROCEDURE
ProcI = PROCEDURE (x: INTEGER)
ProcII = PROCEDURE (x, y: INTEGER)
ProcS = PROCEDURE (s: ARRAY OF CHAR)
ProcSI = PROCEDURE (s: ARRAY OF CHAR; x: INTEGER)
ProcSII = PROCEDURE (s: ARRAY OF CHAR; x, y: INTEGER)
ProcSS = PROCEDURE (s, t: ARRAY OF CHAR)
ProcSSI = PROCEDURE (s, t: ARRAY OF CHAR; x: INTEGER)
ProcSSII = PROCEDURE (s, t: ARRAY OF CHAR; x, y: INTEGER)

ProcR = PROCEDURE (IN s: ARRAY OF CHAR);
ProcRI = PROCEDURE (IN s: ARRAY OF CHAR; x: INTEGER);
ProcRII = PROCEDURE (IN s: ARRAY OF CHAR; x, y: INTEGER);
ProcRS = PROCEDURE (IN s: ARRAY OF CHAR; t: ARRAY OF CHAR);
ProcRSI = PROCEDURE (IN s: ARRAY OF CHAR; t: ARRAY OF CHAR; x: INTEGER);
ProcRSII = PROCEDURE (IN s: ARRAY OF CHAR; t: ARRAY OF CHAR; x, y: INTEGER);
ProcSR = PROCEDURE (s: ARRAY OF CHAR; IN t: ARRAY OF CHAR);
ProcSRI = PROCEDURE (s: ARRAY OF CHAR; IN t: ARRAY OF CHAR; x: INTEGER);
ProcSRII = PROCEDURE (s: ARRAY OF CHAR; IN t: ARRAY OF CHAR; x, y: INTEGER);
ProcRR = PROCEDURE (IN s, t: ARRAY OF CHAR);
ProcRRI = PROCEDURE (IN s, t: ARRAY OF CHAR; x: INTEGER);
ProcRRII = PROCEDURE (IN s, t: ARRAY OF CHAR; x, y: INTEGER);

Например, вызов процедуры типа ProcII с последующим вызовом процедуры типа Proc может быть представлен такой литерной цепочкой:

	 "TurtleDraw.GotoPos(35, 587); TurtleDraw.ShowPen".

Такие последовательности инструкций в основном используются в документах, описывающих меню, и при определении элементов управления.

Модуль StdInterpreter активируется при запуске Блэкбокса, и его сервис предоставляется через посредство процедуры Dialog.Call.