From 61eb054182e7cad84120d759e1bd8583162c7dc2 Mon Sep 17 00:00:00 2001 From: YannLEGOFF Date: Thu, 27 Jul 2023 14:24:13 +0200 Subject: [PATCH 1/4] add label on top of project configuration --- src/Pyramid/PyramidSaveInputsView.class.st | 7 ++++++- src/Pyramid/PyramidSavePlugin.class.st | 13 +++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/Pyramid/PyramidSaveInputsView.class.st b/src/Pyramid/PyramidSaveInputsView.class.st index 5d9ea5f5..cfa44549 100644 --- a/src/Pyramid/PyramidSaveInputsView.class.st +++ b/src/Pyramid/PyramidSaveInputsView.class.st @@ -48,11 +48,16 @@ PyramidSaveInputsView >> defaultLayout [ ^ SpBoxLayout newVertical spacing: 4; + add: (SpLabelPresenter new + label: 'Project configuration'; + displayBold: [ :c | true ]; + yourself) + expand: false; add: self inputPackage expand: false; add: self labelErrorPackage expand: false; add: self inputClass expand: false; add: self labelErrorClass expand: false; - add: self inputMethod expand: false; + add: self inputMethod expand: false; add: self labelErrorMethod expand: false; add: (SpBoxLayout newHorizontal add: self buttonClass; diff --git a/src/Pyramid/PyramidSavePlugin.class.st b/src/Pyramid/PyramidSavePlugin.class.st index 4b1b4b21..8ab01304 100644 --- a/src/Pyramid/PyramidSavePlugin.class.st +++ b/src/Pyramid/PyramidSavePlugin.class.st @@ -10,7 +10,6 @@ Class { 'inputsButton', 'savingService', 'saveButton', - 'inputsPopover', 'projectModel' ], #category : #'Pyramid-plugin-save' @@ -65,23 +64,21 @@ PyramidSavePlugin >> initialize [ savingService := PyramidSavingService new savingModel: saveModel; - methodBuilder: PyramidSavingMethodBuilder ston; yourself. inputsButton := SpButtonPresenter new icon: (self iconNamed: #smallRemoteOpen); - help: 'Project configuration'; - action: [ inputsPopover popup ]; - yourself. - inputsPopover := PyramidPopoverFactory + help: 'Project configuration'; + action: [( PyramidPopoverFactory makeWithPresenter: inputsView relativeTo: inputsButton - position: SpPopoverPosition right. + position: SpPopoverPosition right) popup. ]; + yourself. saveButton := SpButtonPresenter new icon: (self iconNamed: #smallSave); - help: 'Save project'; + help: 'Save project'; action: [ self saveAction ]; yourself ] From 4b507d3766a35f3a02d4e41bb3f44dff7dc4e9bd Mon Sep 17 00:00:00 2001 From: YannLEGOFF Date: Thu, 27 Jul 2023 15:19:43 +0200 Subject: [PATCH 2/4] Rename classes and add browse button --- .../PyramidSaveModelVerifierTest.class.st | 2 +- .../PyramidSaveInputsController.class.st | 84 --------------- src/Pyramid/PyramidSavePlugin.class.st | 6 +- ...aveProjectConfigurationController.class.st | 100 ++++++++++++++++++ ...amidSaveProjectConfigurationView.class.st} | 69 +++++++----- src/Pyramid/PyramidTests.class.st | 72 +++++++++++++ 6 files changed, 219 insertions(+), 114 deletions(-) delete mode 100644 src/Pyramid/PyramidSaveInputsController.class.st create mode 100644 src/Pyramid/PyramidSaveProjectConfigurationController.class.st rename src/Pyramid/{PyramidSaveInputsView.class.st => PyramidSaveProjectConfigurationView.class.st} (68%) create mode 100644 src/Pyramid/PyramidTests.class.st diff --git a/src/Pyramid-Tests/PyramidSaveModelVerifierTest.class.st b/src/Pyramid-Tests/PyramidSaveModelVerifierTest.class.st index dcd91a99..7be7dfbf 100644 --- a/src/Pyramid-Tests/PyramidSaveModelVerifierTest.class.st +++ b/src/Pyramid-Tests/PyramidSaveModelVerifierTest.class.st @@ -22,7 +22,7 @@ PyramidSaveModelVerifierTest >> testModelNilError [ | verifier | verifier := PyramidSaveModelVerifier modelNotNil. verifier verify: nil. "Send a nil model" - verifier showOn: PyramidSaveInputsView new. + verifier showOn: PyramidSaveProjectConfigurationView new. ] { #category : #test } diff --git a/src/Pyramid/PyramidSaveInputsController.class.st b/src/Pyramid/PyramidSaveInputsController.class.st deleted file mode 100644 index 08ae2070..00000000 --- a/src/Pyramid/PyramidSaveInputsController.class.st +++ /dev/null @@ -1,84 +0,0 @@ -Class { - #name : #PyramidSaveInputsController, - #superclass : #Object, - #instVars : [ - 'view', - 'model', - 'verifier' - ], - #category : #'Pyramid-plugin-save' -} - -{ #category : #accessing } -PyramidSaveInputsController >> model [ - - model ifNil: [ model := PyramidSaveModel new ]. - ^ model -] - -{ #category : #accessing } -PyramidSaveInputsController >> model: aPyramidSaveModel [ - - model := aPyramidSaveModel. - self view model: aPyramidSaveModel -] - -{ #category : #'as yet unclassified' } -PyramidSaveInputsController >> radioUpdatedOnClassSide: aBoolean [ - - aBoolean - ifTrue: [ self model onClass ] - ifFalse: [ self model onInstance ]. self updateView -] - -{ #category : #'as yet unclassified' } -PyramidSaveInputsController >> textUpdatedFromClass: aString [ - - self model savingClassName: aString. - self updateView -] - -{ #category : #'as yet unclassified' } -PyramidSaveInputsController >> textUpdatedFromMethod: aString [ - - self model savingMethodName: aString. - self updateView -] - -{ #category : #'as yet unclassified' } -PyramidSaveInputsController >> textUpdatedFromPackage: aString [ - - self model savingPackageName: aString. - self updateView -] - -{ #category : #'as yet unclassified' } -PyramidSaveInputsController >> updateView [ - - | errors | - errors := self verifier allErrors: self model. - self view hideLabels. - errors do: [ :each | each showOn: self view ] -] - -{ #category : #accessing } -PyramidSaveInputsController >> verifier [ - - verifier ifNil: [ - verifier := PyramidSaveModelVerifier verifierNoErrorForInputsView ]. - ^ verifier -] - -{ #category : #accessing } -PyramidSaveInputsController >> view [ - - view ifNil: [ view := PyramidSaveInputsView new. - view controller: self; model: self model ]. - ^ view -] - -{ #category : #accessing } -PyramidSaveInputsController >> view: anObject [ - - view := anObject -] diff --git a/src/Pyramid/PyramidSavePlugin.class.st b/src/Pyramid/PyramidSavePlugin.class.st index 8ab01304..b6f4682c 100644 --- a/src/Pyramid/PyramidSavePlugin.class.st +++ b/src/Pyramid/PyramidSavePlugin.class.st @@ -58,7 +58,7 @@ PyramidSavePlugin >> connectOn: aPyramidEditor [ { #category : #initialization } PyramidSavePlugin >> initialize [ - inputsController := PyramidSaveInputsController new. + inputsController := PyramidSaveProjectConfigurationController new. inputsView := inputsController view. saveModel := inputsController model. @@ -106,7 +106,9 @@ PyramidSavePlugin >> openOn: aSaveModel [ self inputsView inputClass text: aSaveModel savingClassName. self inputsView inputMethod text: aSaveModel savingMethodName. - self inputsView inputPackage text: aSaveModel savingPackageName + self inputsView inputPackage text: aSaveModel savingPackageName. + aSaveModel isClassSide ifTrue: [ self inputsView buttonClass click ] ifFalse: [ self inputsView buttonInstance click ] + ] { #category : #accessing } diff --git a/src/Pyramid/PyramidSaveProjectConfigurationController.class.st b/src/Pyramid/PyramidSaveProjectConfigurationController.class.st new file mode 100644 index 00000000..4702683d --- /dev/null +++ b/src/Pyramid/PyramidSaveProjectConfigurationController.class.st @@ -0,0 +1,100 @@ +Class { + #name : #PyramidSaveProjectConfigurationController, + #superclass : #Object, + #instVars : [ + 'view', + 'model', + 'verifier' + ], + #category : #'Pyramid-plugin-save' +} + +{ #category : #tests } +PyramidSaveProjectConfigurationController >> browseProjectClass [ + + | class | + class := self class environment classNamed: + self model savingClassName. + class ifNil: [ ^ self ]. + self model isClassSide ifTrue: [ Smalltalk tools browser + openOnClass: class class + selector: self model savingMethodName ] ifFalse: [ Smalltalk tools browser + openOnClass: class + selector: self model savingMethodName ] + +] + +{ #category : #accessing } +PyramidSaveProjectConfigurationController >> model [ + + model ifNil: [ model := PyramidSaveModel new ]. + ^ model +] + +{ #category : #accessing } +PyramidSaveProjectConfigurationController >> model: aPyramidSaveModel [ + + model := aPyramidSaveModel. + self view model: aPyramidSaveModel +] + +{ #category : #'as yet unclassified' } +PyramidSaveProjectConfigurationController >> radioUpdatedOnClassSide: aBoolean [ + + aBoolean + ifTrue: [ self model onClass ] + ifFalse: [ self model onInstance ]. self updateView +] + +{ #category : #'as yet unclassified' } +PyramidSaveProjectConfigurationController >> textUpdatedFromClass: aString [ + + self model savingClassName: aString. + self updateView +] + +{ #category : #'as yet unclassified' } +PyramidSaveProjectConfigurationController >> textUpdatedFromMethod: aString [ + + self model savingMethodName: aString. + self updateView +] + +{ #category : #'as yet unclassified' } +PyramidSaveProjectConfigurationController >> textUpdatedFromPackage: aString [ + + self model savingPackageName: aString. + self updateView +] + +{ #category : #'as yet unclassified' } +PyramidSaveProjectConfigurationController >> updateView [ + + | errors | + errors := self verifier allErrors: self model. + self view hideLabels. + self view buttonBrowse enabled: errors isEmpty. + errors do: [ :each | each showOn: self view ] +] + +{ #category : #accessing } +PyramidSaveProjectConfigurationController >> verifier [ + + verifier ifNil: [ + verifier := PyramidSaveModelVerifier verifierNoErrorForInputsView ]. + ^ verifier +] + +{ #category : #accessing } +PyramidSaveProjectConfigurationController >> view [ + + view ifNil: [ view := PyramidSaveProjectConfigurationView new. + view controller: self; model: self model ]. + ^ view +] + +{ #category : #accessing } +PyramidSaveProjectConfigurationController >> view: anObject [ + + view := anObject +] diff --git a/src/Pyramid/PyramidSaveInputsView.class.st b/src/Pyramid/PyramidSaveProjectConfigurationView.class.st similarity index 68% rename from src/Pyramid/PyramidSaveInputsView.class.st rename to src/Pyramid/PyramidSaveProjectConfigurationView.class.st index cfa44549..e22e9ca8 100644 --- a/src/Pyramid/PyramidSaveInputsView.class.st +++ b/src/Pyramid/PyramidSaveProjectConfigurationView.class.st @@ -1,5 +1,5 @@ Class { - #name : #PyramidSaveInputsView, + #name : #PyramidSaveProjectConfigurationView, #superclass : #SpPresenter, #instVars : [ 'inputPackage', @@ -7,6 +7,7 @@ Class { 'inputMethod', 'buttonClass', 'buttonInstance', + 'buttonBrowse', 'labelErrorPackage', 'labelErrorClass', 'labelErrorMethod', @@ -16,35 +17,41 @@ Class { #category : #'Pyramid-plugin-save' } +{ #category : #layout } +PyramidSaveProjectConfigurationView >> buttonBrowse [ + + ^ buttonBrowse +] + { #category : #accessing } -PyramidSaveInputsView >> buttonClass [ +PyramidSaveProjectConfigurationView >> buttonClass [ ^ buttonClass ] { #category : #accessing } -PyramidSaveInputsView >> buttonInstance [ +PyramidSaveProjectConfigurationView >> buttonInstance [ ^ buttonInstance ] { #category : #accessing } -PyramidSaveInputsView >> controller [ +PyramidSaveProjectConfigurationView >> controller [ controller ifNil: [ - controller := PyramidSaveInputsController new + controller := PyramidSaveProjectConfigurationController new view: self; yourself ]. ^ controller ] { #category : #accessing } -PyramidSaveInputsView >> controller: aPySaveFormController [ +PyramidSaveProjectConfigurationView >> controller: aPySaveFormController [ controller := aPySaveFormController ] { #category : #layout } -PyramidSaveInputsView >> defaultLayout [ +PyramidSaveProjectConfigurationView >> defaultLayout [ ^ SpBoxLayout newVertical spacing: 4; @@ -62,30 +69,31 @@ PyramidSaveInputsView >> defaultLayout [ add: (SpBoxLayout newHorizontal add: self buttonClass; add: self buttonInstance; + add: self buttonBrowse width: 32; yourself) expand: false; yourself ] { #category : #'as yet unclassified' } -PyramidSaveInputsView >> hideLabelClass [ +PyramidSaveProjectConfigurationView >> hideLabelClass [ self labelErrorClass label: ''. ] { #category : #'as yet unclassified' } -PyramidSaveInputsView >> hideLabelMethod [ +PyramidSaveProjectConfigurationView >> hideLabelMethod [ self labelErrorMethod label: '' ] { #category : #'as yet unclassified' } -PyramidSaveInputsView >> hideLabelPackage [ +PyramidSaveProjectConfigurationView >> hideLabelPackage [ self labelErrorPackage label: '' ] { #category : #configuration } -PyramidSaveInputsView >> hideLabels [ +PyramidSaveProjectConfigurationView >> hideLabels [ self labelErrorClass label: ''. self labelErrorMethod label: ''. @@ -93,7 +101,7 @@ PyramidSaveInputsView >> hideLabels [ ] { #category : #initialization } -PyramidSaveInputsView >> initializePresenters [ +PyramidSaveProjectConfigurationView >> initializePresenters [ inputPackage := self newTextInput placeholder: 'Enter a package name'; @@ -123,50 +131,57 @@ PyramidSaveInputsView >> initializePresenters [ yourself. buttonClass associatedRadioButtons: { buttonInstance }. + buttonBrowse := SpButtonPresenter new + help: 'Browse project class'; + icon: (self iconNamed: #nautilus); + action: [ self controller browseProjectClass ]; + enabled: false; + yourself. + labelErrorPackage := self newLabel. labelErrorClass := self newLabel. labelErrorMethod := self newLabel ] { #category : #accessing } -PyramidSaveInputsView >> inputClass [ +PyramidSaveProjectConfigurationView >> inputClass [ ^ inputClass ] { #category : #accessing } -PyramidSaveInputsView >> inputMethod [ +PyramidSaveProjectConfigurationView >> inputMethod [ ^ inputMethod ] { #category : #accessing } -PyramidSaveInputsView >> inputPackage [ +PyramidSaveProjectConfigurationView >> inputPackage [ ^ inputPackage ] { #category : #accessing } -PyramidSaveInputsView >> labelErrorClass [ +PyramidSaveProjectConfigurationView >> labelErrorClass [ ^ labelErrorClass ] { #category : #accessing } -PyramidSaveInputsView >> labelErrorMethod [ +PyramidSaveProjectConfigurationView >> labelErrorMethod [ ^ labelErrorMethod ] { #category : #accessing } -PyramidSaveInputsView >> labelErrorPackage [ +PyramidSaveProjectConfigurationView >> labelErrorPackage [ ^ labelErrorPackage ] { #category : #accessing } -PyramidSaveInputsView >> model [ +PyramidSaveProjectConfigurationView >> model [ model ifNil: [ model := PyramidSaveModel new @@ -175,14 +190,14 @@ PyramidSaveInputsView >> model [ ] { #category : #accessing } -PyramidSaveInputsView >> model: aPySaveModel [ +PyramidSaveProjectConfigurationView >> model: aPySaveModel [ model := aPySaveModel. self updateFromModel. ] { #category : #'as yet unclassified' } -PyramidSaveInputsView >> showClassIsNotValidError [ +PyramidSaveProjectConfigurationView >> showClassIsNotValidError [ self labelErrorClass displayColor: [ Color red ]; @@ -190,7 +205,7 @@ PyramidSaveInputsView >> showClassIsNotValidError [ ] { #category : #'as yet unclassified' } -PyramidSaveInputsView >> showClassPackageIsNotEqualError [ +PyramidSaveProjectConfigurationView >> showClassPackageIsNotEqualError [ self labelErrorClass displayColor: [ Color red ]; @@ -198,7 +213,7 @@ PyramidSaveInputsView >> showClassPackageIsNotEqualError [ ] { #category : #'as yet unclassified' } -PyramidSaveInputsView >> showMethodIsNotValidError [ +PyramidSaveProjectConfigurationView >> showMethodIsNotValidError [ self labelErrorMethod displayColor: [ Color red ]; @@ -206,7 +221,7 @@ PyramidSaveInputsView >> showMethodIsNotValidError [ ] { #category : #'as yet unclassified' } -PyramidSaveInputsView >> showModelNilError [ +PyramidSaveProjectConfigurationView >> showModelNilError [ self labelErrorPackage displayColor: [Color red]; @@ -214,7 +229,7 @@ PyramidSaveInputsView >> showModelNilError [ ] { #category : #'as yet unclassified' } -PyramidSaveInputsView >> showPackageIsNotValidError [ +PyramidSaveProjectConfigurationView >> showPackageIsNotValidError [ self labelErrorPackage displayColor: [ Color red ]; @@ -222,7 +237,7 @@ PyramidSaveInputsView >> showPackageIsNotValidError [ ] { #category : #'as yet unclassified' } -PyramidSaveInputsView >> showProjectNilError [ +PyramidSaveProjectConfigurationView >> showProjectNilError [ self labelErrorPackage displayColor: [Color red]; @@ -230,7 +245,7 @@ PyramidSaveInputsView >> showProjectNilError [ ] { #category : #'as yet unclassified' } -PyramidSaveInputsView >> updateFromModel [ +PyramidSaveProjectConfigurationView >> updateFromModel [ self inputPackage text: self model savingPackageName. self inputClass text: self model savingClassName. diff --git a/src/Pyramid/PyramidTests.class.st b/src/Pyramid/PyramidTests.class.st new file mode 100644 index 00000000..84b3e8e7 --- /dev/null +++ b/src/Pyramid/PyramidTests.class.st @@ -0,0 +1,72 @@ +Class { + #name : #PyramidTests, + #superclass : #Object, + #category : #'Pyramid-Examples' +} + +{ #category : #'pyramid-serialized-bloc' } +PyramidTests class >> testDesign [ + "This class has been generated using Pyramid. + + By: YannLEGOFF + 2023-07-27 14:25:54" + + + ^ '[ ]' +] + +{ #category : #'pyramid-serialized-bloc' } +PyramidTests >> testDesign [ + "This class has been generated using Pyramid. + + By: YannLEGOFF + 2023-07-27 14:48:05" + + + ^ '[ + BlElement { + #children : BlChildrenArray [ ], + #constraints : BlLayoutCommonConstraints { + #vertical : BlLayoutCommonConstraintsAxis { + #resizer : BlLayoutExactResizer { + #size : 50.0 + } + }, + #horizontal : BlLayoutCommonConstraintsAxis { + #resizer : @6 + }, + #position : Point [ 0.0, 0.0 ], + #margin : BlInsets { + #top : 0.0, + #left : 0.0, + #bottom : 0.0, + #right : 0.0 + }, + #padding : @9, + #minHeight : 0.0, + #minWidth : 0.0, + #maxHeight : Float [ #infinity ], + #maxWidth : @10, + #ignoredByLayout : false, + #accountTransformation : false + }, + #visuals : BlCustomVisuals { + #background : BlPaintBackground { + #paint : BlColorPaint { + #color : Color [ #red ] + } + } + }, + #userData : IdentityDictionary { + #elementId : BlElementNamedId { + #identifier : #red + } + }, + #layout : BlBasicLayout { }, + #eventDispatcher : BlElementEventDispatcher { + #owner : @2, + #handlers : [ ] + } + } +]' +] From 44802b99d3002d5b49f1d7de2cebb263e86ef0a6 Mon Sep 17 00:00:00 2001 From: YannLEGOFF Date: Thu, 27 Jul 2023 15:32:15 +0200 Subject: [PATCH 3/4] Add inform button + little icons --- ...aveProjectConfigurationController.class.st | 21 ++++++++++++------- ...ramidSaveProjectConfigurationView.class.st | 20 ++++++++++++++---- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/Pyramid/PyramidSaveProjectConfigurationController.class.st b/src/Pyramid/PyramidSaveProjectConfigurationController.class.st index 4702683d..3d2444ae 100644 --- a/src/Pyramid/PyramidSaveProjectConfigurationController.class.st +++ b/src/Pyramid/PyramidSaveProjectConfigurationController.class.st @@ -15,13 +15,18 @@ PyramidSaveProjectConfigurationController >> browseProjectClass [ | class | class := self class environment classNamed: self model savingClassName. - class ifNil: [ ^ self ]. - self model isClassSide ifTrue: [ Smalltalk tools browser - openOnClass: class class - selector: self model savingMethodName ] ifFalse: [ Smalltalk tools browser - openOnClass: class - selector: self model savingMethodName ] - + class ifNil: [ + UIManager default inform: 'Class do not exist yet. It will be created the first time you saved it.'. + ^ self ]. + self model isClassSide + ifTrue: [ + Smalltalk tools browser + openOnClass: class class + selector: self model savingMethodName ] + ifFalse: [ + Smalltalk tools browser + openOnClass: class + selector: self model savingMethodName ] ] { #category : #accessing } @@ -73,7 +78,7 @@ PyramidSaveProjectConfigurationController >> updateView [ | errors | errors := self verifier allErrors: self model. self view hideLabels. - self view buttonBrowse enabled: errors isEmpty. + self view buttonBrowse enabled: errors isEmpty. errors do: [ :each | each showOn: self view ] ] diff --git a/src/Pyramid/PyramidSaveProjectConfigurationView.class.st b/src/Pyramid/PyramidSaveProjectConfigurationView.class.st index e22e9ca8..8aa50fb3 100644 --- a/src/Pyramid/PyramidSaveProjectConfigurationView.class.st +++ b/src/Pyramid/PyramidSaveProjectConfigurationView.class.st @@ -60,16 +60,28 @@ PyramidSaveProjectConfigurationView >> defaultLayout [ displayBold: [ :c | true ]; yourself) expand: false; - add: self inputPackage expand: false; + add: (SpBoxLayout newHorizontal + spacing: 4; + add: (self iconNamed: #packageColored) expand: false; + add: self inputPackage) + expand: false; add: self labelErrorPackage expand: false; - add: self inputClass expand: false; + add: (SpBoxLayout newHorizontal + spacing: 4; + add: (self iconNamed: #class) expand: false; + add: self inputClass) + expand: false; add: self labelErrorClass expand: false; - add: self inputMethod expand: false; + add: (SpBoxLayout newHorizontal + spacing: 4; + add: (self iconNamed: #changeUpdate) expand: false; + add: self inputMethod) + expand: false; add: self labelErrorMethod expand: false; add: (SpBoxLayout newHorizontal add: self buttonClass; add: self buttonInstance; - add: self buttonBrowse width: 32; + add: self buttonBrowse width: 32; yourself) expand: false; yourself From 70fbb613469620bb4a78477adc36ad608349a4de Mon Sep 17 00:00:00 2001 From: YannLEGOFF Date: Thu, 27 Jul 2023 15:32:59 +0200 Subject: [PATCH 4/4] Remove useless example --- src/Pyramid/PyramidTests.class.st | 72 ------------------------------- 1 file changed, 72 deletions(-) delete mode 100644 src/Pyramid/PyramidTests.class.st diff --git a/src/Pyramid/PyramidTests.class.st b/src/Pyramid/PyramidTests.class.st deleted file mode 100644 index 84b3e8e7..00000000 --- a/src/Pyramid/PyramidTests.class.st +++ /dev/null @@ -1,72 +0,0 @@ -Class { - #name : #PyramidTests, - #superclass : #Object, - #category : #'Pyramid-Examples' -} - -{ #category : #'pyramid-serialized-bloc' } -PyramidTests class >> testDesign [ - "This class has been generated using Pyramid. - - By: YannLEGOFF - 2023-07-27 14:25:54" - - - ^ '[ ]' -] - -{ #category : #'pyramid-serialized-bloc' } -PyramidTests >> testDesign [ - "This class has been generated using Pyramid. - - By: YannLEGOFF - 2023-07-27 14:48:05" - - - ^ '[ - BlElement { - #children : BlChildrenArray [ ], - #constraints : BlLayoutCommonConstraints { - #vertical : BlLayoutCommonConstraintsAxis { - #resizer : BlLayoutExactResizer { - #size : 50.0 - } - }, - #horizontal : BlLayoutCommonConstraintsAxis { - #resizer : @6 - }, - #position : Point [ 0.0, 0.0 ], - #margin : BlInsets { - #top : 0.0, - #left : 0.0, - #bottom : 0.0, - #right : 0.0 - }, - #padding : @9, - #minHeight : 0.0, - #minWidth : 0.0, - #maxHeight : Float [ #infinity ], - #maxWidth : @10, - #ignoredByLayout : false, - #accountTransformation : false - }, - #visuals : BlCustomVisuals { - #background : BlPaintBackground { - #paint : BlColorPaint { - #color : Color [ #red ] - } - } - }, - #userData : IdentityDictionary { - #elementId : BlElementNamedId { - #identifier : #red - } - }, - #layout : BlBasicLayout { }, - #eventDispatcher : BlElementEventDispatcher { - #owner : @2, - #handlers : [ ] - } - } -]' -]