hodza/BlackBox.Shkola.2014 huggingface dataset:
Dev/Docu/ru/LinkChk.odc

DevLinkChk

DEFINITION DevLinkChk;

	IMPORT Dialog;

	CONST oneSubsystem = 0; globalSubsystem = 1; allSubsystems = 2;

	VAR
		par: RECORD 
			scope: INTEGER;
			subsystem: ARRAY 9 OF CHAR
		END;

	PROCEDURE Check (subsystem: ARRAY OF CHAR; scope: INTEGER; check: BOOLEAN);
	PROCEDURE CheckLinks;
	PROCEDURE ListLinks;
	PROCEDURE Open (path, file: ARRAY OF CHAR; pos: INTEGER);
	PROCEDURE SubsystemGuard (VAR p: Dialog.Par);
	PROCEDURE CommandGuard (VAR p: Dialog.Par);
	PROCEDURE SubsystemNotifier (op, from, to: INTEGER);

END DevLinkChk.


Этот инструментальный модуль позволяет проверять, указывает ли гиперссылка (-> StdLinks) на существующий документ BlackBox. Это позволяет найти большинство "висячих" ссылок, то есть, ссылок на несуществующие файлы.

Команда меню:
	"Check Links..."	""	"StdCmds.OpenAuxDialog('Dev/Rsrc/LinkChk', 'Check Links')"	""


CONST oneSubsystem , globalSubsystem, allSubsystems
Проверка может вестись в одной конкретной подсистеме (точнее, в файлах, находящихся в директориях Docu и Mod); в глобальных директориях Docu и Mod, или в этих директориях и директориях Docu и Mod всех подсистем.


VAR par: RECORD 
Интерактор для CheckLinks и ListLinks. Определяется, с какими документами будут работать эти команды.

scope: INTEGER	scope IN {oneSubsystem, globalSubsyste, allSubsystems}
Область, в которой ведется проверка, то есть, директория или директории, в поддиректориях Docu и Mod которых будут просматриваться файлы со ссылками.

subsystem: ARRAY 9 OF CHAR	valid iff scope = oneSubsystem
Имя подсистемы. Допустимо, только если scope = oneSubsystem.

PROCEDURE Check (subsystem: ARRAY OF CHAR; scope: INTEGER; check: BOOLEAN)
Для внутреннего использования.

PROCEDURE CheckLinks
Охрана: CommandGuard
Проверяет все ссылки в области, заданной интерактором par. Проверка означает, что проверяется существование целевых файлов для следующих команд:
	StdCmds.OpenMask
	StdCmds.OpenBrowser
	StdCmds.OpenDoc
	StdCmds.OpenAuxDialog
"Висячие" ссылки будут перечислены в тексте отчета. Для каждой висячей ссылки отчет содержит одну ссылку, которая напрямую открывает виновный текст и прокручивает его к проблемной ссылке (используя команду Open).

PROCEDURE ListLinks
Охрана: CommandGuard
Перечисляет все ссылки в области, заданной интерактором par. Ссылки перечисляются в тексте отчета. Для каждой ссылки отчет влючает в себя ссылку, которая открывает содержащий ее текст и прокручивает его к этой ссылке (используя команду Open).

PROCEDURE Open (path, file: ARRAY OF CHAR; pos: INTEGER)
Для внутреннего использования. Процедура открывает файл в расположении path с именем file; прокручивает его до позиции pos; и выделяет промежуток [pos...pos+1].

PROCEDURE SubsystemGuard (VAR p: Dialog.Par)
PROCEDURE CommandGuard (VAR p: Dialog.Par)
PROCEDURE SubsystemNotifier (op, from, to: INTEGER)
Различные стражи и уведомители, используемые для диалога Dev/Rsrc/LinkChk.
Dev/Docu/ru/Markers.odc

DevMarkers

DEFINITION DevMarkers;

	PROCEDURE NextError;
	PROCEDURE ToggleCurrent;
	PROCEDURE UnmarkErrors;
	... плюс несколько служебных элементов ...

END DevMarkers.


