-- GCellprivateDefs.mesa -- Last Edited by: Sturgis, July 10, 1984 9:11:03 pm PDT DIRECTORY Expressions USING[AnalyzedExpression, AnalyzedIdentifier, IdTableSet], Dependencies USING[Action, DataItem], GCell USING[GCellItemDescriptor, GCellItemJustification, GCellItemMode, GCellItemRowColSumMode, GCellItemValueMode], IO USING[STREAM], NewCalcGlobal USING[Displayer, Document], Rope USING[ROPE], StructureNodes USING[DisplayArray, StructureNode], ViewerClasses USING[Viewer]; GCellPrivateDefs: DEFINITIONS = BEGIN OPEN Dependencies, Expressions, GCell, IO, NewCalcGlobal, Rope, ViewerClasses; GCell: TYPE = REF GCellBody; GCellBody: PUBLIC TYPE = RECORD[ da: StructureNodes.DisplayArray, selfI, selfJ: CARDINAL ← 0, document: NewCalcGlobal.Document, displayer: NewCalcGlobal.Displayer, gcaSn: StructureNodes.StructureNode, vParent: Viewer, rowSummer, colSummer: Action ← NIL, screenLead: INTEGER ← 0, screenSpace: INTEGER ← 0, textLead: INTEGER ← 0, textSpace: INTEGER ← 2, -- eventually this will become changeable by GCellTool textNLines: INTEGER ← 0, -- set by preshow lastPrePaintY, lastPrePaintX, lastPrePaintL, lastPrePaintR, lastPrePaintW: INTEGER ← 0, unPainted: BOOLEAN ← TRUE, nItems: CARDINAL ← 0, items: Item ← NIL ]; Item: TYPE = REF ItemBody; ItemBody: TYPE = RECORD[ da: StructureNodes.DisplayArray, selfI, selfJ: CARDINAL ← 0, selfItemX: CARDINAL ← 0, mode: GCellItemMode, justification: GCellItemJustification, rowSumMode: GCellItemRowColSumMode, colSumMode: GCellItemRowColSumMode, valueMode: GCellItemValueMode, idName: ROPE, expressionText: ROPE, zeroValText: ROPE, created: BOOLEAN ← TRUE, expressionBad: BOOLEAN ← TRUE, expression: AnalyzedExpression ← [NIL], evalAction: Action ← NIL, -- created only if expression is not simple constant firstTime: BOOLEAN ← TRUE, -- set false after value is first displayed value: REAL ← 0, valueChanges: DataItem ← NIL, -- created only if information passes through this item idBad: BOOLEAN ← TRUE, id: AnalyzedIdentifier ← [NIL], assignAction: Action ← NIL, -- created only if there is an identifier buttonText: ROPE, buttonTextDirty: BOOLEAN ← FALSE, -- set true when buttonText changed buttonTextAnalyzed: BOOLEAN← FALSE, -- set false when text becomes dirty, is set true when analyzed buttonShapeDirty: BOOLEAN ← FALSE, -- set true when shape recomputed, textDirty is set false at that time. buttonL, buttonA, buttonB, buttonR, buttonW: INTEGER ← 0, buttonHeight: INTEGER ← 0, textL, textA, textB, textR, textW: INTEGER ← 0, viewerX, viewerY, viewerW: INTEGER ← 0, dirty: BOOLEAN ← TRUE, viewer: Viewer ← NIL, viewerMode: ItemViewerMode ← nil, editable: BOOLEAN ← FALSE, next: Item ← NIL]; ItemViewerMode: TYPE = {nil, button, textBox}; ItemRefDesc: TYPE = REF ItemRefDescBody; ItemRefDescBody: TYPE = RECORD[da: StructureNodes.DisplayArray, I, J: CARDINAL, itemX: CARDINAL]; -- procedures supplied to GCellImplA by GCellImplB ReadOneItem: PROCEDURE[from: STREAM, version: CARDINAL] RETURNS[GCellItemDescriptor]; CreateItem: PROCEDURE[idTables: IdTableSet, gc: GCell, da: StructureNodes.DisplayArray, selfI, selfJ, selfItemX: CARDINAL, desc: GCellItemDescriptor, show: BOOLEAN] RETURNS[item: Item]; AnalyzeItemExpression: PROCEDURE[idTables: IdTableSet, gc: GCell, item: Item]; HandleItemValueChanges: PROCEDURE[gc: GCell, item: Item]; DoItemRowSum: PROCEDURE[gc: GCell, item: Item, sum: REAL] RETURNS[REAL]; ClearGCell: PROCEDURE[gc: GCell]; GetItemDescriptor: PROCEDURE[item: Item] RETURNS[GCellItemDescriptor]; ItemAcceptsSelection: PROCEDURE[item: Item] RETURNS[BOOLEAN]; ForceItemSelection: PROCEDURE[gcSn: StructureNodes.StructureNode, gc: GCell, item: Item]; WriteOneItem: PROCEDURE[desc: GCellItemDescriptor, to: STREAM]; SubstituteInItem: PROCEDURE[idTables: IdTableSet, gc: GCell, item: Item, newText: Rope.ROPE, oldText: Rope.ROPE]; CheckItemForDirtyData: PROCEDURE[gc: GCell, item: Item]; ComputeTextShape: PROCEDURE[item: Item]; ShowItem: PROCEDURE[item: Item, L, R, W: INTEGER, to: STREAM]; AnalyzeItemId: PROCEDURE[idTables: IdTableSet, gc: GCell, item: Item]; DoItemColSum: PROCEDURE[gc: GCell, item: Item, sum: REAL] RETURNS[REAL]; PrePaintItem: PROCEDURE[gc: GCell, item: Item, y, x, L, R, W: INTEGER]; PaintItem: PROCEDURE[gc: GCell, item: Item, dirtyOnly: BOOLEAN]; NoteCoordinatesItem: PROCEDURE[item: Item, document: NewCalcGlobal.Document, da: StructureNodes.DisplayArray, I, J, x: CARDINAL]; END.. -- February 28, 1983 4:50 pm: Sturgis, started GCellPrivateDefs.mesa -- March 1, 1983 1:44 pm: add ncGlobal to NoteCoordinates item. -- March 3, 1983 2:33 pm: remove idTables from GCell, and modify appropriate procedures to take idTables as an argument.