hodza/BlackBox.Shkola.2014 huggingface dataset:
System/Mod/Converters.odc

MODULE Converters;
(**
	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 Meta, Files, Stores, Dialog;

	CONST
		(* hints *)
		importAll* = 0;	(* can import all file types *)
		canceled = 8;

	TYPE
		Importer* = PROCEDURE (f: Files.File; OUT s: Stores.Store);
		Exporter* = PROCEDURE (s: Stores.Store; f: Files.File);
		Converter* = POINTER TO RECORD
			next-: Converter;
			imp-, exp-: Dialog.String;
			storeType-: Stores.TypeName;
			fileType-: Files.Type;
			opts-: SET
		END;

		ImpVal = RECORD (Meta.Value) p: Importer END;
		ExpVal = RECORD (Meta.Value) p: Exporter END;

	VAR
		list-: Converter;
		doc: Converter;

	PROCEDURE GetCommand (name: Dialog.String; VAR val: Meta.Value; VAR ok: BOOLEAN);
		VAR i: Meta.Item;
	BEGIN
		Meta.LookupPath(name, i);
		IF (i.obj = Meta.procObj) OR (i.obj = Meta.varObj) & (i.typ = Meta.procTyp) THEN
			i.GetVal(val, ok)
		ELSE ok := FALSE
		END
	END GetCommand;


	PROCEDURE Register* (imp, exp: Dialog.String; storeType: Stores.TypeName; fileType: Files.Type; opts: SET);
		VAR e, f: Converter;
	BEGIN
		ASSERT((imp # "") OR (exp # ""), 20); ASSERT(fileType # "", 21);
		NEW(e); e.next := NIL;
		e.imp := imp; e.exp := exp; e.fileType := fileType; e.storeType := storeType; e.opts := opts;
		IF (storeType = "") & (doc = NIL) THEN doc := e END;
		IF list = NIL THEN list := e
		ELSE f := list;
			WHILE f.next # NIL DO f := f.next END;
			f.next := e
		END
	END Register;


	PROCEDURE Import* (loc: Files.Locator; name: Files.Name; VAR conv: Converter; OUT s: Stores.Store);
		VAR file: Files.File; val: ImpVal; ok: BOOLEAN;
	BEGIN
		ASSERT(loc # NIL, 20); ASSERT(name # "", 21);
		file := Files.dir.Old(loc, name, Files.shared); s := NIL;
		IF file # NIL THEN
			IF conv = NIL THEN
				conv := list; WHILE (conv # NIL) & (conv.fileType # file.type) DO conv := conv.next END;
				IF conv = NIL THEN
					conv := list; WHILE (conv # NIL) & ~(importAll IN conv.opts) DO conv := conv.next END
				END
			ELSE ASSERT(conv.imp # "", 22)
			END;
			IF conv # NIL THEN
				GetCommand(conv.imp, val, ok);
				IF ok THEN val.p(file, s)
				ELSE Dialog.ShowMsg("#System:ConverterFailed")
				END
			ELSE Dialog.ShowMsg("#System:NoConverterFound")
			END
		END
	END Import;

	PROCEDURE Export* (loc: Files.Locator; name: Files.Name; conv: Converter; s: Stores.Store);
		VAR res: INTEGER; file: Files.File; val: ExpVal; ok: BOOLEAN;
	BEGIN
		ASSERT(s # NIL, 20); ASSERT(~(s IS Stores.Alien), 21);
		ASSERT(loc # NIL, 22); ASSERT(name # "", 23);
		file := Files.dir.New(loc, Files.ask); (* fileLoc := loc; *)
		IF file # NIL THEN
			IF conv = NIL THEN
				conv := doc
			ELSE ASSERT(conv.exp # "", 24)
			END;
			GetCommand(conv.exp, val, ok);
			IF ok THEN
				val.p(s, file);
				IF loc.res # canceled THEN
					file.Register(name, conv.fileType, Files.ask, res); loc.res := res
				END
			ELSE Dialog.ShowMsg("#System:ConverterFailed"); loc.res := canceled
			END
		END
	END Export;

BEGIN
	list := NIL
END Converters.
System/Mod/Fonts.odc

MODULE Fonts;
(**
	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	= "
	- ...
	"

**)

	CONST
		(** universal units **)
		mm* = 36000;
		point* = 12700;	(** 1/72 inch **)

		italic* = 0; underline* = 1; strikeout* = 2;	(** style elements **)

		normal* = 400; bold* = 700;
		
		default* = "*";

	TYPE
		Typeface* = ARRAY 64 OF CHAR;

		Font* = POINTER TO ABSTRACT RECORD
			typeface-: Typeface;
			size-: INTEGER;
			style-: SET;
			weight-: INTEGER
		END;

		TypefaceInfo* = POINTER TO RECORD
			next*: TypefaceInfo;
			typeface*: Typeface
		END;

		Directory* = POINTER TO ABSTRACT RECORD
		END;
		
	VAR dir-: Directory;

	PROCEDURE (f: Font) Init* (typeface: Typeface; size: INTEGER; style: SET; weight: INTEGER), NEW;
	BEGIN
		ASSERT(f.size = 0, 20); ASSERT(size # 0, 21);
		f.typeface := typeface$; f.size := size; f.style := style; f.weight := weight
	END Init;

	PROCEDURE (f: Font) GetBounds* (OUT asc, dsc, w: INTEGER), NEW, ABSTRACT;
	PROCEDURE (f: Font) StringWidth* (IN s: ARRAY OF CHAR): INTEGER, NEW, ABSTRACT;
	PROCEDURE (f: Font) SStringWidth* (IN s: ARRAY OF SHORTCHAR): INTEGER, NEW, ABSTRACT;
	PROCEDURE (f: Font) IsAlien* (): BOOLEAN, NEW, ABSTRACT;
	
	PROCEDURE (d: Directory) This* (typeface: Typeface; size: INTEGER; style: SET; weight: INTEGER): Font, NEW, ABSTRACT;
	PROCEDURE (d: Directory) Default* (): Font, NEW, ABSTRACT;
	PROCEDURE (d: Directory) TypefaceList* (): TypefaceInfo, NEW, ABSTRACT;
	
	PROCEDURE SetDir* (d: Directory);
	BEGIN
		ASSERT(d # NIL, 20);
		dir := d
	END SetDir;

END Fonts.
System/Mod/In.odc

MODULE In;
(**
	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 TextMappers, TextControllers;

	VAR
		Done-: BOOLEAN;
		s: TextMappers.Scanner;

	PROCEDURE Open*;
		VAR c: TextControllers.Controller; beg, end: INTEGER;
	BEGIN
		c := TextControllers.Focus();
		IF c # NIL THEN
			IF c.HasSelection() THEN c.GetSelection(beg, end) ELSE beg := 0 END;
			s.ConnectTo(c.text); s.SetPos(beg); s.rider.Read; Done := TRUE
		ELSE
			s.ConnectTo(NIL); Done := FALSE
		END
	END Open;

	PROCEDURE Char* (OUT ch: CHAR);
	BEGIN
		IF Done THEN
			IF s.rider.eot THEN Done := FALSE
			ELSE ch := s.rider.char; s.rider.Read
			END
		END
	END Char;

	PROCEDURE Int* (OUT i: INTEGER);
	BEGIN
		IF Done THEN
			s.Scan;
			IF (s.type = TextMappers.int) THEN
				i := s.int
			ELSE Done := FALSE
			END
		END
	END Int;

	PROCEDURE LongInt* (OUT l: LONGINT);
	BEGIN
		IF Done THEN
			s.Scan;
			IF (s.type = TextMappers.lint) OR (s.type = TextMappers.int) THEN
				l := s.lint
			ELSE Done := FALSE
			END
		END
	END LongInt;

	PROCEDURE Real* (OUT x: REAL);
	BEGIN
		IF Done THEN
			s.Scan;
			IF s.type = TextMappers.real THEN
				x := SHORT(s.real)
			ELSIF s.type = TextMappers.int THEN
				x := s.int
			ELSE Done := FALSE
			END
		END
	END Real;

	PROCEDURE Name* (OUT name: ARRAY OF CHAR);
	BEGIN
		IF Done THEN
			s.Scan;
			TextMappers.ScanQualIdent(s, name, Done)
		END
	END Name;

	PROCEDURE String* (OUT str: ARRAY OF CHAR);
	BEGIN
		IF Done THEN
			s.Scan;
			IF s.type = TextMappers.string THEN
				str := s.string$
			ELSE Done := FALSE
			END
		END
	END String;

END In.
System/Mod/Init.odc

MODULE Init;
(**
	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 Kernel, Dialog, Files, Converters, HostMenus;

	PROCEDURE Splash;	(* Splash screen for educational and evaluation releases *)
		VAR f: Files.File; res: INTEGER;
	BEGIN
		IF Files.dir # NIL THEN
			f := Files.dir.Old(Files.dir.This('System/Rsrc'), 'Open.odc', Files.shared);
			IF f # NIL THEN
				Dialog.Call("StdCmds.OpenToolDialog('System/Rsrc/Open.odc', 'BlackBox Component Builder')", "", res)
			END
		END
	END Splash;

	PROCEDURE Init;
		VAR res: INTEGER; m: Kernel.Module;
	BEGIN
		HostMenus.OpenApp;
		m := Kernel.ThisMod("DevDebug");
		IF m = NIL THEN Kernel.LoadMod("StdDebug") END;
		Converters.Register("Documents.ImportDocument", "Documents.ExportDocument", "", "odc", {});
		Dialog.Call("StdMenuTool.UpdateAllMenus", "", res);
		Kernel.LoadMod("OleServer");
		Dialog.Call("Config.Setup", "", res);
		Splash;
		HostMenus.Run
	END Init;

BEGIN
	Init
END Init.
System/Mod/National.odc

(* This module is obsolete and is kept for compatibility. 
Use i21sysCyrillic, i21sysLatin1, i21sysCharacters etc. instead. 
-------
info21
2012-05-08
*)

MODULE National;
(* И.Н.Горячев	19.05.2005 *)
(* Примечание: модуль рассчитан исключительно на русский алфавит и кодировку Win-1251 *)
(* <StdCmds.OpenBrowser('Docu/RusInfo.odc','Замечания к русификации 2005-05-19')>Замечаниякрусификации<>. 
Еще <StdCmds.OpenBrowser('Docu/RusInfo2.odc','Замечания к русификации 2005-06-25')>замечания<>. *)

(* Изменения, сделанные ФТ:
 Замена строки в логическом выражении в IsLetter.
 Переименованы глобальные массивы-таблицы.
 Переименованы процедуры:
		IsNameChar --> IsIdentChar
		IsCapIdentChar --> IsCap
		IsNameFirstChar --> IsFirstIdentChar
		FromWin1251 --> ConvertToUnicode
		ToWin1251 --> ConvertFromUnicode
*)
	CONST
		cyrillicBase = 0400X;

	VAR
		toUpper, toLower: ARRAY 256 OF CHAR;
		fromWin1251, toWin1251: ARRAY 256 OF CHAR;

(*
		fromCP866,  toCP866: ARRAY 256 OF CHAR;
*)

	PROCEDURE IsLetter (ch: CHAR): BOOLEAN;
	BEGIN
		RETURN ( (CAP(ch) >= "A") & (CAP(ch) <= "Z") ) OR
					( (ch >= "А") & (ch <= "я") ) OR
(*
					(ch >= "А") OR
*)
					(ch = "Ё") OR (ch = "ё")
	END IsLetter;

	PROCEDURE IsFirstIdentChar* (ch: CHAR): BOOLEAN;
	BEGIN
		RETURN  IsLetter( ch ) OR (ch = "_")
	END IsFirstIdentChar;

	PROCEDURE IsIdentChar* (ch: CHAR): BOOLEAN;
	BEGIN
		RETURN  IsLetter( ch ) OR (ch = "_") OR ( (ch >= "0") & (ch <= "9") )
	END IsIdentChar;

	PROCEDURE IsCap*(ch: CHAR): BOOLEAN;
	BEGIN
		RETURN ( (ch >= "A") & (ch <= "Z") ) OR ( (ch >= "А") & (ch <= "Я") ) OR (ch = "Ё");
	END IsCap;

	PROCEDURE Cap* (ch: CHAR): CHAR;
	BEGIN
		IF ORD(ch) < 256 THEN RETURN toUpper[ORD(ch)] ELSE RETURN ch END
	END Cap;

	PROCEDURE Low* (ch: CHAR): CHAR;
	BEGIN
		IF ORD(ch) < 256 THEN RETURN toLower[ORD(ch)] ELSE RETURN ch END
	END Low;

	PROCEDURE IsCyrillic (ch : CHAR): BOOLEAN;
	BEGIN
		RETURN (ch >= 0400X) & (ch <= 04FFX);
	END IsCyrillic;

	PROCEDURE ConvertToUnicode*(ch: CHAR): CHAR;
	BEGIN
		RETURN fromWin1251[ORD(ch)];
	END ConvertToUnicode;

	PROCEDURE ConvertFromUnicode*(ch: CHAR): CHAR;
	BEGIN
		IF ch < 07FX THEN 
			RETURN ch
		ELSIF IsCyrillic(ch) THEN 
			RETURN toWin1251[ ORD( ch ) - ORD( cyrillicBase )]
		ELSE 
			RETURN '?'
		END;
	END ConvertFromUnicode;


	PROCEDURE Init;
		VAR  i, j: INTEGER;
	BEGIN
		FOR i := 0 TO 255 DO toUpper[i] :=  CHR(i); toLower[i] := CHR(i) END;
		FOR i := ORD("A") TO ORD("Z") DO toLower[i] := CHR(i + 32); toUpper[i + 32] := CHR(i) END;
		FOR i := ORD("А") TO ORD("Я") DO toLower[i] := CHR(i + 32); toUpper[i + 32] := CHR(i) END;
		toLower[ORD("Ё")] := "ё"; toUpper[ORD("ё")] := "Ё";

		FOR i := 0 TO 127 DO
			fromWin1251[i] := CHR(i)
		END;
		FOR i := 128 TO 255 DO
			fromWin1251[i] := '?'
		END;
		FOR i := 0C0H TO 0FFH DO fromWin1251[i] := CHR(i - 0C0H + 0410H) END;
		fromWin1251[0A8H] := 0401X;
		fromWin1251[0B8H] := 0451X;

		FOR i := 0 TO 255 DO
			toWin1251[i] := '?';
		END;
		FOR i := 0 TO 255 DO 
			IF IsCyrillic(fromWin1251[i]) THEN
				j := ORD(fromWin1251[i]) - ORD(cyrillicBase);
				toWin1251[j] := CHR(i);
			END;
		END;
	END Init;

BEGIN
	Init;
END National.
System/Mod/Out.odc

MODULE Out;
(**
	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, TextModels, TextMappers, TextViews, StdLog;

	CONST digitspace = 08FX;

	VAR
		buf: TextModels.Model;
		out: TextMappers.Formatter;

	PROCEDURE Open*;
	BEGIN
		StdLog.Open
	END Open;

	PROCEDURE Char* (ch: CHAR);
	BEGIN
		out.WriteChar(ch);
		StdLog.text.Append(buf); Views.RestoreDomain(StdLog.text.Domain())
	END Char;

	PROCEDURE Ln*;
	BEGIN
		out.WriteLn;
		StdLog.text.Append(buf); Views.RestoreDomain(StdLog.text.Domain());
		TextViews.ShowRange(StdLog.text, StdLog.text.Length(), StdLog.text.Length(), TextViews.any)
	END Ln;

	PROCEDURE String* (str: ARRAY OF CHAR);
	BEGIN
		out.WriteString(str);
		StdLog.text.Append(buf); Views.RestoreDomain(StdLog.text.Domain())
	END String;

	PROCEDURE Int* (i: LONGINT; n: INTEGER);
	BEGIN
		out.WriteIntForm(i, 10, n, digitspace, FALSE);
		StdLog.text.Append(buf); Views.RestoreDomain(StdLog.text.Domain())
	END Int;

	PROCEDURE Real* (x: REAL; n: INTEGER);
	BEGIN
		out.WriteRealForm(x, 16, n, 0, digitspace);
		StdLog.text.Append(buf); Views.RestoreDomain(StdLog.text.Domain())
	END Real;

BEGIN
	buf := TextModels.CloneOf(StdLog.buf); out.ConnectTo(buf)
END Out.
System/Mod/Printers.odc

MODULE Printers;
(**
	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 Ports;

	TYPE
		Printer* = POINTER TO ABSTRACT RECORD
			l, t, r, b: INTEGER;	(** paper rect relative to port coords **)
			res*: INTEGER;
			port: Ports.Port
		END;

		Directory* = POINTER TO ABSTRACT RECORD END;

	VAR dir-, stdDir-: Directory;


	PROCEDURE (p: Printer) OpenJob* (VAR copies: INTEGER; name: ARRAY OF CHAR), NEW, ABSTRACT;
	PROCEDURE (p: Printer) CloseJob* (), NEW, ABSTRACT;
	PROCEDURE (p: Printer) OpenPage* (), NEW, ABSTRACT;
	PROCEDURE (p: Printer) ClosePage* (), NEW, ABSTRACT;

	PROCEDURE (p: Printer) InitPort* (port: Ports.Port), NEW;
	BEGIN
		ASSERT((p.port = NIL) OR (p.port = port), 20);
		p.port := port
	END InitPort;

	PROCEDURE (p: Printer) ThisPort* (): Ports.Port, NEW;
	BEGIN
		RETURN p.port
	END ThisPort;

	PROCEDURE (p: Printer) GetRect* (OUT l, t, r, b: INTEGER), NEW;
	BEGIN
		l := p.l; t := p.t; r:= p.r; b := p.b
	END GetRect;

	PROCEDURE (p: Printer) InitPrinter* (l, t, r, b: INTEGER), NEW;
	BEGIN
		ASSERT(l <= r, 20); ASSERT(t <= b, 21);
		p.l := l; p.t := t; p.r := r; p.b := b;
		p.res := 0
	END InitPrinter;


	PROCEDURE (d: Directory) Default* (): Printer, NEW, ABSTRACT;
	PROCEDURE (d: Directory) Current* (): Printer, NEW, ABSTRACT;
	PROCEDURE (d: Directory) Available* (): BOOLEAN, NEW, ABSTRACT;


	PROCEDURE SetDir* (d: Directory);
	BEGIN
		ASSERT(d # NIL, 20);
		dir := d;
		IF stdDir = NIL THEN stdDir := d END
	END SetDir;

END Printers.
System/Mod/Sequencers.odc

MODULE Sequencers;
(**
	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 Stores;

	CONST
		clean* = 0; 
		notUndoable* = 1; 
		invisible* = 2;

	TYPE
		Message* = ABSTRACT RECORD END;
		
		Notifier* = POINTER TO ABSTRACT RECORD
			next: Notifier
		END;

		Sequencer* = POINTER TO ABSTRACT RECORD
			notifiers: Notifier
		END;

		CloseMsg* = RECORD (Message)
			sticky*: BOOLEAN	(** OUT, preset to FALSE **)
		END;

		RemoveMsg* = RECORD (Message) END;

		Directory* = POINTER TO ABSTRACT RECORD END;

	VAR dir*: Directory;

	(** Directory **)
	PROCEDURE (dir: Directory) New* (): Sequencer, NEW, ABSTRACT;

	PROCEDURE SetDir* (d: Directory);
	BEGIN
		ASSERT(d # NIL, 20); dir := d
	END SetDir;


	(** Notifier **)

	PROCEDURE (f: Notifier) Notify* (VAR msg: Message), NEW, EMPTY;


	(** Sequencer **)

	PROCEDURE (s: Sequencer) Dirty* (): BOOLEAN, NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) SetDirty* (dirty: BOOLEAN), NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) BeginScript* (IN name: Stores.OpName;
																VAR script: Stores.Operation), NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) Do* (st: Stores.Store; IN name: Stores.OpName;
														op: Stores.Operation), NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) LastOp* (st: Stores.Store): Stores.Operation, NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) Bunch* (st: Stores.Store), NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) EndScript* (script: Stores.Operation), NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) StopBunching* (), NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) BeginModification* (type: INTEGER; st: Stores.Store), NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) EndModification* (type: INTEGER; st: Stores.Store), NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) CanUndo* (): BOOLEAN, NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) CanRedo* (): BOOLEAN, NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) GetUndoName* (VAR name: Stores.OpName), NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) GetRedoName* (VAR name: Stores.OpName), NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) Undo* (), NEW, ABSTRACT;
	PROCEDURE (s: Sequencer) Redo* (), NEW, ABSTRACT;

	PROCEDURE (s: Sequencer) Handle* (VAR msg: ANYREC), NEW, EMPTY;

	PROCEDURE (s: Sequencer) Notify* (VAR msg: Message), NEW;
		VAR n: Notifier;
	BEGIN
		n := s.notifiers;
		WHILE n # NIL DO
			n.Notify(msg);
			n := n.next
		END
	END Notify;

	PROCEDURE (s: Sequencer) InstallNotifier* (n: Notifier), NEW;
	BEGIN
		n.next := s.notifiers; s.notifiers := n
	END InstallNotifier;

END Sequencers.
System/Mod/Startup.odc

MODULE  Startup;  (* info21 2010-04-07 *)
	IMPORT  Dialog, Files, i21sysFiles;

	PROCEDURE Setup*;
		VAR  loc: Files.Locator;  d: CHAR;  name: ARRAY 200 OF CHAR;
	BEGIN
		(* в заголовке окна Блэкбокса будет имя рабочей папки: *)
		loc := Files.dir.This('');
		i21sysFiles.GetDiskLetter( loc, d );
		i21sysFiles.GetFolderName( loc, name );
		name := ' :' + name$;
		name[0]:= d;
		name[ 31 ] := 0X; (* на всякий случай *)
		Dialog.appName := name$;
	END Setup;
	
END  Startup.
System/Rsrc/About.odc


BlackBoxBlackBox Component Builder 1.5
Built on 12.12.2005
 1994-2005 Oberon microsystems, Inc.
 Oberon microsystems, Inc.
Technoparkstrasse 1
CH-8005 Zьrich, Switzerland
Net info@oberon.ch
Web http://www.oberon.ch
Fax (+41 44) 445 17 52


Данная версия русифицирована, а также содержит  некоторые исправления. Использован пакет Delta, собранный в ООО ОЦПИ "Метасистемы" (http://oberoncore.ru).
Сборка 2012.09.30 для проекта Информатика-21 (http://www.inr.ac.ru/~info21/)
Text/Docu/ru/Sys-Map.odc

Карта подсистемы Text
ENGLISH

Руководство пользователя
Руководство разработчика

TextCmds	пакет текстовых команд
TextControllers	текстовые диспетчеры
TextViews	текстовые отображения
TextRulers	текстовые линейки (формат абзаца)
TextSetters	наборщики текста (разбиение строк)
TextMappers	сканнер/форматтер
TextModels	текстовые модели
Text/Rsrc/Strings.odc

STRINGS
OK, Cancel, Close	>> System/Rsrc/Strings

(Text)Cmds	(Text)Cmds
F&ind:	Найти:
F&ind	F&ind
R&epl:	Замена:
R&eplace	R&eplace
Find &First	Найти первый
Find &Next	Найти следующий
&Replace	Заменить
Repl. && Fin&d	Заменить и найти
Replace &All	Заменить всюду
Word &Begins With	Начало слова
Word &Ends With	Конец слова
Ignore &Case	Игнорировать заглавные
&Reverse Direction	Искать назад

(Text)Cmds1	(Text)Cmds1
Page breaks	Разбиение на страницы
&Avoid inside	Избегать внутри
&Keep together with next	Вместе со следующим

AlienAttributes	alien attributes
CntrlInstallFailed	text controller installation failed
leftAdjust	left adjust
rightAdjust	right adjust
noBreakInside	no break inside
pageBreak	page break
parJoin	par join
rightFixed	fixed right border
IllegalTabArray	illegal tab array
OpenSizeDialog	StdCmds.InitSizeDialog; StdCmds.OpenToolDialog('Std/Rsrc/Cmds', '#System:OtherSize')
OpenRulerDialog	TextCmds.InitRulerDialog; StdCmds.OpenToolDialog('Text/Rsrc/Cmds1', '#Text:RulerSettings')
RulerSettings	Ruler Settings
Position	position
SearchForAlienViews	search for alien views
AlienDefaultRuler	alien default ruler
AlienViewType	alien view type
NoAlienViewsFound	no alien views found
NoRulerSelected	no ruler selected
IllegalRulerOptions	illegal ruler options
SelectionDoesNotMatch	selection does not match
NoTargetFound	no target found
NoSelectionFound	no selection found
PatternNotSpecified	pattern not specified
PatternNotFound	pattern not found
Shifting	Shifting
FindAndReplace	Найти и заменить
Locate	Locate
ShowMarks	Показать разметку
HideMarks	Спрятать разметку
ReplaceAllInSelection	Зам. все в выд.
ReplaceAll	Заменить всюду
FocusShouldBeText	в фокусе должен быть текст
AttributeChange	Attribute Change
Appending	Appending
RulerChange	Ruler Change
InsertParagraph	Paragraph Insertion
InsertRuler	Ruler Insertion
TextViews.StdView	standard Text view
TextModels.StdModel	standard Text model
TextControllers.StdCtrl	standard Text controller

Rulers.Prop	TextCmds.InitRulerDialog; StdCmds.OpenToolDialog('Text/Rsrc/Cmds1', '#Text:RulerSettings')
Win/Docu/Api.odc

Windows Programming Interfaces

The Win subsystem contains the interface modules for the various Windows programming interfaces. The following table shows the available modules and a short desription of their contents:

module	contents

WinApi	basic data types, error codes, basic Win32 functionality
WinDlg	common dialog box library
WinCtl	common controls
WinOle	basic COM and OLE interfaces
WinOleDlg	OLE dialogs (OleUI...)
WinOleAut	OLE automation interfaces	
WinOleCtl	OLE controls interfaces
WinRpc	remote procedure call functions
WinNet	networking and socket functions
WinMM	multimedia services
WinCmc	Messaging Application Programming Interface (MAPI)
WinSql	Database services (ODBC)


Naming Conventions

Names are generally the same as in the corresponding C header and help files. An exception applies to pointers which are always named after the structure they point to with a "Ptr" prefix.
Example:

RECT = RECORD [untagged] left, top, right, bottom: INTEGER END;
PtrRECT = POINTER TO RECT;


Parameters

Parameters of pointer type are represented as variable parameters (VAR/IN/OUT) whenever possible.


Pointers to Pointers

Pointers to pointers or basic types cannot be declared directly in Component Pascal. A type of the form
p: POINTER TO ARRAY [untagged] OF BaseType;
is used instead. You can use the form p[0] to dereference such a pointer.
Win/Docu/Sys-Map.odc

Map to the Win Subsystem

WinApi	Win32 API

WinCmc	MAPI interface
WinDlg	common dialog boxes
WinCtl	common controls
WinOle	COM and OLE
WinOleDlg	OLE dialogs
WinOleAut	OLE automation
WinOleCtl	OLE controls
WinRpc	remote procedure calls
WinNet	network and sockets
WinMM	multimedia
WinSql	access to ODBC databases
Win/Docu/ru/Api.odc

Программные интерфейсы Windows

Подсистема Win содержит интерфейсные модули для различных программных интерфейсов Windows. Следующая таблица содержит список доступных модулей и краткое описание их содержания:

модуль	содержание

WinApi	основные типы данных, коды ошибок, основной набор функций Win32
WinDlg	библиотека базовых диалогов
WinCtl	базовые элементы управления
WinOle	основные интерфейсы COM и OLE
WinOleDlg	диалоги OLE (OleUI...)
WinOleAut	интерфейсы автоматизации OLE
WinOleCtl	интерфейсы элементов управления OLE
WinRpc	функции вызова удаленных процедур
WinNet	функции для работы с сетью и сокетами
WinMM	службы мультимедиа
WinCmc	Messaging Application Programming Interface (MAPI)
WinSql	службы баз данных (ODBC)


Соглашения по именованию

Практически все имена такие же как в соответствующих заголовочных файла C и справочных файлах. Исключением являются типы-указатели, которые всегда определяются после структур, на которые они указывают, и именуюся с добавлением приставки "Ptr" к имени структуры.
Пример:

RECT = RECORD [untagged] left, top, right, bottom: INTEGER END;
PtrRECT = POINTER TO RECT;


Параметры

Параметры указательных типов заменяются на параметры-переменные (VAR/IN/OUT) везде, где это возможно.


Указатели на указатели

Указатели на указатели или указатели базовые типы не могут быть напрямую объявлены в Компонентном Паскале. Вместо таких указателей используются типы вида "p: POINTER TO ARRAY [untagged] OF BaseType". Чтобы разыменовать такой указатель достаточно написать p[0].
Win/Docu/ru/Sys-Map.odc

Карта подсистемы Win
ENGLISH

WinApi	Win32 API

WinCmc	интерфейс MAPI
WinDlg	базовые диалоги
WinCtl	базовые элементы управления
WinOle	COM и OLE
WinOleDlg	диалоги OLE
WinOleAut	OLE автоматизация
WinOleCtl	элементы управления OLE
WinRpc	удаленный вызов процедур
WinNet	сеть и сокеты
WinMM	мультимедиа
WinSql	доступ к базам данных ODBC