Метки ошибок показывают места ошибок компиляции в исходном тексте.
Этом модуль содержит несколько других элементом, предназначенных для внутреннего использования.

Возможное меню:

MENU
	"Unmar&k Errors"	""	"DevMarkers.UnmarkErrors"	"TextCmds.FocusGuard"
	"Next E&rror"	""	"DevMarkers.NextError"	"TextCmds.FocusGuard"
	"To&ggle Error Mark"	""	"DevMarkers.ToggleCurrent"	"TextCmds.FocusGuard"
END


PROCEDURE NextError
Охрана: TextCmds.FocusGuard
Помещает каретку после следующей метки ошибки. Если их нет, текст прокручивается на начало.

PROCEDURE ToggleCurrent
Охрана: TextCmds.FocusGuard
Переключает состояние метки перед кареткой.

PROCEDURE UnmarkErrors
Охрана: TextCmds.FocusGuard
Удаляет все метки ошибок.
Dev/Docu/ru/MsgSpy.odc

DevMsgSpy

Инструмент, который позволяет отслеживать все сообщения, которые посылаются отображению.


О протоколе сообщений
Message Spy - это инструмент, который протоколирует сообщения, послаемые отображению через один из методов HandleCtrlMsg, HandleModelMsg, HandlePropMsg, или HandleViewMsg. Протокол сообщений показывает тип всех сообщений и, по запросу, полностью записи сообщений.
Этот инструмент может помочь, если ваше отображение ведет себя не так, как вы ожидаете. С его помощью вы можете изучить, какие сообщения среда посылает вашему отображению и следовательно, на какие сообщения вам следует отвечать.

Как отслеживать отображения
Чтобы открыть Message Spy, выберите Message Spy... из меню Info. Откроется диалоговое окно, подобное тому, которое изображено на Рисунке 1. Если вы хотите наблюдать за отображением, выделите его монолитом и нажмите кнопку Add View. Если вы хотите удалить снять наблюдение с отображения, выделите его как монолит и нажмите ту же кнопку, на которой теперь будет написано Remove View.




Рисунок 1: Инструментальное окно Message Spy

Инструментальное окно разделено на две части. В верхней части показываются все распознанные сообщения. Этот список растет со временем. Всякий раз, когда шпион встречает сообщение нового типа, прошедшее через одно из инспектируемых отображений, этот тип добавляется в список распознанных типов. Поскольку вы можете потерять обзор над типами сообщений, MarkNewMessagesinList выделяет все заново добавленные типы сообщений. Таким образом вы легко узнаете о сообщениях, вызванных конкретным действием. Список типов сообщений может быть очищен кнопкой ClearList.

Если выбрана настройка ShowMessagesInLog, то все сообщения, посылаемые всем инспектируемым отображениям, типы которых выделены на панели выбора типов, показываются нижней части диалогового окна сообщений. Для каждого сообщения имя типа сопровождается синим ромбиком. При щелчке на ромбике все переменные записи сообщения показываются в отдельном окне. Протокол является нормальным текстом, который можно прокручивать и редактировать.

Дополнительная информация
Так как записи сообщений являются статическими переменными (размещаются в стеке), они копируются при вызове обработчика сообщений. Последствиями этого является то, что можно отследить только содержимое сообщения при передаче, но не ответ на сообщение от конкретного отображения.

Заметим, что журнал сообщений показывает сообщения любого типа, посылаемые к перехватываемому отображению, он также включает сообщения типов, которые не экспортированы.

Чтобы перехватить сообщение, шпион сообщений добаляет обертку вокруг исходного отображения. Это обертка показывает сообщения и затем передает их далее к обернутому отображению. При замене отображение его оберткой тип отображения изменяется, и следовательно, некоторые инструменты, которые зависят от типа отображения, не смогут работать с ним.

Команда меню:

	"Message Spy..."	""	"StdCmds.OpenToolDialog('Dev/Rsrc/MsgSpy', 'Message Spy')"	""
Dev/Docu/ru/RBrowser.odc

DevRBrowser

