From 2fe28dbe6027e4f28c7690fa4587796567a28cb0 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Tue, 30 Jan 2024 18:22:01 +0100 Subject: [PATCH 01/27] =?UTF-8?q?Ajout=20du=20d=C3=83=C2=A9but=20des=20sta?= =?UTF-8?q?mps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PyramidStyleSheetEditorPresenter.class.st | 5 + .../PyramidThemePresenter.class.st | 9 ++ .../PyramidThemeSelectorPresenter.class.st | 152 ++++++++++++++++++ .../PyramidToploThemePlugin.class.st | 41 +++++ .../ToSelectorPossibleStamps.class.st | 40 +++++ src/Pyramid-Toplo-Incubator/package.st | 1 + 6 files changed, 248 insertions(+) create mode 100644 src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st create mode 100644 src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st create mode 100644 src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st create mode 100644 src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st create mode 100644 src/Pyramid-Toplo-Incubator/ToSelectorPossibleStamps.class.st create mode 100644 src/Pyramid-Toplo-Incubator/package.st diff --git a/src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st new file mode 100644 index 00000000..a6b0a04a --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st @@ -0,0 +1,5 @@ +Class { + #name : #PyramidStyleSheetEditorPresenter, + #superclass : #SpPresenter, + #category : #'Pyramid-Toplo-Incubator' +} diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st new file mode 100644 index 00000000..40e7d76f --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st @@ -0,0 +1,9 @@ +Class { + #name : #PyramidThemePresenter, + #superclass : #SpPresenter, + #instVars : [ + 'themeSelector', + 'styleSheetEditor' + ], + #category : #'Pyramid-Toplo-Incubator' +} diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st new file mode 100644 index 00000000..62b7422a --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st @@ -0,0 +1,152 @@ +Class { + #name : #PyramidThemeSelectorPresenter, + #superclass : #SpPresenter, + #instVars : [ + 'themeSelector', + 'variantSelector', + 'buttonRefreshTheme', + 'projectModel', + 'styleSheetEditor' + ], + #category : #'Pyramid-Toplo-Incubator' +} + +{ #category : #'as yet unclassified' } +PyramidThemeSelectorPresenter >> applyThemeToRoot [ + + | themeToApplied | + self projectModel ifNil: [ ^ self ]. + self elementRoot ifNil: [ ^ self ]. + themeToApplied := self themeSelector selectedItem variant: + self variantSelector selectedItem new. + self elementRoot space toTheme: themeToApplied. + self elementRoot space pulse +] + +{ #category : #accessing } +PyramidThemeSelectorPresenter >> buttonRefreshTheme [ + + ^ buttonRefreshTheme +] + +{ #category : #layout } +PyramidThemeSelectorPresenter >> defaultLayout [ + + ^ SpBoxLayout newVertical + spacing: 4; + add: (SpBoxLayout newHorizontal + spacing: 4; + add: (SpLabelPresenter new + label: 'Space Theme'; + displayBold: [ :t | true ]; + yourself); + add: self buttonRefreshTheme withConstraints: [ :c | + c height: 24. + c width: 24 ]; + yourself) + expand: false; + add: (SpBoxLayout newHorizontal + spacing: 4; + add: 'Theme' width: 50; + add: self themeSelector; + yourself) + expand: false; + add: (SpBoxLayout newHorizontal + spacing: 4; + add: 'Variant' width: 50; + add: self variantSelector; + yourself) + expand: false; + yourself +] + +{ #category : #accessing } +PyramidThemeSelectorPresenter >> elementRoot [ + + self projectModel firstLevelElements ifEmpty: [ ^ nil ] ifNotEmpty: [ :elements | ^ elements first parent ] +] + +{ #category : #initialization } +PyramidThemeSelectorPresenter >> initializeAllPossibleThemes [ + + | allThemes previousTheme | + previousTheme := self themeSelector selectedItem. + + allThemes := ToTheme allSubclasses select: [ :theme | + theme canBeDefault ]. + self themeSelector items: allThemes. + + (previousTheme isNotNil and: [ allThemes includes: previousTheme ]) + ifTrue: [ self themeSelector selectItem: previousTheme ] + ifFalse: [ self themeSelector selectItem: allThemes first ] +] + +{ #category : #initialization } +PyramidThemeSelectorPresenter >> initializePresenters [ + + styleSheetEditor := PyramidStyleSheetEditorPresenter new. + buttonRefreshTheme := SpButtonPresenter new + icon: (self iconNamed: #refresh); + action: [ self initializeAllPossibleThemes ]; + yourself. + themeSelector := SpDropListPresenter new + whenSelectedItemChangedDo: [ :aThemeClass | + self themeSelectionChanged: aThemeClass ]; + yourself. + variantSelector := SpDropListPresenter new + whenSelectedItemChangedDo: [ :aNewVariant | + self variantSelectionChanged: aNewVariant ]; + yourself. + self initializeAllPossibleThemes +] + +{ #category : #accessing } +PyramidThemeSelectorPresenter >> projectModel [ + + ^ projectModel +] + +{ #category : #accessing } +PyramidThemeSelectorPresenter >> projectModel: anObject [ + + projectModel := anObject +] + +{ #category : #accessing } +PyramidThemeSelectorPresenter >> styleSheetEditor [ + + ^ styleSheetEditor +] + +{ #category : #'as yet unclassified' } +PyramidThemeSelectorPresenter >> themeSelectionChanged: aThemeClass [ + + | previousVariant | + aThemeClass ifNil: [ ^ self ]. + previousVariant := self variantSelector selectedItem. + self variantSelector items: aThemeClass supportedVariantClasses. + self variantSelector selectItem: + ((aThemeClass supportedVariantClasses includes: previousVariant) + ifTrue: [ previousVariant ] + ifFalse: [ aThemeClass supportedVariantClasses first ]). + self applyThemeToRoot +] + +{ #category : #accessing } +PyramidThemeSelectorPresenter >> themeSelector [ + + ^ themeSelector +] + +{ #category : #'as yet unclassified' } +PyramidThemeSelectorPresenter >> variantSelectionChanged: aVariantClass [ + + aVariantClass ifNil: [ ^ self ]. + self applyThemeToRoot +] + +{ #category : #accessing } +PyramidThemeSelectorPresenter >> variantSelector [ + + ^ variantSelector +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st b/src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st new file mode 100644 index 00000000..b325ea8b --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st @@ -0,0 +1,41 @@ +Class { + #name : #PyramidToploThemePlugin, + #superclass : #Object, + #traits : 'TPyramidPlugin', + #classTraits : 'TPyramidPlugin classTrait', + #instVars : [ + 'themePresenter' + ], + #category : #'Pyramid-Toplo-Incubator' +} + +{ #category : #adding } +PyramidToploThemePlugin >> addPanelsOn: aPyramidSimpleWindow [ + + aPyramidSimpleWindow at: #tabRight addItem: [ :builder | + builder + makeTab: self themePresenter + label: 'Toplo-Theme' + icon: (self iconNamed: #smallPushpin) + order: 1 ] +] + +{ #category : #connecting } +PyramidToploThemePlugin >> connectOn: aPyramidEditor [ + + self themePresenter projectModel: aPyramidEditor projectModel + + +] + +{ #category : #initialization } +PyramidToploThemePlugin >> initialize [ + + themePresenter := PyramidThemeSelectorPresenter new. +] + +{ #category : #accessing } +PyramidToploThemePlugin >> themePresenter [ + + ^ themePresenter +] diff --git a/src/Pyramid-Toplo-Incubator/ToSelectorPossibleStamps.class.st b/src/Pyramid-Toplo-Incubator/ToSelectorPossibleStamps.class.st new file mode 100644 index 00000000..00a5c9dd --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/ToSelectorPossibleStamps.class.st @@ -0,0 +1,40 @@ +Class { + #name : #ToSelectorPossibleStamps, + #superclass : #Object, + #instVars : [ + 'theme' + ], + #category : #'Pyramid-Toplo-Incubator' +} + +{ #category : #'as yet unclassified' } +ToSelectorPossibleStamps >> findPossibleStampsFor: aBlElement [ + + ^ self theme styleSheet styleRules flatCollect: [ :rule | + self findPossibleStampsFor: aBlElement on: rule ] +] + +{ #category : #'as yet unclassified' } +ToSelectorPossibleStamps >> findPossibleStampsFor: aBlElement on: aToStyleRule [ + + | interpreter | + interpreter := ToSelectorInterpreter new. + interpreter check: aToStyleRule selector on: aBlElement. + interpreter result + ifTrue: [ + ^ aToStyleRule styleRules flatCollect: [ :each | + self findPossibleStampsFor: aBlElement on: each ] ] + ifFalse: [ ^ { aToStyleRule selector } ] +] + +{ #category : #accessing } +ToSelectorPossibleStamps >> theme [ + + ^ theme +] + +{ #category : #accessing } +ToSelectorPossibleStamps >> theme: anObject [ + + theme := anObject +] diff --git a/src/Pyramid-Toplo-Incubator/package.st b/src/Pyramid-Toplo-Incubator/package.st new file mode 100644 index 00000000..653c9eb4 --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/package.st @@ -0,0 +1 @@ +Package { #name : #'Pyramid-Toplo-Incubator' } From 5b1a09e0dbc71782c1441a8c4cb9a9d93ae8ee69 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Wed, 31 Jan 2024 12:57:19 +0100 Subject: [PATCH 02/27] Add stamps property to toplo theme panel --- .../PyramidPropertiesManagerTest.class.st | 145 +++++++++++++- ...torContainsInvalidTypeInterpreter.class.st | 184 ++++++++++++++++++ .../PyramidSelectorPossibleStamps.class.st | 53 +++++ .../PyramidStampCommand.class.st | 34 ++++ .../PyramidStyleSheetEditorPresenter.class.st | 33 ++++ .../PyramidThemePresenter.class.st | 31 +++ .../PyramidThemePropertyStrategy.class.st | 43 ++++ .../PyramidThemeSelectorPresenter.class.st | 1 + .../PyramidToploThemePlugin.class.st | 21 +- .../ToSelectorPossibleStamps.class.st | 40 ---- src/Pyramid/PyramidPropertiesManager.class.st | 20 ++ .../PyramidPropertyNotInstalledError.class.st | 33 ++++ 12 files changed, 590 insertions(+), 48 deletions(-) create mode 100644 src/Pyramid-Toplo-Incubator/PyramidSelectorContainsInvalidTypeInterpreter.class.st create mode 100644 src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st create mode 100644 src/Pyramid-Toplo-Incubator/PyramidStampCommand.class.st create mode 100644 src/Pyramid-Toplo-Incubator/PyramidThemePropertyStrategy.class.st delete mode 100644 src/Pyramid-Toplo-Incubator/ToSelectorPossibleStamps.class.st create mode 100644 src/Pyramid/PyramidPropertyNotInstalledError.class.st diff --git a/src/Pyramid-Tests/PyramidPropertiesManagerTest.class.st b/src/Pyramid-Tests/PyramidPropertiesManagerTest.class.st index 379a5629..dcd6f451 100644 --- a/src/Pyramid-Tests/PyramidPropertiesManagerTest.class.st +++ b/src/Pyramid-Tests/PyramidPropertiesManagerTest.class.st @@ -5,11 +5,41 @@ Class { } { #category : #tests } -PyramidPropertiesManagerTest >> testAddProperty [ +PyramidPropertiesManagerTest >> testAddAllProperties [ + | manager prop1 prop2 prop3 | + manager := PyramidPropertiesManager new commandExecutor: Object new; yourself. + prop1 := PyramidProperty new + name: 'Porp1'; + command: PyramidSimpleMockCommand new; + pyramidInputPresenterClass: PyramidNumberInputPresenter; + yourself. + prop2 := PyramidProperty new + name: 'Porp2'; + command: PyramidSimpleMockCommand new; + pyramidInputPresenterClass: PyramidNumberInputPresenter; + yourself. + prop3 := PyramidProperty new + name: 'Porp3'; + command: PyramidSimpleMockCommand new; + pyramidInputPresenterClass: PyramidNumberInputPresenter; + yourself. - | manager prop1 prop2 prop3| - manager := PyramidPropertiesManager new. + manager addAllProperties: { prop1. prop2 . prop3 }. + self assert: (manager properties includes: prop1). + self assert: (manager properties includes: prop2). + self assert: (manager properties includes: prop3). + self assert: manager commandExecutor equals: prop1 commandExecutor. + self assert: manager commandExecutor equals: prop2 commandExecutor. + self assert: manager commandExecutor equals: prop3 commandExecutor. +] + +{ #category : #tests } +PyramidPropertiesManagerTest >> testAddProperty [ + + | manager prop1 prop2 prop3 | + manager := PyramidPropertiesManager new commandExecutor: Object new; + yourself. prop1 := PyramidProperty new name: 'Porp1'; command: PyramidSimpleMockCommand new; @@ -32,6 +62,9 @@ PyramidPropertiesManagerTest >> testAddProperty [ self assert: (manager properties includes: prop1). self assert: (manager properties includes: prop2). self assert: (manager properties includes: prop3). + self assert: manager commandExecutor equals: prop1 commandExecutor. + self assert: manager commandExecutor equals: prop2 commandExecutor. + self assert: manager commandExecutor equals: prop3 commandExecutor ] { #category : #tests } @@ -99,3 +132,109 @@ PyramidPropertiesManagerTest >> testCommandExecutor [ self assert: prop2 commandExecutor equals: fake2. self assert: prop3 commandExecutor equals: fake2 ] + +{ #category : #tests } +PyramidPropertiesManagerTest >> testRemoveAllProperties [ + + | manager prop1 prop2 prop3 | + manager := PyramidPropertiesManager new + commandExecutor: Object new; + yourself. + prop1 := PyramidProperty new + name: 'Porp1'; + command: PyramidSimpleMockCommand new; + pyramidInputPresenterClass: PyramidNumberInputPresenter; + yourself. + prop2 := PyramidProperty new + name: 'Porp2'; + command: PyramidSimpleMockCommand new; + pyramidInputPresenterClass: PyramidNumberInputPresenter; + yourself. + prop3 := PyramidProperty new + name: 'Porp3'; + command: PyramidSimpleMockCommand new; + pyramidInputPresenterClass: PyramidNumberInputPresenter; + yourself. + + manager addAllProperties: { + prop1. + prop2. + prop3 }. + self assert: (manager properties includes: prop1). + self assert: (manager properties includes: prop2). + self assert: (manager properties includes: prop3). + self assert: manager commandExecutor equals: prop1 commandExecutor. + self assert: manager commandExecutor equals: prop2 commandExecutor. + self assert: manager commandExecutor equals: prop3 commandExecutor. + manager removeAllProperties. + self deny: (manager properties includes: prop1). + self deny: (manager properties includes: prop2). + self deny: (manager properties includes: prop3). + self deny: manager commandExecutor equals: prop1 commandExecutor. + self deny: manager commandExecutor equals: prop2 commandExecutor. + self deny: manager commandExecutor equals: prop3 commandExecutor. +] + +{ #category : #tests } +PyramidPropertiesManagerTest >> testRemoveProperty [ + + | manager prop1 prop2 prop3 hasFailed | + manager := PyramidPropertiesManager new + commandExecutor: Object new; + yourself. + prop1 := PyramidProperty new + name: 'Porp1'; + command: PyramidSimpleMockCommand new; + pyramidInputPresenterClass: PyramidNumberInputPresenter; + yourself. + prop2 := PyramidProperty new + name: 'Porp2'; + command: PyramidSimpleMockCommand new; + pyramidInputPresenterClass: PyramidNumberInputPresenter; + yourself. + prop3 := PyramidProperty new + name: 'Porp3'; + command: PyramidSimpleMockCommand new; + pyramidInputPresenterClass: PyramidNumberInputPresenter; + yourself. + + manager addAllProperties: { + prop1. + prop2. + prop3 }. + self assert: (manager properties includes: prop1). + self assert: (manager properties includes: prop2). + self assert: (manager properties includes: prop3). + self assert: manager commandExecutor equals: prop1 commandExecutor. + self assert: manager commandExecutor equals: prop2 commandExecutor. + self assert: manager commandExecutor equals: prop3 commandExecutor. + manager removeProperty: prop1. + self deny: (manager properties includes: prop1). + self assert: (manager properties includes: prop2). + self assert: (manager properties includes: prop3). + self deny: manager commandExecutor equals: prop1 commandExecutor. + self assert: manager commandExecutor equals: prop2 commandExecutor. + self assert: manager commandExecutor equals: prop3 commandExecutor. + manager removeProperty: prop2. + self deny: (manager properties includes: prop1). + self deny: (manager properties includes: prop2). + self assert: (manager properties includes: prop3). + self deny: manager commandExecutor equals: prop1 commandExecutor. + self deny: manager commandExecutor equals: prop2 commandExecutor. + self assert: manager commandExecutor equals: prop3 commandExecutor. + manager removeProperty: prop3. + self deny: (manager properties includes: prop1). + self deny: (manager properties includes: prop2). + self deny: (manager properties includes: prop3). + self deny: manager commandExecutor equals: prop1 commandExecutor. + self deny: manager commandExecutor equals: prop2 commandExecutor. + self deny: manager commandExecutor equals: prop3 commandExecutor. + hasFailed := false. + [ manager removeProperty: prop3 ] + on: PyramidPropertyNotInstalledError + do: [ :error | + self assert: error manager equals: manager. + self assert: error property equals: prop3. + hasFailed := true ]. + self assert: hasFailed +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidSelectorContainsInvalidTypeInterpreter.class.st b/src/Pyramid-Toplo-Incubator/PyramidSelectorContainsInvalidTypeInterpreter.class.st new file mode 100644 index 00000000..e1b700da --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidSelectorContainsInvalidTypeInterpreter.class.st @@ -0,0 +1,184 @@ +Class { + #name : #PyramidSelectorContainsInvalidTypeInterpreter, + #superclass : #ToElementSelectorVisitor, + #instVars : [ + 'theme', + 'targetStack', + 'result' + ], + #category : #'Pyramid-Toplo-Incubator' +} + +{ #category : #operating } +PyramidSelectorContainsInvalidTypeInterpreter >> check: aSelector on: anElement [ + + targetStack := Stack new. + self push: anElement. + result := true. + aSelector accept: self. + ^ result +] + +{ #category : #initialization } +PyramidSelectorContainsInvalidTypeInterpreter >> initialize [ + + super initialize. + result := false +] + +{ #category : #accessing } +PyramidSelectorContainsInvalidTypeInterpreter >> pop [ + + ^ targetStack pop +] + +{ #category : #accessing } +PyramidSelectorContainsInvalidTypeInterpreter >> push: anElement [ + + self themeDo: [ :th | + anElement skinManagerDo: [ :sm | sm setUp: anElement forTheme: th ] ]. + targetStack push: anElement +] + +{ #category : #accessing } +PyramidSelectorContainsInvalidTypeInterpreter >> result [ + + ^ result +] + +{ #category : #accessing } +PyramidSelectorContainsInvalidTypeInterpreter >> theme [ + + ^ theme +] + +{ #category : #accessing } +PyramidSelectorContainsInvalidTypeInterpreter >> theme: aTheme [ + + theme := aTheme +] + +{ #category : #accessing } +PyramidSelectorContainsInvalidTypeInterpreter >> themeDo: aBlock [ + + self theme ifNil: [ ^ self ]. + aBlock value: self theme +] + +{ #category : #accessing } +PyramidSelectorContainsInvalidTypeInterpreter >> top [ + + ^ targetStack top +] + +{ #category : #visiting } +PyramidSelectorContainsInvalidTypeInterpreter >> visitActionSelector: aSelector [ + + result := aSelector action value: self top +] + +{ #category : #visiting } +PyramidSelectorContainsInvalidTypeInterpreter >> visitAndSelector: aSelector [ + + aSelector left accept: self. + result ifFalse: [ ^ self ]. + aSelector right accept: self. +] + +{ #category : #visiting } +PyramidSelectorContainsInvalidTypeInterpreter >> visitChildSelector: aSelector [ + + | parent | + aSelector left accept: self. + result ifFalse: [ ^ self ]. + + result := false. + parent := self top. + "evaluate only for children at a given depth or at any depth if selector depth is not specified " + parent allChildrenBreadthFirstWithDepthDo: [ :child :depth | + (aSelector depth isNil or: [ aSelector depth = depth ]) ifTrue: [ + self push: child. + aSelector right accept: self. + self pop. + result ifTrue: [ ^ self ] ] ] +] + +{ #category : #visiting } +PyramidSelectorContainsInvalidTypeInterpreter >> visitIdSelector: aSelector [ + + result := aSelector id = self top id +] + +{ #category : #visiting } +PyramidSelectorContainsInvalidTypeInterpreter >> visitNotSelector: aSelector [ + + self flag: #TODO. + aSelector left accept: self. + "result := result not" +] + +{ #category : #visiting } +PyramidSelectorContainsInvalidTypeInterpreter >> visitOrSelector: aSelector [ + + aSelector left accept: self. + result ifTrue: [ ^ self ]. + aSelector right accept: self. +] + +{ #category : #visiting } +PyramidSelectorContainsInvalidTypeInterpreter >> visitParentSelector: aSelector [ + + | current depth | + aSelector left accept: self. + result ifFalse: [ ^ self ]. + + result := false. + current := self top. + depth := aSelector depth. + + [ + current := current parent. + current ifNil: [ ^ self ]. + depth ifNotNil: [ + depth := depth - 1. + depth < 0 ifTrue: [ ^ self ] ]. + (depth isNil or: [ depth isZero ]) ifTrue: [ + self push: current. + aSelector right accept: self. + self pop. + (depth notNil or: [ result ]) ifTrue: [ ^ self ] ] ] repeat +] + +{ #category : #visiting } +PyramidSelectorContainsInvalidTypeInterpreter >> visitSiblingSelector: aSelector [ + + | current | + aSelector left accept: self. + result ifFalse: [ ^ self ]. + + result := false. + current := self top. + current siblingsDo: [ :sib | + self push: sib. + aSelector right accept: self. + self pop. + result ifTrue: [ ^ self ] ] +] + +{ #category : #visiting } +PyramidSelectorContainsInvalidTypeInterpreter >> visitStyleStampSelector: aSelector [ + + result := true +] + +{ #category : #visiting } +PyramidSelectorContainsInvalidTypeInterpreter >> visitTypeSelector: aSelector [ + + result := (aSelector selectType: self top class) +] + +{ #category : #visiting } +PyramidSelectorContainsInvalidTypeInterpreter >> visitUniversalSelector: aSelector [ + + result := true +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st b/src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st new file mode 100644 index 00000000..6a161b66 --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st @@ -0,0 +1,53 @@ +Class { + #name : #PyramidSelectorPossibleStamps, + #superclass : #Object, + #instVars : [ + 'theme' + ], + #category : #'Pyramid-Toplo-Incubator' +} + +{ #category : #'as yet unclassified' } +PyramidSelectorPossibleStamps >> findAllSelectorFor: aBlElement [ + + ^ self theme styleSheet styleRules flatCollect: [ + :rule | + self findAllSelectorFor: aBlElement on: rule ]. +] + +{ #category : #'as yet unclassified' } +PyramidSelectorPossibleStamps >> findAllSelectorFor: aBlElement on: aToStyleRule [ + + | interpreter | + interpreter := PyramidSelectorContainsInvalidTypeInterpreter new. + interpreter check: aToStyleRule selector on: aBlElement. + interpreter result + ifTrue: [ + ^ (aToStyleRule styleRules flatCollect: [ :each | + self findAllSelectorFor: aBlElement on: each ]) + , { aToStyleRule selector } ] + ifFalse: [ ^ { } ] +] + +{ #category : #'as yet unclassified' } +PyramidSelectorPossibleStamps >> findAllStampsFor: aBlElement [ + + | allValidSelectors allStampsSelectors | + allValidSelectors := self findAllSelectorFor: aBlElement. + allStampsSelectors := allValidSelectors select: [ :each | + each class = ToStampSelector ]. + ^ (allStampsSelectors flatCollect: [ :each | each allStamps ]) asSet + sorted +] + +{ #category : #accessing } +PyramidSelectorPossibleStamps >> theme [ + + ^ theme +] + +{ #category : #accessing } +PyramidSelectorPossibleStamps >> theme: anObject [ + + theme := anObject +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidStampCommand.class.st b/src/Pyramid-Toplo-Incubator/PyramidStampCommand.class.st new file mode 100644 index 00000000..0b4f8e81 --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidStampCommand.class.st @@ -0,0 +1,34 @@ +Class { + #name : #PyramidStampCommand, + #superclass : #PyramidAbstractBlocCommand, + #instVars : [ + 'stamp' + ], + #category : #'Pyramid-Toplo-Incubator' +} + +{ #category : #'as yet unclassified' } +PyramidStampCommand >> getValueFor: anObject [ + + ^ anObject hasStamp: self stamp +] + +{ #category : #'as yet unclassified' } +PyramidStampCommand >> setValueFor: anObject with: aBoolean [ + + aBoolean + ifTrue: [ anObject addStamp: self stamp ] + ifFalse: [ anObject removeStamp: self stamp ] +] + +{ #category : #accessing } +PyramidStampCommand >> stamp [ + + ^ stamp +] + +{ #category : #accessing } +PyramidStampCommand >> stamp: anObject [ + + stamp := anObject +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st index a6b0a04a..4335f4a5 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st @@ -1,5 +1,38 @@ Class { #name : #PyramidStyleSheetEditorPresenter, #superclass : #SpPresenter, + #instVars : [ + 'themeSelector', + 'styleSheetEditor', + 'stampPresenter' + ], #category : #'Pyramid-Toplo-Incubator' } + +{ #category : #accessing } +PyramidStyleSheetEditorPresenter >> defaultLayout [ + + ^ SpBoxLayout new + spacing: 4; + add: 'Toto' expand: false; + add: self stampPresenter expand: true; + yourself +] + +{ #category : #initialization } +PyramidStyleSheetEditorPresenter >> initializePresenters [ + + stampPresenter := SpNullPresenter new +] + +{ #category : #accessing } +PyramidStyleSheetEditorPresenter >> stampPresenter [ + + ^ stampPresenter +] + +{ #category : #accessing } +PyramidStyleSheetEditorPresenter >> stampPresenter: anObject [ + + stampPresenter := anObject +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st index 40e7d76f..7ea6450d 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st @@ -7,3 +7,34 @@ Class { ], #category : #'Pyramid-Toplo-Incubator' } + +{ #category : #layout } +PyramidThemePresenter >> defaultLayout [ + + ^ SpBoxLayout newVertical spacing: 4; add: self themeSelector expand: false; add: self styleSheetEditor expand: true; yourself +] + +{ #category : #accessing } +PyramidThemePresenter >> editor: aPyramidEditor [ + + self themeSelector projectModel: aPyramidEditor projectModel +] + +{ #category : #layout } +PyramidThemePresenter >> initializePresenters [ + + themeSelector := PyramidThemeSelectorPresenter new. + styleSheetEditor := PyramidStyleSheetEditorPresenter new +] + +{ #category : #layout } +PyramidThemePresenter >> styleSheetEditor [ + + ^ styleSheetEditor +] + +{ #category : #layout } +PyramidThemePresenter >> themeSelector [ + + ^ themeSelector +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemePropertyStrategy.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemePropertyStrategy.class.st new file mode 100644 index 00000000..a24febb3 --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidThemePropertyStrategy.class.st @@ -0,0 +1,43 @@ +Class { + #name : #PyramidThemePropertyStrategy, + #superclass : #PyramidHideEmptyPropertyStrategy, + #category : #'Pyramid-Toplo-Incubator' +} + +{ #category : #'as yet unclassified' } +PyramidThemePropertyStrategy >> buildPresenterFromCollection: aCollection andManager: aManager [ + + aManager removeAllProperties. + aManager addAllProperties: (self propertiesFor: aCollection). + ^ super buildPresenterFromCollection: aCollection andManager: aManager +] + +{ #category : #'as yet unclassified' } +PyramidThemePropertyStrategy >> propertiesFor: aCollectionOfElements [ + + | elementsWithStyleSheetTheme allPossibleStamps allCommonStamps | + elementsWithStyleSheetTheme := aCollectionOfElements asOrderedCollection select: [ + :element | + element isAttachedToSceneGraph and: [ element toTheme isKindOf: + ToStyleSheetTheme ] ]. + elementsWithStyleSheetTheme ifEmpty: [ ^ { } ]. + allPossibleStamps := elementsWithStyleSheetTheme collect: [ :each | + PyramidSelectorPossibleStamps new + theme: each toTheme; + findAllStampsFor: each ]. + allCommonStamps := allPossibleStamps first. + allPossibleStamps do: [ :each | + allCommonStamps := allCommonStamps & each ]. + ^ allCommonStamps collect: [ :each | self propertyForStamp: each ] +] + +{ #category : #'as yet unclassified' } +PyramidThemePropertyStrategy >> propertyForStamp: aStamp [ + + | property | + property := PyramidProperty new name: aStamp; command: (PyramidStampCommand new stamp: aStamp; yourself); pyramidInputPresenterClass: PyramidSwitchInputPresenter ; yourself. + property pyramidInputPresenterStrings onLabel: 'Has stamp'. + property pyramidInputPresenterStrings offLabel: 'Has not stamp'. + property pyramidInputPresenterStrings uncertainLabel: 'Uncertain'. + ^ property +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st index 62b7422a..ad0cf8ce 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st @@ -57,6 +57,7 @@ PyramidThemeSelectorPresenter >> defaultLayout [ add: self variantSelector; yourself) expand: false; + add: SpNullPresenter new height: 10; yourself ] diff --git a/src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st b/src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st index b325ea8b..5557b584 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st @@ -4,7 +4,8 @@ Class { #traits : 'TPyramidPlugin', #classTraits : 'TPyramidPlugin classTrait', #instVars : [ - 'themePresenter' + 'themePresenter', + 'themePropertyManager' ], #category : #'Pyramid-Toplo-Incubator' } @@ -23,15 +24,19 @@ PyramidToploThemePlugin >> addPanelsOn: aPyramidSimpleWindow [ { #category : #connecting } PyramidToploThemePlugin >> connectOn: aPyramidEditor [ - self themePresenter projectModel: aPyramidEditor projectModel - - + self themePresenter editor: aPyramidEditor. + self themePropertyManager projectModel: aPyramidEditor projectModel ] { #category : #initialization } PyramidToploThemePlugin >> initialize [ - themePresenter := PyramidThemeSelectorPresenter new. + themePresenter := PyramidThemePresenter new. + themePropertyManager := PyramidPropertiesManagerForSelection new + presenterStrategy: + PyramidThemePropertyStrategy new; + yourself. + themePresenter styleSheetEditor stampPresenter: themePropertyManager presenter ] { #category : #accessing } @@ -39,3 +44,9 @@ PyramidToploThemePlugin >> themePresenter [ ^ themePresenter ] + +{ #category : #accessing } +PyramidToploThemePlugin >> themePropertyManager [ + + ^ themePropertyManager +] diff --git a/src/Pyramid-Toplo-Incubator/ToSelectorPossibleStamps.class.st b/src/Pyramid-Toplo-Incubator/ToSelectorPossibleStamps.class.st deleted file mode 100644 index 00a5c9dd..00000000 --- a/src/Pyramid-Toplo-Incubator/ToSelectorPossibleStamps.class.st +++ /dev/null @@ -1,40 +0,0 @@ -Class { - #name : #ToSelectorPossibleStamps, - #superclass : #Object, - #instVars : [ - 'theme' - ], - #category : #'Pyramid-Toplo-Incubator' -} - -{ #category : #'as yet unclassified' } -ToSelectorPossibleStamps >> findPossibleStampsFor: aBlElement [ - - ^ self theme styleSheet styleRules flatCollect: [ :rule | - self findPossibleStampsFor: aBlElement on: rule ] -] - -{ #category : #'as yet unclassified' } -ToSelectorPossibleStamps >> findPossibleStampsFor: aBlElement on: aToStyleRule [ - - | interpreter | - interpreter := ToSelectorInterpreter new. - interpreter check: aToStyleRule selector on: aBlElement. - interpreter result - ifTrue: [ - ^ aToStyleRule styleRules flatCollect: [ :each | - self findPossibleStampsFor: aBlElement on: each ] ] - ifFalse: [ ^ { aToStyleRule selector } ] -] - -{ #category : #accessing } -ToSelectorPossibleStamps >> theme [ - - ^ theme -] - -{ #category : #accessing } -ToSelectorPossibleStamps >> theme: anObject [ - - theme := anObject -] diff --git a/src/Pyramid/PyramidPropertiesManager.class.st b/src/Pyramid/PyramidPropertiesManager.class.st index 231003aa..38bfd13f 100644 --- a/src/Pyramid/PyramidPropertiesManager.class.st +++ b/src/Pyramid/PyramidPropertiesManager.class.st @@ -10,6 +10,12 @@ Class { #category : #'Pyramid-property' } +{ #category : #removing } +PyramidPropertiesManager >> addAllProperties: aCollection [ + + aCollection do: [ :each | self addProperty: each ] +] + { #category : #adding } PyramidPropertiesManager >> addProperty: aPyramidProperty [ @@ -72,3 +78,17 @@ PyramidPropertiesManager >> properties [ ^ properties ] + +{ #category : #removing } +PyramidPropertiesManager >> removeAllProperties [ + + self properties asArray do: [ :each | self removeProperty: each ]. +] + +{ #category : #removing } +PyramidPropertiesManager >> removeProperty: aProperty [ + + (aProperty commandExecutor == self commandExecutor) ifFalse: [PyramidPropertyNotInstalledError new property: aProperty; manager: self; signal ]. + aProperty commandExecutor: nil. + self properties remove: aProperty +] diff --git a/src/Pyramid/PyramidPropertyNotInstalledError.class.st b/src/Pyramid/PyramidPropertyNotInstalledError.class.st new file mode 100644 index 00000000..839cb6c3 --- /dev/null +++ b/src/Pyramid/PyramidPropertyNotInstalledError.class.st @@ -0,0 +1,33 @@ +Class { + #name : #PyramidPropertyNotInstalledError, + #superclass : #PyramidError, + #instVars : [ + 'manager', + 'property' + ], + #category : #'Pyramid-property' +} + +{ #category : #accessing } +PyramidPropertyNotInstalledError >> manager [ + + ^ manager +] + +{ #category : #accessing } +PyramidPropertyNotInstalledError >> manager: anObject [ + + manager := anObject +] + +{ #category : #accessing } +PyramidPropertyNotInstalledError >> property [ + + ^ property +] + +{ #category : #accessing } +PyramidPropertyNotInstalledError >> property: anObject [ + + property := anObject +] From c9b2977f1983480cb75673051e758279f34cc453 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Wed, 31 Jan 2024 14:02:43 +0100 Subject: [PATCH 03/27] Fix bug tooltip on stamps update --- .../PyramidPropertiesManagerTest.class.st | 13 +--- ...ContainsValidSelectorInterpreter.class.st} | 64 ++++++++++--------- .../PyramidSelectorPossibleStamps.class.st | 2 +- .../PyramidStyleSheetEditorPresenter.class.st | 7 +- src/Pyramid/PyramidPropertiesManager.class.st | 10 ++- 5 files changed, 48 insertions(+), 48 deletions(-) rename src/Pyramid-Toplo-Incubator/{PyramidSelectorContainsInvalidTypeInterpreter.class.st => PyramidContainsValidSelectorInterpreter.class.st} (60%) diff --git a/src/Pyramid-Tests/PyramidPropertiesManagerTest.class.st b/src/Pyramid-Tests/PyramidPropertiesManagerTest.class.st index dcd6f451..8a704bc4 100644 --- a/src/Pyramid-Tests/PyramidPropertiesManagerTest.class.st +++ b/src/Pyramid-Tests/PyramidPropertiesManagerTest.class.st @@ -170,9 +170,7 @@ PyramidPropertiesManagerTest >> testRemoveAllProperties [ self deny: (manager properties includes: prop1). self deny: (manager properties includes: prop2). self deny: (manager properties includes: prop3). - self deny: manager commandExecutor equals: prop1 commandExecutor. - self deny: manager commandExecutor equals: prop2 commandExecutor. - self deny: manager commandExecutor equals: prop3 commandExecutor. + ] { #category : #tests } @@ -212,23 +210,14 @@ PyramidPropertiesManagerTest >> testRemoveProperty [ self deny: (manager properties includes: prop1). self assert: (manager properties includes: prop2). self assert: (manager properties includes: prop3). - self deny: manager commandExecutor equals: prop1 commandExecutor. - self assert: manager commandExecutor equals: prop2 commandExecutor. - self assert: manager commandExecutor equals: prop3 commandExecutor. manager removeProperty: prop2. self deny: (manager properties includes: prop1). self deny: (manager properties includes: prop2). self assert: (manager properties includes: prop3). - self deny: manager commandExecutor equals: prop1 commandExecutor. - self deny: manager commandExecutor equals: prop2 commandExecutor. - self assert: manager commandExecutor equals: prop3 commandExecutor. manager removeProperty: prop3. self deny: (manager properties includes: prop1). self deny: (manager properties includes: prop2). self deny: (manager properties includes: prop3). - self deny: manager commandExecutor equals: prop1 commandExecutor. - self deny: manager commandExecutor equals: prop2 commandExecutor. - self deny: manager commandExecutor equals: prop3 commandExecutor. hasFailed := false. [ manager removeProperty: prop3 ] on: PyramidPropertyNotInstalledError diff --git a/src/Pyramid-Toplo-Incubator/PyramidSelectorContainsInvalidTypeInterpreter.class.st b/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreter.class.st similarity index 60% rename from src/Pyramid-Toplo-Incubator/PyramidSelectorContainsInvalidTypeInterpreter.class.st rename to src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreter.class.st index e1b700da..faec141a 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidSelectorContainsInvalidTypeInterpreter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreter.class.st @@ -1,5 +1,5 @@ Class { - #name : #PyramidSelectorContainsInvalidTypeInterpreter, + #name : #PyramidContainsValidSelectorInterpreter, #superclass : #ToElementSelectorVisitor, #instVars : [ 'theme', @@ -10,7 +10,7 @@ Class { } { #category : #operating } -PyramidSelectorContainsInvalidTypeInterpreter >> check: aSelector on: anElement [ +PyramidContainsValidSelectorInterpreter >> check: aSelector on: anElement [ targetStack := Stack new. self push: anElement. @@ -20,20 +20,20 @@ PyramidSelectorContainsInvalidTypeInterpreter >> check: aSelector on: anElement ] { #category : #initialization } -PyramidSelectorContainsInvalidTypeInterpreter >> initialize [ +PyramidContainsValidSelectorInterpreter >> initialize [ super initialize. - result := false + result := true ] { #category : #accessing } -PyramidSelectorContainsInvalidTypeInterpreter >> pop [ +PyramidContainsValidSelectorInterpreter >> pop [ ^ targetStack pop ] { #category : #accessing } -PyramidSelectorContainsInvalidTypeInterpreter >> push: anElement [ +PyramidContainsValidSelectorInterpreter >> push: anElement [ self themeDo: [ :th | anElement skinManagerDo: [ :sm | sm setUp: anElement forTheme: th ] ]. @@ -41,44 +41,44 @@ PyramidSelectorContainsInvalidTypeInterpreter >> push: anElement [ ] { #category : #accessing } -PyramidSelectorContainsInvalidTypeInterpreter >> result [ +PyramidContainsValidSelectorInterpreter >> result [ ^ result ] { #category : #accessing } -PyramidSelectorContainsInvalidTypeInterpreter >> theme [ +PyramidContainsValidSelectorInterpreter >> theme [ ^ theme ] { #category : #accessing } -PyramidSelectorContainsInvalidTypeInterpreter >> theme: aTheme [ +PyramidContainsValidSelectorInterpreter >> theme: aTheme [ theme := aTheme ] { #category : #accessing } -PyramidSelectorContainsInvalidTypeInterpreter >> themeDo: aBlock [ +PyramidContainsValidSelectorInterpreter >> themeDo: aBlock [ self theme ifNil: [ ^ self ]. aBlock value: self theme ] { #category : #accessing } -PyramidSelectorContainsInvalidTypeInterpreter >> top [ +PyramidContainsValidSelectorInterpreter >> top [ ^ targetStack top ] { #category : #visiting } -PyramidSelectorContainsInvalidTypeInterpreter >> visitActionSelector: aSelector [ +PyramidContainsValidSelectorInterpreter >> visitActionSelector: aSelector [ result := aSelector action value: self top ] { #category : #visiting } -PyramidSelectorContainsInvalidTypeInterpreter >> visitAndSelector: aSelector [ +PyramidContainsValidSelectorInterpreter >> visitAndSelector: aSelector [ aSelector left accept: self. result ifFalse: [ ^ self ]. @@ -86,7 +86,7 @@ PyramidSelectorContainsInvalidTypeInterpreter >> visitAndSelector: aSelector [ ] { #category : #visiting } -PyramidSelectorContainsInvalidTypeInterpreter >> visitChildSelector: aSelector [ +PyramidContainsValidSelectorInterpreter >> visitChildSelector: aSelector [ | parent | aSelector left accept: self. @@ -104,21 +104,26 @@ PyramidSelectorContainsInvalidTypeInterpreter >> visitChildSelector: aSelector [ ] { #category : #visiting } -PyramidSelectorContainsInvalidTypeInterpreter >> visitIdSelector: aSelector [ +PyramidContainsValidSelectorInterpreter >> visitIdSelector: aSelector [ result := aSelector id = self top id ] { #category : #visiting } -PyramidSelectorContainsInvalidTypeInterpreter >> visitNotSelector: aSelector [ +PyramidContainsValidSelectorInterpreter >> visitNotSelector: aSelector [ + " + If left accept: self = true -> uncertain. + If left accept: self = true && left contains id = true -> false. + If left accept: self = true && left contains id = false -> true. + If left accept: self = false -> true. + " - self flag: #TODO. aSelector left accept: self. - "result := result not" + result ifFalse: [ result := true ] ] { #category : #visiting } -PyramidSelectorContainsInvalidTypeInterpreter >> visitOrSelector: aSelector [ +PyramidContainsValidSelectorInterpreter >> visitOrSelector: aSelector [ aSelector left accept: self. result ifTrue: [ ^ self ]. @@ -126,13 +131,13 @@ PyramidSelectorContainsInvalidTypeInterpreter >> visitOrSelector: aSelector [ ] { #category : #visiting } -PyramidSelectorContainsInvalidTypeInterpreter >> visitParentSelector: aSelector [ +PyramidContainsValidSelectorInterpreter >> visitParentSelector: aSelector [ | current depth | aSelector left accept: self. result ifFalse: [ ^ self ]. - result := false. + result := true. current := self top. depth := aSelector depth. @@ -150,35 +155,34 @@ PyramidSelectorContainsInvalidTypeInterpreter >> visitParentSelector: aSelector ] { #category : #visiting } -PyramidSelectorContainsInvalidTypeInterpreter >> visitSiblingSelector: aSelector [ +PyramidContainsValidSelectorInterpreter >> visitSiblingSelector: aSelector [ | current | aSelector left accept: self. result ifFalse: [ ^ self ]. - result := false. + result := true. current := self top. current siblingsDo: [ :sib | self push: sib. aSelector right accept: self. self pop. + "Condition at least one sibling." result ifTrue: [ ^ self ] ] ] { #category : #visiting } -PyramidSelectorContainsInvalidTypeInterpreter >> visitStyleStampSelector: aSelector [ - - result := true +PyramidContainsValidSelectorInterpreter >> visitStyleStampSelector: aSelector [ +"Do nothing" ] { #category : #visiting } -PyramidSelectorContainsInvalidTypeInterpreter >> visitTypeSelector: aSelector [ +PyramidContainsValidSelectorInterpreter >> visitTypeSelector: aSelector [ result := (aSelector selectType: self top class) ] { #category : #visiting } -PyramidSelectorContainsInvalidTypeInterpreter >> visitUniversalSelector: aSelector [ - - result := true +PyramidContainsValidSelectorInterpreter >> visitUniversalSelector: aSelector [ +"Do nothing" ] diff --git a/src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st b/src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st index 6a161b66..09e23bf4 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st @@ -19,7 +19,7 @@ PyramidSelectorPossibleStamps >> findAllSelectorFor: aBlElement [ PyramidSelectorPossibleStamps >> findAllSelectorFor: aBlElement on: aToStyleRule [ | interpreter | - interpreter := PyramidSelectorContainsInvalidTypeInterpreter new. + interpreter := PyramidContainsValidSelectorInterpreter new. interpreter check: aToStyleRule selector on: aBlElement. interpreter result ifTrue: [ diff --git a/src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st index 4335f4a5..2343e1c6 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st @@ -14,8 +14,11 @@ PyramidStyleSheetEditorPresenter >> defaultLayout [ ^ SpBoxLayout new spacing: 4; - add: 'Toto' expand: false; - add: self stampPresenter expand: true; + add: (SpLabelPresenter new + label: 'Stamps edition'; + displayBold: [ :t | true ]; + yourself) expand: false; + add: self stampPresenter expand: true; yourself ] diff --git a/src/Pyramid/PyramidPropertiesManager.class.st b/src/Pyramid/PyramidPropertiesManager.class.st index 38bfd13f..06fdd063 100644 --- a/src/Pyramid/PyramidPropertiesManager.class.st +++ b/src/Pyramid/PyramidPropertiesManager.class.st @@ -88,7 +88,11 @@ PyramidPropertiesManager >> removeAllProperties [ { #category : #removing } PyramidPropertiesManager >> removeProperty: aProperty [ - (aProperty commandExecutor == self commandExecutor) ifFalse: [PyramidPropertyNotInstalledError new property: aProperty; manager: self; signal ]. - aProperty commandExecutor: nil. - self properties remove: aProperty + + self properties remove: aProperty ifAbsent: [ PyramidPropertyNotInstalledError new + property: aProperty; + manager: self; + signal ] . + + ] From 6c725a37a8747b6f2de13a2f2330d3b3406b082f Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Wed, 31 Jan 2024 15:39:28 +0100 Subject: [PATCH 04/27] Add TU for intrepeter of valid selector --- ...dContainsValidSelectorInterpreter.class.st | 129 ++++--- ...tainsValidSelectorInterpreterTest.class.st | 333 ++++++++++++++++++ 2 files changed, 412 insertions(+), 50 deletions(-) create mode 100644 src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreterTest.class.st diff --git a/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreter.class.st b/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreter.class.st index faec141a..8001360e 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreter.class.st @@ -2,9 +2,10 @@ Class { #name : #PyramidContainsValidSelectorInterpreter, #superclass : #ToElementSelectorVisitor, #instVars : [ - 'theme', 'targetStack', - 'result' + 'validSelectors', + 'invalidSelectors', + 'ignoredSelectors' ], #category : #'Pyramid-Toplo-Incubator' } @@ -14,75 +15,70 @@ PyramidContainsValidSelectorInterpreter >> check: aSelector on: anElement [ targetStack := Stack new. self push: anElement. - result := true. + validSelectors := OrderedCollection new. + invalidSelectors := OrderedCollection new. + ignoredSelectors := OrderedCollection new. aSelector accept: self. - ^ result -] - -{ #category : #initialization } -PyramidContainsValidSelectorInterpreter >> initialize [ - - super initialize. - result := true + ^ self result ] { #category : #accessing } -PyramidContainsValidSelectorInterpreter >> pop [ +PyramidContainsValidSelectorInterpreter >> ignoredSelectors [ - ^ targetStack pop + ^ ignoredSelectors ] { #category : #accessing } -PyramidContainsValidSelectorInterpreter >> push: anElement [ +PyramidContainsValidSelectorInterpreter >> invalidSelectors [ - self themeDo: [ :th | - anElement skinManagerDo: [ :sm | sm setUp: anElement forTheme: th ] ]. - targetStack push: anElement + ^ invalidSelectors ] { #category : #accessing } -PyramidContainsValidSelectorInterpreter >> result [ +PyramidContainsValidSelectorInterpreter >> pop [ - ^ result + ^ targetStack pop ] { #category : #accessing } -PyramidContainsValidSelectorInterpreter >> theme [ +PyramidContainsValidSelectorInterpreter >> push: anElement [ - ^ theme + targetStack push: anElement ] { #category : #accessing } -PyramidContainsValidSelectorInterpreter >> theme: aTheme [ +PyramidContainsValidSelectorInterpreter >> result [ - theme := aTheme + invalidSelectors ifNil: [ ^ false ]. + ^ invalidSelectors isEmpty ] { #category : #accessing } -PyramidContainsValidSelectorInterpreter >> themeDo: aBlock [ +PyramidContainsValidSelectorInterpreter >> top [ - self theme ifNil: [ ^ self ]. - aBlock value: self theme + ^ targetStack top ] { #category : #accessing } -PyramidContainsValidSelectorInterpreter >> top [ +PyramidContainsValidSelectorInterpreter >> validSelectors [ - ^ targetStack top + ^ validSelectors ] { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitActionSelector: aSelector [ - - result := aSelector action value: self top + +(aSelector action value: self top) + ifTrue: [ self validSelectors add: aSelector ] + ifFalse: [ self invalidSelectors add: aSelector ] ] { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitAndSelector: aSelector [ aSelector left accept: self. - result ifFalse: [ ^ self ]. - aSelector right accept: self. + self result ifFalse: [ self invalidSelectors add: self. ^ self ]. + aSelector right accept: self ] { #category : #visiting } @@ -90,23 +86,30 @@ PyramidContainsValidSelectorInterpreter >> visitChildSelector: aSelector [ | parent | aSelector left accept: self. - result ifFalse: [ ^ self ]. + self result ifFalse: [ + self invalidSelectors add: aSelector. + ^ self ]. - result := false. parent := self top. "evaluate only for children at a given depth or at any depth if selector depth is not specified " parent allChildrenBreadthFirstWithDepthDo: [ :child :depth | (aSelector depth isNil or: [ aSelector depth = depth ]) ifTrue: [ self push: child. + self invalidSelectors removeAll. aSelector right accept: self. self pop. - result ifTrue: [ ^ self ] ] ] + self result ifTrue: [ + self validSelectors add: aSelector. + ^ self ] ] ]. + self invalidSelectors add: aSelector ] { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitIdSelector: aSelector [ - result := aSelector id = self top id + (aSelector id = self top id) + ifTrue: [ self validSelectors add: aSelector ] + ifFalse: [ self invalidSelectors add: aSelector ] ] { #category : #visiting } @@ -118,16 +121,27 @@ PyramidContainsValidSelectorInterpreter >> visitNotSelector: aSelector [ If left accept: self = false -> true. " - aSelector left accept: self. - result ifFalse: [ result := true ] + | interpreterForNot | + interpreterForNot := self class new. + interpreterForNot check: aSelector left on: self top. + self invalidSelectors addAll: interpreterForNot validSelectors. + self validSelectors addAll: interpreterForNot invalidSelectors ] { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitOrSelector: aSelector [ aSelector left accept: self. - result ifTrue: [ ^ self ]. + self result ifTrue: [ + self validSelectors add: aSelector. + ^ self ]. aSelector right accept: self. + (self invalidSelectors includes: aSelector right) ifTrue: [ + self invalidSelectors add: aSelector. + ^ self ]. + "It should be alright. we can remove all invalid." + self invalidSelectors removeAll. + self validSelectors add: aSelector ] { #category : #visiting } @@ -135,9 +149,10 @@ PyramidContainsValidSelectorInterpreter >> visitParentSelector: aSelector [ | current depth | aSelector left accept: self. - result ifFalse: [ ^ self ]. + self result ifFalse: [ + self invalidSelectors add: aSelector. + ^ self ]. - result := true. current := self top. depth := aSelector depth. @@ -146,12 +161,18 @@ PyramidContainsValidSelectorInterpreter >> visitParentSelector: aSelector [ current ifNil: [ ^ self ]. depth ifNotNil: [ depth := depth - 1. - depth < 0 ifTrue: [ ^ self ] ]. + depth < 0 ifTrue: [ + self validSelectors add: aSelector. + ^ self ] ]. (depth isNil or: [ depth isZero ]) ifTrue: [ + self invalidSelectors removeAll. self push: current. aSelector right accept: self. self pop. - (depth notNil or: [ result ]) ifTrue: [ ^ self ] ] ] repeat + (depth notNil or: [ self result ]) ifTrue: [ + self validSelectors add: aSelector. + ^ self ] ] ] repeat. + self invalidSelectors add: aSelector ] { #category : #visiting } @@ -159,30 +180,38 @@ PyramidContainsValidSelectorInterpreter >> visitSiblingSelector: aSelector [ | current | aSelector left accept: self. - result ifFalse: [ ^ self ]. + self result ifFalse: [ + self invalidSelectors add: aSelector. + ^ self ]. - result := true. current := self top. current siblingsDo: [ :sib | + self invalidSelectors removeAll. self push: sib. aSelector right accept: self. self pop. - "Condition at least one sibling." - result ifTrue: [ ^ self ] ] + self result ifTrue: [ + self validSelectors add: aSelector. + ^ self ] ]. + self invalidSelectors add: aSelector ] { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitStyleStampSelector: aSelector [ -"Do nothing" + self ignoredSelectors add: aSelector + ] { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitTypeSelector: aSelector [ - result := (aSelector selectType: self top class) + (aSelector selectType: self top class) ifTrue: [ self validSelectors add: aSelector ] ifFalse: [ self invalidSelectors add: aSelector ] ] { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitUniversalSelector: aSelector [ -"Do nothing" + + self ignoredSelectors add: aSelector + + ] diff --git a/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreterTest.class.st b/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreterTest.class.st new file mode 100644 index 00000000..09c56091 --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreterTest.class.st @@ -0,0 +1,333 @@ +Class { + #name : #PyramidContainsValidSelectorInterpreterTest, + #superclass : #TestCase, + #instVars : [ + 'interpreter' + ], + #category : #'Pyramid-Toplo-Incubator' +} + +{ #category : #accessing } +PyramidContainsValidSelectorInterpreterTest >> initialize [ + + super initialize. + interpreter := PyramidContainsValidSelectorInterpreter new. +] + +{ #category : #accessing } +PyramidContainsValidSelectorInterpreterTest >> interpreter [ + + ^ interpreter +] + +{ #category : #tests } +PyramidContainsValidSelectorInterpreterTest >> testVisitActionSelector [ + + | selector element | + selector := [ :e | true ] asActionSelector. + element := ToElement new. + self interpreter check: selector on: element. + self assert: self interpreter result. + + selector := [ :e | false ] asActionSelector. + element := ToElement new. + self interpreter check: selector on: element. + self deny: self interpreter result +] + +{ #category : #tests } +PyramidContainsValidSelectorInterpreterTest >> testVisitAndSelector [ + " + left ok + right ok -> true + left ko + right ok -> false + left ok + right ko -> false + left ko + right ko -> false + " + + | selector element | + selector := ToButton asTypeSelector && #hello asStampSelector. + + element := ToButton new. + self interpreter check: selector on: element. + self assert: self interpreter result. + + element := ToElement new. + self interpreter check: selector on: element. + self deny: self interpreter result. + + selector := #hello asStampSelector && #world asStampSelector. + element := ToElement new. + self interpreter check: selector on: element. + self assert: self interpreter result. +] + +{ #category : #tests } +PyramidContainsValidSelectorInterpreterTest >> testVisitChildSelector [ + " + child ok + parent ok -> true + child ok + parent ko -> false + child ko + parent ok -> false + " + + | selector parent child | + selector := ToButton asTypeSelector withChild: + ToButton asTypeSelector. + + "child ok + parent ok -> true" + parent := ToButton new. + child := ToButton new. + parent addChild: child. + self interpreter check: selector on: parent. + self assert: self interpreter result. + + "child ok + parent ko -> false" + parent := ToElement new. + child := ToButton new. + parent addChild: child. + self interpreter check: selector on: parent. + self deny: self interpreter result. + + "child ko + parent ok -> false" + parent := ToButton new. + child := ToElement new. + parent addChild: child. + self interpreter check: selector on: parent. + self deny: self interpreter result +] + +{ #category : #tests } +PyramidContainsValidSelectorInterpreterTest >> testVisitIdSelector [ + " + id ok -> true + id ko -> false + " + + | selector element | + selector := #hello asIdSelector. + + element := ToElement new id: #hello; yourself. + self interpreter check: selector on: element. + self assert: self interpreter result. + +element := ToElement new. + self interpreter check: selector on: element. + self deny: self interpreter result. +] + +{ #category : #tests } +PyramidContainsValidSelectorInterpreterTest >> testVisitNotSelector [ + + | selector element | + + "action" + selector := [ :e | true ] asActionSelector not. + element := ToElement new. + self interpreter check: selector on: element. + self deny: self interpreter result. + selector := [ :e | false ] asActionSelector not. + element := ToElement new. + self interpreter check: selector on: element. + self assert: self interpreter result. + + "type" + selector := ToButton asTypeSelector not. + element := ToButton new. + self interpreter check: selector on: element. + self deny: self interpreter result. + element := ToElement new. + self interpreter check: selector on: element. + self assert: self interpreter result. + + "stamp" + selector := #hello asStampSelector not. + element := ToElement new + addStamp: #hello; + yourself. + self interpreter check: selector on: element. + self assert: self interpreter result. + element := ToElement new. + self interpreter check: selector on: element. + self assert: self interpreter result. + + "id" + selector := #hello asIdSelector not. + element := ToElement new + id: #hello; + yourself. + self interpreter check: selector on: element. + self deny: self interpreter result. + element := ToElement new. + self interpreter check: selector on: element. + self assert: self interpreter result +] + +{ #category : #tests } +PyramidContainsValidSelectorInterpreterTest >> testVisitOrSelector [ + " + left ok + right ok -> true + left ko + right ok -> true + left ok + right ko -> true + left ko + right ko -> false + " + + | selector element | + selector := ToButton asTypeSelector || ToLabel asTypeSelector. + + element := ToButton new. + self interpreter check: selector on: element. + self assert: self interpreter result. + + element := ToLabel new. + self interpreter check: selector on: element. + self assert: self interpreter result. + + element := ToElement new. + self interpreter check: selector on: element. + self deny: self interpreter result. + + selector := ToButton asTypeSelector || #hello asStampSelector. + element := ToButton new. + self interpreter check: selector on: element. + self assert: self interpreter result. + + selector := #hello asStampSelector || #world asStampSelector. + element := ToElement new. + self interpreter check: selector on: element. + self assert: self interpreter result +] + +{ #category : #tests } +PyramidContainsValidSelectorInterpreterTest >> testVisitParentSelector [ + " + child ok + parent ok -> true + child ok + parent ko -> false + child kk + parent ok -> false + " + + | selector parent child | + selector := ToButton asTypeSelector withParent: + ToButton asTypeSelector. + + "child ok + parent ok -> true" + parent := ToButton new. + child := ToButton new. + parent addChild: child. + self interpreter check: selector on: child. + self assert: self interpreter result. + + "child ok + parent ko -> false" + parent := ToElement new. + child := ToButton new. + parent addChild: child. + self interpreter check: selector on: child. + self deny: self interpreter result. + + "child ko + parent ok -> false" + parent := ToButton new. + child := ToElement new. + parent addChild: child. + self interpreter check: selector on: child. + self deny: self interpreter result. + + +] + +{ #category : #tests } +PyramidContainsValidSelectorInterpreterTest >> testVisitSiblingSelector [ + " + child ok + sibling1 ok + sibling2 ok -> true + child ok + sibling1 ok + sibling2 ko -> true + child ok + sibling1 ko + sibling2 ko -> false + child ko + sibling1 ok + sibling2 ok -> false + " + + | selector parent child sibling1 sibling2 | + selector := ToButton asTypeSelector withSibling: + ToButton asTypeSelector. + + "child ok + sibling1 ok + sibling2 ok -> true" + parent := ToElement new. + child := ToButton new. + sibling1 := ToButton new. + sibling2 := ToButton new. + parent addChild: child. + parent addChild: sibling1. + parent addChild: sibling2. + + self interpreter check: selector on: child. + self assert: self interpreter result. + + "child ok + sibling1 ok + sibling2 ko -> true" + parent := ToElement new. + child := ToButton new. + sibling1 := ToButton new. + sibling2 := ToElement new. + parent addChild: child. + parent addChild: sibling1. + parent addChild: sibling2. + + self interpreter check: selector on: child. + self assert: self interpreter result. + + "child ok + sibling1 ko + sibling2 ko -> false" + parent := ToElement new. + child := ToButton new. + sibling1 := ToElement new. + sibling2 := ToElement new. + parent addChild: child. + parent addChild: sibling1. + parent addChild: sibling2. + + self interpreter check: selector on: child. + self deny: self interpreter result. + + "child ko + sibling1 ok + sibling2 ok -> false" + parent := ToElement new. + child := ToElement new. + sibling1 := ToButton new. + sibling2 := ToButton new. + parent addChild: child. + parent addChild: sibling1. + parent addChild: sibling2. + + self interpreter check: selector on: child. + self deny: self interpreter result +] + +{ #category : #tests } +PyramidContainsValidSelectorInterpreterTest >> testVisitStyleStampSelector [ +"Test is true because stamps is authorized" + | element | + element := ToElement new. + self interpreter check: #hello asStampSelector on: element. + self assert: self interpreter result. + element addStamp: #hello. + self interpreter check: #hello asStampSelector on: element. + self assert: self interpreter result +] + +{ #category : #tests } +PyramidContainsValidSelectorInterpreterTest >> testVisitTypeSelector [ + " + Return true if type is ok. + Return false if type is ko. + " + + | element | + element := ToElement new. + self interpreter check: ToButton asTypeSelector on: element. + self deny: self interpreter result. + element := ToButton new. + self interpreter check: ToButton asTypeSelector on: element. + self assert: self interpreter result +] + +{ #category : #tests } +PyramidContainsValidSelectorInterpreterTest >> testVisitUniversalSelector [ + "Test is true universal is authorized" + + | element | + element := ToElement new. + self interpreter check: ToUniversalSelector new on: element. + self assert: self interpreter result +] From 0a609851aa55bbfc42e95967d316c3f1e7b751c4 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Wed, 31 Jan 2024 17:20:35 +0100 Subject: [PATCH 05/27] Fix labeled icon bug on ToButton --- ...dContainsValidSelectorInterpreter.class.st | 165 ++++++++++-------- ...tainsValidSelectorInterpreterTest.class.st | 32 +++- .../PyramidSelectorPossibleStamps.class.st | 6 +- .../PyramidStampCommandTest.class.st | 29 +++ .../PyramidThemePropertyStrategy.class.st | 10 +- 5 files changed, 155 insertions(+), 87 deletions(-) create mode 100644 src/Pyramid-Toplo-Incubator/PyramidStampCommandTest.class.st diff --git a/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreter.class.st b/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreter.class.st index 8001360e..0ffd8db0 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreter.class.st @@ -2,7 +2,7 @@ Class { #name : #PyramidContainsValidSelectorInterpreter, #superclass : #ToElementSelectorVisitor, #instVars : [ - 'targetStack', + 'targetElement', 'validSelectors', 'invalidSelectors', 'ignoredSelectors' @@ -13,13 +13,11 @@ Class { { #category : #operating } PyramidContainsValidSelectorInterpreter >> check: aSelector on: anElement [ - targetStack := Stack new. - self push: anElement. + targetElement := anElement. validSelectors := OrderedCollection new. invalidSelectors := OrderedCollection new. ignoredSelectors := OrderedCollection new. aSelector accept: self. - ^ self result ] { #category : #accessing } @@ -34,18 +32,6 @@ PyramidContainsValidSelectorInterpreter >> invalidSelectors [ ^ invalidSelectors ] -{ #category : #accessing } -PyramidContainsValidSelectorInterpreter >> pop [ - - ^ targetStack pop -] - -{ #category : #accessing } -PyramidContainsValidSelectorInterpreter >> push: anElement [ - - targetStack push: anElement -] - { #category : #accessing } PyramidContainsValidSelectorInterpreter >> result [ @@ -54,9 +40,10 @@ PyramidContainsValidSelectorInterpreter >> result [ ] { #category : #accessing } -PyramidContainsValidSelectorInterpreter >> top [ +PyramidContainsValidSelectorInterpreter >> targetElement [ - ^ targetStack top + + ^ targetElement ] { #category : #accessing } @@ -67,8 +54,8 @@ PyramidContainsValidSelectorInterpreter >> validSelectors [ { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitActionSelector: aSelector [ - -(aSelector action value: self top) + + (aSelector action value: self targetElement) ifTrue: [ self validSelectors add: aSelector ] ifFalse: [ self invalidSelectors add: aSelector ] ] @@ -76,30 +63,46 @@ PyramidContainsValidSelectorInterpreter >> visitActionSelector: aSelector [ { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitAndSelector: aSelector [ - aSelector left accept: self. - self result ifFalse: [ self invalidSelectors add: self. ^ self ]. - aSelector right accept: self + | interpreterForAndLeft interpreterForAndRight | + interpreterForAndLeft := self class new. + interpreterForAndLeft check: aSelector left on: self targetElement. + + interpreterForAndLeft result ifFalse: [ + self invalidSelectors add: self. + ^ self ]. + + interpreterForAndRight := self class new. + interpreterForAndRight check: aSelector right on: self targetElement. + + interpreterForAndRight result ifFalse: [ + self invalidSelectors add: self. + ^ self ]. + + self validSelectors add: aSelector. + self ignoredSelectors addAll: interpreterForAndLeft ignoredSelectors. + self ignoredSelectors addAll: interpreterForAndRight ignoredSelectors ] { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitChildSelector: aSelector [ - | parent | - aSelector left accept: self. - self result ifFalse: [ + | parent interpreterForLeft interpreterForRight | + interpreterForLeft := self class new. + interpreterForRight := ToSelectorInterpreter new. + interpreterForLeft check: aSelector left on: self targetElement. + + interpreterForLeft result ifFalse: [ self invalidSelectors add: aSelector. ^ self ]. - parent := self top. + parent := self targetElement. "evaluate only for children at a given depth or at any depth if selector depth is not specified " parent allChildrenBreadthFirstWithDepthDo: [ :child :depth | (aSelector depth isNil or: [ aSelector depth = depth ]) ifTrue: [ - self push: child. - self invalidSelectors removeAll. - aSelector right accept: self. - self pop. - self result ifTrue: [ + interpreterForRight check: aSelector right on: child. + interpreterForRight result ifTrue: [ self validSelectors add: aSelector. + self ignoredSelectors add: interpreterForLeft ignoredSelectors. ^ self ] ] ]. self invalidSelectors add: aSelector ] @@ -107,91 +110,100 @@ PyramidContainsValidSelectorInterpreter >> visitChildSelector: aSelector [ { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitIdSelector: aSelector [ - (aSelector id = self top id) + aSelector id = self targetElement id ifTrue: [ self validSelectors add: aSelector ] ifFalse: [ self invalidSelectors add: aSelector ] ] { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitNotSelector: aSelector [ - " - If left accept: self = true -> uncertain. - If left accept: self = true && left contains id = true -> false. - If left accept: self = true && left contains id = false -> true. - If left accept: self = false -> true. - " | interpreterForNot | interpreterForNot := self class new. - interpreterForNot check: aSelector left on: self top. + interpreterForNot check: aSelector left on: self targetElement. self invalidSelectors addAll: interpreterForNot validSelectors. - self validSelectors addAll: interpreterForNot invalidSelectors + self validSelectors addAll: interpreterForNot invalidSelectors. + self ignoredSelectors addAll: interpreterForNot ignoredSelectors ] { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitOrSelector: aSelector [ - aSelector left accept: self. - self result ifTrue: [ - self validSelectors add: aSelector. - ^ self ]. - aSelector right accept: self. - (self invalidSelectors includes: aSelector right) ifTrue: [ - self invalidSelectors add: aSelector. + | interpreterForOrLeft interpreterForOrRight | + interpreterForOrLeft := self class new. + interpreterForOrLeft check: aSelector left on: self targetElement. + + interpreterForOrRight := self class new. + interpreterForOrRight check: aSelector right on: self targetElement. + + "Both KO" + (interpreterForOrLeft result not and: [ + interpreterForOrRight result not ]) ifTrue: [ + self invalidSelectors add: self. ^ self ]. - "It should be alright. we can remove all invalid." - self invalidSelectors removeAll. + + interpreterForOrLeft result ifTrue: [ + self ignoredSelectors addAll: interpreterForOrLeft ignoredSelectors ]. + interpreterForOrRight result ifTrue: [ + self ignoredSelectors addAll: interpreterForOrRight ignoredSelectors ]. self validSelectors add: aSelector ] { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitParentSelector: aSelector [ - | current depth | - aSelector left accept: self. - self result ifFalse: [ + | depth current interpreterForLeft interpreterForRight | + interpreterForLeft := self class new. + interpreterForRight := ToSelectorInterpreter new. + interpreterForLeft check: aSelector left on: self targetElement. + + interpreterForLeft result ifFalse: [ self invalidSelectors add: aSelector. ^ self ]. - current := self top. + current := self targetElement. depth := aSelector depth. [ current := current parent. - current ifNil: [ ^ self ]. + current ifNil: [ + self invalidSelectors add: aSelector. + ^ self ]. depth ifNotNil: [ depth := depth - 1. depth < 0 ifTrue: [ - self validSelectors add: aSelector. + self invalidSelectors add: aSelector. ^ self ] ]. (depth isNil or: [ depth isZero ]) ifTrue: [ - self invalidSelectors removeAll. - self push: current. - aSelector right accept: self. - self pop. - (depth notNil or: [ self result ]) ifTrue: [ + interpreterForRight check: aSelector right on: current. + (interpreterForRight result) ifTrue: [ self validSelectors add: aSelector. - ^ self ] ] ] repeat. - self invalidSelectors add: aSelector + self ignoredSelectors addAll: interpreterForLeft ignoredSelectors. + ^ self ] ] ] repeat ] { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitSiblingSelector: aSelector [ - | current | - aSelector left accept: self. - self result ifFalse: [ + | current interpreterForSiblingLeft interpreterForSiblingRight | + interpreterForSiblingLeft := self class new. + interpreterForSiblingRight := ToSelectorInterpreter new. + interpreterForSiblingLeft + check: aSelector left + on: self targetElement. + + interpreterForSiblingLeft result ifFalse: [ self invalidSelectors add: aSelector. ^ self ]. - current := self top. + current := self targetElement. current siblingsDo: [ :sib | - self invalidSelectors removeAll. - self push: sib. - aSelector right accept: self. - self pop. - self result ifTrue: [ + interpreterForSiblingRight check: aSelector right on: sib. + interpreterForSiblingRight result ifTrue: [ self validSelectors add: aSelector. + self ignoredSelectors addAll: + interpreterForSiblingLeft ignoredSelectors. + "There is no interest to add the right ignored items since they are sibling dependant" ^ self ] ]. self invalidSelectors add: aSelector ] @@ -205,13 +217,14 @@ PyramidContainsValidSelectorInterpreter >> visitStyleStampSelector: aSelector [ { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitTypeSelector: aSelector [ - (aSelector selectType: self top class) ifTrue: [ self validSelectors add: aSelector ] ifFalse: [ self invalidSelectors add: aSelector ] + (aSelector selectType: self targetElement class) + ifTrue: [ self validSelectors add: aSelector ] + ifFalse: [ self invalidSelectors add: aSelector ] ] { #category : #visiting } PyramidContainsValidSelectorInterpreter >> visitUniversalSelector: aSelector [ - self ignoredSelectors add: aSelector - - + "Must be valid for not" + self validSelectors add: aSelector ] diff --git a/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreterTest.class.st b/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreterTest.class.st index 09c56091..82d16d45 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreterTest.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreterTest.class.st @@ -118,7 +118,6 @@ element := ToElement new. PyramidContainsValidSelectorInterpreterTest >> testVisitNotSelector [ | selector element | - "action" selector := [ :e | true ] asActionSelector not. element := ToElement new. @@ -128,7 +127,7 @@ PyramidContainsValidSelectorInterpreterTest >> testVisitNotSelector [ element := ToElement new. self interpreter check: selector on: element. self assert: self interpreter result. - + "type" selector := ToButton asTypeSelector not. element := ToButton new. @@ -158,7 +157,16 @@ PyramidContainsValidSelectorInterpreterTest >> testVisitNotSelector [ self deny: self interpreter result. element := ToElement new. self interpreter check: selector on: element. - self assert: self interpreter result + self assert: self interpreter result. + + "universal" + selector := ToUniversalSelector new not. + element := ToElement new. + self interpreter check: selector on: element. + self deny: self interpreter result. + selector := ToUniversalSelector new not not. + self interpreter check: selector on: element. + self assert: self interpreter result. ] { #category : #tests } @@ -214,7 +222,7 @@ PyramidContainsValidSelectorInterpreterTest >> testVisitParentSelector [ parent addChild: child. self interpreter check: selector on: child. self assert: self interpreter result. - + "child ok + parent ko -> false" parent := ToElement new. child := ToButton new. @@ -229,7 +237,23 @@ PyramidContainsValidSelectorInterpreterTest >> testVisitParentSelector [ self interpreter check: selector on: child. self deny: self interpreter result. + "child ok + parent ok -> true" + selector := ToButton asTypeSelector withParent: + #hello asStampSelector. + parent := ToElement new addStamp: #hello. + child := ToButton new. + parent addChild: child. + self interpreter check: selector on: child. + self assert: self interpreter result. + "child ok + parent ko -> false" + selector := ToButton asTypeSelector withParent: + #hello asStampSelector. + parent := ToElement new. + child := ToButton new. + parent addChild: child. + self interpreter check: selector on: child. + self deny: self interpreter result ] { #category : #tests } diff --git a/src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st b/src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st index 09e23bf4..6e608649 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st @@ -23,9 +23,9 @@ PyramidSelectorPossibleStamps >> findAllSelectorFor: aBlElement on: aToStyleRule interpreter check: aToStyleRule selector on: aBlElement. interpreter result ifTrue: [ - ^ (aToStyleRule styleRules flatCollect: [ :each | - self findAllSelectorFor: aBlElement on: each ]) - , { aToStyleRule selector } ] + ^ interpreter ignoredSelectors asArray + , (aToStyleRule styleRules flatCollect: [ :each | + self findAllSelectorFor: aBlElement on: each ]) ] ifFalse: [ ^ { } ] ] diff --git a/src/Pyramid-Toplo-Incubator/PyramidStampCommandTest.class.st b/src/Pyramid-Toplo-Incubator/PyramidStampCommandTest.class.st new file mode 100644 index 00000000..c141a2c6 --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidStampCommandTest.class.st @@ -0,0 +1,29 @@ +Class { + #name : #PyramidStampCommandTest, + #superclass : #TestCase, + #traits : 'TPyramidCommandTest', + #classTraits : 'TPyramidCommandTest classTrait', + #category : #'Pyramid-Toplo-Incubator' +} + +{ #category : #accessing } +PyramidStampCommandTest >> command [ + + ^ PyramidStampCommand new stamp: #test; yourself +] + +{ #category : #'as yet unclassified' } +PyramidStampCommandTest >> targetContainers [ + + ^ { + (PyramidCommandTestContainer + no: BlElement new + with: (BlElement new + addStamp: #test; + yourself) + prop: true). + (PyramidCommandTestContainer + no: (BlElement new addStamp: #test; yourself) + with: BlElement new + prop: false) } +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemePropertyStrategy.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemePropertyStrategy.class.st index a24febb3..af7e6247 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemePropertyStrategy.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidThemePropertyStrategy.class.st @@ -16,10 +16,12 @@ PyramidThemePropertyStrategy >> buildPresenterFromCollection: aCollection andMan PyramidThemePropertyStrategy >> propertiesFor: aCollectionOfElements [ | elementsWithStyleSheetTheme allPossibleStamps allCommonStamps | - elementsWithStyleSheetTheme := aCollectionOfElements asOrderedCollection select: [ + elementsWithStyleSheetTheme := aCollectionOfElements + asOrderedCollection select: [ :element | - element isAttachedToSceneGraph and: [ element toTheme isKindOf: - ToStyleSheetTheme ] ]. + element isAttachedToSceneGraph and: [ + element toTheme isKindOf: + ToStyleSheetTheme ] ]. elementsWithStyleSheetTheme ifEmpty: [ ^ { } ]. allPossibleStamps := elementsWithStyleSheetTheme collect: [ :each | PyramidSelectorPossibleStamps new @@ -28,7 +30,7 @@ PyramidThemePropertyStrategy >> propertiesFor: aCollectionOfElements [ allCommonStamps := allPossibleStamps first. allPossibleStamps do: [ :each | allCommonStamps := allCommonStamps & each ]. - ^ allCommonStamps collect: [ :each | self propertyForStamp: each ] + ^ allCommonStamps collect: [ :each | self propertyForStamp: each ]. ] { #category : #'as yet unclassified' } From 57c915886200323516a3ce0b2e20ff7c1dde6912 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Wed, 31 Jan 2024 18:08:39 +0100 Subject: [PATCH 06/27] Add select theme first option --- src/Pyramid-Bloc/PyramidSpaceBuilder.class.st | 3 +-- src/Pyramid-Bloc/PyramidSpacePlugin.class.st | 3 ++- .../PyramidThemeSelectorPresenter.class.st | 11 ++++++++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/Pyramid-Bloc/PyramidSpaceBuilder.class.st b/src/Pyramid-Bloc/PyramidSpaceBuilder.class.st index fe49da82..80b61bbc 100644 --- a/src/Pyramid-Bloc/PyramidSpaceBuilder.class.st +++ b/src/Pyramid-Bloc/PyramidSpaceBuilder.class.st @@ -111,8 +111,7 @@ PyramidSpaceBuilder >> editor: aPyramidEditor [ self extensions do: [ :each | each editor: aPyramidEditor ]. self extensions do: [ :each | - each projectModel: aPyramidEditor projectModel ]. - + each projectModel: aPyramidEditor projectModel ] ] { #category : #accessing } diff --git a/src/Pyramid-Bloc/PyramidSpacePlugin.class.st b/src/Pyramid-Bloc/PyramidSpacePlugin.class.st index 13307fd3..71abc227 100644 --- a/src/Pyramid-Bloc/PyramidSpacePlugin.class.st +++ b/src/Pyramid-Bloc/PyramidSpacePlugin.class.st @@ -62,7 +62,8 @@ PyramidSpacePlugin >> makePresenterWithBlSpace: aBlSpace [ aBlSpace host: host. aBlSpace addEventHandler: (BlEventHandler on: BlSpaceDestroyedEvent - do: [ :evt | self updateMorphInCaseOfFaillure: morph ]). + do: [ :evt | + self updateMorphInCaseOfFaillure: morph ]). self morphicPresenter morph: morph. self morphicPresenter whenDisplayDo: [ aBlSpace show ] diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st index ad0cf8ce..cfbe6ab9 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st @@ -1,6 +1,8 @@ Class { #name : #PyramidThemeSelectorPresenter, #superclass : #SpPresenter, + #traits : 'TPyramidProjectModelObserver', + #classTraits : 'TPyramidProjectModelObserver classTrait', #instVars : [ 'themeSelector', 'variantSelector', @@ -110,7 +112,14 @@ PyramidThemeSelectorPresenter >> projectModel [ { #category : #accessing } PyramidThemeSelectorPresenter >> projectModel: anObject [ - projectModel := anObject + projectModel := anObject. + anObject addObserver: self +] + +{ #category : #'as yet unclassified' } +PyramidThemeSelectorPresenter >> pyramidFirstLevelElementsChanged [ + + self applyThemeToRoot ] { #category : #accessing } From 87fe9483e0ef762fcbabd9b7d26cbfbc4d029167 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Thu, 1 Feb 2024 10:06:50 +0100 Subject: [PATCH 07/27] Different hook to change the theme for the space --- src/Pyramid-Bloc/PyramidSpaceBuilder.class.st | 5 +- .../TPyramidEditorSpaceIsReady.trait.st | 32 +++++++ ...PyramidEditorSpaceIsReadyObserver.trait.st | 8 ++ ...amidElementThemeSelectorPresenter.class.st | 31 +++++++ ...yramidSpaceThemeSelectorPresenter.class.st | 29 ++++++ .../PyramidThemePresenter.class.st | 34 +++++-- .../PyramidThemeSelectorPresenter.class.st | 89 ++++++++----------- .../PyramidToploThemePlugin.class.st | 8 ++ src/Pyramid/PyramidEditor.class.st | 2 + src/Pyramid/PyramidEditorBuilder.class.st | 2 + .../PyramidMultiplePluginsFoundError.class.st | 20 +++++ .../PyramidNoPluginFoundError.class.st | 20 +++++ src/Pyramid/TPyramidFindPlugin.trait.st | 34 +++++++ 13 files changed, 253 insertions(+), 61 deletions(-) create mode 100644 src/Pyramid-Bloc/TPyramidEditorSpaceIsReady.trait.st create mode 100644 src/Pyramid-Bloc/TPyramidEditorSpaceIsReadyObserver.trait.st create mode 100644 src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st create mode 100644 src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st create mode 100644 src/Pyramid/PyramidMultiplePluginsFoundError.class.st create mode 100644 src/Pyramid/PyramidNoPluginFoundError.class.st create mode 100644 src/Pyramid/TPyramidFindPlugin.trait.st diff --git a/src/Pyramid-Bloc/PyramidSpaceBuilder.class.st b/src/Pyramid-Bloc/PyramidSpaceBuilder.class.st index 80b61bbc..9e3ed14f 100644 --- a/src/Pyramid-Bloc/PyramidSpaceBuilder.class.st +++ b/src/Pyramid-Bloc/PyramidSpaceBuilder.class.st @@ -1,8 +1,8 @@ Class { #name : #PyramidSpaceBuilder, #superclass : #Object, - #traits : 'TPyramidEditorTransformation', - #classTraits : 'TPyramidEditorTransformation classTrait', + #traits : 'TPyramidEditorTransformation + TPyramidEditorSpaceIsReady', + #classTraits : 'TPyramidEditorTransformation classTrait + TPyramidEditorSpaceIsReady classTrait', #instVars : [ 'topMostOverlay', 'overlays', @@ -103,6 +103,7 @@ PyramidSpaceBuilder >> build [ self signalTransformationChanged. self topMostOverlay buildOn: self space root. + self signalSpaceIsReady. ^ self space ] diff --git a/src/Pyramid-Bloc/TPyramidEditorSpaceIsReady.trait.st b/src/Pyramid-Bloc/TPyramidEditorSpaceIsReady.trait.st new file mode 100644 index 00000000..f773eebc --- /dev/null +++ b/src/Pyramid-Bloc/TPyramidEditorSpaceIsReady.trait.st @@ -0,0 +1,32 @@ +Trait { + #name : #TPyramidEditorSpaceIsReady, + #instVars : [ + 'spaceIsReadyObservers' + ], + #category : #'Pyramid-Bloc-plugin-space-extensions' +} + +{ #category : #adding } +TPyramidEditorSpaceIsReady >> addSpaceIsReadyObserver: anObject [ + + self spaceIsReadyObservers add: anObject +] + +{ #category : #adding } +TPyramidEditorSpaceIsReady >> removeSpaceIsReadyObserver: anObject [ + + self spaceIsReadyObservers remove: anObject +] + +{ #category : #signalling } +TPyramidEditorSpaceIsReady >> signalSpaceIsReady [ + + self spaceIsReadyObservers do: [ :each | each informSpaceIsReady ] +] + +{ #category : #accessing } +TPyramidEditorSpaceIsReady >> spaceIsReadyObservers [ + + spaceIsReadyObservers ifNil: [ spaceIsReadyObservers := Set new ]. + ^ spaceIsReadyObservers +] diff --git a/src/Pyramid-Bloc/TPyramidEditorSpaceIsReadyObserver.trait.st b/src/Pyramid-Bloc/TPyramidEditorSpaceIsReadyObserver.trait.st new file mode 100644 index 00000000..657aed6b --- /dev/null +++ b/src/Pyramid-Bloc/TPyramidEditorSpaceIsReadyObserver.trait.st @@ -0,0 +1,8 @@ +Trait { + #name : #TPyramidEditorSpaceIsReadyObserver, + #category : #'Pyramid-Bloc-plugin-space-extensions' +} + +{ #category : #'as yet unclassified' } +TPyramidEditorSpaceIsReadyObserver >> informSpaceIsReady [ +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st new file mode 100644 index 00000000..4cde85c0 --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st @@ -0,0 +1,31 @@ +Class { + #name : #PyramidElementThemeSelectorPresenter, + #superclass : #PyramidThemeSelectorPresenter, + #traits : 'TPyramidProjectModelObserver', + #classTraits : 'TPyramidProjectModelObserver classTrait', + #instVars : [ + 'projectModel' + ], + #category : #'Pyramid-Toplo-Incubator' +} + +{ #category : #'as yet unclassified' } +PyramidElementThemeSelectorPresenter >> applyTheme [ + + | themeToApplied | + themeToApplied := self themeSelector selectedItem variant: + self variantSelector selectedItem new. +] + +{ #category : #accessing } +PyramidElementThemeSelectorPresenter >> projectModel [ + + ^ projectModel +] + +{ #category : #accessing } +PyramidElementThemeSelectorPresenter >> projectModel: anObject [ + + projectModel := anObject. + anObject addObserver: self +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st new file mode 100644 index 00000000..0670ff2f --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st @@ -0,0 +1,29 @@ +Class { + #name : #PyramidSpaceThemeSelectorPresenter, + #superclass : #PyramidThemeSelectorPresenter, + #traits : 'TPyramidSpaceExtension + TPyramidEditorSpaceIsReadyObserver', + #classTraits : 'TPyramidSpaceExtension classTrait + TPyramidEditorSpaceIsReadyObserver classTrait', + #category : #'Pyramid-Toplo-Incubator' +} + +{ #category : #'as yet unclassified' } +PyramidSpaceThemeSelectorPresenter >> applyTheme [ + + | themeToApplied | + themeToApplied := self themeSelector selectedItem variant: + self variantSelector selectedItem new. + self builder space toTheme: themeToApplied. +] + +{ #category : #'as yet unclassified' } +PyramidSpaceThemeSelectorPresenter >> informSpaceIsReady [ + + self applyTheme +] + +{ #category : #displaying } +PyramidSpaceThemeSelectorPresenter >> installOn: aBuilder [ + + self builder: aBuilder. + aBuilder addSpaceIsReadyObserver: self. +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st index 7ea6450d..cef7fe09 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st @@ -2,8 +2,9 @@ Class { #name : #PyramidThemePresenter, #superclass : #SpPresenter, #instVars : [ - 'themeSelector', - 'styleSheetEditor' + 'styleSheetEditor', + 'themeSpaceSelector', + 'themeElementSelector' ], #category : #'Pyramid-Toplo-Incubator' } @@ -11,22 +12,35 @@ Class { { #category : #layout } PyramidThemePresenter >> defaultLayout [ - ^ SpBoxLayout newVertical spacing: 4; add: self themeSelector expand: false; add: self styleSheetEditor expand: true; yourself + ^ SpBoxLayout newVertical + spacing: 4; + add: self themeSpaceSelector expand: false; + add: self themeElementSelector expand: false; + add: self styleSheetEditor expand: true; + yourself ] { #category : #accessing } PyramidThemePresenter >> editor: aPyramidEditor [ - self themeSelector projectModel: aPyramidEditor projectModel + self themeSpaceSelector projectModel: aPyramidEditor projectModel. + self themeElementSelector projectModel: aPyramidEditor projectModel ] { #category : #layout } PyramidThemePresenter >> initializePresenters [ - themeSelector := PyramidThemeSelectorPresenter new. + themeSpaceSelector := PyramidSpaceThemeSelectorPresenter new. + themeElementSelector := PyramidElementThemeSelectorPresenter new. styleSheetEditor := PyramidStyleSheetEditorPresenter new ] +{ #category : #'as yet unclassified' } +PyramidThemePresenter >> pyramidSpaceBuilderConfigurationOn: aSpaceBuilder [ + + aSpaceBuilder addExtension: self themeSpaceSelector +] + { #category : #layout } PyramidThemePresenter >> styleSheetEditor [ @@ -34,7 +48,13 @@ PyramidThemePresenter >> styleSheetEditor [ ] { #category : #layout } -PyramidThemePresenter >> themeSelector [ +PyramidThemePresenter >> themeElementSelector [ + + ^ themeElementSelector +] + +{ #category : #layout } +PyramidThemePresenter >> themeSpaceSelector [ - ^ themeSelector + ^ themeSpaceSelector ] diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st index cfbe6ab9..f4673fa3 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st @@ -1,28 +1,20 @@ Class { #name : #PyramidThemeSelectorPresenter, #superclass : #SpPresenter, - #traits : 'TPyramidProjectModelObserver', #classTraits : 'TPyramidProjectModelObserver classTrait', #instVars : [ 'themeSelector', 'variantSelector', 'buttonRefreshTheme', - 'projectModel', - 'styleSheetEditor' + 'triggerThemeChangement' ], #category : #'Pyramid-Toplo-Incubator' } { #category : #'as yet unclassified' } -PyramidThemeSelectorPresenter >> applyThemeToRoot [ - - | themeToApplied | - self projectModel ifNil: [ ^ self ]. - self elementRoot ifNil: [ ^ self ]. - themeToApplied := self themeSelector selectedItem variant: - self variantSelector selectedItem new. - self elementRoot space toTheme: themeToApplied. - self elementRoot space pulse +PyramidThemeSelectorPresenter >> applyTheme [ + + self shouldBeImplemented ] { #category : #accessing } @@ -47,6 +39,14 @@ PyramidThemeSelectorPresenter >> defaultLayout [ c width: 24 ]; yourself) expand: false; + add: self defaultLayoutForThemeAndVariant expand: false; + yourself +] + +{ #category : #layout } +PyramidThemeSelectorPresenter >> defaultLayoutForThemeAndVariant [ + + ^ SpBoxLayout newVertical spacing: 4; add: (SpBoxLayout newHorizontal spacing: 4; add: 'Theme' width: 50; @@ -59,16 +59,10 @@ PyramidThemeSelectorPresenter >> defaultLayout [ add: self variantSelector; yourself) expand: false; - add: SpNullPresenter new height: 10; + add: SpNullPresenter new height: 10; yourself ] -{ #category : #accessing } -PyramidThemeSelectorPresenter >> elementRoot [ - - self projectModel firstLevelElements ifEmpty: [ ^ nil ] ifNotEmpty: [ :elements | ^ elements first parent ] -] - { #category : #initialization } PyramidThemeSelectorPresenter >> initializeAllPossibleThemes [ @@ -77,21 +71,20 @@ PyramidThemeSelectorPresenter >> initializeAllPossibleThemes [ allThemes := ToTheme allSubclasses select: [ :theme | theme canBeDefault ]. + + self triggerThemeChangement: false. self themeSelector items: allThemes. (previousTheme isNotNil and: [ allThemes includes: previousTheme ]) ifTrue: [ self themeSelector selectItem: previousTheme ] - ifFalse: [ self themeSelector selectItem: allThemes first ] + ifFalse: [ self themeSelector selectItem: allThemes first ]. + self triggerThemeChangement: true. ] { #category : #initialization } PyramidThemeSelectorPresenter >> initializePresenters [ - styleSheetEditor := PyramidStyleSheetEditorPresenter new. - buttonRefreshTheme := SpButtonPresenter new - icon: (self iconNamed: #refresh); - action: [ self initializeAllPossibleThemes ]; - yourself. + triggerThemeChangement := false. themeSelector := SpDropListPresenter new whenSelectedItemChangedDo: [ :aThemeClass | self themeSelectionChanged: aThemeClass ]; @@ -100,34 +93,13 @@ PyramidThemeSelectorPresenter >> initializePresenters [ whenSelectedItemChangedDo: [ :aNewVariant | self variantSelectionChanged: aNewVariant ]; yourself. + buttonRefreshTheme := SpButtonPresenter new + icon: (self iconNamed: #refresh); + action: [ self initializeAllPossibleThemes ]; + yourself. self initializeAllPossibleThemes ] -{ #category : #accessing } -PyramidThemeSelectorPresenter >> projectModel [ - - ^ projectModel -] - -{ #category : #accessing } -PyramidThemeSelectorPresenter >> projectModel: anObject [ - - projectModel := anObject. - anObject addObserver: self -] - -{ #category : #'as yet unclassified' } -PyramidThemeSelectorPresenter >> pyramidFirstLevelElementsChanged [ - - self applyThemeToRoot -] - -{ #category : #accessing } -PyramidThemeSelectorPresenter >> styleSheetEditor [ - - ^ styleSheetEditor -] - { #category : #'as yet unclassified' } PyramidThemeSelectorPresenter >> themeSelectionChanged: aThemeClass [ @@ -139,7 +111,8 @@ PyramidThemeSelectorPresenter >> themeSelectionChanged: aThemeClass [ ((aThemeClass supportedVariantClasses includes: previousVariant) ifTrue: [ previousVariant ] ifFalse: [ aThemeClass supportedVariantClasses first ]). - self applyThemeToRoot + self triggerThemeChangement ifTrue: [ self applyTheme ] + ] { #category : #accessing } @@ -148,11 +121,23 @@ PyramidThemeSelectorPresenter >> themeSelector [ ^ themeSelector ] +{ #category : #accessing } +PyramidThemeSelectorPresenter >> triggerThemeChangement [ + + ^ triggerThemeChangement +] + +{ #category : #accessing } +PyramidThemeSelectorPresenter >> triggerThemeChangement: anObject [ + + triggerThemeChangement := anObject +] + { #category : #'as yet unclassified' } PyramidThemeSelectorPresenter >> variantSelectionChanged: aVariantClass [ aVariantClass ifNil: [ ^ self ]. - self applyThemeToRoot + self triggerThemeChangement ifTrue: [ self applyTheme ] ] { #category : #accessing } diff --git a/src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st b/src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st index 5557b584..56f59d8b 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st @@ -21,6 +21,14 @@ PyramidToploThemePlugin >> addPanelsOn: aPyramidSimpleWindow [ order: 1 ] ] +{ #category : #actions } +PyramidToploThemePlugin >> configureBuilder: aPyramidEditorBuilder [ + + | spacePlugin | + spacePlugin := aPyramidEditorBuilder findPlugin: #PyramidSpacePlugin. + self themePresenter pyramidSpaceBuilderConfigurationOn: spacePlugin builder +] + { #category : #connecting } PyramidToploThemePlugin >> connectOn: aPyramidEditor [ diff --git a/src/Pyramid/PyramidEditor.class.st b/src/Pyramid/PyramidEditor.class.st index 5c749c6b..d7a9f2ae 100644 --- a/src/Pyramid/PyramidEditor.class.st +++ b/src/Pyramid/PyramidEditor.class.st @@ -1,6 +1,8 @@ Class { #name : #PyramidEditor, #superclass : #Object, + #traits : 'TPyramidFindPlugin', + #classTraits : 'TPyramidFindPlugin classTrait', #instVars : [ 'plugins', 'projectModel', diff --git a/src/Pyramid/PyramidEditorBuilder.class.st b/src/Pyramid/PyramidEditorBuilder.class.st index f7eeb591..cfe79cb4 100644 --- a/src/Pyramid/PyramidEditorBuilder.class.st +++ b/src/Pyramid/PyramidEditorBuilder.class.st @@ -1,6 +1,8 @@ Class { #name : #PyramidEditorBuilder, #superclass : #Object, + #traits : 'TPyramidFindPlugin', + #classTraits : 'TPyramidFindPlugin classTrait', #instVars : [ 'plugins', 'editor', diff --git a/src/Pyramid/PyramidMultiplePluginsFoundError.class.st b/src/Pyramid/PyramidMultiplePluginsFoundError.class.st new file mode 100644 index 00000000..e9d18706 --- /dev/null +++ b/src/Pyramid/PyramidMultiplePluginsFoundError.class.st @@ -0,0 +1,20 @@ +Class { + #name : #PyramidMultiplePluginsFoundError, + #superclass : #PyramidError, + #instVars : [ + 'plugins' + ], + #category : #'Pyramid-core' +} + +{ #category : #accessing } +PyramidMultiplePluginsFoundError >> plugins [ + + ^ plugins +] + +{ #category : #accessing } +PyramidMultiplePluginsFoundError >> plugins: anObject [ + + plugins := anObject +] diff --git a/src/Pyramid/PyramidNoPluginFoundError.class.st b/src/Pyramid/PyramidNoPluginFoundError.class.st new file mode 100644 index 00000000..44d26e83 --- /dev/null +++ b/src/Pyramid/PyramidNoPluginFoundError.class.st @@ -0,0 +1,20 @@ +Class { + #name : #PyramidNoPluginFoundError, + #superclass : #PyramidError, + #instVars : [ + 'query' + ], + #category : #'Pyramid-core' +} + +{ #category : #accessing } +PyramidNoPluginFoundError >> query [ + + ^ query +] + +{ #category : #accessing } +PyramidNoPluginFoundError >> query: anObject [ + + query := anObject +] diff --git a/src/Pyramid/TPyramidFindPlugin.trait.st b/src/Pyramid/TPyramidFindPlugin.trait.st new file mode 100644 index 00000000..79944593 --- /dev/null +++ b/src/Pyramid/TPyramidFindPlugin.trait.st @@ -0,0 +1,34 @@ +Trait { + #name : #TPyramidFindPlugin, + #category : #'Pyramid-core' +} + +{ #category : #'as yet unclassified' } +TPyramidFindPlugin >> findPlugin: aSymbolOrAClass [ + + | allPlugins | + allPlugins := aSymbolOrAClass isString + ifTrue: [ + self plugins select: [ :each | + each class name = aSymbolOrAClass ] ] + ifFalse: [ + self plugins select: [ :each | + each class = aSymbolOrAClass ] ]. + + allPlugins ifEmpty: [ + ^ PyramidNoPluginFoundError new + query: aSymbolOrAClass; + signal ]. + allPlugins size > 1 ifTrue: [ + ^ PyramidMultiplePluginsFoundError new + plugins: allPlugins; + signal ]. + ^ allPlugins asArray first +] + +{ #category : #accessing } +TPyramidFindPlugin >> plugins [ + "Return a collection of TPyramidPlugin instances." + + ^ self shouldBeImplemented +] From 2cae76f1faa54087cd7a8f9e3d80de809f025581 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Thu, 1 Feb 2024 11:07:02 +0100 Subject: [PATCH 08/27] Add theme for single element --- ...amidElementThemeSelectorPresenter.class.st | 145 +++++++++++++++++- ...yramidSpaceThemeSelectorPresenter.class.st | 9 ++ .../PyramidThemeSelectorPresenter.class.st | 38 +++-- 3 files changed, 176 insertions(+), 16 deletions(-) diff --git a/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st index 4cde85c0..520e3aa7 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st @@ -4,7 +4,9 @@ Class { #traits : 'TPyramidProjectModelObserver', #classTraits : 'TPyramidProjectModelObserver classTrait', #instVars : [ - 'projectModel' + 'projectModel', + 'inheritSelector', + 'labelPresenter' ], #category : #'Pyramid-Toplo-Incubator' } @@ -13,8 +15,74 @@ Class { PyramidElementThemeSelectorPresenter >> applyTheme [ | themeToApplied | + self triggerThemeChangement ifFalse: [ ^ self ]. + self inheritSelector state ifTrue: [ + self projectModel selection do: [ :each | each toTheme: nil ]. + ^ self ]. themeToApplied := self themeSelector selectedItem variant: self variantSelector selectedItem new. + self projectModel selection do: [ :each | + each toTheme: themeToApplied ]. + self projectModel informElementsChanged. +] + +{ #category : #layout } +PyramidElementThemeSelectorPresenter >> defaultLayout [ + + ^ SpBoxLayout newVertical + spacing: 4; + add: (SpBoxLayout newHorizontal + spacing: 4; + add: self labelPresenter; + add: self buttonRefreshTheme withConstraints: [ :c | + c height: 24. + c width: 24 ]; + yourself) + expand: false; + add: self inheritSelector expand: false; + add: (SpBoxLayout newHorizontal + spacing: 4; + add: 'Theme' width: 50; + add: self themeSelector; + yourself) + expand: false; + add: (SpBoxLayout newHorizontal + spacing: 4; + add: 'Variant' width: 50; + add: self variantSelector; + yourself) + expand: false; + add: SpNullPresenter new height: 10; + yourself +] + +{ #category : #accessing } +PyramidElementThemeSelectorPresenter >> inheritSelector [ + + ^ inheritSelector +] + +{ #category : #initialization } +PyramidElementThemeSelectorPresenter >> initializePresenters [ + + super initializePresenters. + inheritSelector := SpCheckBoxPresenter new + label: 'Inherits from parents'; + whenChangedDo: [ :aBoolean | self applyTheme ]; + yourself. + labelPresenter := SpLabelPresenter new + label: 'Element Theme (empty select)'; + displayBold: [ :t | true ]; + yourself. + self triggerThemeChangement: false. + self setDefaultStateForPresenters. + self triggerThemeChangement: true. +] + +{ #category : #initialization } +PyramidElementThemeSelectorPresenter >> labelPresenter [ + + ^ labelPresenter ] { #category : #accessing } @@ -29,3 +97,78 @@ PyramidElementThemeSelectorPresenter >> projectModel: anObject [ projectModel := anObject. anObject addObserver: self ] + +{ #category : #'as yet unclassified' } +PyramidElementThemeSelectorPresenter >> pyramidElementsChanged [ + + self triggerThemeChangement: false. + self updatePresenterFor: self projectModel selection. + self triggerThemeChangement: true +] + +{ #category : #'as yet unclassified' } +PyramidElementThemeSelectorPresenter >> pyramidSelectionChanged [ + + self triggerThemeChangement: false. + self updatePresenterFor: self projectModel selection. + self triggerThemeChangement: true. +] + +{ #category : #'as yet unclassified' } +PyramidElementThemeSelectorPresenter >> setDefaultStateForPresenters [. + self themeSelector enabled: false. + self variantSelector enabled: false. + self inheritSelector enabled: false. + self inheritSelector state: true. + +] + +{ #category : #'as yet unclassified' } +PyramidElementThemeSelectorPresenter >> updatePresenterFor: aCollectionOfElement [ + + | collectionOfLocalThemes collectionOfThemes | + "Default values" + self setDefaultStateForPresenters. + + "Empty state" + aCollectionOfElement ifEmpty: [ + self labelPresenter label: 'Element Theme (empty select)'. + ^ self ]. + + "Only one element selected state" + aCollectionOfElement size = 1 ifTrue: [ + self labelPresenter label: 'Element Theme'. + self inheritSelector enabled: true. + aCollectionOfElement first localTheme ifNotNil: [ :theme | + self inheritSelector state: false. + self themeSelector enabled: true. + self variantSelector enabled: true. + self selectTheme: theme ]. + ^ self ]. + + "Mix between local and unlocal theme" + collectionOfLocalThemes := (aCollectionOfElement asArray collect: + [ :each | each localTheme ]) asSet asArray. + collectionOfLocalThemes size > 1 ifTrue: [ + self labelPresenter label: 'Elements Theme (differents)'. + ^ self ]. + + "Mix themes" + collectionOfThemes := (aCollectionOfElement asArray collect: + [ :each | each toTheme ]) asSet asArray. + collectionOfThemes size > 1 ifTrue: [ + self labelPresenter label: 'Elements Theme (differents)'. + ^ self ]. + + self labelPresenter label: 'Elements Theme'. + self inheritSelector enabled: true. + + "All local theme" + collectionOfLocalThemes first ifNotNil: [ + self inheritSelector state: false. + self themeSelector enabled: true. + self variantSelector enabled: true. + self selectTheme: collectionOfThemes first ]. + + self layout: self defaultLayout. +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st index 0670ff2f..8682ba71 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st @@ -27,3 +27,12 @@ PyramidSpaceThemeSelectorPresenter >> installOn: aBuilder [ self builder: aBuilder. aBuilder addSpaceIsReadyObserver: self. ] + +{ #category : #initialization } +PyramidSpaceThemeSelectorPresenter >> labelPresenter [ + + ^ SpLabelPresenter new + label: 'Space Theme'; + displayBold: [ :t | true ]; + yourself +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st index f4673fa3..8333f561 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st @@ -30,24 +30,13 @@ PyramidThemeSelectorPresenter >> defaultLayout [ spacing: 4; add: (SpBoxLayout newHorizontal spacing: 4; - add: (SpLabelPresenter new - label: 'Space Theme'; - displayBold: [ :t | true ]; - yourself); + add: self labelPresenter; add: self buttonRefreshTheme withConstraints: [ :c | - c height: 24. - c width: 24 ]; + c height: 24. + c width: 24 ]; yourself) expand: false; - add: self defaultLayoutForThemeAndVariant expand: false; - yourself -] - -{ #category : #layout } -PyramidThemeSelectorPresenter >> defaultLayoutForThemeAndVariant [ - - ^ SpBoxLayout newVertical spacing: 4; - add: (SpBoxLayout newHorizontal + add: (SpBoxLayout newHorizontal spacing: 4; add: 'Theme' width: 50; add: self themeSelector; @@ -94,12 +83,31 @@ PyramidThemeSelectorPresenter >> initializePresenters [ self variantSelectionChanged: aNewVariant ]; yourself. buttonRefreshTheme := SpButtonPresenter new + help: 'Refresh theme list.'; icon: (self iconNamed: #refresh); action: [ self initializeAllPossibleThemes ]; yourself. self initializeAllPossibleThemes ] +{ #category : #initialization } +PyramidThemeSelectorPresenter >> labelPresenter [ + + ^ self shouldBeImplemented +] + +{ #category : #private } +PyramidThemeSelectorPresenter >> selectTheme: aToTheme [ + + self triggerThemeChangement: false. + + self themeSelector selectItem: aToTheme class. + self variantSelector selectItem: aToTheme variant class. + + self triggerThemeChangement: true. + +] + { #category : #'as yet unclassified' } PyramidThemeSelectorPresenter >> themeSelectionChanged: aThemeClass [ From 3430f1b4b18ffe78be31441fd4da7db2d2a0c627 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Thu, 1 Feb 2024 11:34:45 +0100 Subject: [PATCH 09/27] Add toTheme command --- ...amidElementThemeSelectorPresenter.class.st | 55 ++++++++++++------- .../PyramidThemeCommand.class.st | 17 ++++++ .../PyramidThemePresenter.class.st | 3 +- 3 files changed, 53 insertions(+), 22 deletions(-) create mode 100644 src/Pyramid-Toplo-Incubator/PyramidThemeCommand.class.st diff --git a/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st index 520e3aa7..3ba44070 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st @@ -6,7 +6,9 @@ Class { #instVars : [ 'projectModel', 'inheritSelector', - 'labelPresenter' + 'labelPresenter', + 'commandExecutor', + 'themeCommand' ], #category : #'Pyramid-Toplo-Incubator' } @@ -16,14 +18,25 @@ PyramidElementThemeSelectorPresenter >> applyTheme [ | themeToApplied | self triggerThemeChangement ifFalse: [ ^ self ]. - self inheritSelector state ifTrue: [ - self projectModel selection do: [ :each | each toTheme: nil ]. - ^ self ]. + themeToApplied := nil. + self inheritSelector state ifFalse: [ themeToApplied := self themeSelector selectedItem variant: self variantSelector selectedItem new. - self projectModel selection do: [ :each | - each toTheme: themeToApplied ]. - self projectModel informElementsChanged. + ]. + self commandExecutor use: self themeCommand on: self projectModel selection asArray with: themeToApplied. + self projectModel informElementsChanged +] + +{ #category : #'as yet unclassified' } +PyramidElementThemeSelectorPresenter >> commandExecutor [ + + ^ commandExecutor +] + +{ #category : #'as yet unclassified' } +PyramidElementThemeSelectorPresenter >> commandExecutor: aCommandExecutor [ + + commandExecutor := aCommandExecutor ] { #category : #layout } @@ -66,6 +79,7 @@ PyramidElementThemeSelectorPresenter >> inheritSelector [ PyramidElementThemeSelectorPresenter >> initializePresenters [ super initializePresenters. + themeCommand := PyramidThemeCommand new. inheritSelector := SpCheckBoxPresenter new label: 'Inherits from parents'; whenChangedDo: [ :aBoolean | self applyTheme ]; @@ -76,7 +90,7 @@ PyramidElementThemeSelectorPresenter >> initializePresenters [ yourself. self triggerThemeChangement: false. self setDefaultStateForPresenters. - self triggerThemeChangement: true. + self triggerThemeChangement: true ] { #category : #initialization } @@ -123,10 +137,16 @@ PyramidElementThemeSelectorPresenter >> setDefaultStateForPresenters [. ] +{ #category : #'as yet unclassified' } +PyramidElementThemeSelectorPresenter >> themeCommand [ + + ^ themeCommand +] + { #category : #'as yet unclassified' } PyramidElementThemeSelectorPresenter >> updatePresenterFor: aCollectionOfElement [ - | collectionOfLocalThemes collectionOfThemes | + | collectionOfLocalThemes | "Default values" self setDefaultStateForPresenters. @@ -147,19 +167,12 @@ PyramidElementThemeSelectorPresenter >> updatePresenterFor: aCollectionOfElement ^ self ]. "Mix between local and unlocal theme" - collectionOfLocalThemes := (aCollectionOfElement asArray collect: - [ :each | each localTheme ]) asSet asArray. + collectionOfLocalThemes := (aCollectionOfElement asArray collect: [ + :each | each localTheme ]) asSet asArray. collectionOfLocalThemes size > 1 ifTrue: [ self labelPresenter label: 'Elements Theme (differents)'. ^ self ]. - "Mix themes" - collectionOfThemes := (aCollectionOfElement asArray collect: - [ :each | each toTheme ]) asSet asArray. - collectionOfThemes size > 1 ifTrue: [ - self labelPresenter label: 'Elements Theme (differents)'. - ^ self ]. - self labelPresenter label: 'Elements Theme'. self inheritSelector enabled: true. @@ -168,7 +181,7 @@ PyramidElementThemeSelectorPresenter >> updatePresenterFor: aCollectionOfElement self inheritSelector state: false. self themeSelector enabled: true. self variantSelector enabled: true. - self selectTheme: collectionOfThemes first ]. - - self layout: self defaultLayout. + self selectTheme: collectionOfLocalThemes first ]. + + self layout: self defaultLayout ] diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemeCommand.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemeCommand.class.st new file mode 100644 index 00000000..99a87692 --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidThemeCommand.class.st @@ -0,0 +1,17 @@ +Class { + #name : #PyramidThemeCommand, + #superclass : #PyramidAbstractBlocCommand, + #category : #'Pyramid-Toplo-Incubator' +} + +{ #category : #'as yet unclassified' } +PyramidThemeCommand >> getValueFor: anObject [ + + ^ anObject localTheme +] + +{ #category : #'as yet unclassified' } +PyramidThemeCommand >> setValueFor: anObject with: nilOrToTheme [ + + anObject toTheme: nilOrToTheme +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st index cef7fe09..815c7fdc 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st @@ -24,7 +24,8 @@ PyramidThemePresenter >> defaultLayout [ PyramidThemePresenter >> editor: aPyramidEditor [ self themeSpaceSelector projectModel: aPyramidEditor projectModel. - self themeElementSelector projectModel: aPyramidEditor projectModel + self themeElementSelector projectModel: aPyramidEditor projectModel. + self themeElementSelector commandExecutor: aPyramidEditor propertiesManager commandExecutor ] { #category : #layout } From f3a26acf67887247f0e6f7651037db0cce69605e Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Thu, 1 Feb 2024 13:35:08 +0100 Subject: [PATCH 10/27] Bug: change space theme must recreate the stamps info --- ...yramidSpaceThemeSelectorPresenter.class.st | 16 ++++++++ .../PyramidThemeCommandTest.class.st | 39 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 src/Pyramid-Toplo-Incubator/PyramidThemeCommandTest.class.st diff --git a/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st index 8682ba71..7ce92b8c 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st @@ -3,6 +3,9 @@ Class { #superclass : #PyramidThemeSelectorPresenter, #traits : 'TPyramidSpaceExtension + TPyramidEditorSpaceIsReadyObserver', #classTraits : 'TPyramidSpaceExtension classTrait + TPyramidEditorSpaceIsReadyObserver classTrait', + #instVars : [ + 'projectModel' + ], #category : #'Pyramid-Toplo-Incubator' } @@ -13,6 +16,7 @@ PyramidSpaceThemeSelectorPresenter >> applyTheme [ themeToApplied := self themeSelector selectedItem variant: self variantSelector selectedItem new. self builder space toTheme: themeToApplied. + self projectModel informElementsChanged ] { #category : #'as yet unclassified' } @@ -36,3 +40,15 @@ PyramidSpaceThemeSelectorPresenter >> labelPresenter [ displayBold: [ :t | true ]; yourself ] + +{ #category : #accessing } +PyramidSpaceThemeSelectorPresenter >> projectModel [ + + ^ projectModel +] + +{ #category : #accessing } +PyramidSpaceThemeSelectorPresenter >> projectModel: anObject [ + + projectModel := anObject +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemeCommandTest.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemeCommandTest.class.st new file mode 100644 index 00000000..b0d7da20 --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidThemeCommandTest.class.st @@ -0,0 +1,39 @@ +Class { + #name : #PyramidThemeCommandTest, + #superclass : #TestCase, + #traits : 'TPyramidCommandTest', + #classTraits : 'TPyramidCommandTest classTrait', + #category : #'Pyramid-Toplo-Incubator' +} + +{ #category : #accessing } +PyramidThemeCommandTest >> command [ + + ^ PyramidThemeCommand new +] + +{ #category : #'as yet unclassified' } +PyramidThemeCommandTest >> targetContainers [ + + ^ { + (PyramidCommandTestContainer + no: BlElement new + with: (BlElement new + toTheme: ToRawTheme dark; + yourself) + prop: ToRawTheme dark). + (PyramidCommandTestContainer + no: (BlElement new + toTheme: ToRawTheme dark; + yourself) + with: (BlElement new + toTheme: ToRawTheme light; + yourself) + prop: ToRawTheme light). + (PyramidCommandTestContainer + no: (BlElement new + toTheme: ToRawTheme dark; + yourself) + with: (BlElement new) + prop: nil) } +] From 0f8ff8cdc565cf7b6b45ff91b5e53151a24befe8 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Thu, 1 Feb 2024 14:41:53 +0100 Subject: [PATCH 11/27] Add opne with correct theme --- .../PyramidOpenFromSpacePlugin.class.st | 34 +++++++++++++ .../PyramidPluginEditOnRunning.class.st | 48 +++++------------ ...ramidOpenFromSpacePluginExtension.trait.st | 9 ++++ ...yramidSpaceThemeSelectorPresenter.class.st | 2 +- .../PyramidThemeFromSpaceExtension.class.st | 51 +++++++++++++++++++ src/Pyramid/BlSpace.extension.st | 8 ++- 6 files changed, 116 insertions(+), 36 deletions(-) create mode 100644 src/Pyramid-Bloc/PyramidOpenFromSpacePlugin.class.st create mode 100644 src/Pyramid-Bloc/TPyramidOpenFromSpacePluginExtension.trait.st create mode 100644 src/Pyramid-Toplo-Incubator/PyramidThemeFromSpaceExtension.class.st diff --git a/src/Pyramid-Bloc/PyramidOpenFromSpacePlugin.class.st b/src/Pyramid-Bloc/PyramidOpenFromSpacePlugin.class.st new file mode 100644 index 00000000..60b1fd5a --- /dev/null +++ b/src/Pyramid-Bloc/PyramidOpenFromSpacePlugin.class.st @@ -0,0 +1,34 @@ +Class { + #name : #PyramidOpenFromSpacePlugin, + #superclass : #Object, + #traits : 'TPyramidPlugin', + #classTraits : 'TPyramidPlugin classTrait', + #instVars : [ + 'extensions' + ], + #category : #'Pyramid-Bloc-plugin-edit-on-running' +} + +{ #category : #adding } +PyramidOpenFromSpacePlugin >> addExtension: anExtension [ + + self extensions add: anExtension +] + +{ #category : #accessing } +PyramidOpenFromSpacePlugin >> extensions [ + + ^ extensions +] + +{ #category : #accessing } +PyramidOpenFromSpacePlugin >> initialize [ + + extensions := OrderedCollection new. +] + +{ #category : #adding } +PyramidOpenFromSpacePlugin >> removeExetension: anExtension [ + + self extensions remove: anExtension +] diff --git a/src/Pyramid-Bloc/PyramidPluginEditOnRunning.class.st b/src/Pyramid-Bloc/PyramidPluginEditOnRunning.class.st index a2d5baa1..0200d305 100644 --- a/src/Pyramid-Bloc/PyramidPluginEditOnRunning.class.st +++ b/src/Pyramid-Bloc/PyramidPluginEditOnRunning.class.st @@ -48,22 +48,20 @@ PyramidPluginEditOnRunning class >> cleanUp: anObject [ PyramidPluginEditOnRunning class >> doShortcutAction: anEvent [ | space editor whenClosedDo | - - self flag:'labordep: this is a temporary processing because this fork is due to a Bloc opened issue'. - (shortcutFork notNil and:[ shortcutFork isTerminated not ]) ifTrue:[ ^ self ]. - - shortcutFork := [ - - self editOnRunning ifTrue:[ - space := anEvent source space. - (self canEditSpace: space) ifTrue:[ - editor := space editWithPyramid. - whenClosedDo := editor window whenClosedDo. - editor window whenClosedDo: [ whenClosedDo value ]. - ]. - ]. - - ] forkAt: Processor userBackgroundPriority named: 'Pyramid edit-on-running plugin shortcut' + self flag: + 'labordep: this is a temporary processing because this fork is due to a Bloc opened issue'. + (shortcutFork notNil and: [ shortcutFork isTerminated not ]) ifTrue: [ + ^ self ]. + + shortcutFork := [ + self editOnRunning ifTrue: [ + space := anEvent source space. + (self canEditSpace: space) ifTrue: [ + editor := space editWithPyramid. + whenClosedDo := editor window whenClosedDo. + editor window whenClosedDo: [ whenClosedDo value ] ] ] ] + forkAt: Processor userBackgroundPriority + named: 'Pyramid edit-on-running plugin shortcut' ] { #category : #accessing } @@ -151,21 +149,3 @@ PyramidPluginEditOnRunning class >> uninstallBlUniverseListeners [ Beacon instance unsubscribe: self ] - -{ #category : #adding } -PyramidPluginEditOnRunning >> addPanelsOn: aPyramidSimpleWindow [ - - "do nothing" -] - -{ #category : #actions } -PyramidPluginEditOnRunning >> configureBuilder: aPyramidEditorBuilder [ - - "do nothing" -] - -{ #category : #connecting } -PyramidPluginEditOnRunning >> connectOn: aPyramidEditor [ - - "do nothing" -] diff --git a/src/Pyramid-Bloc/TPyramidOpenFromSpacePluginExtension.trait.st b/src/Pyramid-Bloc/TPyramidOpenFromSpacePluginExtension.trait.st new file mode 100644 index 00000000..4fe9ed78 --- /dev/null +++ b/src/Pyramid-Bloc/TPyramidOpenFromSpacePluginExtension.trait.st @@ -0,0 +1,9 @@ +Trait { + #name : #TPyramidOpenFromSpacePluginExtension, + #category : #'Pyramid-Bloc-plugin-edit-on-running' +} + +{ #category : #'as yet unclassified' } +TPyramidOpenFromSpacePluginExtension >> configureOpenFromSpace: aSpace [ +"Do something with the space" +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st index 7ce92b8c..5d42e41f 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st @@ -22,7 +22,7 @@ PyramidSpaceThemeSelectorPresenter >> applyTheme [ { #category : #'as yet unclassified' } PyramidSpaceThemeSelectorPresenter >> informSpaceIsReady [ - self applyTheme + "self applyTheme" ] { #category : #displaying } diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemeFromSpaceExtension.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemeFromSpaceExtension.class.st new file mode 100644 index 00000000..3578e3a3 --- /dev/null +++ b/src/Pyramid-Toplo-Incubator/PyramidThemeFromSpaceExtension.class.st @@ -0,0 +1,51 @@ +Class { + #name : #PyramidThemeFromSpaceExtension, + #superclass : #Object, + #traits : 'TPyramidPlugin + TPyramidSpaceExtension + TPyramidEditorSpaceIsReadyObserver + TPyramidOpenFromSpacePluginExtension', + #classTraits : 'TPyramidPlugin classTrait + TPyramidSpaceExtension classTrait + TPyramidEditorSpaceIsReadyObserver classTrait + TPyramidOpenFromSpacePluginExtension classTrait', + #instVars : [ + 'defaultToTheme' + ], + #category : #'Pyramid-Toplo-Incubator' +} + +{ #category : #actions } +PyramidThemeFromSpaceExtension >> configureBuilder: aPyramidEditorBuilder [ + + (aPyramidEditorBuilder findPlugin: PyramidOpenFromSpacePlugin) + addExtension: self. + (aPyramidEditorBuilder findPlugin: PyramidSpacePlugin) builder + addExtension: self +] + +{ #category : #'as yet unclassified' } +PyramidThemeFromSpaceExtension >> configureOpenFromSpace: aSpace [ + "Do something with the space" + + self defaultToTheme: aSpace toTheme +] + +{ #category : #accessing } +PyramidThemeFromSpaceExtension >> defaultToTheme [ + + ^ defaultToTheme +] + +{ #category : #accessing } +PyramidThemeFromSpaceExtension >> defaultToTheme: anObject [ + + defaultToTheme := anObject +] + +{ #category : #'as yet unclassified' } +PyramidThemeFromSpaceExtension >> informSpaceIsReady [ + + self builder space toTheme: self defaultToTheme +] + +{ #category : #displaying } +PyramidThemeFromSpaceExtension >> installOn: aBuilder [ + + self builder: aBuilder. + aBuilder addSpaceIsReadyObserver: self. +] diff --git a/src/Pyramid/BlSpace.extension.st b/src/Pyramid/BlSpace.extension.st index e4b17c68..f3542259 100644 --- a/src/Pyramid/BlSpace.extension.st +++ b/src/Pyramid/BlSpace.extension.st @@ -9,8 +9,14 @@ BlSpace >> editWithPyramid [ spacePlaceholder addChildren: PyramidBlElementHelper openInPyramidHelper materializeAsBlElement. - "Open editor" + "Build editor" editor := PyramidEditor buildEditor. + + "PyramidOpenFromSpacePlugin used to recover theme if Toplo is loaded." + (editor findPlugin: PyramidOpenFromSpacePlugin) extensions do: [ + :each | each configureOpenFromSpace: self ]. + + "Open editor" editor window open. self flag: From db10af6483eeddb074eabcacf0e32bc415158bd6 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Thu, 1 Feb 2024 15:38:46 +0100 Subject: [PATCH 12/27] Add closing event to set the current pyramid toTheme space --- ...ramidOpenFromSpacePluginExtension.trait.st | 11 +++- ...amidElementThemeSelectorPresenter.class.st | 11 ++-- ...yramidSpaceThemeSelectorPresenter.class.st | 22 +------- .../PyramidThemeFromSpaceExtension.class.st | 55 +++++++++++++++++-- .../PyramidThemeSelectorPresenter.class.st | 7 +++ src/Pyramid/BlSpace.extension.st | 11 ++-- 6 files changed, 83 insertions(+), 34 deletions(-) diff --git a/src/Pyramid-Bloc/TPyramidOpenFromSpacePluginExtension.trait.st b/src/Pyramid-Bloc/TPyramidOpenFromSpacePluginExtension.trait.st index 4fe9ed78..a69ff7f0 100644 --- a/src/Pyramid-Bloc/TPyramidOpenFromSpacePluginExtension.trait.st +++ b/src/Pyramid-Bloc/TPyramidOpenFromSpacePluginExtension.trait.st @@ -3,7 +3,16 @@ Trait { #category : #'Pyramid-Bloc-plugin-edit-on-running' } +{ #category : #'as yet unclassified' } +TPyramidOpenFromSpacePluginExtension >> configureCloseOnSpace: aSpace [ + "Do something with the space when you close the editor" + + +] + { #category : #'as yet unclassified' } TPyramidOpenFromSpacePluginExtension >> configureOpenFromSpace: aSpace [ -"Do something with the space" + "Do something with the space when you open the editor" + + ] diff --git a/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st index 3ba44070..4aeb618e 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st @@ -19,11 +19,12 @@ PyramidElementThemeSelectorPresenter >> applyTheme [ | themeToApplied | self triggerThemeChangement ifFalse: [ ^ self ]. themeToApplied := nil. - self inheritSelector state ifFalse: [ - themeToApplied := self themeSelector selectedItem variant: - self variantSelector selectedItem new. - ]. - self commandExecutor use: self themeCommand on: self projectModel selection asArray with: themeToApplied. + self inheritSelector state ifFalse: [ + themeToApplied := self currentTheme ]. + self commandExecutor + use: self themeCommand + on: self projectModel selection asArray + with: themeToApplied. self projectModel informElementsChanged ] diff --git a/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st index 5d42e41f..17a12801 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st @@ -1,8 +1,8 @@ Class { #name : #PyramidSpaceThemeSelectorPresenter, #superclass : #PyramidThemeSelectorPresenter, - #traits : 'TPyramidSpaceExtension + TPyramidEditorSpaceIsReadyObserver', - #classTraits : 'TPyramidSpaceExtension classTrait + TPyramidEditorSpaceIsReadyObserver classTrait', + #traits : 'TPyramidSpaceExtension', + #classTraits : 'TPyramidSpaceExtension classTrait', #instVars : [ 'projectModel' ], @@ -12,26 +12,10 @@ Class { { #category : #'as yet unclassified' } PyramidSpaceThemeSelectorPresenter >> applyTheme [ - | themeToApplied | - themeToApplied := self themeSelector selectedItem variant: - self variantSelector selectedItem new. - self builder space toTheme: themeToApplied. + self builder space toTheme: self currentTheme. self projectModel informElementsChanged ] -{ #category : #'as yet unclassified' } -PyramidSpaceThemeSelectorPresenter >> informSpaceIsReady [ - - "self applyTheme" -] - -{ #category : #displaying } -PyramidSpaceThemeSelectorPresenter >> installOn: aBuilder [ - - self builder: aBuilder. - aBuilder addSpaceIsReadyObserver: self. -] - { #category : #initialization } PyramidSpaceThemeSelectorPresenter >> labelPresenter [ diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemeFromSpaceExtension.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemeFromSpaceExtension.class.st index 3578e3a3..c43c5f3f 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemeFromSpaceExtension.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidThemeFromSpaceExtension.class.st @@ -4,7 +4,9 @@ Class { #traits : 'TPyramidPlugin + TPyramidSpaceExtension + TPyramidEditorSpaceIsReadyObserver + TPyramidOpenFromSpacePluginExtension', #classTraits : 'TPyramidPlugin classTrait + TPyramidSpaceExtension classTrait + TPyramidEditorSpaceIsReadyObserver classTrait + TPyramidOpenFromSpacePluginExtension classTrait', #instVars : [ - 'defaultToTheme' + 'defaultToTheme', + 'themeSpaceSelector', + 'spaceIsReady' ], #category : #'Pyramid-Toplo-Incubator' } @@ -14,15 +16,25 @@ PyramidThemeFromSpaceExtension >> configureBuilder: aPyramidEditorBuilder [ (aPyramidEditorBuilder findPlugin: PyramidOpenFromSpacePlugin) addExtension: self. - (aPyramidEditorBuilder findPlugin: PyramidSpacePlugin) builder - addExtension: self + (aPyramidEditorBuilder findPlugin: PyramidSpacePlugin) builder + addExtension: self. + self themeSpaceSelector: (aPyramidEditorBuilder findPlugin: PyramidToploThemePlugin) + themePresenter themeSpaceSelector +] + +{ #category : #'as yet unclassified' } +PyramidThemeFromSpaceExtension >> configureCloseOnSpace: aSpace [ + + aSpace toTheme: themeSpaceSelector currentTheme. + aSpace root skinManager postponeRequestSkinIn: aSpace root ] { #category : #'as yet unclassified' } PyramidThemeFromSpaceExtension >> configureOpenFromSpace: aSpace [ "Do something with the space" - self defaultToTheme: aSpace toTheme + self defaultToTheme: aSpace toTheme. + aSpace root skinManager postponeRequestSkinIn: aSpace root ] { #category : #accessing } @@ -34,18 +46,51 @@ PyramidThemeFromSpaceExtension >> defaultToTheme [ { #category : #accessing } PyramidThemeFromSpaceExtension >> defaultToTheme: anObject [ - defaultToTheme := anObject + defaultToTheme := anObject. + self themeSpaceSelector selectTheme: anObject. + self spaceIsReady ifTrue: [ self informSpaceIsReady ]. ] { #category : #'as yet unclassified' } PyramidThemeFromSpaceExtension >> informSpaceIsReady [ + self defaultToTheme ifNil: [ self spaceIsReady: true. ^ self ]. self builder space toTheme: self defaultToTheme ] +{ #category : #initialization } +PyramidThemeFromSpaceExtension >> initialize [ + + spaceIsReady := false. +] + { #category : #displaying } PyramidThemeFromSpaceExtension >> installOn: aBuilder [ self builder: aBuilder. aBuilder addSpaceIsReadyObserver: self. ] + +{ #category : #accessing } +PyramidThemeFromSpaceExtension >> spaceIsReady [ + + ^ spaceIsReady +] + +{ #category : #accessing } +PyramidThemeFromSpaceExtension >> spaceIsReady: anObject [ + + spaceIsReady := anObject +] + +{ #category : #accessing } +PyramidThemeFromSpaceExtension >> themeSpaceSelector [ + + ^ themeSpaceSelector +] + +{ #category : #accessing } +PyramidThemeFromSpaceExtension >> themeSpaceSelector: anObject [ + + themeSpaceSelector := anObject +] diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st b/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st index 8333f561..485af86c 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st @@ -23,6 +23,13 @@ PyramidThemeSelectorPresenter >> buttonRefreshTheme [ ^ buttonRefreshTheme ] +{ #category : #'as yet unclassified' } +PyramidThemeSelectorPresenter >> currentTheme [ + + ^ self themeSelector selectedItem variant: + self variantSelector selectedItem new +] + { #category : #layout } PyramidThemeSelectorPresenter >> defaultLayout [ diff --git a/src/Pyramid/BlSpace.extension.st b/src/Pyramid/BlSpace.extension.st index f3542259..9075cef3 100644 --- a/src/Pyramid/BlSpace.extension.st +++ b/src/Pyramid/BlSpace.extension.st @@ -3,7 +3,7 @@ Extension { #name : #BlSpace } { #category : #'*Pyramid' } BlSpace >> editWithPyramid [ - | editor elements spacePlaceholder | + | editor elements spacePlaceholder openFromSpacePlugin | "Prepare image to replace the application view" spacePlaceholder := (self root exportAsForm dimmed: 0.5) asElement. spacePlaceholder addChildren: @@ -13,8 +13,9 @@ BlSpace >> editWithPyramid [ editor := PyramidEditor buildEditor. "PyramidOpenFromSpacePlugin used to recover theme if Toplo is loaded." - (editor findPlugin: PyramidOpenFromSpacePlugin) extensions do: [ - :each | each configureOpenFromSpace: self ]. + openFromSpacePlugin := editor findPlugin: PyramidOpenFromSpacePlugin. + openFromSpacePlugin extensions do: [ :each | + each configureOpenFromSpace: self ]. "Open editor" editor window open. @@ -39,7 +40,9 @@ BlSpace >> editWithPyramid [ editor projectModel firstLevelElements removeAll. self root removeChildren. self root addChildren: pyramidRoots. - self userData removeKey: #pyramid_isOnEdition ]. + self userData removeKey: #pyramid_isOnEdition. + openFromSpacePlugin extensions do: [ :each | + each configureCloseOnSpace: self ]. ]. ^ editor ] From 34eb94ebccbb3b0b476c5426369e318270816a80 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Thu, 1 Feb 2024 16:35:45 +0100 Subject: [PATCH 13/27] updateBaseline for Toplo --- .../BaselineOfPyramid.class.st | 119 ++++++++++++++---- 1 file changed, 97 insertions(+), 22 deletions(-) diff --git a/src/BaselineOfPyramid/BaselineOfPyramid.class.st b/src/BaselineOfPyramid/BaselineOfPyramid.class.st index fb78d641..77b4ec97 100644 --- a/src/BaselineOfPyramid/BaselineOfPyramid.class.st +++ b/src/BaselineOfPyramid/BaselineOfPyramid.class.st @@ -8,32 +8,71 @@ Class { BaselineOfPyramid >> baseline: spec [ - spec for: #common do: [ - spec postLoadDoIt: #postload:package:. - self dependencies: spec. - spec - package: #Pyramid; - package: #'Pyramid-IDE' with: [ spec requires: #( #Pyramid ) ]; - package: #'Pyramid-Bloc' - with: [ spec requires: #( #Pyramid #Bloc #BlocSerialization ) ]; - package: #'Pyramid-Tests' - with: [ spec requires: #( #Pyramid #'Pyramid-Bloc' ) ]; - package: #'Pyramid-Examples' - with: [ spec requires: #( #Pyramid ) ]; - package: #'Pyramid-IDE' with: [ spec requires: #( #Pyramid ) ] ] + "Common baseline for all Pharo versions" + spec for: #common do: [ self baselineForCommon: spec ] ] { #category : #baselines } -BaselineOfPyramid >> dependencies: spec [ +BaselineOfPyramid >> baselineForCommon: spec [ + + + spec preLoadDoIt: #preload:package:. + spec postLoadDoIt: #postload:package:. + + "Dependencies" + self blocDependencies: spec. + self toploDependencies: spec. + + "Packages" + self idePackages: spec. + self blocPackages: spec. + self toploPackages: spec. + + "Groups" + spec group: 'default' with: #( 'Bloc' 'Toplo' ). "complete version" + spec group: 'Bloc' with: self blocPackagesNames. "only Bloc" + spec group: 'Toplo' with: self toploPackagesNames "only Bloc and Toplo" +] + +{ #category : #dependencies } +BaselineOfPyramid >> blocDependencies: spec [ + + spec + baseline: 'Bloc' + with: [ spec repository: 'github://pharo-graphics/Bloc:dev-1.0/src' ]. + spec + baseline: 'BlocSerialization' + with: [ + spec repository: 'github://OpenSmock/Bloc-Serialization:main/src' ] +] + +{ #category : #packages } +BaselineOfPyramid >> blocPackages: spec [ + + spec + package: 'Pyramid-Bloc' + with: [ spec requires: #( 'Pyramid' 'Bloc' ) ]. + spec + package: 'Pyramid-Tests' + with: [ spec requires: #( 'Pyramid-Bloc' ) ]. + spec + package: 'Pyramid-Examples' + with: [ spec requires: #( 'Pyramid-Bloc' ) ] +] + +{ #category : #packages } +BaselineOfPyramid >> blocPackagesNames [ + + ^ #( 'Pyramid' 'Pyramid-Bloc' 'Pyramid-Tests' 'Pyramid-IDE' 'Pyramid-Examples' ) +] + +{ #category : #packages } +BaselineOfPyramid >> idePackages: spec [ + + spec + package: 'Pyramid-IDE' + with: [ spec requires: #( 'Pyramid' ) ]. - spec - baseline: #Bloc - with: [ - spec repository: 'github://pharo-graphics/Bloc:dev-1.0/src' ]. - spec - baseline: #BlocSerialization - with: [ - spec repository: 'github://OpenSmock/Bloc-Serialization:main/src' ]. ] { #category : #actions } @@ -41,3 +80,39 @@ BaselineOfPyramid >> postload: loader package: packageSpec [ PyramidPluginManager reset ] + +{ #category : #actions } +BaselineOfPyramid >> preload: loader package: packageSpec [ + +] + +{ #category : #dependencies } +BaselineOfPyramid >> toploDependencies: spec [ + + spec + baseline: 'Toplo' + with: [ spec repository: 'github://pharo-graphics/Toplo:main/src' ]. + spec + baseline: 'ToploSerialization' + with: [ spec repository: 'github://OpenSmock/Toplo-Serialization:main/src' ] +] + +{ #category : #packages } +BaselineOfPyramid >> toploPackages: spec [ + + spec + package: 'Pyramid-Toplo' + with: [ spec requires: #( 'Bloc' 'ToploSerialization' 'Toplo' ) ]. + spec + package: 'Pyramid-Toplo-Tests' + with: [ spec requires: #( 'Pyramid-Toplo' ) ]. + spec + package: 'Pyramid-Toplo-Examples' + with: [ spec requires: #( 'Pyramid-Toplo' ) ] +] + +{ #category : #packages } +BaselineOfPyramid >> toploPackagesNames [ + + ^ #( 'Bloc' 'Pyramid-Toplo' 'Pyramid-Toplo-Tests' 'Pyramid-Toplo-Examples' ) +] From 9f456a53fccbd1e928330a6105d2524fb0a3a9f3 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Thu, 1 Feb 2024 16:37:44 +0100 Subject: [PATCH 14/27] Add missing repository --- src/Pyramid-Toplo-Examples/PyramidToploExamples.class.st | 5 +++++ src/Pyramid-Toplo-Examples/package.st | 1 + src/Pyramid-Toplo-Incubator/package.st | 1 - .../PyramidContainsValidSelectorInterpreterTest.class.st | 2 +- .../PyramidStampCommandTest.class.st | 2 +- .../PyramidThemeCommandTest.class.st | 2 +- src/Pyramid-Toplo-Tests/package.st | 1 + .../PyramidContainsValidSelectorInterpreter.class.st | 2 +- .../PyramidElementThemeSelectorPresenter.class.st | 2 +- .../PyramidSelectorPossibleStamps.class.st | 2 +- .../PyramidSpaceThemeSelectorPresenter.class.st | 2 +- .../PyramidStampCommand.class.st | 2 +- .../PyramidStyleSheetEditorPresenter.class.st | 2 +- .../PyramidThemeCommand.class.st | 2 +- .../PyramidThemeFromSpaceExtension.class.st | 2 +- .../PyramidThemePresenter.class.st | 2 +- .../PyramidThemePropertyStrategy.class.st | 2 +- .../PyramidThemeSelectorPresenter.class.st | 2 +- .../PyramidToploThemePlugin.class.st | 2 +- src/Pyramid-Toplo/package.st | 1 + 20 files changed, 23 insertions(+), 16 deletions(-) create mode 100644 src/Pyramid-Toplo-Examples/PyramidToploExamples.class.st create mode 100644 src/Pyramid-Toplo-Examples/package.st delete mode 100644 src/Pyramid-Toplo-Incubator/package.st rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo-Tests}/PyramidContainsValidSelectorInterpreterTest.class.st (99%) rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo-Tests}/PyramidStampCommandTest.class.st (90%) rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo-Tests}/PyramidThemeCommandTest.class.st (93%) create mode 100644 src/Pyramid-Toplo-Tests/package.st rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo}/PyramidContainsValidSelectorInterpreter.class.st (99%) rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo}/PyramidElementThemeSelectorPresenter.class.st (98%) rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo}/PyramidSelectorPossibleStamps.class.st (96%) rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo}/PyramidSpaceThemeSelectorPresenter.class.st (93%) rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo}/PyramidStampCommand.class.st (91%) rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo}/PyramidStyleSheetEditorPresenter.class.st (93%) rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo}/PyramidThemeCommand.class.st (86%) rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo}/PyramidThemeFromSpaceExtension.class.st (97%) rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo}/PyramidThemePresenter.class.st (96%) rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo}/PyramidThemePropertyStrategy.class.st (97%) rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo}/PyramidThemeSelectorPresenter.class.st (98%) rename src/{Pyramid-Toplo-Incubator => Pyramid-Toplo}/PyramidToploThemePlugin.class.st (96%) create mode 100644 src/Pyramid-Toplo/package.st diff --git a/src/Pyramid-Toplo-Examples/PyramidToploExamples.class.st b/src/Pyramid-Toplo-Examples/PyramidToploExamples.class.st new file mode 100644 index 00000000..aa4439a9 --- /dev/null +++ b/src/Pyramid-Toplo-Examples/PyramidToploExamples.class.st @@ -0,0 +1,5 @@ +Class { + #name : #PyramidToploExamples, + #superclass : #Object, + #category : #'Pyramid-Toplo-Examples' +} diff --git a/src/Pyramid-Toplo-Examples/package.st b/src/Pyramid-Toplo-Examples/package.st new file mode 100644 index 00000000..a1c8a7af --- /dev/null +++ b/src/Pyramid-Toplo-Examples/package.st @@ -0,0 +1 @@ +Package { #name : #'Pyramid-Toplo-Examples' } diff --git a/src/Pyramid-Toplo-Incubator/package.st b/src/Pyramid-Toplo-Incubator/package.st deleted file mode 100644 index 653c9eb4..00000000 --- a/src/Pyramid-Toplo-Incubator/package.st +++ /dev/null @@ -1 +0,0 @@ -Package { #name : #'Pyramid-Toplo-Incubator' } diff --git a/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreterTest.class.st b/src/Pyramid-Toplo-Tests/PyramidContainsValidSelectorInterpreterTest.class.st similarity index 99% rename from src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreterTest.class.st rename to src/Pyramid-Toplo-Tests/PyramidContainsValidSelectorInterpreterTest.class.st index 82d16d45..93d5e638 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreterTest.class.st +++ b/src/Pyramid-Toplo-Tests/PyramidContainsValidSelectorInterpreterTest.class.st @@ -4,7 +4,7 @@ Class { #instVars : [ 'interpreter' ], - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-Tests-cases-plugin-theme-management' } { #category : #accessing } diff --git a/src/Pyramid-Toplo-Incubator/PyramidStampCommandTest.class.st b/src/Pyramid-Toplo-Tests/PyramidStampCommandTest.class.st similarity index 90% rename from src/Pyramid-Toplo-Incubator/PyramidStampCommandTest.class.st rename to src/Pyramid-Toplo-Tests/PyramidStampCommandTest.class.st index c141a2c6..b27c592e 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidStampCommandTest.class.st +++ b/src/Pyramid-Toplo-Tests/PyramidStampCommandTest.class.st @@ -3,7 +3,7 @@ Class { #superclass : #TestCase, #traits : 'TPyramidCommandTest', #classTraits : 'TPyramidCommandTest classTrait', - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-Tests-cases-plugin-theme-management' } { #category : #accessing } diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemeCommandTest.class.st b/src/Pyramid-Toplo-Tests/PyramidThemeCommandTest.class.st similarity index 93% rename from src/Pyramid-Toplo-Incubator/PyramidThemeCommandTest.class.st rename to src/Pyramid-Toplo-Tests/PyramidThemeCommandTest.class.st index b0d7da20..64635ee1 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemeCommandTest.class.st +++ b/src/Pyramid-Toplo-Tests/PyramidThemeCommandTest.class.st @@ -3,7 +3,7 @@ Class { #superclass : #TestCase, #traits : 'TPyramidCommandTest', #classTraits : 'TPyramidCommandTest classTrait', - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-Tests-cases-plugin-theme-management' } { #category : #accessing } diff --git a/src/Pyramid-Toplo-Tests/package.st b/src/Pyramid-Toplo-Tests/package.st new file mode 100644 index 00000000..187b5704 --- /dev/null +++ b/src/Pyramid-Toplo-Tests/package.st @@ -0,0 +1 @@ +Package { #name : #'Pyramid-Toplo-Tests' } diff --git a/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreter.class.st b/src/Pyramid-Toplo/PyramidContainsValidSelectorInterpreter.class.st similarity index 99% rename from src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreter.class.st rename to src/Pyramid-Toplo/PyramidContainsValidSelectorInterpreter.class.st index 0ffd8db0..5148858e 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidContainsValidSelectorInterpreter.class.st +++ b/src/Pyramid-Toplo/PyramidContainsValidSelectorInterpreter.class.st @@ -7,7 +7,7 @@ Class { 'invalidSelectors', 'ignoredSelectors' ], - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-plugin-theme-management' } { #category : #operating } diff --git a/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st b/src/Pyramid-Toplo/PyramidElementThemeSelectorPresenter.class.st similarity index 98% rename from src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st rename to src/Pyramid-Toplo/PyramidElementThemeSelectorPresenter.class.st index 4aeb618e..4c1dcc13 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidElementThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo/PyramidElementThemeSelectorPresenter.class.st @@ -10,7 +10,7 @@ Class { 'commandExecutor', 'themeCommand' ], - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-plugin-theme-management' } { #category : #'as yet unclassified' } diff --git a/src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st b/src/Pyramid-Toplo/PyramidSelectorPossibleStamps.class.st similarity index 96% rename from src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st rename to src/Pyramid-Toplo/PyramidSelectorPossibleStamps.class.st index 6e608649..0cf44247 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidSelectorPossibleStamps.class.st +++ b/src/Pyramid-Toplo/PyramidSelectorPossibleStamps.class.st @@ -4,7 +4,7 @@ Class { #instVars : [ 'theme' ], - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-plugin-theme-management' } { #category : #'as yet unclassified' } diff --git a/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st b/src/Pyramid-Toplo/PyramidSpaceThemeSelectorPresenter.class.st similarity index 93% rename from src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st rename to src/Pyramid-Toplo/PyramidSpaceThemeSelectorPresenter.class.st index 17a12801..fca59254 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidSpaceThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo/PyramidSpaceThemeSelectorPresenter.class.st @@ -6,7 +6,7 @@ Class { #instVars : [ 'projectModel' ], - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-plugin-theme-management' } { #category : #'as yet unclassified' } diff --git a/src/Pyramid-Toplo-Incubator/PyramidStampCommand.class.st b/src/Pyramid-Toplo/PyramidStampCommand.class.st similarity index 91% rename from src/Pyramid-Toplo-Incubator/PyramidStampCommand.class.st rename to src/Pyramid-Toplo/PyramidStampCommand.class.st index 0b4f8e81..2ec2f0c1 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidStampCommand.class.st +++ b/src/Pyramid-Toplo/PyramidStampCommand.class.st @@ -4,7 +4,7 @@ Class { #instVars : [ 'stamp' ], - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-plugin-theme-management' } { #category : #'as yet unclassified' } diff --git a/src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st b/src/Pyramid-Toplo/PyramidStyleSheetEditorPresenter.class.st similarity index 93% rename from src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st rename to src/Pyramid-Toplo/PyramidStyleSheetEditorPresenter.class.st index 2343e1c6..8a92a1e5 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidStyleSheetEditorPresenter.class.st +++ b/src/Pyramid-Toplo/PyramidStyleSheetEditorPresenter.class.st @@ -6,7 +6,7 @@ Class { 'styleSheetEditor', 'stampPresenter' ], - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-plugin-theme-management' } { #category : #accessing } diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemeCommand.class.st b/src/Pyramid-Toplo/PyramidThemeCommand.class.st similarity index 86% rename from src/Pyramid-Toplo-Incubator/PyramidThemeCommand.class.st rename to src/Pyramid-Toplo/PyramidThemeCommand.class.st index 99a87692..b5ba8a02 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemeCommand.class.st +++ b/src/Pyramid-Toplo/PyramidThemeCommand.class.st @@ -1,7 +1,7 @@ Class { #name : #PyramidThemeCommand, #superclass : #PyramidAbstractBlocCommand, - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-plugin-theme-management' } { #category : #'as yet unclassified' } diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemeFromSpaceExtension.class.st b/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st similarity index 97% rename from src/Pyramid-Toplo-Incubator/PyramidThemeFromSpaceExtension.class.st rename to src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st index c43c5f3f..ac45e856 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemeFromSpaceExtension.class.st +++ b/src/Pyramid-Toplo/PyramidThemeFromSpaceExtension.class.st @@ -8,7 +8,7 @@ Class { 'themeSpaceSelector', 'spaceIsReady' ], - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-plugin-theme-management' } { #category : #actions } diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st b/src/Pyramid-Toplo/PyramidThemePresenter.class.st similarity index 96% rename from src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st rename to src/Pyramid-Toplo/PyramidThemePresenter.class.st index 815c7fdc..b4591852 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemePresenter.class.st +++ b/src/Pyramid-Toplo/PyramidThemePresenter.class.st @@ -6,7 +6,7 @@ Class { 'themeSpaceSelector', 'themeElementSelector' ], - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-plugin-theme-management' } { #category : #layout } diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemePropertyStrategy.class.st b/src/Pyramid-Toplo/PyramidThemePropertyStrategy.class.st similarity index 97% rename from src/Pyramid-Toplo-Incubator/PyramidThemePropertyStrategy.class.st rename to src/Pyramid-Toplo/PyramidThemePropertyStrategy.class.st index af7e6247..42966674 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemePropertyStrategy.class.st +++ b/src/Pyramid-Toplo/PyramidThemePropertyStrategy.class.st @@ -1,7 +1,7 @@ Class { #name : #PyramidThemePropertyStrategy, #superclass : #PyramidHideEmptyPropertyStrategy, - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-plugin-theme-management' } { #category : #'as yet unclassified' } diff --git a/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st b/src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st similarity index 98% rename from src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st rename to src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st index 485af86c..9c8fb517 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st @@ -8,7 +8,7 @@ Class { 'buttonRefreshTheme', 'triggerThemeChangement' ], - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-plugin-theme-management' } { #category : #'as yet unclassified' } diff --git a/src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st b/src/Pyramid-Toplo/PyramidToploThemePlugin.class.st similarity index 96% rename from src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st rename to src/Pyramid-Toplo/PyramidToploThemePlugin.class.st index 56f59d8b..ad683f21 100644 --- a/src/Pyramid-Toplo-Incubator/PyramidToploThemePlugin.class.st +++ b/src/Pyramid-Toplo/PyramidToploThemePlugin.class.st @@ -7,7 +7,7 @@ Class { 'themePresenter', 'themePropertyManager' ], - #category : #'Pyramid-Toplo-Incubator' + #category : #'Pyramid-Toplo-plugin-theme-management' } { #category : #adding } diff --git a/src/Pyramid-Toplo/package.st b/src/Pyramid-Toplo/package.st new file mode 100644 index 00000000..3788959f --- /dev/null +++ b/src/Pyramid-Toplo/package.st @@ -0,0 +1 @@ +Package { #name : #'Pyramid-Toplo' } From 7a9e37a76c44c5013bf2218fac307c28e1f8d0dd Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Thu, 1 Feb 2024 17:40:18 +0100 Subject: [PATCH 15/27] Fix on leaf for to element --- .../PyramidTreePresenter.class.st | 17 +- .../PyramidToploExamples.class.st | 8625 +++++++++++++++++ 2 files changed, 8635 insertions(+), 7 deletions(-) diff --git a/src/Pyramid-Bloc/PyramidTreePresenter.class.st b/src/Pyramid-Bloc/PyramidTreePresenter.class.st index 9d3f7fcf..74b550de 100644 --- a/src/Pyramid-Bloc/PyramidTreePresenter.class.st +++ b/src/Pyramid-Bloc/PyramidTreePresenter.class.st @@ -81,7 +81,10 @@ PyramidTreePresenter >> initializePresenters [ beMultipleSelection; beResizable; roots: { }; - children: [ :each | each children ]; + children: [ :each | + each isLeaf + ifTrue: [ { } ] + ifFalse: [ each children ] ]; contextMenu: [ self actionEditorMenu ]; whenSelectionChangedDo: [ :selection | self actionSelectionChanged: selection ]; @@ -90,12 +93,12 @@ PyramidTreePresenter >> initializePresenters [ columns := OrderedCollection new. buttonAddToFirstLevel := SpButtonPresenter new - label: 'Add new element'; - icon: (self iconNamed: #add); - action: [ self actionAddNewElement ]; - help: - 'Add a new element on the first level of the design.'; - yourself + label: 'Add new element'; + icon: (self iconNamed: #add); + action: [ self actionAddNewElement ]; + help: + 'Add a new element on the first level of the design.'; + yourself ] { #category : #accessing } diff --git a/src/Pyramid-Toplo-Examples/PyramidToploExamples.class.st b/src/Pyramid-Toplo-Examples/PyramidToploExamples.class.st index aa4439a9..ccaf2a51 100644 --- a/src/Pyramid-Toplo-Examples/PyramidToploExamples.class.st +++ b/src/Pyramid-Toplo-Examples/PyramidToploExamples.class.st @@ -3,3 +3,8628 @@ Class { #superclass : #Object, #category : #'Pyramid-Toplo-Examples' } + +{ #category : #'pyramid-serialized-bloc' } +PyramidToploExamples class >> buttons [ + "This class has been generated using Pyramid. + + By: YannLEGOFF + 2024-02-01 17:33:55" + + + ^ '[ + ToElement { + #children : BlChildrenArray [ + BlElement { + #children : BlChildrenArray [ + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutFitContentResizer { } + }, + #constraints : { + Class [ #BlLinearLayout ] : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : BlTopAlignment { } + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : BlHorizontalStartAlignment { } + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : BlInsets { + #top : 0.0, + #left : 0.0, + #bottom : 0.0, + #right : 0.0 + }, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : Float [ #infinity ], + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @14, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 107.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @24 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 53.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : Color { + #red : 0.08602150537634409, + #green : 0.4662756598240469, + #blue : 1.0, + #alpha : 1.0 + } + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : BlStrokeLineButtCap { }, + #lineJoin : BlStrokeLineMiterJoin { }, + #miterLimit : 4.0, + #dashArray : [ ], + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @31 + } + } + }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #buttonA + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : BlVerticalCenterAlignment { } + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : BlHorizontalCenterAlignment { } + }, + #weight : 1 + }, + Class [ #BlFrameLayout ] : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @45, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlDefaultVisuals { }, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @62, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : Color [ #white ] + } + ], + #rope : BlCollectionRope { + #collection : ''Primary Button'' + } + } + }, + #enabled : true, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : true, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : BlNullVerticalAlignment { }, + #horizontalAlignment : BlNullHorizontalAlignment { }, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @87 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + }, + #primary : ToStampProperty { + #name : #primary, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @104 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @18 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @112, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 104.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @118 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 52.0, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : Color { + #red : 0.8514173998044966, + #green : 0.8514173998044966, + #blue : 0.8514173998044966, + #alpha : 1.0 + } + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @33, + #lineJoin : @34, + #miterLimit : 4.0, + #dashArray : @35, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : Color [ #white ] + } + } + }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #buttonB + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @47 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @49 + }, + #weight : 1 + }, + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @137, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @150, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : Color [ #black ] + } + ], + #rope : BlCollectionRope { + #collection : ''Default Button'' + } + } + }, + #enabled : true, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : true, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @175 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @189 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @18 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @197, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 105.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @203 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 52.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @125 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @33, + #lineJoin : @34, + #miterLimit : 4.0, + #dashArray : [ + 3, + 3 + ], + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @129 + } + } + }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #buttonC + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @47 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @49 + }, + #weight : 1 + }, + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @221, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @234, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @163 + } + ], + #rope : BlCollectionRope { + #collection : ''Dashed Button'' + } + } + }, + #enabled : true, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : true, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @258 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + }, + #dashed : ToStampProperty { + #name : #dashed, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @273 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @18 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @281, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 86.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @287 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 43.0, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : Color { + #red : 0.0, + #green : 0.0, + #blue : 0.0, + #alpha : 0.0 + } + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @33, + #lineJoin : @34, + #miterLimit : 4.0, + #dashArray : @35, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @129 + } + } + }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #buttonD + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @47 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @49 + }, + #weight : 1 + }, + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @305, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @318, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @163 + } + ], + #rope : BlCollectionRope { + #collection : ''Text Button'' + } + } + }, + #enabled : true, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : true, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @342 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + }, + #text : ToStampProperty { + #name : #text, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @357 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @18 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @365, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 85.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @371 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 42.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @294 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @33, + #lineJoin : @34, + #miterLimit : 4.0, + #dashArray : @35, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @129 + } + } + }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #buttonE + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @47 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @49 + }, + #weight : 1 + }, + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @388, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @401, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : Color { + #red : 0.08602150537634409, + #green : 0.4662756598240469, + #blue : 1.0, + #alpha : 1.0 + } + } + ], + #rope : BlCollectionRope { + #collection : ''Link Button'' + } + } + }, + #enabled : true, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : true, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @426 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + }, + #link : ToStampProperty { + #name : #link, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @441 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + } + ], + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + Class [ #BlFlowLayout ] : BlFlowLayoutConstraints { + #vertical : BlFlowLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlFlowLayoutConstraintsHorizontal { + #alignment : @18 + }, + #newLine : false, + #weight : 0, + #display : BlFlowLayoutInline { } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 5.0, + #left : 5.0, + #bottom : 5.0, + #right : 5.0 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @448, + #previouslyAccessedConstraintsType : @447, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @455 + }, + #shouldUseLargestChild : false, + #cellSpacing : 5.0, + #interspace : 0.0 + } + }, + BlElement { + #children : BlChildrenArray [ + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @18 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @465, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 107.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @471 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 53.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : Color { + #red : 0.0, + #green : 0.0, + #blue : 0.0, + #alpha : 0.2 + } + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @33, + #lineJoin : @34, + #miterLimit : 4.0, + #dashArray : @35, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : Color { + #red : 0.0, + #green : 0.0, + #blue : 0.0, + #alpha : 0.0392156862745098 + } + } + } + }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #buttonA + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @47 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @49 + }, + #weight : 1 + }, + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @490, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @503, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : Color [ #lightGray ] + } + ], + #rope : BlCollectionRope { + #collection : ''Primary Button'' + } + } + }, + #enabled : false, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : false, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @528 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : false, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + }, + #primary : ToStampProperty { + #name : #primary, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @543 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @18 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @551, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 104.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @557 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 52.0, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @478 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @33, + #lineJoin : @34, + #miterLimit : 4.0, + #dashArray : @35, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @482 + } + } + }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #buttonB + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @47 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @49 + }, + #weight : 1 + }, + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @574, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @587, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @516 + } + ], + #rope : BlCollectionRope { + #collection : ''Default Button'' + } + } + }, + #enabled : false, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : false, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @611 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : false, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @625 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @18 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @633, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 105.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @639 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 52.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @478 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @33, + #lineJoin : @34, + #miterLimit : 4.0, + #dashArray : @211, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @482 + } + } + }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #buttonC + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @47 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @49 + }, + #weight : 1 + }, + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @656, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @669, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @516 + } + ], + #rope : BlCollectionRope { + #collection : ''Dashed Button'' + } + } + }, + #enabled : false, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : false, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @693 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : false, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + }, + #dashed : ToStampProperty { + #name : #dashed, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @708 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @18 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @716, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 86.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @722 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 43.0, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @294 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @33, + #lineJoin : @34, + #miterLimit : 4.0, + #dashArray : @35, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @294 + } + } + }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #buttonD + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @47 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @49 + }, + #weight : 1 + }, + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @739, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @752, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @516 + } + ], + #rope : BlCollectionRope { + #collection : ''Text Button'' + } + } + }, + #enabled : false, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : false, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @776 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : false, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + }, + #text : ToStampProperty { + #name : #text, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @791 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @18 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @799, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 85.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @805 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 42.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @294 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @33, + #lineJoin : @34, + #miterLimit : 4.0, + #dashArray : @35, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @294 + } + } + }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #buttonE + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @47 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @49 + }, + #weight : 1 + }, + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @822, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @835, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @516 + } + ], + #rope : BlCollectionRope { + #collection : ''Link Button'' + } + } + }, + #enabled : false, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : false, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @859 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : false, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + }, + #link : ToStampProperty { + #name : #link, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @874 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + } + ], + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @447 : BlFlowLayoutConstraints { + #vertical : BlFlowLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlFlowLayoutConstraintsHorizontal { + #alignment : @18 + }, + #newLine : false, + #weight : 0, + #display : @451 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 5.0, + #left : 5.0, + #bottom : 5.0, + #right : 5.0 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @880, + #previouslyAccessedConstraintsType : @447, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @886 + }, + #shouldUseLargestChild : false, + #cellSpacing : 5.0, + #interspace : 0.0 + } + }, + BlElement { + #children : BlChildrenArray [ + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @18 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @896, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 107.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @902 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 53.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : Color { + #red : 1.0, + #green : 0.3020527859237537, + #blue : 0.3098729227761486, + #alpha : 1.0 + } + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @33, + #lineJoin : @34, + #miterLimit : 4.0, + #dashArray : @35, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @909 + } + } + }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #buttonA + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @47 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @49 + }, + #weight : 1 + }, + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @920, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @933, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @75 + } + ], + #rope : BlCollectionRope { + #collection : ''Primary Button'' + } + } + }, + #enabled : true, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : true, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @957 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + }, + #danger : ToStampProperty { + #name : #danger, + #value : true + }, + #primary : ToStampProperty { + #name : #primary, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @973 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @18 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @981, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 104.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @987 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 52.0, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @909 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @33, + #lineJoin : @34, + #miterLimit : 4.0, + #dashArray : @35, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @129 + } + } + }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #buttonB + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @47 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @49 + }, + #weight : 1 + }, + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1004, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1017, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : Color { + #red : 1.0, + #green : 0.3020527859237537, + #blue : 0.3098729227761486, + #alpha : 1.0 + } + } + ], + #rope : BlCollectionRope { + #collection : ''Default Button'' + } + } + }, + #enabled : true, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : true, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @1042 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + }, + #danger : ToStampProperty { + #name : #danger, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @1057 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @18 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1065, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 105.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @1071 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 52.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @909 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @33, + #lineJoin : @34, + #miterLimit : 4.0, + #dashArray : @211, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @129 + } + } + }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #buttonC + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @47 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @49 + }, + #weight : 1 + }, + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1088, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1101, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @1030 + } + ], + #rope : BlCollectionRope { + #collection : ''Dashed Button'' + } + } + }, + #enabled : true, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : true, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @1125 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + }, + #dashed : ToStampProperty { + #name : #dashed, + #value : true + }, + #danger : ToStampProperty { + #name : #danger, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @1141 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @18 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1149, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 86.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @1155 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 43.0, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @294 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @33, + #lineJoin : @34, + #miterLimit : 4.0, + #dashArray : @35, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : Color [ #white ] + } + } + }, + #userData : IdentityDictionary { + #closeTooltipWindowOnMouseLeave : true, + #elementId : BlElementNamedId { + #identifier : #buttonD + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @47 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @49 + }, + #weight : 1 + }, + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1173, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1186, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @1030 + } + ], + #rope : BlCollectionRope { + #collection : ''Text Button'' + } + } + }, + #enabled : true, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : true, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @1210 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + }, + #danger : ToStampProperty { + #name : #danger, + #value : true + }, + #text : ToStampProperty { + #name : #text, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @1226 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @18 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1234, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 85.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @1240 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 42.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @294 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @33, + #lineJoin : @34, + #miterLimit : 4.0, + #dashArray : @35, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @129 + } + } + }, + #userData : IdentityDictionary { + #closeTooltipWindowOnMouseLeave : true, + #elementId : BlElementNamedId { + #identifier : #buttonE + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @13 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @47 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @49 + }, + #weight : 1 + }, + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @47, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @49, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1257, + #previouslyAccessedConstraintsType : @13, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @50 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @16, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @18, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1270, + #previouslyAccessedConstraintsType : @50, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @1030 + } + ], + #rope : BlCollectionRope { + #collection : ''Link Button'' + } + } + }, + #enabled : true, + #stamps : [ + #label : ToStampProperty { + #name : #label, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlFrameLayout { } + }, + #enabled : true, + #stamps : [ + #horizontal : ToStampProperty { + #name : #horizontal, + #value : true + }, + #labeled-icon : ToStampProperty { + #name : #labeled-icon, + #value : true + }, + #exact-interspace : ToStampProperty { + #name : #exact-interspace, + #value : true + }, + #icon-first : ToStampProperty { + #name : #icon-first, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @1294 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : @20, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + }, + #stamps : [ + #button : ToStampProperty { + #name : #button, + #value : true + }, + #link : ToStampProperty { + #name : #link, + #value : true + }, + #danger : ToStampProperty { + #name : #danger, + #value : true + } + ], + #tokens : [ ] + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @1310 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + } + ], + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @447 : BlFlowLayoutConstraints { + #vertical : BlFlowLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlFlowLayoutConstraintsHorizontal { + #alignment : @18 + }, + #newLine : false, + #weight : 0, + #display : @451 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 5.0, + #left : 5.0, + #bottom : 5.0, + #right : 5.0 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1316, + #previouslyAccessedConstraintsType : @447, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @88, + #horizontalAlignment : @89, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @1322 + }, + #shouldUseLargestChild : false, + #cellSpacing : 5.0, + #interspace : 0.0 + } + } + ], + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @11 + }, + #constraints : { + @447 : BlFlowLayoutConstraints { + #vertical : BlFlowLayoutConstraintsVertical { + #alignment : @16 + }, + #horizontal : BlFlowLayoutConstraintsHorizontal { + #alignment : @18 + }, + #newLine : false, + #weight : 0, + #display : @451 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @20, + #padding : BlInsets { + #top : 5.0, + #left : 5.0, + #bottom : 5.0, + #right : 5.0 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @22, + #maxWidth : @22, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1328, + #previouslyAccessedConstraintsType : @447, + #accountTransformation : false + }, + #visuals : @55, + #userData : IdentityDictionary { + #enabled : true, + #elementId : BlElementNamedId { + #identifier : #themeSandBox + }, + #stamps : [ ], + #tokens : [ ] + }, + #layout : BlFlowLayout { + #measurer : BlFlowLayoutMeasurer { + #layout : @1337, + #children : OrderedCollection [ + BlFlowLayoutInlineChild { + #width : 527.0, + #height : 42.0, + #margin : @20, + #weight : 0, + #newLine : false, + #startLength : 0, + #startBreadth : 0, + #element : @4, + #alignment : BlCompositeAlignment { + #vertical : @16, + #horizontal : @18, + #direction : BlLayoutLeftToRight { } + }, + #measurer : @1338, + #display : @451 + }, + BlFlowLayoutInlineChild { + #width : 527.0, + #height : 42.0, + #margin : @20, + #weight : 0, + #newLine : false, + #startLength : 42.0, + #startBreadth : 0.0, + #element : @457, + #alignment : BlCompositeAlignment { + #vertical : @16, + #horizontal : @18, + #direction : @1342 + }, + #measurer : @1338, + #display : @451 + }, + BlFlowLayoutInlineChild { + #width : 527.0, + #height : 42.0, + #margin : @20, + #weight : 0, + #newLine : false, + #startLength : 84.0, + #startBreadth : 0.0, + #element : @888, + #alignment : BlCompositeAlignment { + #vertical : @16, + #horizontal : @18, + #direction : @1342 + }, + #measurer : @1338, + #display : @451 + } + ], + #lines : OrderedCollection [ + BlFlowLayoutLine { + #children : OrderedCollection [ + @1340, + @1343, + @1345 + ], + #startLength : 0, + #startBreadth : 0, + #length : 126.0, + #breadth : 527.0, + #measurer : @1338 + } + ], + #orientation : BlFlowLayoutVertical { }, + #maxWidth : -10.0, + #maxHeight : -10.0, + #widthMode : BlMeasurementSpec { + #size : 0.0, + #mode : BlMeasurementUnspecifiedMode { } + }, + #heightMode : BlMeasurementSpec { + #size : 0.0, + #mode : @1352 + }, + #checkCanFit : false + }, + #orientation : BlLayoutVertical { }, + #horizontalAlignment : @18, + #verticalAlignment : @16 + } + } +]' +] + +{ #category : #'pyramid-serialized-bloc' } +PyramidToploExamples class >> buttonsSerialization [ + "This class has been generated using Pyramid. + + By: YannLEGOFF + 2024-02-01 16:46:48" + + + ^ '[ + ToElement { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutFitContentResizer { } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + Class [ #BlFlowLayout ] : BlFlowLayoutConstraints { + #vertical : BlFlowLayoutConstraintsVertical { + #alignment : BlTopAlignment { } + }, + #horizontal : BlFlowLayoutConstraintsHorizontal { + #alignment : BlHorizontalStartAlignment { } + }, + #newLine : false, + #weight : 0, + #display : BlFlowLayoutInline { } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : BlInsets { + #top : 0.0, + #left : 0.0, + #bottom : 0.0, + #right : 0.0 + }, + #padding : BlInsets { + #top : 5.0, + #left : 5.0, + #bottom : 5.0, + #right : 5.0 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : Float [ #infinity ], + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @9, + #previouslyAccessedConstraintsType : @8, + #accountTransformation : false + }, + #visuals : BlDefaultVisuals { }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #themeSandBox + }, + #enabled : true + }, + #layout : BlFlowLayout { + #measurer : BlFlowLayoutMeasurer { + #layout : @22, + #children : OrderedCollection [ + BlFlowLayoutInlineChild { + #width : 527.0, + #height : 42.0, + #margin : @16, + #weight : 0, + #newLine : false, + #startLength : 0, + #startBreadth : 0, + #element : BlElement { + #children : BlChildrenArray [ + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + Class [ #BlLinearLayout ] : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @35, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 107.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @41 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 53.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : Color { + #red : 0.08602150537634409, + #green : 0.4662756598240469, + #blue : 1.0, + #alpha : 1.0 + } + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : BlStrokeLineButtCap { }, + #lineJoin : BlStrokeLineMiterJoin { }, + #miterLimit : 4.0, + #dashArray : [ ], + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : Color { + #red : 0.08602150537634409, + #green : 0.4662756598240469, + #blue : 1.0, + #alpha : 1.0 + } + } + }, + #effect : BlNullEffect { } + }, + #userData : IdentityDictionary { + #closeTooltipWindowOnMouseLeave : true, + #elementId : BlElementNamedId { + #identifier : #buttonA + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : BlVerticalCenterAlignment { } + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : BlHorizontalCenterAlignment { } + }, + #weight : 1 + }, + Class [ #BlFrameLayout ] : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @64, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @80, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : Color [ #white ] + } + ], + #rope : BlCollectionRope { + #collection : ''Primary Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : true + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : BlNullVerticalAlignment { }, + #horizontalAlignment : BlNullHorizontalAlignment { }, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @96 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @109 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @117, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 104.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @123 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 52.0, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : Color { + #red : 0.8514173998044966, + #green : 0.8514173998044966, + #blue : 0.8514173998044966, + #alpha : 1.0 + } + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @50, + #lineJoin : @51, + #miterLimit : 4.0, + #dashArray : @52, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : Color [ #white ] + } + }, + #effect : @56 + }, + #userData : IdentityDictionary { + #closeTooltipWindowOnMouseLeave : true, + #elementId : BlElementNamedId { + #identifier : #buttonB + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @66 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @68 + }, + #weight : 1 + }, + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @142, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @155, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : Color [ #black ] + } + ], + #rope : BlCollectionRope { + #collection : ''Default Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : true + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @171 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @182 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @190, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 105.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @196 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 52.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : Color { + #red : 0.8514173998044966, + #green : 0.8514173998044966, + #blue : 0.8514173998044966, + #alpha : 1.0 + } + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @50, + #lineJoin : @51, + #miterLimit : 4.0, + #dashArray : [ + 3, + 3 + ], + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @134 + } + }, + #effect : @56 + }, + #userData : IdentityDictionary { + #closeTooltipWindowOnMouseLeave : true, + #elementId : BlElementNamedId { + #identifier : #buttonC + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @66 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @68 + }, + #weight : 1 + }, + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @215, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @228, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @168 + } + ], + #rope : BlCollectionRope { + #collection : ''Dashed Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : true + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @243 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @254 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @262, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 86.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @268 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 43.0, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : Color { + #red : 0.0, + #green : 0.0, + #blue : 0.0, + #alpha : 0.0 + } + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @50, + #lineJoin : @51, + #miterLimit : 4.0, + #dashArray : @52, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : Color [ #white ] + } + } + }, + #userData : IdentityDictionary { + #closeTooltipWindowOnMouseLeave : true, + #elementId : BlElementNamedId { + #identifier : #buttonD + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @66 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @68 + }, + #weight : 1 + }, + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @287, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @300, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @168 + } + ], + #rope : BlCollectionRope { + #collection : ''Text Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : true + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @315 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @326 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @334, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 85.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @340 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 42.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @275 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @50, + #lineJoin : @51, + #miterLimit : 4.0, + #dashArray : @52, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @134 + } + } + }, + #userData : IdentityDictionary { + #closeTooltipWindowOnMouseLeave : true, + #elementId : BlElementNamedId { + #identifier : #buttonE + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @66 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @68 + }, + #weight : 1 + }, + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @357, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @370, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : Color { + #red : 0.08602150537634409, + #green : 0.4662756598240469, + #blue : 1.0, + #alpha : 1.0 + } + } + ], + #rope : BlCollectionRope { + #collection : ''Link Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : true + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @386 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @397 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + } + ], + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @8 : BlFlowLayoutConstraints { + #vertical : BlFlowLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlFlowLayoutConstraintsHorizontal { + #alignment : @13 + }, + #newLine : false, + #weight : 0, + #display : @14 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 5.0, + #left : 5.0, + #bottom : 5.0, + #right : 5.0 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @403, + #previouslyAccessedConstraintsType : @8, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @409 + }, + #shouldUseLargestChild : false, + #cellSpacing : 5.0, + #interspace : 0.0 + } + }, + #alignment : BlCompositeAlignment { + #vertical : @11, + #horizontal : @13, + #direction : BlLayoutLeftToRight { } + }, + #measurer : @23, + #display : @14 + }, + BlFlowLayoutInlineChild { + #width : 527.0, + #height : 42.0, + #margin : @16, + #weight : 0, + #newLine : false, + #startLength : 42.0, + #startBreadth : 0.0, + #element : BlElement { + #children : BlChildrenArray [ + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @422, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 107.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @428 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 53.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : Color { + #red : 0.0, + #green : 0.0, + #blue : 0.0, + #alpha : 0.2 + } + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @50, + #lineJoin : @51, + #miterLimit : 4.0, + #dashArray : @52, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : Color { + #red : 0.0, + #green : 0.0, + #blue : 0.0, + #alpha : 0.0392156862745098 + } + } + } + }, + #userData : IdentityDictionary { + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @66 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @68 + }, + #weight : 1 + }, + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @446, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @459, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : false, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : Color [ #lightGray ] + } + ], + #rope : BlCollectionRope { + #collection : ''Primary Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : false + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @475 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #elementId : BlElementNamedId { + #identifier : #buttonA + }, + #enabled : false, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @487 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @495, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 104.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @501 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 52.0, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @435 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @50, + #lineJoin : @51, + #miterLimit : 4.0, + #dashArray : @52, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @439 + } + } + }, + #userData : IdentityDictionary { + #closeTooltipWindowOnMouseLeave : true, + #elementId : BlElementNamedId { + #identifier : #buttonB + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @66 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @68 + }, + #weight : 1 + }, + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @518, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @531, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : false, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @472 + } + ], + #rope : BlCollectionRope { + #collection : ''Default Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : false + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @546 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : false, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @557 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @565, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 105.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @571 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 52.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @435 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @50, + #lineJoin : @51, + #miterLimit : 4.0, + #dashArray : @205, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @439 + } + } + }, + #userData : IdentityDictionary { + #closeTooltipWindowOnMouseLeave : true, + #elementId : BlElementNamedId { + #identifier : #buttonC + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @66 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @68 + }, + #weight : 1 + }, + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @588, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @601, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : false, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @472 + } + ], + #rope : BlCollectionRope { + #collection : ''Dashed Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : false + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @616 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : false, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @627 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @635, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 86.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @641 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 43.0, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @275 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @50, + #lineJoin : @51, + #miterLimit : 4.0, + #dashArray : @52, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @275 + } + } + }, + #userData : IdentityDictionary { + #closeTooltipWindowOnMouseLeave : true, + #elementId : BlElementNamedId { + #identifier : #buttonD + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @66 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @68 + }, + #weight : 1 + }, + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @658, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @671, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : false, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @472 + } + ], + #rope : BlCollectionRope { + #collection : ''Text Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : false + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @686 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : false, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @697 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @705, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 85.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @711 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 42.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @275 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @50, + #lineJoin : @51, + #miterLimit : 4.0, + #dashArray : @52, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @275 + } + } + }, + #userData : IdentityDictionary { + #closeTooltipWindowOnMouseLeave : true, + #elementId : BlElementNamedId { + #identifier : #buttonE + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @66 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @68 + }, + #weight : 1 + }, + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @728, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @741, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : false, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @472 + } + ], + #rope : BlCollectionRope { + #collection : ''Link Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : false + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @756 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : false, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @767 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + } + ], + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @8 : BlFlowLayoutConstraints { + #vertical : BlFlowLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlFlowLayoutConstraintsHorizontal { + #alignment : @13 + }, + #newLine : false, + #weight : 0, + #display : @14 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 5.0, + #left : 5.0, + #bottom : 5.0, + #right : 5.0 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @773, + #previouslyAccessedConstraintsType : @8, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @779 + }, + #shouldUseLargestChild : false, + #cellSpacing : 5.0, + #interspace : 0.0 + } + }, + #alignment : BlCompositeAlignment { + #vertical : @11, + #horizontal : @13, + #direction : @412 + }, + #measurer : @23, + #display : @14 + }, + BlFlowLayoutInlineChild { + #width : 527.0, + #height : 42.0, + #margin : @16, + #weight : 0, + #newLine : false, + #startLength : 84.0, + #startBreadth : 0.0, + #element : BlElement { + #children : BlChildrenArray [ + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @791, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 107.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @797 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 53.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : Color { + #red : 1.0, + #green : 0.3020527859237537, + #blue : 0.3098729227761486, + #alpha : 1.0 + } + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @50, + #lineJoin : @51, + #miterLimit : 4.0, + #dashArray : @52, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @804 + } + } + }, + #userData : IdentityDictionary { + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @66 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @68 + }, + #weight : 1 + }, + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @814, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @827, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @93 + } + ], + #rope : BlCollectionRope { + #collection : ''Primary Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : true + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @842 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #elementId : BlElementNamedId { + #identifier : #buttonA + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @854 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @862, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 104.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @868 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 52.0, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : Color { + #red : 1.0, + #green : 0.3020527859237537, + #blue : 0.3098729227761486, + #alpha : 1.0 + } + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @50, + #lineJoin : @51, + #miterLimit : 4.0, + #dashArray : @52, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @134 + } + } + }, + #userData : IdentityDictionary { + #closeTooltipWindowOnMouseLeave : true, + #elementId : BlElementNamedId { + #identifier : #buttonB + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @66 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @68 + }, + #weight : 1 + }, + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @886, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @899, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : Color { + #red : 1.0, + #green : 0.3020527859237537, + #blue : 0.3098729227761486, + #alpha : 1.0 + } + } + ], + #rope : BlCollectionRope { + #collection : ''Default Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : true + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @915 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @926 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @934, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 105.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @940 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 52.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @804 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @50, + #lineJoin : @51, + #miterLimit : 4.0, + #dashArray : @205, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @134 + } + } + }, + #userData : IdentityDictionary { + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @66 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @68 + }, + #weight : 1 + }, + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @956, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @969, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @912 + } + ], + #rope : BlCollectionRope { + #collection : ''Dashed Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : true + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @984 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #elementId : BlElementNamedId { + #identifier : #buttonC + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @996 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1004, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 86.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @1010 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 43.0, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @275 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @50, + #lineJoin : @51, + #miterLimit : 4.0, + #dashArray : @52, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @134 + } + } + }, + #userData : IdentityDictionary { + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @66 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @68 + }, + #weight : 1 + }, + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1026, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1039, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @912 + } + ], + #rope : BlCollectionRope { + #collection : ''Text Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : true + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @1054 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #elementId : BlElementNamedId { + #identifier : #buttonD + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @1066 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + ToButton { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 32.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @13 + }, + #weight : 1 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 4.0, + #left : 7.5, + #bottom : 4.0, + #right : 7.5 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1074, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #geometry : BlRoundedRectangleGeometry { + #extent : Point [ 85.0, 32.0 ], + #pathCache : BlPathCache { + #geometry : @1080 + }, + #cornerRadii : BlCornerRadii { + #topLeft : 6, + #topRight : 6, + #bottomLeft : 6, + #bottomRight : 6 + }, + #center : Point [ 42.5, 16.0 ] + }, + #border : BlBorder { + #paint : BlColorPaint { + #color : @275 + }, + #width : 1, + #style : BlStrokeStyle { + #lineCap : @50, + #lineJoin : @51, + #miterLimit : 4.0, + #dashArray : @52, + #dashOffset : 0.0 + }, + #opacity : 1.0 + }, + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : @134 + } + } + }, + #userData : IdentityDictionary { + #closeTooltipWindowOnMouseLeave : true, + #elementId : BlElementNamedId { + #identifier : #buttonE + }, + #stonLabeledIcon : ToLabeledIcon { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @34 : BlLinearLayoutConstraints { + #vertical : BlLinearLayoutConstraintsVertical { + #alignment : @66 + }, + #horizontal : BlLinearLayoutConstraintsHorizontal { + #alignment : @68 + }, + #weight : 1 + }, + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @66, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @68, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1097, + #previouslyAccessedConstraintsType : @34, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #stonToImage : nil, + #stonToLabel : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @69 : BlFrameLayoutConstraints { + #vertical : BlFrameLayoutConstraintsVertical { + #alignment : @11, + #weight : 1.0 + }, + #horizontal : BlFrameLayoutConstraintsHorizontal { + #alignment : @13, + #weight : 1.0 + } + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1110, + #previouslyAccessedConstraintsType : @69, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlAttributeRope { + #attributes : [ + BlFontWeightAttribute { + #isOverwritableByStyler : true, + #weight : 600 + }, + BlFontFamilyDefaultAttribute { + #isOverwritableByStyler : true, + #name : ''SFMono-Regular'' + }, + BlFontSizeDefaultAttribute { + #isOverwritableByStyler : true, + #size : 14 + }, + AlbTextParagraphLineSpacingAttribute { + #isOverwritableByStyler : true, + #lineSpacing : 1.5 + }, + BlTextForegroundAttribute { + #isOverwritableByStyler : true, + #paint : @912 + } + ], + #rope : BlCollectionRope { + #collection : ''Link Button'' + } + } + } + }, + #layout : BlFrameLayout { } + }, + #enabled : true + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @1125 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + }, + #enabled : true, + #tooltipContent : ToLabel { + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : @16, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { + #enabled : true, + #stonToLabelText : BlRopedText { + #rope : BlCollectionRope { + #collection : ''I\''m a button'' + } + } + }, + #layout : BlFrameLayout { } + } + }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @1136 + }, + #shouldUseLargestChild : false, + #cellSpacing : 0.0, + #interspace : 0.0 + } + } + ], + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @5 + }, + #constraints : { + @8 : BlFlowLayoutConstraints { + #vertical : BlFlowLayoutConstraintsVertical { + #alignment : @11 + }, + #horizontal : BlFlowLayoutConstraintsHorizontal { + #alignment : @13 + }, + #newLine : false, + #weight : 0, + #display : @14 + } + }, + #position : Point [ 0.0, 0.0 ], + #margin : @16, + #padding : BlInsets { + #top : 5.0, + #left : 5.0, + #bottom : 5.0, + #right : 5.0 + }, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : @18, + #maxWidth : @18, + #ignoredByLayout : false, + #previouslyAccessedConstraints : @1142, + #previouslyAccessedConstraintsType : @8, + #accountTransformation : false + }, + #visuals : @19, + #userData : IdentityDictionary { }, + #layout : BlLinearLayout { + #weightSum : 0, + #verticalAlignment : @97, + #horizontalAlignment : @98, + #orientation : BlLinearLayoutHorizontalOrientation { + #layout : @1148 + }, + #shouldUseLargestChild : false, + #cellSpacing : 5.0, + #interspace : 0.0 + } + }, + #alignment : BlCompositeAlignment { + #vertical : @11, + #horizontal : @13, + #direction : @412 + }, + #measurer : @23, + #display : @14 + } + ], + #lines : OrderedCollection [ + BlFlowLayoutLine { + #children : OrderedCollection [ + @25, + @413, + @782 + ], + #startLength : 0, + #startBreadth : 0, + #length : 126.0, + #breadth : 527.0, + #measurer : @23 + } + ], + #orientation : BlFlowLayoutVertical { }, + #maxWidth : -10.0, + #maxHeight : -10.0, + #widthMode : BlMeasurementSpec { + #size : 0.0, + #mode : BlMeasurementUnspecifiedMode { } + }, + #heightMode : BlMeasurementSpec { + #size : 0.0, + #mode : @1156 + }, + #checkCanFit : false + }, + #orientation : BlLayoutVertical { }, + #horizontalAlignment : @13, + #verticalAlignment : @11 + } + } +]' +] From 8c72c82638d419a84774f86e62f8a4a22b882323 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Thu, 1 Feb 2024 17:55:57 +0100 Subject: [PATCH 16/27] Fix baseline --- src/BaselineOfPyramid/BaselineOfPyramid.class.st | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/BaselineOfPyramid/BaselineOfPyramid.class.st b/src/BaselineOfPyramid/BaselineOfPyramid.class.st index 77b4ec97..4ef10278 100644 --- a/src/BaselineOfPyramid/BaselineOfPyramid.class.st +++ b/src/BaselineOfPyramid/BaselineOfPyramid.class.st @@ -29,9 +29,9 @@ BaselineOfPyramid >> baselineForCommon: spec [ self toploPackages: spec. "Groups" - spec group: 'default' with: #( 'Bloc' 'Toplo' ). "complete version" - spec group: 'Bloc' with: self blocPackagesNames. "only Bloc" - spec group: 'Toplo' with: self toploPackagesNames "only Bloc and Toplo" + spec group: 'default' with: #( 'PyramidBloc' 'PyramidToplo' ). "complete version" + spec group: 'PyramidBloc' with: self blocPackagesNames. "only Bloc" + spec group: 'PyramidToplo' with: self toploPackagesNames "only Bloc and Toplo" ] { #category : #dependencies } @@ -69,6 +69,7 @@ BaselineOfPyramid >> blocPackagesNames [ { #category : #packages } BaselineOfPyramid >> idePackages: spec [ + spec package: 'Pyramid'. spec package: 'Pyramid-IDE' with: [ spec requires: #( 'Pyramid' ) ]. From d42c45b184f4a72ccf232aef5fad20e238e1755b Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Thu, 1 Feb 2024 17:59:18 +0100 Subject: [PATCH 17/27] better naming on baseline --- .../BaselineOfPyramid.class.st | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/BaselineOfPyramid/BaselineOfPyramid.class.st b/src/BaselineOfPyramid/BaselineOfPyramid.class.st index 4ef10278..ee40b6a3 100644 --- a/src/BaselineOfPyramid/BaselineOfPyramid.class.st +++ b/src/BaselineOfPyramid/BaselineOfPyramid.class.st @@ -24,7 +24,7 @@ BaselineOfPyramid >> baselineForCommon: spec [ self toploDependencies: spec. "Packages" - self idePackages: spec. + self pyramidPackages: spec. self blocPackages: spec. self toploPackages: spec. @@ -66,16 +66,6 @@ BaselineOfPyramid >> blocPackagesNames [ ^ #( 'Pyramid' 'Pyramid-Bloc' 'Pyramid-Tests' 'Pyramid-IDE' 'Pyramid-Examples' ) ] -{ #category : #packages } -BaselineOfPyramid >> idePackages: spec [ - - spec package: 'Pyramid'. - spec - package: 'Pyramid-IDE' - with: [ spec requires: #( 'Pyramid' ) ]. - -] - { #category : #actions } BaselineOfPyramid >> postload: loader package: packageSpec [ @@ -87,6 +77,16 @@ BaselineOfPyramid >> preload: loader package: packageSpec [ ] +{ #category : #packages } +BaselineOfPyramid >> pyramidPackages: spec [ + + spec package: 'Pyramid'. + spec + package: 'Pyramid-IDE' + with: [ spec requires: #( 'Pyramid' ) ]. + +] + { #category : #dependencies } BaselineOfPyramid >> toploDependencies: spec [ @@ -103,7 +103,7 @@ BaselineOfPyramid >> toploPackages: spec [ spec package: 'Pyramid-Toplo' - with: [ spec requires: #( 'Bloc' 'ToploSerialization' 'Toplo' ) ]. + with: [ spec requires: #( 'Toplo' 'ToploSerialization' 'Pyramid-Bloc' ) ]. spec package: 'Pyramid-Toplo-Tests' with: [ spec requires: #( 'Pyramid-Toplo' ) ]. From 40396388045c00475a6cee2260b7692ac9cfbb5d Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Thu, 1 Feb 2024 18:00:04 +0100 Subject: [PATCH 18/27] Fix for toplo baseline --- src/BaselineOfPyramid/BaselineOfPyramid.class.st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BaselineOfPyramid/BaselineOfPyramid.class.st b/src/BaselineOfPyramid/BaselineOfPyramid.class.st index ee40b6a3..2f17129b 100644 --- a/src/BaselineOfPyramid/BaselineOfPyramid.class.st +++ b/src/BaselineOfPyramid/BaselineOfPyramid.class.st @@ -115,5 +115,5 @@ BaselineOfPyramid >> toploPackages: spec [ { #category : #packages } BaselineOfPyramid >> toploPackagesNames [ - ^ #( 'Bloc' 'Pyramid-Toplo' 'Pyramid-Toplo-Tests' 'Pyramid-Toplo-Examples' ) + ^ #( 'PyramidBloc' 'Pyramid-Toplo' 'Pyramid-Toplo-Tests' 'Pyramid-Toplo-Examples' ) ] From 17e641d8f064af99b8a11ea61c4499a8daea8090 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Thu, 1 Feb 2024 18:19:28 +0100 Subject: [PATCH 19/27] Fix all example for Toplo readiness --- .../PyramidSwitchInputPresenter.class.st | 132 ++++---------- .../PyramidVisibilityInputPresenter.class.st | 163 ++++++------------ 2 files changed, 88 insertions(+), 207 deletions(-) diff --git a/src/Pyramid-Bloc/PyramidSwitchInputPresenter.class.st b/src/Pyramid-Bloc/PyramidSwitchInputPresenter.class.st index 7ad83d54..e60c6867 100644 --- a/src/Pyramid-Bloc/PyramidSwitchInputPresenter.class.st +++ b/src/Pyramid-Bloc/PyramidSwitchInputPresenter.class.st @@ -18,12 +18,11 @@ PyramidSwitchInputPresenter class >> blocToggleOff [ "This class has been generated using Pyramid. By: YannLEGOFF - 2023-07-19 09:03:05" + 2024-01-22 13:50:13" ^ '[ BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -42,11 +41,11 @@ PyramidSwitchInputPresenter class >> blocToggleOff [ #bottom : 0.0, #right : 0.0 }, - #padding : @10, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, #maxHeight : Float [ #infinity ], - #maxWidth : @11, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -54,13 +53,7 @@ PyramidSwitchInputPresenter class >> blocToggleOff [ #geometry : BlRoundedRectangleGeometry { #extent : Point [ 32.0, 16.0 ], #pathCache : BlPathCache { - #geometry : @13, - #strokedBounds : BlBounds { - #left : 0.0, - #top : 0.0, - #right : 32.0, - #bottom : 16.0 - } + #geometry : @12 }, #cornerRadii : BlCornerRadii { #topLeft : 8.5, @@ -111,14 +104,9 @@ PyramidSwitchInputPresenter class >> blocToggleOff [ #type : ''RECTANGLE'' } }, - #layout : BlBasicLayout { }, - #eventDispatcher : BlElementEventDispatcher { - #owner : @2, - #handlers : [ ] - } + #layout : BlBasicLayout { } }, BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -131,12 +119,12 @@ PyramidSwitchInputPresenter class >> blocToggleOff [ } }, #position : Point [ 2, 2.0 ], - #margin : @10, - #padding : @10, + #margin : @9, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, - #maxHeight : @11, - #maxWidth : @11, + #maxHeight : @10, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -144,13 +132,7 @@ PyramidSwitchInputPresenter class >> blocToggleOff [ #geometry : BlEllipseGeometry { #extent : Point [ 12.0, 12.0 ], #pathCache : BlPathCache { - #geometry : @44, - #strokedBounds : BlBounds { - #left : 0.0, - #top : 0.0, - #right : 12.0, - #bottom : 12.0 - } + #geometry : @39 } }, #background : BlPaintBackground { @@ -175,11 +157,7 @@ PyramidSwitchInputPresenter class >> blocToggleOff [ #type : ''ELLIPSE'' } }, - #layout : @32, - #eventDispatcher : BlElementEventDispatcher { - #owner : @35, - #handlers : [ ] - } + #layout : @30 } ]' ] @@ -189,12 +167,11 @@ PyramidSwitchInputPresenter class >> blocToggleOn [ "This class has been generated using Pyramid. By: YannLEGOFF - 2023-07-19 09:04:48" + 2024-01-22 13:50:48" ^ '[ BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -213,11 +190,11 @@ PyramidSwitchInputPresenter class >> blocToggleOn [ #bottom : 0.0, #right : 0.0 }, - #padding : @10, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, #maxHeight : Float [ #infinity ], - #maxWidth : @11, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -225,13 +202,7 @@ PyramidSwitchInputPresenter class >> blocToggleOn [ #geometry : BlRoundedRectangleGeometry { #extent : Point [ 32.0, 16.0 ], #pathCache : BlPathCache { - #geometry : @13, - #strokedBounds : BlBounds { - #left : 0.0, - #top : 0.0, - #right : 32.0, - #bottom : 16.0 - } + #geometry : @12 }, #cornerRadii : BlCornerRadii { #topLeft : 8.5, @@ -282,14 +253,9 @@ PyramidSwitchInputPresenter class >> blocToggleOn [ #type : ''RECTANGLE'' } }, - #layout : BlBasicLayout { }, - #eventDispatcher : BlElementEventDispatcher { - #owner : @2, - #handlers : [ ] - } + #layout : BlBasicLayout { } }, BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -302,12 +268,12 @@ PyramidSwitchInputPresenter class >> blocToggleOn [ } }, #position : Point [ 18, 2.0 ], - #margin : @10, - #padding : @10, + #margin : @9, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, - #maxHeight : @11, - #maxWidth : @11, + #maxHeight : @10, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -315,13 +281,7 @@ PyramidSwitchInputPresenter class >> blocToggleOn [ #geometry : BlEllipseGeometry { #extent : Point [ 12.0, 12.0 ], #pathCache : BlPathCache { - #geometry : @44, - #strokedBounds : BlBounds { - #left : 0.0, - #top : 0.0, - #right : 12.0, - #bottom : 12.0 - } + #geometry : @39 } }, #background : BlPaintBackground { @@ -346,11 +306,7 @@ PyramidSwitchInputPresenter class >> blocToggleOn [ #type : ''ELLIPSE'' } }, - #layout : @32, - #eventDispatcher : BlElementEventDispatcher { - #owner : @35, - #handlers : [ ] - } + #layout : @30 } ]' ] @@ -360,12 +316,11 @@ PyramidSwitchInputPresenter class >> blocToggleUncertain [ "This class has been generated using Pyramid. By: YannLEGOFF - 2023-07-19 10:03:54" + 2024-01-22 13:51:37" ^ '[ BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -384,11 +339,11 @@ PyramidSwitchInputPresenter class >> blocToggleUncertain [ #bottom : 0.0, #right : 0.0 }, - #padding : @10, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, #maxHeight : Float [ #infinity ], - #maxWidth : @11, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -396,13 +351,7 @@ PyramidSwitchInputPresenter class >> blocToggleUncertain [ #geometry : BlRoundedRectangleGeometry { #extent : Point [ 32.0, 16.0 ], #pathCache : BlPathCache { - #geometry : @13, - #strokedBounds : BlBounds { - #left : 0.0, - #top : 0.0, - #right : 32.0, - #bottom : 16.0 - } + #geometry : @12 }, #cornerRadii : BlCornerRadii { #topLeft : 8.5, @@ -453,14 +402,9 @@ PyramidSwitchInputPresenter class >> blocToggleUncertain [ #type : ''RECTANGLE'' } }, - #layout : BlBasicLayout { }, - #eventDispatcher : BlElementEventDispatcher { - #owner : @2, - #handlers : [ ] - } + #layout : BlBasicLayout { } }, BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -473,12 +417,12 @@ PyramidSwitchInputPresenter class >> blocToggleUncertain [ } }, #position : Point [ 10.0, 2.0 ], - #margin : @10, - #padding : @10, + #margin : @9, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, - #maxHeight : @11, - #maxWidth : @11, + #maxHeight : @10, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -486,13 +430,7 @@ PyramidSwitchInputPresenter class >> blocToggleUncertain [ #geometry : BlEllipseGeometry { #extent : Point [ 12.0, 12.0 ], #pathCache : BlPathCache { - #geometry : @44, - #strokedBounds : BlBounds { - #left : 0.0, - #top : 0.0, - #right : 12.0, - #bottom : 12.0 - } + #geometry : @39 } }, #background : BlPaintBackground { @@ -517,11 +455,7 @@ PyramidSwitchInputPresenter class >> blocToggleUncertain [ #type : ''ELLIPSE'' } }, - #layout : @32, - #eventDispatcher : BlElementEventDispatcher { - #owner : @35, - #handlers : [ ] - } + #layout : @30 } ]' ] diff --git a/src/Pyramid-Bloc/PyramidVisibilityInputPresenter.class.st b/src/Pyramid-Bloc/PyramidVisibilityInputPresenter.class.st index 800d0db4..b05f3739 100644 --- a/src/Pyramid-Bloc/PyramidVisibilityInputPresenter.class.st +++ b/src/Pyramid-Bloc/PyramidVisibilityInputPresenter.class.st @@ -15,12 +15,11 @@ PyramidVisibilityInputPresenter class >> blocGone [ "This class has been generated using Pyramid. By: YannLEGOFF - 2023-08-02 15:00:30" + 2024-01-22 12:04:35" ^ '[ BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -39,11 +38,11 @@ PyramidVisibilityInputPresenter class >> blocGone [ #bottom : 0.0, #right : 0.0 }, - #padding : @10, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, #maxHeight : Float [ #infinity ], - #maxWidth : @11, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -62,16 +61,12 @@ PyramidVisibilityInputPresenter class >> blocGone [ #userData : IdentityDictionary { #elementId : BlElementNamedId { #identifier : #C - } + }, + #shouldHandleMousePickOutsideEvent : false }, - #layout : BlBasicLayout { }, - #eventDispatcher : BlElementEventDispatcher { - #owner : @2, - #handlers : [ ] - } + #layout : BlBasicLayout { } }, BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -84,12 +79,12 @@ PyramidVisibilityInputPresenter class >> blocGone [ } }, #position : Point [ 11, 3 ], - #margin : @10, - #padding : @10, + #margin : @9, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, - #maxHeight : @11, - #maxWidth : @11, + #maxHeight : @10, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -108,13 +103,10 @@ PyramidVisibilityInputPresenter class >> blocGone [ #userData : IdentityDictionary { #elementId : BlElementNamedId { #identifier : #E - } + }, + #shouldHandleMousePickOutsideEvent : false }, - #layout : @18, - #eventDispatcher : BlElementEventDispatcher { - #owner : @21, - #handlers : [ ] - } + #layout : @17 } ]' ] @@ -124,12 +116,11 @@ PyramidVisibilityInputPresenter class >> blocHidden [ "This class has been generated using Pyramid. By: YannLEGOFF - 2023-08-02 15:00:12" + 2024-01-22 12:05:28" ^ '[ BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -148,11 +139,11 @@ PyramidVisibilityInputPresenter class >> blocHidden [ #bottom : 0.0, #right : 0.0 }, - #padding : @10, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, #maxHeight : Float [ #infinity ], - #maxWidth : @11, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -173,14 +164,9 @@ PyramidVisibilityInputPresenter class >> blocHidden [ #identifier : #C } }, - #layout : BlBasicLayout { }, - #eventDispatcher : BlElementEventDispatcher { - #owner : @2, - #handlers : [ ] - } + #layout : BlBasicLayout { } }, BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -193,12 +179,12 @@ PyramidVisibilityInputPresenter class >> blocHidden [ } }, #position : Point [ 11, 3 ], - #margin : @10, - #padding : @10, + #margin : @9, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, - #maxHeight : @11, - #maxWidth : @11, + #maxHeight : @10, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -219,14 +205,9 @@ PyramidVisibilityInputPresenter class >> blocHidden [ #identifier : #D } }, - #layout : @18, - #eventDispatcher : BlElementEventDispatcher { - #owner : @21, - #handlers : [ ] - } + #layout : @17 }, BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -239,12 +220,12 @@ PyramidVisibilityInputPresenter class >> blocHidden [ } }, #position : Point [ 22, 3 ], - #margin : @10, - #padding : @10, + #margin : @9, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, - #maxHeight : @11, - #maxWidth : @11, + #maxHeight : @10, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -265,11 +246,7 @@ PyramidVisibilityInputPresenter class >> blocHidden [ #identifier : #E } }, - #layout : @18, - #eventDispatcher : BlElementEventDispatcher { - #owner : @37, - #handlers : [ ] - } + #layout : @17 } ]' ] @@ -279,12 +256,11 @@ PyramidVisibilityInputPresenter class >> blocVisibilityUnknow [ "This class has been generated using Pyramid. By: YannLEGOFF - 2023-08-02 15:04:00" + 2024-01-22 12:06:04" ^ '[ BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -303,11 +279,11 @@ PyramidVisibilityInputPresenter class >> blocVisibilityUnknow [ #bottom : 0.0, #right : 0.0 }, - #padding : @10, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, #maxHeight : Float [ #infinity ], - #maxWidth : @11, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -338,14 +314,9 @@ PyramidVisibilityInputPresenter class >> blocVisibilityUnknow [ #identifier : #C } }, - #layout : BlBasicLayout { }, - #eventDispatcher : BlElementEventDispatcher { - #owner : @2, - #handlers : [ ] - } + #layout : BlBasicLayout { } }, BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -358,12 +329,12 @@ PyramidVisibilityInputPresenter class >> blocVisibilityUnknow [ } }, #position : Point [ 11, 3 ], - #margin : @10, - #padding : @10, + #margin : @9, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, - #maxHeight : @11, - #maxWidth : @11, + #maxHeight : @10, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -394,14 +365,9 @@ PyramidVisibilityInputPresenter class >> blocVisibilityUnknow [ #identifier : #D } }, - #layout : @22, - #eventDispatcher : BlElementEventDispatcher { - #owner : @25, - #handlers : [ ] - } + #layout : @21 }, BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -414,12 +380,12 @@ PyramidVisibilityInputPresenter class >> blocVisibilityUnknow [ } }, #position : Point [ 22, 3 ], - #margin : @10, - #padding : @10, + #margin : @9, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, - #maxHeight : @11, - #maxWidth : @11, + #maxHeight : @10, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -450,11 +416,7 @@ PyramidVisibilityInputPresenter class >> blocVisibilityUnknow [ #identifier : #E } }, - #layout : @22, - #eventDispatcher : BlElementEventDispatcher { - #owner : @45, - #handlers : [ ] - } + #layout : @21 } ]' ] @@ -464,12 +426,11 @@ PyramidVisibilityInputPresenter class >> blocVisible [ "This class has been generated using Pyramid. By: YannLEGOFF - 2023-08-02 14:59:48" + 2024-01-22 12:06:38" ^ '[ BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -488,11 +449,11 @@ PyramidVisibilityInputPresenter class >> blocVisible [ #bottom : 0.0, #right : 0.0 }, - #padding : @10, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, #maxHeight : Float [ #infinity ], - #maxWidth : @11, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -513,14 +474,9 @@ PyramidVisibilityInputPresenter class >> blocVisible [ #identifier : #C } }, - #layout : BlBasicLayout { }, - #eventDispatcher : BlElementEventDispatcher { - #owner : @2, - #handlers : [ ] - } + #layout : BlBasicLayout { } }, BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -533,12 +489,12 @@ PyramidVisibilityInputPresenter class >> blocVisible [ } }, #position : Point [ 11, 3 ], - #margin : @10, - #padding : @10, + #margin : @9, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, - #maxHeight : @11, - #maxWidth : @11, + #maxHeight : @10, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -559,14 +515,9 @@ PyramidVisibilityInputPresenter class >> blocVisible [ #identifier : #D } }, - #layout : @18, - #eventDispatcher : BlElementEventDispatcher { - #owner : @21, - #handlers : [ ] - } + #layout : @17 }, BlElement { - #children : BlChildrenArray [ ], #constraints : BlLayoutCommonConstraints { #vertical : BlLayoutCommonConstraintsAxis { #resizer : BlLayoutExactResizer { @@ -579,12 +530,12 @@ PyramidVisibilityInputPresenter class >> blocVisible [ } }, #position : Point [ 22, 3 ], - #margin : @10, - #padding : @10, + #margin : @9, + #padding : @9, #minHeight : 0.0, #minWidth : 0.0, - #maxHeight : @11, - #maxWidth : @11, + #maxHeight : @10, + #maxWidth : @10, #ignoredByLayout : false, #accountTransformation : false }, @@ -605,11 +556,7 @@ PyramidVisibilityInputPresenter class >> blocVisible [ #identifier : #E } }, - #layout : @18, - #eventDispatcher : BlElementEventDispatcher { - #owner : @37, - #handlers : [ ] - } + #layout : @17 } ]' ] From 8a06cf99056dff19e4cb7961a696f9d5077c36ca Mon Sep 17 00:00:00 2001 From: Pierre Laborde Date: Fri, 8 Mar 2024 14:40:23 +0100 Subject: [PATCH 20/27] Baseline: Change Bloc and Toplo groups name --- src/BaselineOfPyramid/BaselineOfPyramid.class.st | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/BaselineOfPyramid/BaselineOfPyramid.class.st b/src/BaselineOfPyramid/BaselineOfPyramid.class.st index 2f17129b..69d14b58 100644 --- a/src/BaselineOfPyramid/BaselineOfPyramid.class.st +++ b/src/BaselineOfPyramid/BaselineOfPyramid.class.st @@ -29,9 +29,9 @@ BaselineOfPyramid >> baselineForCommon: spec [ self toploPackages: spec. "Groups" - spec group: 'default' with: #( 'PyramidBloc' 'PyramidToplo' ). "complete version" - spec group: 'PyramidBloc' with: self blocPackagesNames. "only Bloc" - spec group: 'PyramidToplo' with: self toploPackagesNames "only Bloc and Toplo" + spec group: 'default' with: #( 'Bloc' 'Toplo' ). "complete version" + spec group: 'Bloc' with: self blocPackagesNames. "only Bloc" + spec group: 'Toplo' with: self toploPackagesNames "only Bloc and Toplo" ] { #category : #dependencies } From f123047eadbb4233ff01773d633e4867c16bb3e0 Mon Sep 17 00:00:00 2001 From: Pierre Laborde Date: Fri, 8 Mar 2024 14:42:01 +0100 Subject: [PATCH 21/27] Baseline: Fix Bloc and Toplo branches --- src/BaselineOfPyramid/BaselineOfPyramid.class.st | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BaselineOfPyramid/BaselineOfPyramid.class.st b/src/BaselineOfPyramid/BaselineOfPyramid.class.st index 69d14b58..d1032352 100644 --- a/src/BaselineOfPyramid/BaselineOfPyramid.class.st +++ b/src/BaselineOfPyramid/BaselineOfPyramid.class.st @@ -39,7 +39,7 @@ BaselineOfPyramid >> blocDependencies: spec [ spec baseline: 'Bloc' - with: [ spec repository: 'github://pharo-graphics/Bloc:dev-1.0/src' ]. + with: [ spec repository: 'github://pharo-graphics/Bloc:master/src' ]. spec baseline: 'BlocSerialization' with: [ @@ -92,7 +92,7 @@ BaselineOfPyramid >> toploDependencies: spec [ spec baseline: 'Toplo' - with: [ spec repository: 'github://pharo-graphics/Toplo:main/src' ]. + with: [ spec repository: 'github://pharo-graphics/Toplo:master/src' ]. spec baseline: 'ToploSerialization' with: [ spec repository: 'github://OpenSmock/Toplo-Serialization:main/src' ] From e82127c1630bea08f8907b766f3521301dd89bfc Mon Sep 17 00:00:00 2001 From: Pierre Laborde Date: Fri, 8 Mar 2024 14:47:40 +0100 Subject: [PATCH 22/27] Baseline: change groups name --- src/BaselineOfPyramid/BaselineOfPyramid.class.st | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/BaselineOfPyramid/BaselineOfPyramid.class.st b/src/BaselineOfPyramid/BaselineOfPyramid.class.st index d1032352..33f5d127 100644 --- a/src/BaselineOfPyramid/BaselineOfPyramid.class.st +++ b/src/BaselineOfPyramid/BaselineOfPyramid.class.st @@ -29,9 +29,9 @@ BaselineOfPyramid >> baselineForCommon: spec [ self toploPackages: spec. "Groups" - spec group: 'default' with: #( 'Bloc' 'Toplo' ). "complete version" - spec group: 'Bloc' with: self blocPackagesNames. "only Bloc" - spec group: 'Toplo' with: self toploPackagesNames "only Bloc and Toplo" + spec group: 'default' with: #( 'BlocUI' 'ToploUI' ). "complete version" + spec group: 'BlocUI' with: self blocPackagesNames. "only Bloc" + spec group: 'ToploUI' with: self toploPackagesNames "only Bloc and Toplo" ] { #category : #dependencies } From 4e65b18e78862b09a542f219455305937dda728a Mon Sep 17 00:00:00 2001 From: Pierre Laborde Date: Fri, 8 Mar 2024 14:52:31 +0100 Subject: [PATCH 23/27] Baseline: fix toplo packages names --- src/BaselineOfPyramid/BaselineOfPyramid.class.st | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/BaselineOfPyramid/BaselineOfPyramid.class.st b/src/BaselineOfPyramid/BaselineOfPyramid.class.st index 33f5d127..63610d20 100644 --- a/src/BaselineOfPyramid/BaselineOfPyramid.class.st +++ b/src/BaselineOfPyramid/BaselineOfPyramid.class.st @@ -103,7 +103,7 @@ BaselineOfPyramid >> toploPackages: spec [ spec package: 'Pyramid-Toplo' - with: [ spec requires: #( 'Toplo' 'ToploSerialization' 'Pyramid-Bloc' ) ]. + with: [ spec requires: #( 'Toplo' 'ToploSerialization') ]. spec package: 'Pyramid-Toplo-Tests' with: [ spec requires: #( 'Pyramid-Toplo' ) ]. @@ -115,5 +115,8 @@ BaselineOfPyramid >> toploPackages: spec [ { #category : #packages } BaselineOfPyramid >> toploPackagesNames [ - ^ #( 'PyramidBloc' 'Pyramid-Toplo' 'Pyramid-Toplo-Tests' 'Pyramid-Toplo-Examples' ) + | packages | + packages := self blocPackagesNames asOrderedCollection. + packages addAll: #( 'Pyramid-Toplo' 'Pyramid-Toplo-Tests' 'Pyramid-Toplo-Examples' ). + ^ packages asArray ] From 26cec4e5f4e290bbfaf39c2b04d670ba95bde32c Mon Sep 17 00:00:00 2001 From: Pierre Laborde Date: Fri, 8 Mar 2024 14:57:51 +0100 Subject: [PATCH 24/27] TreePresenter plugin: Rename isLeaf --- src/Pyramid-Bloc/PyramidTreePresenter.class.st | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Pyramid-Bloc/PyramidTreePresenter.class.st b/src/Pyramid-Bloc/PyramidTreePresenter.class.st index 74b550de..8935cc2b 100644 --- a/src/Pyramid-Bloc/PyramidTreePresenter.class.st +++ b/src/Pyramid-Bloc/PyramidTreePresenter.class.st @@ -82,9 +82,9 @@ PyramidTreePresenter >> initializePresenters [ beResizable; roots: { }; children: [ :each | - each isLeaf - ifTrue: [ { } ] - ifFalse: [ each children ] ]; + each shouldSerializedChildren + ifFalse: [ { } ] + ifTrue: [ each children ] ]; contextMenu: [ self actionEditorMenu ]; whenSelectionChangedDo: [ :selection | self actionSelectionChanged: selection ]; From 91ebe3098d07f7f272a18a254f37b37101e3f261 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Fri, 8 Mar 2024 15:41:36 +0100 Subject: [PATCH 25/27] Remove not working example + small fixes --- .../BaselineOfPyramid.class.st | 4 +- .../PyramidTreePresenter.class.st | 2 +- .../PyramidToploExamples.class.st | 4041 ----------------- ...amidElementThemeSelectorPresenter.class.st | 9 - .../PyramidThemeSelectorPresenter.class.st | 33 +- 5 files changed, 6 insertions(+), 4083 deletions(-) diff --git a/src/BaselineOfPyramid/BaselineOfPyramid.class.st b/src/BaselineOfPyramid/BaselineOfPyramid.class.st index 33f5d127..d0e9d2ce 100644 --- a/src/BaselineOfPyramid/BaselineOfPyramid.class.st +++ b/src/BaselineOfPyramid/BaselineOfPyramid.class.st @@ -92,7 +92,7 @@ BaselineOfPyramid >> toploDependencies: spec [ spec baseline: 'Toplo' - with: [ spec repository: 'github://pharo-graphics/Toplo:master/src' ]. + with: [ spec repository: 'github://pharo-graphics/Toplo:dev/src' ]. spec baseline: 'ToploSerialization' with: [ spec repository: 'github://OpenSmock/Toplo-Serialization:main/src' ] @@ -115,5 +115,5 @@ BaselineOfPyramid >> toploPackages: spec [ { #category : #packages } BaselineOfPyramid >> toploPackagesNames [ - ^ #( 'PyramidBloc' 'Pyramid-Toplo' 'Pyramid-Toplo-Tests' 'Pyramid-Toplo-Examples' ) + ^ #( 'Pyramid-Bloc' 'Pyramid-Toplo' 'Pyramid-Toplo-Tests' 'Pyramid-Toplo-Examples' ) ] diff --git a/src/Pyramid-Bloc/PyramidTreePresenter.class.st b/src/Pyramid-Bloc/PyramidTreePresenter.class.st index 74b550de..8cc16007 100644 --- a/src/Pyramid-Bloc/PyramidTreePresenter.class.st +++ b/src/Pyramid-Bloc/PyramidTreePresenter.class.st @@ -82,7 +82,7 @@ PyramidTreePresenter >> initializePresenters [ beResizable; roots: { }; children: [ :each | - each isLeaf + each shouldSerializedChildren not ifTrue: [ { } ] ifFalse: [ each children ] ]; contextMenu: [ self actionEditorMenu ]; diff --git a/src/Pyramid-Toplo-Examples/PyramidToploExamples.class.st b/src/Pyramid-Toplo-Examples/PyramidToploExamples.class.st index ccaf2a51..3a26b2ce 100644 --- a/src/Pyramid-Toplo-Examples/PyramidToploExamples.class.st +++ b/src/Pyramid-Toplo-Examples/PyramidToploExamples.class.st @@ -4587,4044 +4587,3 @@ PyramidToploExamples class >> buttons [ } ]' ] - -{ #category : #'pyramid-serialized-bloc' } -PyramidToploExamples class >> buttonsSerialization [ - "This class has been generated using Pyramid. - - By: YannLEGOFF - 2024-02-01 16:46:48" - - - ^ '[ - ToElement { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutFitContentResizer { } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - Class [ #BlFlowLayout ] : BlFlowLayoutConstraints { - #vertical : BlFlowLayoutConstraintsVertical { - #alignment : BlTopAlignment { } - }, - #horizontal : BlFlowLayoutConstraintsHorizontal { - #alignment : BlHorizontalStartAlignment { } - }, - #newLine : false, - #weight : 0, - #display : BlFlowLayoutInline { } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : BlInsets { - #top : 0.0, - #left : 0.0, - #bottom : 0.0, - #right : 0.0 - }, - #padding : BlInsets { - #top : 5.0, - #left : 5.0, - #bottom : 5.0, - #right : 5.0 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : Float [ #infinity ], - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @9, - #previouslyAccessedConstraintsType : @8, - #accountTransformation : false - }, - #visuals : BlDefaultVisuals { }, - #userData : IdentityDictionary { - #elementId : BlElementNamedId { - #identifier : #themeSandBox - }, - #enabled : true - }, - #layout : BlFlowLayout { - #measurer : BlFlowLayoutMeasurer { - #layout : @22, - #children : OrderedCollection [ - BlFlowLayoutInlineChild { - #width : 527.0, - #height : 42.0, - #margin : @16, - #weight : 0, - #newLine : false, - #startLength : 0, - #startBreadth : 0, - #element : BlElement { - #children : BlChildrenArray [ - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - Class [ #BlLinearLayout ] : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @35, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 107.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @41 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 53.5, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : Color { - #red : 0.08602150537634409, - #green : 0.4662756598240469, - #blue : 1.0, - #alpha : 1.0 - } - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : BlStrokeLineButtCap { }, - #lineJoin : BlStrokeLineMiterJoin { }, - #miterLimit : 4.0, - #dashArray : [ ], - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : Color { - #red : 0.08602150537634409, - #green : 0.4662756598240469, - #blue : 1.0, - #alpha : 1.0 - } - } - }, - #effect : BlNullEffect { } - }, - #userData : IdentityDictionary { - #closeTooltipWindowOnMouseLeave : true, - #elementId : BlElementNamedId { - #identifier : #buttonA - }, - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : BlVerticalCenterAlignment { } - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : BlHorizontalCenterAlignment { } - }, - #weight : 1 - }, - Class [ #BlFrameLayout ] : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @64, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @80, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : Color [ #white ] - } - ], - #rope : BlCollectionRope { - #collection : ''Primary Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : true - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : BlNullVerticalAlignment { }, - #horizontalAlignment : BlNullHorizontalAlignment { }, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @96 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #enabled : true, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @109 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @117, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 104.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @123 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 52.0, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : Color { - #red : 0.8514173998044966, - #green : 0.8514173998044966, - #blue : 0.8514173998044966, - #alpha : 1.0 - } - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : @50, - #lineJoin : @51, - #miterLimit : 4.0, - #dashArray : @52, - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : Color [ #white ] - } - }, - #effect : @56 - }, - #userData : IdentityDictionary { - #closeTooltipWindowOnMouseLeave : true, - #elementId : BlElementNamedId { - #identifier : #buttonB - }, - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @66 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @68 - }, - #weight : 1 - }, - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @142, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @155, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : Color [ #black ] - } - ], - #rope : BlCollectionRope { - #collection : ''Default Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : true - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @171 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #enabled : true, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @182 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @190, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 105.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @196 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 52.5, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : Color { - #red : 0.8514173998044966, - #green : 0.8514173998044966, - #blue : 0.8514173998044966, - #alpha : 1.0 - } - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : @50, - #lineJoin : @51, - #miterLimit : 4.0, - #dashArray : [ - 3, - 3 - ], - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : @134 - } - }, - #effect : @56 - }, - #userData : IdentityDictionary { - #closeTooltipWindowOnMouseLeave : true, - #elementId : BlElementNamedId { - #identifier : #buttonC - }, - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @66 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @68 - }, - #weight : 1 - }, - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @215, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @228, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : @168 - } - ], - #rope : BlCollectionRope { - #collection : ''Dashed Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : true - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @243 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #enabled : true, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @254 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @262, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 86.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @268 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 43.0, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : Color { - #red : 0.0, - #green : 0.0, - #blue : 0.0, - #alpha : 0.0 - } - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : @50, - #lineJoin : @51, - #miterLimit : 4.0, - #dashArray : @52, - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : Color [ #white ] - } - } - }, - #userData : IdentityDictionary { - #closeTooltipWindowOnMouseLeave : true, - #elementId : BlElementNamedId { - #identifier : #buttonD - }, - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @66 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @68 - }, - #weight : 1 - }, - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @287, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @300, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : @168 - } - ], - #rope : BlCollectionRope { - #collection : ''Text Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : true - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @315 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #enabled : true, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @326 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @334, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 85.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @340 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 42.5, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : @275 - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : @50, - #lineJoin : @51, - #miterLimit : 4.0, - #dashArray : @52, - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : @134 - } - } - }, - #userData : IdentityDictionary { - #closeTooltipWindowOnMouseLeave : true, - #elementId : BlElementNamedId { - #identifier : #buttonE - }, - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @66 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @68 - }, - #weight : 1 - }, - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @357, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @370, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : Color { - #red : 0.08602150537634409, - #green : 0.4662756598240469, - #blue : 1.0, - #alpha : 1.0 - } - } - ], - #rope : BlCollectionRope { - #collection : ''Link Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : true - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @386 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #enabled : true, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @397 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - } - ], - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @8 : BlFlowLayoutConstraints { - #vertical : BlFlowLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlFlowLayoutConstraintsHorizontal { - #alignment : @13 - }, - #newLine : false, - #weight : 0, - #display : @14 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 5.0, - #left : 5.0, - #bottom : 5.0, - #right : 5.0 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @403, - #previouslyAccessedConstraintsType : @8, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @409 - }, - #shouldUseLargestChild : false, - #cellSpacing : 5.0, - #interspace : 0.0 - } - }, - #alignment : BlCompositeAlignment { - #vertical : @11, - #horizontal : @13, - #direction : BlLayoutLeftToRight { } - }, - #measurer : @23, - #display : @14 - }, - BlFlowLayoutInlineChild { - #width : 527.0, - #height : 42.0, - #margin : @16, - #weight : 0, - #newLine : false, - #startLength : 42.0, - #startBreadth : 0.0, - #element : BlElement { - #children : BlChildrenArray [ - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @422, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 107.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @428 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 53.5, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : Color { - #red : 0.0, - #green : 0.0, - #blue : 0.0, - #alpha : 0.2 - } - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : @50, - #lineJoin : @51, - #miterLimit : 4.0, - #dashArray : @52, - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : Color { - #red : 0.0, - #green : 0.0, - #blue : 0.0, - #alpha : 0.0392156862745098 - } - } - } - }, - #userData : IdentityDictionary { - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @66 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @68 - }, - #weight : 1 - }, - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @446, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @459, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : false, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : Color [ #lightGray ] - } - ], - #rope : BlCollectionRope { - #collection : ''Primary Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : false - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @475 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #elementId : BlElementNamedId { - #identifier : #buttonA - }, - #enabled : false, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @487 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @495, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 104.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @501 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 52.0, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : @435 - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : @50, - #lineJoin : @51, - #miterLimit : 4.0, - #dashArray : @52, - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : @439 - } - } - }, - #userData : IdentityDictionary { - #closeTooltipWindowOnMouseLeave : true, - #elementId : BlElementNamedId { - #identifier : #buttonB - }, - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @66 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @68 - }, - #weight : 1 - }, - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @518, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @531, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : false, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : @472 - } - ], - #rope : BlCollectionRope { - #collection : ''Default Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : false - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @546 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #enabled : false, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @557 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @565, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 105.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @571 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 52.5, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : @435 - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : @50, - #lineJoin : @51, - #miterLimit : 4.0, - #dashArray : @205, - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : @439 - } - } - }, - #userData : IdentityDictionary { - #closeTooltipWindowOnMouseLeave : true, - #elementId : BlElementNamedId { - #identifier : #buttonC - }, - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @66 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @68 - }, - #weight : 1 - }, - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @588, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @601, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : false, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : @472 - } - ], - #rope : BlCollectionRope { - #collection : ''Dashed Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : false - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @616 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #enabled : false, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @627 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @635, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 86.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @641 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 43.0, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : @275 - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : @50, - #lineJoin : @51, - #miterLimit : 4.0, - #dashArray : @52, - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : @275 - } - } - }, - #userData : IdentityDictionary { - #closeTooltipWindowOnMouseLeave : true, - #elementId : BlElementNamedId { - #identifier : #buttonD - }, - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @66 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @68 - }, - #weight : 1 - }, - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @658, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @671, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : false, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : @472 - } - ], - #rope : BlCollectionRope { - #collection : ''Text Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : false - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @686 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #enabled : false, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @697 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @705, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 85.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @711 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 42.5, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : @275 - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : @50, - #lineJoin : @51, - #miterLimit : 4.0, - #dashArray : @52, - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : @275 - } - } - }, - #userData : IdentityDictionary { - #closeTooltipWindowOnMouseLeave : true, - #elementId : BlElementNamedId { - #identifier : #buttonE - }, - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @66 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @68 - }, - #weight : 1 - }, - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @728, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @741, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : false, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : @472 - } - ], - #rope : BlCollectionRope { - #collection : ''Link Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : false - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @756 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #enabled : false, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @767 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - } - ], - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @8 : BlFlowLayoutConstraints { - #vertical : BlFlowLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlFlowLayoutConstraintsHorizontal { - #alignment : @13 - }, - #newLine : false, - #weight : 0, - #display : @14 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 5.0, - #left : 5.0, - #bottom : 5.0, - #right : 5.0 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @773, - #previouslyAccessedConstraintsType : @8, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @779 - }, - #shouldUseLargestChild : false, - #cellSpacing : 5.0, - #interspace : 0.0 - } - }, - #alignment : BlCompositeAlignment { - #vertical : @11, - #horizontal : @13, - #direction : @412 - }, - #measurer : @23, - #display : @14 - }, - BlFlowLayoutInlineChild { - #width : 527.0, - #height : 42.0, - #margin : @16, - #weight : 0, - #newLine : false, - #startLength : 84.0, - #startBreadth : 0.0, - #element : BlElement { - #children : BlChildrenArray [ - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @791, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 107.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @797 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 53.5, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : Color { - #red : 1.0, - #green : 0.3020527859237537, - #blue : 0.3098729227761486, - #alpha : 1.0 - } - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : @50, - #lineJoin : @51, - #miterLimit : 4.0, - #dashArray : @52, - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : @804 - } - } - }, - #userData : IdentityDictionary { - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @66 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @68 - }, - #weight : 1 - }, - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @814, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @827, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : @93 - } - ], - #rope : BlCollectionRope { - #collection : ''Primary Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : true - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @842 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #elementId : BlElementNamedId { - #identifier : #buttonA - }, - #enabled : true, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @854 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @862, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 104.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @868 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 52.0, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : Color { - #red : 1.0, - #green : 0.3020527859237537, - #blue : 0.3098729227761486, - #alpha : 1.0 - } - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : @50, - #lineJoin : @51, - #miterLimit : 4.0, - #dashArray : @52, - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : @134 - } - } - }, - #userData : IdentityDictionary { - #closeTooltipWindowOnMouseLeave : true, - #elementId : BlElementNamedId { - #identifier : #buttonB - }, - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @66 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @68 - }, - #weight : 1 - }, - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @886, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @899, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : Color { - #red : 1.0, - #green : 0.3020527859237537, - #blue : 0.3098729227761486, - #alpha : 1.0 - } - } - ], - #rope : BlCollectionRope { - #collection : ''Default Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : true - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @915 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #enabled : true, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @926 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @934, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 105.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @940 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 52.5, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : @804 - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : @50, - #lineJoin : @51, - #miterLimit : 4.0, - #dashArray : @205, - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : @134 - } - } - }, - #userData : IdentityDictionary { - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @66 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @68 - }, - #weight : 1 - }, - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @956, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @969, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : @912 - } - ], - #rope : BlCollectionRope { - #collection : ''Dashed Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : true - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @984 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #elementId : BlElementNamedId { - #identifier : #buttonC - }, - #enabled : true, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @996 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @1004, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 86.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @1010 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 43.0, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : @275 - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : @50, - #lineJoin : @51, - #miterLimit : 4.0, - #dashArray : @52, - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : @134 - } - } - }, - #userData : IdentityDictionary { - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @66 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @68 - }, - #weight : 1 - }, - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @1026, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @1039, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : @912 - } - ], - #rope : BlCollectionRope { - #collection : ''Text Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : true - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @1054 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #elementId : BlElementNamedId { - #identifier : #buttonD - }, - #enabled : true, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @1066 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - ToButton { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 32.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @13 - }, - #weight : 1 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 4.0, - #left : 7.5, - #bottom : 4.0, - #right : 7.5 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @1074, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #geometry : BlRoundedRectangleGeometry { - #extent : Point [ 85.0, 32.0 ], - #pathCache : BlPathCache { - #geometry : @1080 - }, - #cornerRadii : BlCornerRadii { - #topLeft : 6, - #topRight : 6, - #bottomLeft : 6, - #bottomRight : 6 - }, - #center : Point [ 42.5, 16.0 ] - }, - #border : BlBorder { - #paint : BlColorPaint { - #color : @275 - }, - #width : 1, - #style : BlStrokeStyle { - #lineCap : @50, - #lineJoin : @51, - #miterLimit : 4.0, - #dashArray : @52, - #dashOffset : 0.0 - }, - #opacity : 1.0 - }, - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : @134 - } - } - }, - #userData : IdentityDictionary { - #closeTooltipWindowOnMouseLeave : true, - #elementId : BlElementNamedId { - #identifier : #buttonE - }, - #stonLabeledIcon : ToLabeledIcon { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @34 : BlLinearLayoutConstraints { - #vertical : BlLinearLayoutConstraintsVertical { - #alignment : @66 - }, - #horizontal : BlLinearLayoutConstraintsHorizontal { - #alignment : @68 - }, - #weight : 1 - }, - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @66, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @68, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @1097, - #previouslyAccessedConstraintsType : @34, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #stonToImage : nil, - #stonToLabel : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @69 : BlFrameLayoutConstraints { - #vertical : BlFrameLayoutConstraintsVertical { - #alignment : @11, - #weight : 1.0 - }, - #horizontal : BlFrameLayoutConstraintsHorizontal { - #alignment : @13, - #weight : 1.0 - } - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @1110, - #previouslyAccessedConstraintsType : @69, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlAttributeRope { - #attributes : [ - BlFontWeightAttribute { - #isOverwritableByStyler : true, - #weight : 600 - }, - BlFontFamilyDefaultAttribute { - #isOverwritableByStyler : true, - #name : ''SFMono-Regular'' - }, - BlFontSizeDefaultAttribute { - #isOverwritableByStyler : true, - #size : 14 - }, - AlbTextParagraphLineSpacingAttribute { - #isOverwritableByStyler : true, - #lineSpacing : 1.5 - }, - BlTextForegroundAttribute { - #isOverwritableByStyler : true, - #paint : @912 - } - ], - #rope : BlCollectionRope { - #collection : ''Link Button'' - } - } - } - }, - #layout : BlFrameLayout { } - }, - #enabled : true - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @1125 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - }, - #enabled : true, - #tooltipContent : ToLabel { - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : @16, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { - #enabled : true, - #stonToLabelText : BlRopedText { - #rope : BlCollectionRope { - #collection : ''I\''m a button'' - } - } - }, - #layout : BlFrameLayout { } - } - }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @1136 - }, - #shouldUseLargestChild : false, - #cellSpacing : 0.0, - #interspace : 0.0 - } - } - ], - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @5 - }, - #constraints : { - @8 : BlFlowLayoutConstraints { - #vertical : BlFlowLayoutConstraintsVertical { - #alignment : @11 - }, - #horizontal : BlFlowLayoutConstraintsHorizontal { - #alignment : @13 - }, - #newLine : false, - #weight : 0, - #display : @14 - } - }, - #position : Point [ 0.0, 0.0 ], - #margin : @16, - #padding : BlInsets { - #top : 5.0, - #left : 5.0, - #bottom : 5.0, - #right : 5.0 - }, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : @18, - #maxWidth : @18, - #ignoredByLayout : false, - #previouslyAccessedConstraints : @1142, - #previouslyAccessedConstraintsType : @8, - #accountTransformation : false - }, - #visuals : @19, - #userData : IdentityDictionary { }, - #layout : BlLinearLayout { - #weightSum : 0, - #verticalAlignment : @97, - #horizontalAlignment : @98, - #orientation : BlLinearLayoutHorizontalOrientation { - #layout : @1148 - }, - #shouldUseLargestChild : false, - #cellSpacing : 5.0, - #interspace : 0.0 - } - }, - #alignment : BlCompositeAlignment { - #vertical : @11, - #horizontal : @13, - #direction : @412 - }, - #measurer : @23, - #display : @14 - } - ], - #lines : OrderedCollection [ - BlFlowLayoutLine { - #children : OrderedCollection [ - @25, - @413, - @782 - ], - #startLength : 0, - #startBreadth : 0, - #length : 126.0, - #breadth : 527.0, - #measurer : @23 - } - ], - #orientation : BlFlowLayoutVertical { }, - #maxWidth : -10.0, - #maxHeight : -10.0, - #widthMode : BlMeasurementSpec { - #size : 0.0, - #mode : BlMeasurementUnspecifiedMode { } - }, - #heightMode : BlMeasurementSpec { - #size : 0.0, - #mode : @1156 - }, - #checkCanFit : false - }, - #orientation : BlLayoutVertical { }, - #horizontalAlignment : @13, - #verticalAlignment : @11 - } - } -]' -] diff --git a/src/Pyramid-Toplo/PyramidElementThemeSelectorPresenter.class.st b/src/Pyramid-Toplo/PyramidElementThemeSelectorPresenter.class.st index 4c1dcc13..eac5fa48 100644 --- a/src/Pyramid-Toplo/PyramidElementThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo/PyramidElementThemeSelectorPresenter.class.st @@ -60,12 +60,6 @@ PyramidElementThemeSelectorPresenter >> defaultLayout [ add: self themeSelector; yourself) expand: false; - add: (SpBoxLayout newHorizontal - spacing: 4; - add: 'Variant' width: 50; - add: self variantSelector; - yourself) - expand: false; add: SpNullPresenter new height: 10; yourself ] @@ -132,7 +126,6 @@ PyramidElementThemeSelectorPresenter >> pyramidSelectionChanged [ { #category : #'as yet unclassified' } PyramidElementThemeSelectorPresenter >> setDefaultStateForPresenters [. self themeSelector enabled: false. - self variantSelector enabled: false. self inheritSelector enabled: false. self inheritSelector state: true. @@ -163,7 +156,6 @@ PyramidElementThemeSelectorPresenter >> updatePresenterFor: aCollectionOfElement aCollectionOfElement first localTheme ifNotNil: [ :theme | self inheritSelector state: false. self themeSelector enabled: true. - self variantSelector enabled: true. self selectTheme: theme ]. ^ self ]. @@ -181,7 +173,6 @@ PyramidElementThemeSelectorPresenter >> updatePresenterFor: aCollectionOfElement collectionOfLocalThemes first ifNotNil: [ self inheritSelector state: false. self themeSelector enabled: true. - self variantSelector enabled: true. self selectTheme: collectionOfLocalThemes first ]. self layout: self defaultLayout diff --git a/src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st b/src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st index 9c8fb517..10450a31 100644 --- a/src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st @@ -1,10 +1,8 @@ Class { #name : #PyramidThemeSelectorPresenter, #superclass : #SpPresenter, - #classTraits : 'TPyramidProjectModelObserver classTrait', #instVars : [ 'themeSelector', - 'variantSelector', 'buttonRefreshTheme', 'triggerThemeChangement' ], @@ -26,8 +24,7 @@ PyramidThemeSelectorPresenter >> buttonRefreshTheme [ { #category : #'as yet unclassified' } PyramidThemeSelectorPresenter >> currentTheme [ - ^ self themeSelector selectedItem variant: - self variantSelector selectedItem new + ^ self themeSelector selectedItem ] { #category : #layout } @@ -49,12 +46,6 @@ PyramidThemeSelectorPresenter >> defaultLayout [ add: self themeSelector; yourself) expand: false; - add: (SpBoxLayout newHorizontal - spacing: 4; - add: 'Variant' width: 50; - add: self variantSelector; - yourself) - expand: false; add: SpNullPresenter new height: 10; yourself ] @@ -67,6 +58,8 @@ PyramidThemeSelectorPresenter >> initializeAllPossibleThemes [ allThemes := ToTheme allSubclasses select: [ :theme | theme canBeDefault ]. + + allThemes := allThemes collect: [ :each | each new ]. self triggerThemeChangement: false. self themeSelector items: allThemes. @@ -85,10 +78,6 @@ PyramidThemeSelectorPresenter >> initializePresenters [ whenSelectedItemChangedDo: [ :aThemeClass | self themeSelectionChanged: aThemeClass ]; yourself. - variantSelector := SpDropListPresenter new - whenSelectedItemChangedDo: [ :aNewVariant | - self variantSelectionChanged: aNewVariant ]; - yourself. buttonRefreshTheme := SpButtonPresenter new help: 'Refresh theme list.'; icon: (self iconNamed: #refresh); @@ -107,10 +96,7 @@ PyramidThemeSelectorPresenter >> labelPresenter [ PyramidThemeSelectorPresenter >> selectTheme: aToTheme [ self triggerThemeChangement: false. - self themeSelector selectItem: aToTheme class. - self variantSelector selectItem: aToTheme variant class. - self triggerThemeChangement: true. ] @@ -118,14 +104,7 @@ PyramidThemeSelectorPresenter >> selectTheme: aToTheme [ { #category : #'as yet unclassified' } PyramidThemeSelectorPresenter >> themeSelectionChanged: aThemeClass [ - | previousVariant | aThemeClass ifNil: [ ^ self ]. - previousVariant := self variantSelector selectedItem. - self variantSelector items: aThemeClass supportedVariantClasses. - self variantSelector selectItem: - ((aThemeClass supportedVariantClasses includes: previousVariant) - ifTrue: [ previousVariant ] - ifFalse: [ aThemeClass supportedVariantClasses first ]). self triggerThemeChangement ifTrue: [ self applyTheme ] ] @@ -154,9 +133,3 @@ PyramidThemeSelectorPresenter >> variantSelectionChanged: aVariantClass [ aVariantClass ifNil: [ ^ self ]. self triggerThemeChangement ifTrue: [ self applyTheme ] ] - -{ #category : #accessing } -PyramidThemeSelectorPresenter >> variantSelector [ - - ^ variantSelector -] From 1f93199c64eb01b90913b88bbe274ecfd14e174d Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Fri, 8 Mar 2024 15:50:47 +0100 Subject: [PATCH 26/27] fix baseline --- src/BaselineOfPyramid/BaselineOfPyramid.class.st | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/BaselineOfPyramid/BaselineOfPyramid.class.st b/src/BaselineOfPyramid/BaselineOfPyramid.class.st index 895e303c..63610d20 100644 --- a/src/BaselineOfPyramid/BaselineOfPyramid.class.st +++ b/src/BaselineOfPyramid/BaselineOfPyramid.class.st @@ -92,7 +92,7 @@ BaselineOfPyramid >> toploDependencies: spec [ spec baseline: 'Toplo' - with: [ spec repository: 'github://pharo-graphics/Toplo:dev/src' ]. + with: [ spec repository: 'github://pharo-graphics/Toplo:master/src' ]. spec baseline: 'ToploSerialization' with: [ spec repository: 'github://OpenSmock/Toplo-Serialization:main/src' ] @@ -115,5 +115,8 @@ BaselineOfPyramid >> toploPackages: spec [ { #category : #packages } BaselineOfPyramid >> toploPackagesNames [ - ^ #( 'Pyramid-Bloc' 'Pyramid-Toplo' 'Pyramid-Toplo-Tests' 'Pyramid-Toplo-Examples' ) + | packages | + packages := self blocPackagesNames asOrderedCollection. + packages addAll: #( 'Pyramid-Toplo' 'Pyramid-Toplo-Tests' 'Pyramid-Toplo-Examples' ). + ^ packages asArray ] From 483b67c3b54c701b9bc14c384630f7c78ab36648 Mon Sep 17 00:00:00 2001 From: Nyan11 Date: Fri, 8 Mar 2024 16:17:02 +0100 Subject: [PATCH 27/27] Remove equality that are now on Bloc + fix toTheme class selection --- src/Pyramid-Bloc/BlBackground.extension.st | 7 ------- src/Pyramid-Bloc/BlEllipseGeometry.extension.st | 8 -------- src/Pyramid-Bloc/BlFlowLayout.extension.st | 11 ----------- src/Pyramid-Bloc/BlGradientPaint.extension.st | 8 -------- src/Pyramid-Bloc/BlImageBackground.extension.st | 7 ------- src/Pyramid-Bloc/BlLayout.extension.st | 7 ------- src/Pyramid-Bloc/BlLinearGradientPaint.extension.st | 7 ------- src/Pyramid-Bloc/BlRadialGradientPaint.extension.st | 7 ------- src/Pyramid-Bloc/BlRectangleGeometry.extension.st | 8 -------- .../BlRoundedRectangleGeometry.extension.st | 8 -------- .../PyramidThemeSelectorPresenter.class.st | 2 +- 11 files changed, 1 insertion(+), 79 deletions(-) delete mode 100644 src/Pyramid-Bloc/BlEllipseGeometry.extension.st delete mode 100644 src/Pyramid-Bloc/BlRectangleGeometry.extension.st delete mode 100644 src/Pyramid-Bloc/BlRoundedRectangleGeometry.extension.st diff --git a/src/Pyramid-Bloc/BlBackground.extension.st b/src/Pyramid-Bloc/BlBackground.extension.st index b114506e..5ac1c292 100644 --- a/src/Pyramid-Bloc/BlBackground.extension.st +++ b/src/Pyramid-Bloc/BlBackground.extension.st @@ -1,12 +1,5 @@ Extension { #name : #BlBackground } -{ #category : #'*Pyramid-Bloc' } -BlBackground >> = aBlBackground [ - - aBlBackground == self ifTrue: [ ^ true ]. - ^ aBlBackground class = self class -] - { #category : #'*Pyramid-Bloc' } BlBackground >> asForm [ diff --git a/src/Pyramid-Bloc/BlEllipseGeometry.extension.st b/src/Pyramid-Bloc/BlEllipseGeometry.extension.st deleted file mode 100644 index c3401b9b..00000000 --- a/src/Pyramid-Bloc/BlEllipseGeometry.extension.st +++ /dev/null @@ -1,8 +0,0 @@ -Extension { #name : #BlEllipseGeometry } - -{ #category : #'*Pyramid-Bloc' } -BlEllipseGeometry >> = anObject [ - - self == anObject ifTrue: [ ^ true ]. - ^ self class = anObject class -] diff --git a/src/Pyramid-Bloc/BlFlowLayout.extension.st b/src/Pyramid-Bloc/BlFlowLayout.extension.st index fd33d9ab..49929bdb 100644 --- a/src/Pyramid-Bloc/BlFlowLayout.extension.st +++ b/src/Pyramid-Bloc/BlFlowLayout.extension.st @@ -1,16 +1,5 @@ Extension { #name : #BlFlowLayout } -{ #category : #'*Pyramid-Bloc' } -BlFlowLayout >> = anObject [ - - self == anObject ifTrue: [ ^ true ]. - self class = anObject class ifFalse: [ ^ false ]. - self orientation = anObject orientation ifFalse: [ ^ false ]. - self horizontalAlignment = anObject horizontalAlignment ifFalse: [ ^ false ]. - self verticalAlignment = anObject verticalAlignment ifFalse: [ ^ false ]. - ^ true -] - { #category : #'*Pyramid-Bloc' } BlFlowLayout >> asIcon [ diff --git a/src/Pyramid-Bloc/BlGradientPaint.extension.st b/src/Pyramid-Bloc/BlGradientPaint.extension.st index 4ccffa85..82500ced 100644 --- a/src/Pyramid-Bloc/BlGradientPaint.extension.st +++ b/src/Pyramid-Bloc/BlGradientPaint.extension.st @@ -1,13 +1,5 @@ Extension { #name : #BlGradientPaint } -{ #category : #'*Pyramid-Bloc' } -BlGradientPaint >> = aBlPaint [ - - self == aBlPaint ifTrue: [ ^ true ]. - self class == aBlPaint class ifFalse: [ ^ false ]. - ^ self stops = aBlPaint stops -] - { #category : #'*Pyramid-Bloc' } BlGradientPaint >> asForm [ diff --git a/src/Pyramid-Bloc/BlImageBackground.extension.st b/src/Pyramid-Bloc/BlImageBackground.extension.st index 39db9c67..7211fa2b 100644 --- a/src/Pyramid-Bloc/BlImageBackground.extension.st +++ b/src/Pyramid-Bloc/BlImageBackground.extension.st @@ -1,12 +1,5 @@ Extension { #name : #BlImageBackground } -{ #category : #'*Pyramid-Bloc' } -BlImageBackground >> = aBlBackground [ - - super = aBlBackground ifFalse: [ ^ false ]. - ^ self image = aBlBackground image -] - { #category : #'*Pyramid-Bloc' } BlImageBackground >> asForm [ diff --git a/src/Pyramid-Bloc/BlLayout.extension.st b/src/Pyramid-Bloc/BlLayout.extension.st index ef45ada7..5225f479 100644 --- a/src/Pyramid-Bloc/BlLayout.extension.st +++ b/src/Pyramid-Bloc/BlLayout.extension.st @@ -1,12 +1,5 @@ Extension { #name : #BlLayout } -{ #category : #'*Pyramid-Bloc' } -BlLayout >> = anObject [ - - self == anObject ifTrue: [ ^ true ]. - ^ self class = anObject class -] - { #category : #'*Pyramid-Bloc' } BlLayout >> asIcon [ diff --git a/src/Pyramid-Bloc/BlLinearGradientPaint.extension.st b/src/Pyramid-Bloc/BlLinearGradientPaint.extension.st index 80fcf976..f09ee7b5 100644 --- a/src/Pyramid-Bloc/BlLinearGradientPaint.extension.st +++ b/src/Pyramid-Bloc/BlLinearGradientPaint.extension.st @@ -1,12 +1,5 @@ Extension { #name : #BlLinearGradientPaint } -{ #category : #'*Pyramid-Bloc' } -BlLinearGradientPaint >> = aBlPaint [ - - super = aBlPaint ifFalse: [ ^ false ]. - ^ self end = aBlPaint end and: [ self start = aBlPaint start ] -] - { #category : #'*Pyramid-Bloc' } BlLinearGradientPaint >> selectOnGradientPaintInput: aPyramidGradientPaintInputPresenter [ diff --git a/src/Pyramid-Bloc/BlRadialGradientPaint.extension.st b/src/Pyramid-Bloc/BlRadialGradientPaint.extension.st index 03af8766..b1c14f3f 100644 --- a/src/Pyramid-Bloc/BlRadialGradientPaint.extension.st +++ b/src/Pyramid-Bloc/BlRadialGradientPaint.extension.st @@ -1,12 +1,5 @@ Extension { #name : #BlRadialGradientPaint } -{ #category : #'*Pyramid-Bloc' } -BlRadialGradientPaint >> = aBlPaint [ - - super = aBlPaint ifFalse: [ ^ false ]. - ^ self innerCenter = aBlPaint innerCenter and: [ self innerRadius = aBlPaint innerRadius and: [ self outerCenter = aBlPaint outerCenter and: [ self outerRadius = aBlPaint outerRadius ] ] ] -] - { #category : #'*Pyramid-Bloc' } BlRadialGradientPaint >> selectOnGradientPaintInput: aPyramidGradientPaintInputPresenter [ diff --git a/src/Pyramid-Bloc/BlRectangleGeometry.extension.st b/src/Pyramid-Bloc/BlRectangleGeometry.extension.st deleted file mode 100644 index c78cf282..00000000 --- a/src/Pyramid-Bloc/BlRectangleGeometry.extension.st +++ /dev/null @@ -1,8 +0,0 @@ -Extension { #name : #BlRectangleGeometry } - -{ #category : #'*Pyramid-Bloc' } -BlRectangleGeometry >> = anObject [ - - self == anObject ifTrue: [ ^ true ]. - ^ self class = anObject class -] diff --git a/src/Pyramid-Bloc/BlRoundedRectangleGeometry.extension.st b/src/Pyramid-Bloc/BlRoundedRectangleGeometry.extension.st deleted file mode 100644 index e762b5ec..00000000 --- a/src/Pyramid-Bloc/BlRoundedRectangleGeometry.extension.st +++ /dev/null @@ -1,8 +0,0 @@ -Extension { #name : #BlRoundedRectangleGeometry } - -{ #category : #'*Pyramid-Bloc' } -BlRoundedRectangleGeometry >> = anObject [ - - self == anObject ifTrue: [ ^ true ]. - ^ self class = anObject class and: [ self cornerRadii = anObject cornerRadii ] -] diff --git a/src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st b/src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st index 10450a31..faa06425 100644 --- a/src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st +++ b/src/Pyramid-Toplo/PyramidThemeSelectorPresenter.class.st @@ -96,7 +96,7 @@ PyramidThemeSelectorPresenter >> labelPresenter [ PyramidThemeSelectorPresenter >> selectTheme: aToTheme [ self triggerThemeChangement: false. - self themeSelector selectItem: aToTheme class. + self themeSelector selectItem: aToTheme. self triggerThemeChangement: true. ]