Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[5]

curr - pnls,

AppInput from MenuItem(mi) - - - if modal

then - - if current panel = modal

pnls - - don t change the panels list else - -

openNewOrSelectOldTable(mi, pnls) end

end end

if (len ps > 0) then

let (modal1, txt1, pis1, pc1) = hd ps in if modal1 then

(mkAppOutput(mp, { } ), ps) - - if hd ps = modal window else - - then there = no menu at al

(mkAppOutput(mp, mkMenu(ms, ps)), ps) end end else

(mkAppOutput(mp, MainMenu), ( } ) - - no any panels, only main menu end end,

mkApplication : Text - Application mkApplication(path) =

let (title, mPan) = startAction(path) in (title, ( } , mPan, MainMenu)

-- End Of Scheme

Для доказательства того, что все свойства абстрактной схемы l0 app.rsl наследуются (реализуются, implement) подробной схемой l1 app.rsl используется следующая схема

-- Start of Scheme

rsl/L0 APP, rsl/L1 APP

devt relation

l1 app l0(L1 APP for L0 APP) : - L1 APP L0 APP


-- End Of Scheme 2.2.2 Abstract panel

Задано, что панель может быть модальной (модальная панель не позволяет выбор других панелей приложения) или не модальной (немодальная панель позволяющяет выбор других панелей приложения); имеет заголовок, список команд - кнопок и содержимое панели. Под содержимым панели мы будет понимать структуру, содержащие различные виды окна данных (record window) и другую необходимую информацию. Отличие следующей схемы от предыдущих заключается в том, что функция mkPanOut является процессом. Она также будет выводить в канал setOut, и, следовательно, функция app выводит в канал panOut и в канал setOut. Это означает, что панель и содержание панели выводятся одновременно.

Ранее, рассмотренная на уровне операционая система, функция mkOsOutput не производила вывод в канал appOut. Это означает, что когда функция os создает данные для вывода в appOut, не выводились данные в канал panOut. (То есть, в открытом приложении может не быть ни одной открытой панели.)

Также в схеме обьявляется существование величины главное меню: MainMenu(). -- Start of Scheme

scheme L1 PAN = with T0 in class

PanInput, PanOutput, PanContent, PanCommand, MPanel - - include some important information

-- about state of applicaton

, Panel = Bool x Text x PanCommand-set x PanContent

--Bool : is it modal window?

--Text : title of panel

--PanInput: list

-- of command

-- PanContent: panel content , MenuItem

channel panIn : PanInput, panOut : PanOutput


value pan :

Panel* -

in panIn, any out panOut, any Panel* , startAction : Text - Text x MPanel, exitAction : Panel* x MPanel - Unit, mkPanOutput : Panel - out any PanOutput, MainMenu : MenuItem-set ,

openNewOrSelectOldTable : MenuItem x Panel* - Panel*

-- End Of Scheme 2.3 Panel Level

Для адекватного описания обьекта форма на текущем уровне, кроме собственно самого обьекта форма: L2 PAN, понадобится схема с конкретным описанием содержанием панели: L2 CNT и схема с описание окна данных:

2.3.1 Concrete panel

Обьявленный в схеме тип PanCommand задает набор команд, которые панель может выполнять. Каждой команде будет соотвествовать кнопка на панели и функция из схем L2 CNTx.

Кроме того, задано, что в приложении по командам из главного меню открываются не модальные панели с одинаковым набором кнопок TblButtons или информационная модальная панель app about. Для панелей редактир-вания предопределены два набора команд - кнопок

•EditRecButtons - для редактирования записи;

•N2MRelButtons - для редактирования сущности, точнее отношения N

Функции exitAction и startAction не уточняются. -- Start of Scheme

rsl/T0, rsl/L2 CNT scheme L2 PAN0 =

with T0 in



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15]