DEFINITION DevRBrowser;

	PROCEDURE ShowRepository;
	PROCEDURE Update;
	PROCEDURE OpenFile (path, name: ARRAY OF CHAR);
	PROCEDURE ShowFiles (path: ARRAY OF CHAR);

END DevRBrowser.


Этот инструментальный модуль позволяет перечислить все подсистемы в виде текстовых складок (-> StdFolds). Складка содержит ссылки на символьные, кодовые, исходные и документирующие файлы. Это облегчает обзор элементов больших приложений BlackBox, или самого BlackBox.
Для ресурсов подсистем создаются ссылки Rsrc. При щелчке на этой ссылке открывается список всех документов в поддиректории Rsrc.
For the documentation files, those which contain one or several dashes ("-") in their names are not treated as module documentations, but rather as auxiliary documentation files which are listed at the beginning. In particular, files with name Sys-Map, User-Man, and Dev-Man are extracted this way. They are the standard names for a map document which contains hyperlinks to the relevant files of the subsystems; the user manual for the subsystem (user in this context means a programmer); and the programmer's reference.
Файлы документации, имена которых содержат одно или несколько тире ("-"), трактуются не как документация модулей, но как вспомогательные файлы документации, и перечисляются вначале. В частности, файлы с именами Sys-Map, User-Man и Dev-Man извлекаются таким образом. Это стандартные имена для документа - карты, который содержит гиперссылки на основные файлы подсистем; руководство пользователя к подсистеме (пользователь в данном контексте понимается как программист); и описание программного интерфейса.

Команда меню:
	"Repository"	""	"DevRBrowser.ShowRepository"	""


PROCEDURE ShowRepository
Создает отчет со списком всех подсистем.

PROCEDURE Update
Обновляет отчет (использется как команда в ссылке update в начале генерируемого отчета).

PROCEDURE OpenFile (path, name: ARRAY OF CHAR)
Для внутреннего использования. Открывает файл в расположении path с именем name.

PROCEDURE ShowFiles (path: ARRAY OF CHAR)
Для внутреннего пользования. Перечисляет все документы ресурсоы в расположении path.
Dev/Docu/ru/References.odc

DevReferences
Редакция перевода: Ф.В.Ткачев, 2009-10-17

DEFINITION DevReferences;
	IMPORT TextMappers, Files;
	PROCEDURE  ShowDocu;
	PROCEDURE  ShowDocuLang (lang: ARRAY OF CHAR);
	PROCEDURE  ShowSource;
	PROCEDURE  ShowText (module, ident: TextMappers.String; category: Files.Name);
END DevReferences.

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

Обычное меню:
MENU
	"&Source"	""	"DevReferences.ShowSource"	"TextCmds.SelectionGuard"
	"&Documentation"	""	"DevReferences.ShowDocu"	"TextCmds.SelectionGuard"
	"Документация"	""	"DevReferences.ShowDocuLang('ru')"	"TextCmds.SelectionGuard"
END

PROCEDURE ShowDocu
Охрана: TextCmds.SelectionGuard
Ищет и показывает документацию для модуля, имя которого выделено. Если выделен полный идентификатор, то есть "module.ident", то в документации ищется пункт для "ident". "ident" должен быть записан там жирным шрифтом, меньшим, чем 14 пунктов. Документ должен быть расположен в папке Docu подсистемы, частью которой является модуль.

PROCEDURE ShowDocuLang (lang: ARRAY OF CHAR)
Guard: TextCmds.SelectionGuard
То же, что и ShowDocu, но поиск производится в подпапке lang папки Docu (например, в папке с именем lang='ru', т.е. в папке 'Docu/ru' хранятся переводы документации на русский язык).

PROCEDURE ShowSource
Охрана: TextCmds.SelectionGuard
Ищет и показывает исходник модуля, имя которого выделено. Если выделен полный идентификатор, то есть module.ident, то ищется соответствующий пункт документации. Он должен быть записан жирным шрифтом, меньшим, чем 14 пунктов. Документ должен быть расположен в папке Mod подсистемы модуля.

PROCEDURE  ShowText (module, ident: TextMappers.String; category: Files.Name)
Для внутреннего использования.
Dev/Docu/ru/Sys-Map.odc

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

