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


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




[6]

extend L2 CNT with class type

PanCommand ==

Delete Edit Refresh

Filter

Order Export

Cancel, Panlnput = PanCommand, PanOutput = PanCommand-set

-- набор команд, индекс и признак: индекс записи

-- или поля

MPanel - - include some important information

-- about state of applicaton

-- title

Panel = Bool x Text x PanCommand-set x PanContent channel panIn : Panlnput, panOut : PanOutput value

mkPanOutput : Panel - out setOut PanOutput mkPanOutput((b, t, ps, pc)) =

setOut!mkPanContentOutput(pc) ;

mkPanOutput(b, t, ps),

mkPanOutput : Bool x Text x PanCommand-set - PanOutput,

openNewOrSelectOldTable :

MenuItem x Panel* - Panel* openNewOrSelectOldTable((mi, tit, qs), ps) =

pc = mkPanContent(qs), n : Nat,

bs : PanCommand-set , im : Bool

3 c : PanContent •


ps(n) = (im, tit, bs, c) then

- - if old one then change order of panels ( ps(n)} л ( ps(k) k in ( 1 .. n - 1} } л ( ps(k) k in ( n + 1 .. len ps} } else - - add new one if pc = app about

then ( (true, tit, { Exit} , refresh(pc))} л ps else

( (false, tit, TblButtons, refresh(pc))} л ps end end end

--3 sets of buttons for different kinds of

-- panels:

-- table, editRec, N2MRel

TblButtons :

{ b : PanCommand-set •

{ Add, Delete, Edit, Refresh, Filter, Order, Export, Exit, Cancel} } , EditRecButtons :

{ b : PanCommand-set • b = { Exit, Cancel} } ,

N2MRelButtons :

{ b : PanCommand-set • b = { Add, Delete, Edit, Exit, Cancel} } , exitAction : Panel* x MPanel - Unit

-- End Of Scheme

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

-- Start of Scheme rsl/l2 pan1. rsl:8:5: parse error


-- End Of Scheme

Определена работа функции pan. По команде Edit/Add она может открыть следующую панель для редактирования сущности или записи. Информация, определяющая вид панели, которая должна открыться задается функциями edit/add. Функции возвращают признак редактирования сущ-ность или запись и содержимое открываемой панели. Строятся новый заголовок tit0 и список команд pis0, панель выводится в panOut и добавляется в список панелей задачи <. (true, tit0, pis0, Cnt0).> " pnls.

При закрытии текущей панели hd pnls кнопкой Exit необходимо выполнить обновление содержания предыдущей панели. Это делает функция refresh, которая вызывается для предыдущей панели (hd tl pnls).

-- Start of Scheme

rsl/T0, rsl/L2 PAN1 scheme L2 PAN =

with T0 in

extend L2 PAN1 with class value pan : Panel* -

in panIn, setIn, any out panOut, setOut, any

pan(pnls) =

let (m, tit, pis, Cnt) = hd pnls, cmd = panIn? in if cmd = Exit V cmd = Cancel then - - Info has only exit button if cmd = Exit Л m then exit(Cnt)

end - - if current window = modal then exit may entail

-- of save Cnt information

-- so it = neccesary to make refresh of prev

-- window.

if len tl pnls > 0 then

(m1, tit1, pis1, Cnt1) = hd tl pnls,

if cmd = Exit Л m then refresh(Cnt1)

else Cnt1

in - - previous Content should be refreshing panOut!mkPanOutput((m1, tit1, pis1, Cnt2)) ;



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