<> <> <> <> <> <> <> <> <> <> DIRECTORY DB, Rope, ViewerClasses; Nut: CEDAR DEFINITIONS = BEGIN OPEN DB; ROPE: TYPE = Rope.ROPE; Viewer: TYPE = ViewerClasses.Viewer; <> <> <> <> <> <> Register: PROC[ domain: ROPE, segment: DB.Segment, display: DisplayProc_ NIL, -- proc to make displayer for entity in domain edit: EditProc_ NIL, -- proc to make editor for new or old entity in domain query: QueryProc_ NIL, -- proc to make queryer on domain create: CreateProc_ NIL, -- proc to create viewer for above (defaults to container) update: UpdateProc_ NIL, -- proc to call when relation referencing this domain is updated transaction: TransactionProc_ NIL -- proc to call when the transaction for the segment is <> ]; <> <> DeRegister: PROC[segment: DB.Segment, domain: ROPE]; <> <<>> Display: PROC[ e: DB.Entity, seg: DB.Segment _ NIL, parent: Viewer_ NIL, method: Method _ spawned ] RETURNS[ v: Viewer ]; <> <> <> <> <> <> <> Edit: PROC[ d: DB.Domain, eName: ROPE, seg: DB.Segment _ NIL, parent: Viewer_ NIL, method: Method _ spawned ] RETURNS[ v: Viewer ]; <> <> <> <> <> <> <> Query: PROC[d: DB.Domain, seg: DB.Segment _ NIL] RETURNS[ v: Viewer ]; <> Method: TYPE = {replace, oneOnly, spawned}; -- method used to determine new viewer DisplayProc: TYPE = PROC[e: DB.Entity, newV: Viewer, seg: DB.Segment _ NIL]; <> EditProc: TYPE = PROC[d: DB.Domain, eName: ROPE, newV: Viewer, seg: DB.Segment _ NIL]; <> QueryProc: TYPE = PROC[d: DB.Domain, newV: Viewer, segment: DB.Segment _ NIL]; <> <> CreateProc: TYPE = PROC[ nutType: NutType, d: Domain, eName: ROPE, seg: DB.Segment _ NIL, column: ViewerClasses.Column _ left ] RETURNS [v: Viewer]; <> <> Update: PROC[updateType: UpdateType, tuple: Relship]; <> <> <> UpdateType: TYPE = { create, destroy }; NutType: TYPE = { displayer, editor, queryer }; UpdateProc: TYPE = PROC[updateType: UpdateType, tuple: Relship]; <> Notify: PROC[ segment: DB.Segment, type: TransactionType ]; <> <> <> TransactionProc: TYPE = PROC[segment: DB.Segment, fileName: ROPE, type: TransactionType]; <> <> <> <> <> TransactionType: TYPE = {open, close, abort}; <<********************************************************>> <> <<********************************************************>> debug: BOOLEAN; -- TRUE => use the default procedures instead of registered proc DefaultDisplay: DisplayProc; <> DefaultEdit: EditProc; <> <> DefaultQuery: QueryProc; <> DefaultCreate: CreateProc; <> END. . . Change Log: Edited by Rick on March 18, 1982 11:50 am: Major reorganization. Register now allows registration of all or some of the three procedures, and replaces any previous registration for that domain with the new one. Edit take init REF ANY. DisplayProc, EditProc, QueryProc take new viewer on calls out from Nut, old viewer on calls into Nut. Added close and open notify procs. Edited by Rick on March 25, 1982 4:29 pm: Added user interaction procs section, dump and load stuff. WSH on April 1, 1982: added MessageConfirm Rick on April 3, 1982 4:29 pm: added width option to button. Added CreateProc feature. Willie-Sue on July 8, 1982: changed EnumerateNutList, created NutPrivate.mesa, NutListImpl.mesa Willie-Sue on July 27, 1982: changed EnumerateNutList to return LIST OF NutRec. Cattell on August 5, 1982 7:11 pm: added init parm to Display, Create procs. Added GetDBTransaction proc. Maxwell on September 8, 1982 9:29 am: moved procedures to Palm and SquirrelOps Cattell on April 12, 1983 1:16 pm: fixed up some outdated comments.