Руководствопользователя

DevAlienTool 	показ информации о нелегалах
DevAnalyzer	анализатор исходного кода
DevBrowser	просмотр символьных файлов
DevCmds	различные команды
DevComInterfaceGen 	создание интерфейсов
	Автоматизации
DevCommanders	интерпретаторы команд
DevCompiler	компилятор с 
	Компонентного Паскаля
DevDebug	символьный отладчик
DevDependencies 	показ графа модулей
DevHeapSpy	визуальный показ кучи
DevInspector	инспектор свойств элементов
	 управления
DevLinkChk	проверка гиперссылок
DevLinker	компоновщик
DevMarkers	метки ошибок
DevMsgSpy	журнал сообщений отображения
DevPacker 	упаковка файлов в EXE
DevProfiler	статистический профилировщик
DevRBrowser	просмотр хранилища компонентов
DevReferences	символьный поиск
	исходных текстов/документации
DevSearch	глобальный инструмент поиска
DevSubTool	генератор шаблонов
Dev/Spec/StoresFileFormat.odc

Stores File Format

Stream = { Byte | Structure }.

Structure = Nil | Link | Object.

Nil = nil Comment Next.

Link = (link | newlink) ObjectId Comment Next.
	(* newlink and link have same meaning in new format, but newlink causes assertion trap in old *)
	(* if Next = 0 & Comment = 0 indecates end of link chain, whereas Next = 0 & Comment = 1 indicates
		next store at Pos(Next) + 4 *)


Object = (elem | store) TypePath Comment Next Down Length Stream.
	(* elem = Models.Model-derived type; for backward comp only *)
 
Comment = 00000000. (* extension hook *)

ObjectId = 32bits. (* index into object dictionary *)

Next = 32bits. (* offset to next object on same nesting level; 00000000 if none *)

Down = 32bits. (* offset to first object on next lower nesting level; 00000000 if none *)

Length = 32bits. (* length of this object (including all subobjects) *)


 
TypePath = OldType | NewType. (* sequence of type names from most precise to root base type *)

OldType = oldType TypeId.

NewType = { NewExtension } (NewBase | OldType).

NewExtension = newExt TypeName.

NewBase = newBase TypeName.

TypeName = String.

TypeId = 32bits. (* index into type dictionary *)
 

 
nil = 80. (* nil store *)

link = 81. (* link to another elem in same file *)

store = 82. (* general store *)

elem = 83. (* elem store *)

newlink = 84. (* link to another non-elem store in same file *)
Dev/Spec/SymFile.odc

Oberon/F Symbol File Format	bh    

SymFile	=	tag4 processor version Module { Object } .

Module	=	0 | negmno | [ LIB name ] MNAME name .

Object	=	[ SYS value ] [ LIB name ] [ ENTRY name ]
			( Constant name
			| TYPE Struct
			| ALIAS Struct name
			| (RVAR | VAR) Struct name
			| (XPRO | IPRO) Signature name
			| CPRO Signature len { code1 } name
			).

Constant	=	  CHAR8 value1
		| CHAR16 value2
		| BOOL ( FALSE | TRUE )
		| ( INT8 | INT16 | INT32 | INT64 | SET ) value
		| REAL32 value4
		| REAL64 value8
		| STRING8 name
		| STRING16 length utf8string
		| NIL .

Struct	=	  negref
		| STRUCT Module name [ SYS value ] [ LIB name ] [ ENTRY name ] [ STRING name ]
			( PTR Struct
			| ARR Struct nofElem
			| DARR Struct
			| ( REC | ABSREC | EXTREC | FINREC ) Struct size align nofMeth { Field } { Method } END
			| PRO Signature
			| ALIAS Struct
			) .

Field	=	( FLD | RFLD ) Struct name offset | ( HDPTR | SYS value | HDPRO ) offset .

Method	=	[ IMPO ] [ ENTRY name ]
			( TPRO | ABSPRO | EMPPRO | EXTPRO | FINPRO ) Signature name methno | HDTPRO methno .

