From 26043cb21c636095bbe7a0782d82cd7a5518caab Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Thu, 23 Dec 2021 22:01:09 -0500 Subject: [PATCH] Paratactic form for UI protocol --- protocols/schema-bundle.bin | 12 +++---- protocols/schemas/ui.prs | 71 +++++++++++++++++-------------------- 2 files changed, 37 insertions(+), 46 deletions(-) diff --git a/protocols/schema-bundle.bin b/protocols/schema-bundle.bin index 61c916a..a07eb8a 100644 --- a/protocols/schema-bundle.bin +++ b/protocols/schema-bundle.bin @@ -1,11 +1,7 @@ -´³bundle·µ³ui„´³schema·³version‘³ definitions·³Fill´³orµµ±fixed´³atom³Double„„µ±fill´³rec´³lit³fill„´³tupleµ´³named³weight´³atom³ SignedInteger„„´³named³rank´³atom³ SignedInteger„„„„„„„„³Click´³rec´³lit³click„´³tupleµ´³named³widget´³refµ„³WidgetId„„„„„³Color´³rec´³lit³rgba„´³tupleµ´³named³red´³atom³Double„„´³named³green´³atom³Double„„´³named³blue´³atom³Double„„´³named³alpha´³atom³Double„„„„„³State´³rec´³lit³state„´³tupleµ´³named³widget´³refµ„³WidgetId„„´³named³key³any„´³named³value³any„„„„³Touch´³rec´³lit³touch„´³tupleµ´³named³widget´³refµ„³WidgetId„„´³named³touchId³any„„„„³Sizing´³rec´³lit³sizing„´³tupleµ´³named³ideal´³atom³Double„„´³named³stretch´³refµ„³Fill„„´³named³shrink´³refµ„³Fill„„„„„³BoxSize´³rec´³lit³box-size„´³tupleµ´³named³ -horizontal´³refµ„³Sizing„„´³named³vertical´³refµ„³Sizing„„„„„³LeafType´³orµµ±blank´³lit³blank„„µ±text´³lit³text„„µ±slider´³lit³slider„„„„³NodeType´³orµµ±column´³lit³column„„µ±row´³lit³row„„„„³Ordering´³orµµ±double´³atom³Double„„µ±string´³atom³String„„„„³WidgetId³any³ -ShowWidget´³rec´³lit³show„´³tupleµ´³named³ positions´³refµ„³WidgetSelector„„´³named³widget´³refµ„³ -WidgetTree„„´³named³order´³refµ„³Ordering„„´³named³client´³embedded´³refµ„³WidgetClientProtocol„„„„„„³ -WidgetTree´³orµµ±node´³rec´³lit³node„´³tupleµ´³named³type´³refµ„³NodeType„„´³named³ -attributes´³refµ„³WidgetAttributes„„´³named³children´³seqof´³refµ„³ -WidgetTree„„„„„„„µ±leaf´³rec´³lit³leaf„´³tupleµ´³named³type´³refµ„³LeafType„„´³named³ -attributes´³refµ„³WidgetAttributes„„„„„„„„³WidgetInstance´³rec´³lit³widget-instance„´³tupleµ´³named³server´³embedded³any„„„„„³WidgetSelector´³orµµ±attributeEquals´³rec´³lit³=„´³tupleµ´³named³key´³atom³Symbol„„´³named³value³any„„„„„µ±and´³rec´³lit³and„´³tupleµ´³named³ selectors´³seqof´³refµ„³WidgetSelector„„„„„„„„„³WidgetAttributes´³dictof´³atom³Symbol„³any„³WidgetClientProtocol´³refµ„³WidgetInstance„„³ embeddedType€„„µ³hayes„´³schema·³version‘³ definitions·³Result´³rec´³lit³result„´³tupleµ´³named³text´³atom³String„„´³named³tag´³refµ„³ MaybeString„„´³named³fields´³refµ„³ MaybeStrings„„„„„³ MaybeString´³orµµ±present´³atom³String„„µ±absent´³lit€„„„„³ MaybeStrings´³orµµ±present´³seqof´³atom³String„„„µ±absent´³lit€„„„„³ ModemPresent´³rec´³lit³modem„´³tupleµ´³lit³hayes„´³named³ +´³bundle·µ³ui„´³schema·³version‘³ definitions·³Fill´³orµµ±fixed´³atom³Double„„µ±fill´³rec´³lit³fill„´³tupleµ´³named³weight´³atom³ SignedInteger„„´³named³rank´³atom³ SignedInteger„„„„„„„„³Root´³rec´³lit³root„´³tupleµ´³named³id´³refµ„³WidgetId„„´³named³order´³refµ„³SortKey„„„„„³Click´³rec´³lit³click„´³tupleµ´³named³widget´³refµ„³WidgetId„„„„„³Color´³rec´³lit³rgba„´³tupleµ´³named³red´³atom³Double„„´³named³green´³atom³Double„„´³named³blue´³atom³Double„„´³named³alpha´³atom³Double„„„„„³State´³rec´³lit³state„´³tupleµ´³named³widget´³refµ„³WidgetId„„´³named³key³any„´³named³value³any„„„„³Touch´³rec´³lit³touch„´³tupleµ´³named³widget´³refµ„³WidgetId„„´³named³touchId³any„„„„³Parent´³rec´³lit³parent„´³tupleµ´³named³id´³refµ„³WidgetId„„´³named³parentId´³refµ„³WidgetId„„´³named³order´³refµ„³SortKey„„„„„³Sizing´³rec´³lit³sizing„´³tupleµ´³named³ideal´³atom³Double„„´³named³stretch´³refµ„³Fill„„´³named³shrink´³refµ„³Fill„„„„„³Widget´³rec´³lit³widget„´³tupleµ´³named³id´³refµ„³WidgetId„„´³named³type´³refµ„³ +WidgetType„„„„„³Window´³rec´³lit³window„´³tupleµ´³named³title´³atom³String„„´³named³space´³embedded³any„„„„„³BoxSize´³rec´³lit³box-size„´³tupleµ´³named³ +horizontal´³refµ„³Sizing„„´³named³vertical´³refµ„³Sizing„„„„„³SortKey´³orµµ±double´³atom³Double„„µ±string´³atom³String„„„„³LeafType´³orµµ±blank´³lit³blank„„µ±text´³lit³text„„µ±slider´³lit³slider„„„„³NodeType´³orµµ±column´³lit³column„„µ±row´³lit³row„„„„³WidgetId³any³ Attribute´³rec´³lit³ attribute„´³tupleµ´³named³id´³refµ„³WidgetId„„´³named³key´³atom³Symbol„„´³named³value³any„„„„³ +WidgetType´³orµµ±NodeType´³refµ„³NodeType„„µ±LeafType´³refµ„³LeafType„„„„³WidgetInstance´³rec´³lit³widget-instance„´³tupleµ´³named³id´³refµ„³WidgetId„„´³named³instance´³embedded³any„„„„„„³ embeddedType€„„µ³hayes„´³schema·³version‘³ definitions·³Result´³rec´³lit³result„´³tupleµ´³named³text´³atom³String„„´³named³tag´³refµ„³ MaybeString„„´³named³fields´³refµ„³ MaybeStrings„„„„„³ MaybeString´³orµµ±present´³atom³String„„µ±absent´³lit€„„„„³ MaybeStrings´³orµµ±present´³seqof´³atom³String„„„µ±absent´³lit€„„„„³ ModemPresent´³rec´³lit³modem„´³tupleµ´³lit³hayes„´³named³ devicePath´³atom³String„„´³named³ dataspace´³embedded´³refµ„³InternalProtocol„„„„„„³ CommandResult´³rec´³lit³command-result„´³tupleµ´³named³ commandText´³atom³String„„´³named³results´³seqof´³refµ„³Result„„„´³named³ finalResult´³atom³String„„„„„³ExecuteCommand´³rec´³lit³execute-command„´³tupleµ´³named³ commandText´³atom³String„„´³named³replyTo´³refµ„³CommandContinuation„„„„„³InternalProtocol³any³CommandContinuation´³orµµ± replyWanted´³embedded´³refµ„³ CommandResult„„„µ± fireAndForget´³lit€„„„„³UnsolicitedResultCode´³rec´³lit³ unsolicited„´³tupleµ´³named³result´³refµ„³Result„„„„„„³ embeddedType€„„µ³ telephony„´³schema·³version‘³ definitions·³CallId´³atom³ SignedInteger„³CallType´³orµµ±voice´³lit³voice„„µ±data´³lit³data„„µ±fax´³lit³fax„„„„³ CallState´³orµµ±hold´³lit³hold„„µ±original´³lit³original„„µ±connect´³lit³connect„„µ±incoming´³lit³incoming„„µ±waiting´³lit³waiting„„µ±end´³lit³end„„µ±alerting´³lit³alerting„„„„³ PlaceCall´³rec´³lit³ place-call„´³tupleµ´³named³ devicePath´³atom³String„„´³named³peer´³atom³String„„„„„³ diff --git a/protocols/schemas/ui.prs b/protocols/schemas/ui.prs index ed25ea5..52afa4b 100644 --- a/protocols/schemas/ui.prs +++ b/protocols/schemas/ui.prs @@ -1,46 +1,16 @@ version 1 . -; Data types +; Assertion. Creates a space for Widget/Parent/Attribute assertions etc. +Window = . -WidgetTree = -/ -/ -. - -NodeType = =column / =row . -WidgetAttributes = { symbol: any ...:... } . -LeafType = -/ =blank -/ =text -/ =slider -. - -WidgetSelector = -/ @attributeEquals <= @key symbol @value any> -/ -. - -Fill = @fixed double / . -Sizing = . -BoxSize = . - -; Commonly set under key `id` in WidgetAttributes. -WidgetId = any . - -Color = . - -WidgetClientProtocol = WidgetInstance . +; Assertions, within the space created as part of a Window assertion. +Widget = . +Parent = . +Root = . +Attribute = . ; Assertion -ShowWidget = . -Ordering = @double double / @string string . - -; Assertion -WidgetInstance = . +WidgetInstance = . ; Assertion Touch = . @@ -50,3 +20,28 @@ Click = . ; Assertion State = . + +; Data types + +WidgetId = any . +SortKey = @double double / @string string . + +WidgetType = NodeType / LeafType . + +NodeType = +/ =column +/ =row +. + +LeafType = +/ =blank +/ =text +/ =slider +. + +Color = . + +; Box-and-glue layout +Fill = @fixed double / . +Sizing = . +BoxSize = .