Signature	=	Struct { [ SYS value ] ( VALPAR | VARPAR | INPAR | OUTPAR ) Struct offset name } END .


MNAME	=	16		BYTE	=	1	byte	=	1
END 	=	18		BOOL	=	2	boolean	=	2
TYPE	=	19		CHAR8	=	3	char8	=	3
ALIAS	=	20		INT8	=	4	int8	=	4
VAR	=	21		INT16	=	5	int16	=	5
RVAR	=	22		INT32	=	6	int32	=	6
VALPAR	=	23		REAL32	=	7	real32	=	7
VARPAR	=	24		REAL64	=	8	real64	=	8
FLD	=	25		SET	=	9	set	=	9
RFLD	=	26		STRING8	=	10	
HDPTR	=	27		NIL	=	11	
HDPRO	=	28					notyp	=	12
TPRO	=	29					sysptr	=	13
HDTPRO	=	30					anypointer	=	14
XPRO	=	31					anyrecord	=	15
IPRO	=	32		CHAR16	=	16	char16	=	16
CPRO	=	33		STRING16	=	17	
STRUCT	=	34		INT64	=	18	int64	=	18
SYS	=	35					result	=	20
PTR	=	36					iunknown	=	21
ARR	=	37					ptriunk	=	22
DARR	=	38					guid	=	23
REC	=	39		HDUTPTR	=	41
PRO	=	40		LIB	=	42
INPAR 	=	25		ENTRY	=	43	FALSE	=	0
OUTPAR	=	26		FINPRO	=	31	TRUE	=	1
FINREC	=	25		ABSPRO	=	32
ABSREC	=	26		EMPPRO	=	33
EXTREC	=	27		EXTPRO	=	34	IMPO	=	22
Docu/BB-License.odc

The BlackBox Component Builder Open Source License

The following is the license that applies to this copy of the BlackBox Component Builder software components and the accompanying documentation (collectively, the "Software"). For a license to use the Software under conditions other than those described here, or to purchase support for this Software, please contact Oberon microsystems, Inc. at the following address:

Oberon microsystems, Inc.
Technoparkstrasse 1
CH-8005 Zьrich
Switzerland

Net: info@oberon.ch
Tel: +41 (0) 44 445 17 51
Fax: +41 (0) 44 445 17 52

Copyright (c) 1994 - 2005 Oberon microsystems, Inc., Switzerland. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. Redistributions in any form must be accompanied by information on how to obtain complete source code for the Software and any accompanying software that uses the Software. The source code must either be included in the distribution or be available for no more than the cost of distribution plus a nominal fee, and must be freely redistributable under reasonable conditions. For an executable file, complete source code means the source code for all modules it contains. It does not include source code for modules or files that typically accompany the major components of the operating system on which the executable file runs.

4. Neither the name of Oberon microsystems, Inc. nor the names of the contributors to the Software may be used to endorse or promote products derived from the Software without specific prior written permission. 

THIS SOFTWARE IS PROVIDED BY OBERON MICROSYSTEMS, INC. "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL OBERON MICROSYSTEMS, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Docu/BB-Open-Source-License.odc

The BlackBox Component Builder Open Source License

The following is the license that applies to this copy of the BlackBox Component Builder software components and the accompanying documentation (collectively, the "Software"). For a license to use the Software under conditions other than those described here, or to purchase support for this Software, please contact Oberon microsystems, Inc. at the following address:

Oberon microsystems, Inc.
Technoparkstrasse 1
CH-8005 Zьrich
Switzerland

Net: info@oberon.ch
Tel: +41 (0) 44 445 17 51
Fax: +41 (0) 44 445 17 52

Copyright (c) 1994 - 2005 Oberon microsystems, Inc., Switzerland. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. Redistributions in any form must be accompanied by information on how to obtain complete source code for the Software and any accompanying software that uses the Software. The source code must either be included in the distribution or be available for no more than the cost of distribution plus a nominal fee, and must be freely redistributable under reasonable conditions. For an executable file, complete source code means the source code for all modules it contains. It does not include source code for modules or files that typically accompany the major components of the operating system on which the executable file runs.

4. Neither the name of Oberon microsystems, Inc. nor the names of the contributors to the Software may be used to endorse or promote products derived from the Software without specific prior written permission. 

THIS SOFTWARE IS PROVIDED BY OBERON MICROSYSTEMS, INC. "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL OBERON MICROSYSTEMS, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Docu/DTC-Help.odc

Map to the Direct-To-COM Compiler Documentation


Introduction

Direct-To-COM Compiler	Tutorials
TheComponentObjectModel	HowtoDevelopnewCOMObjects
TheDirect-To-COMCompiler	Direct-To-COMExamples
TheDevelopmentEnvironment

Related Documentation
ComponentPascelLanguageReport	Platform-SpecificIssues
BlackBoxDocumentation	WindowsProgrammingInterfaces
Docu/Help.odc

Map to the BlackBox Component Builder Documentation

Quick Start	GuidedTour	Roadmap	OverviewbyExample

Component Software: A Case Study Using BlackBox Components				Introduction
Part I	1UserInteraction	2CompoundDocuments	3DesignPractices
Part II	4Forms	5Texts
Part III	6ViewConstruction
Appendices	A:BriefHistoryofPascal	B:PascaltoComp.Pascal

User Manuals	Developer Manuals	Component Pascal	Miscellaneous
Framework	Framework	LanguageReport	License
TextSubsystem	TextSubsystem	What'sNew?	LicensingPolicy
FormSubsystem	FormSubsystem	CharacterSet	Contributors
DevSubsystem	DevSubsystem	DocumentationConventions	Platform-SpecificIssues
CustomCommands	SqlSubsystem	ProgrammingConventions
Docu/Ominc-Contributors.odc

BlackBox Contributors of Oberon microsystems, Inc.


BlackBox is based on the foundation laid at ETH Zьrich by the professors Niklaus Wirth and Jьrg Gutknecht (Oberon language and system), Hanspeter Mцssenbцck (Oberon-2 extensions) and several former research assistants, e.g., Rйgis Crelier, Josef Templ and Stefan Ludwig. At Oberon microsystems, the following (current or former) employees have contributed to BlackBox:

 - Beat Heeb
 - Cuno Pfister
 - Clemens Szyperski

 - Thomas Amberg
 - Daniel Diez
 - Christian Di Giorgio
 - Marc Frei
 - Dominik Gruntz
 - Matthias Hausner
 - Stephan Koch
 - Ivan Posva
 - Bengt Rutisson
 - Wolfgang Weck
 - Jьrg Wullschleger
Docu/Tut-TOC.odc

BlackBox Tutorial

Table of Contents

Part I: Design Patterns
	1UserInteraction
		1.1 User-friendliness
		1.2 Event loops
		1.3 Access by multiple users
		1.4 Language-specific parameters
	2CompoundDocuments
		2.1 Persistence
		2.2 Display independence
		2.3 Multi-view editing
		2.4 Change propagation
		2.5 Nested views
		2.6 Delayed updates
		2.7 Container modes
		2.8 Event handling
		2.9 Controls
	3BlackBoxDesignPractices
		3.1 Language support
		3.2 Modules and subsystems
		3.3 Bottleneck interfaces
		3.4 Object creation

Part II: Library
	4Forms
		4.1 Preliminaries
		4.2 Phone book example
		4.3 Interactors
		4.4 Guards
		4.5 Notifiers
		4.6 Standard controls
		4.7 Complex controls and interactors
		4.8 Input validation
		4.9 Summary
	5Texts
		5.1 Writing text
		5.2 The Model-View-Controller pattern applied to texts
		5.3 Reading text
		5.4 Modifying text
		5.5 Text scripts
		5.6 Summary

Part III: View Construction
	6ViewConstruction
		6.1 Introduction
		6.2 Message handling
		6.3 Preference messages
		6.4 Controller messages
		6.5 Properties
		6.6 Model-View separation
		6.7 Operations
		6.8 Separation of interface and implementation

A:ABriefHistoryofPascal
B:DifferencesbetweenPascalandComponentPascal