Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 5 participants
- 144618 messages
Re: [Pharo-dev] error on latest pharo spur 32 windows vm
by Nicolai Hess
2016-03-21 8:26 GMT+01:00 Max Leske <maxleske(a)gmail.com>:
> Thatâs a problem with the latest VM. You need to use the stable VM until
> Esteban has compiled a fixed version.
>
>
Thanks, yes, stable works, I just wanted to let you know :-)
> Cheers,
> Max
>
>
> > On 21 Mar 2016, at 08:19, Nicolai Hess <nicolaihess(a)gmail.com> wrote:
> >
> > PharoVM-Spur32-win-latest.zip from 18.03.16:
> >
> > Opening a fresh image works, but using the menu shows an error
> > Improper store into indexable object
> >
> > [31mError: Improper store into indexable object
> > [0mBitmap(Object)>>error:
> > Bitmap(Object)>>errorImproperStore
> > Bitmap(Object)>>at:put:
> > [ :assoc |
> > | theta nextIndex nextColor nextWord distance step |
> > nextIndex := (assoc key * length) rounded.
> > nextColor := assoc value.
> > nextWord := nextColor pixelWordForDepth: 32.
> > distance := nextIndex - lastIndex.
> > distance = 0
> > ifTrue: [ distance := 1 ].
> > step := 1.0 / distance asFloat.
> > theta := 0.0.
> > lastIndex + 1 to: nextIndex do: [ :i |
> > theta := theta + step.
> > "The following is an open-coded version of:
> > color := nextColor alphaMixed: theta with: lastColor.
> > bits at: i put: (color scaledPixelValue32).
> > "
> > bits
> > at: i
> > put: (self scaledAlphaMix: theta of: lastWord with: nextWord) ].
> > lastIndex := nextIndex.
> > lastColor := nextColor.
> > lastWord := nextWord ] in GradientFillStyle>>computePixelRampOfSize: in
> Block: [ :assoc | ...
> > SortedCollection(OrderedCollection)>>do:
> > GradientFillStyle>>computePixelRampOfSize:
> > [ :key | (GradientFillStyle new colorRamp: key) computePixelRampOfSize:
> 512 ] in GradientFillStyle class>>initPixelRampCache in Block: [ :key |
> (GradientFillStyle new colorRamp: key) co...etc...
> > BlockClosure>>cull:
> > [ | value |
> > value := block cull: key.
> > "Sadly we have to check the presence of key again
> > in case of the block execution already added the entry"
> > keyIndex
> > associationAt: key
> > ifAbsent: [ association := self newAssociationKey: key value: value.
> > ^ self handleMiss: association ] ] in [ | association |
> > association := keyIndex
> > associationAt: key
> > ifAbsent: [ | value |
> > value := block cull: key.
> > "Sadly we have to check the presence of key again
> > in case of the block execution already added the entry"
> > keyIndex
> > associationAt: key
> > ifAbsent: [ association := self newAssociationKey: key
> value: value.
> > ^ self handleMiss: association ] ].
> > ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [
> | value |...
> > Dictionary>>associationAt:ifAbsent:
> > [ | association |
> > association := keyIndex
> > associationAt: key
> > ifAbsent: [ | value |
> > value := block cull: key.
> > "Sadly we have to check the presence of key again
> > in case of the block execution already added the entry"
> > keyIndex
> > associationAt: key
> > ifAbsent: [ association := self newAssociationKey: key
> value: value.
> > ^ self handleMiss: association ] ].
> > ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [
> | association |...
> > UndefinedObject>>ifNil:ifNotNil:
> > LRUCache(AbstractCache)>>critical:
> > LRUCache>>at:ifAbsentPut:
> > LRUCache(AbstractCache)>>at:
> > GradientFillStyle>>pixelRamp
> > BalloonEngine>>registerFill:
> > BalloonEngine>>registerFills:
> > BalloonEngine>>registerFill:and:
> > BalloonEngine>>drawRectangle:fill:borderWidth:borderColor:transform:
> > BalloonCanvas>>drawRectangle:color:borderWidth:borderColor:
> > BalloonCanvas>>fillRectangle:basicFillStyle:
> > FormCanvas>>balloonFillRectangle:fillStyle:
> > FormCanvas>>fillRectangle:basicFillStyle:
> > GradientFillStyle(FillStyle)>>fillRectangle:on:
> > FormCanvas(Canvas)>>fillRectangle:fillStyle:
> > FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle:
> > MenuMorph(Morph)>>drawOn:
> > MenuMorph>>drawOn:
> > FormCanvas(Canvas)>>draw:
> > [0m [31mError: Improper store into indexable object
> > [0mBitmap(Object)>>error:
> > Bitmap(Object)>>errorImproperStore
> > Bitmap(Object)>>at:put:
> > [ :assoc |
> > | theta nextIndex nextColor nextWord distance step |
> > nextIndex := (assoc key * length) rounded.
> > nextColor := assoc value.
> > nextWord := nextColor pixelWordForDepth: 32.
> > distance := nextIndex - lastIndex.
> > distance = 0
> > ifTrue: [ distance := 1 ].
> > step := 1.0 / distance asFloat.
> > theta := 0.0.
> > lastIndex + 1 to: nextIndex do: [ :i |
> > theta := theta + step.
> > "The following is an open-coded version of:
> > color := nextColor alphaMixed: theta with: lastColor.
> > bits at: i put: (color scaledPixelValue32).
> > "
> > bits
> > at: i
> > put: (self scaledAlphaMix: theta of: lastWord with: nextWord) ].
> > lastIndex := nextIndex.
> > lastColor := nextColor.
> > lastWord := nextWord ] in GradientFillStyle>>computePixelRampOfSize: in
> Block: [ :assoc | ...
> > SortedCollection(OrderedCollection)>>do:
> > GradientFillStyle>>computePixelRampOfSize:
> > [ :key | (GradientFillStyle new colorRamp: key) computePixelRampOfSize:
> 512 ] in GradientFillStyle class>>initPixelRampCache in Block: [ :key |
> (GradientFillStyle new colorRamp: key) co...etc...
> > BlockClosure>>cull:
> > [ | value |
> > value := block cull: key.
> > "Sadly we have to check the presence of key again
> > in case of the block execution already added the entry"
> > keyIndex
> > associationAt: key
> > ifAbsent: [ association := self newAssociationKey: key value: value.
> > ^ self handleMiss: association ] ] in [ | association |
> > association := keyIndex
> > associationAt: key
> > ifAbsent: [ | value |
> > value := block cull: key.
> > "Sadly we have to check the presence of key again
> > in case of the block execution already added the entry"
> > keyIndex
> > associationAt: key
> > ifAbsent: [ association := self newAssociationKey: key
> value: value.
> > ^ self handleMiss: association ] ].
> > ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [
> | value |...
> > Dictionary>>associationAt:ifAbsent:
> > [ | association |
> > association := keyIndex
> > associationAt: key
> > ifAbsent: [ | value |
> > value := block cull: key.
> > "Sadly we have to check the presence of key again
> > in case of the block execution already added the entry"
> > keyIndex
> > associationAt: key
> > ifAbsent: [ association := self newAssociationKey: key
> value: value.
> > ^ self handleMiss: association ] ].
> > ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [
> | association |...
> > UndefinedObject>>ifNil:ifNotNil:
> > LRUCache(AbstractCache)>>critical:
> > LRUCache>>at:ifAbsentPut:
> > LRUCache(AbstractCache)>>at:
> > GradientFillStyle>>pixelRamp
> > GradientFillStyle>>=
> > PluggableButtonMorph(Morph)>>fillStyle:
> > PluggableButtonMorph>>extent:
> >
> Pharo3Theme(UITheme)>>newButtonIn:for:getState:action:arguments:getEnabled:label:help:
> > Pharo3Theme(UITheme)>>newTaskbarButtonIn:for:
> > SpecWindow(SystemWindow)>>taskbarButtonFor:
> > TaskbarTask>>taskbarButtonFor:
> > [ :t |
> > | button |
> > button := t taskbarButtonFor: self.
> > button ifNotNil: [ self addMorphBack: button ] ] in
> TaskbarMorph>>updateTaskButtons in Block: [ :t | ...
> > OrderedCollection>>do:
> > TaskbarMorph>>updateTaskButtons
> > TaskbarMorph>>updateTasks
> > [ self updateBounds.
> > self updateTasks ] in TaskbarMorph>>ownerChanged in Block: [ self
> updateBounds....
> > BlockClosure>>on:do:
> > TaskbarMorph>>ownerChanged
> > [0m
>
>
>
March 21, 2016
Re: [Pharo-dev] error on latest pharo spur 32 windows vm
by Esteban Lorenzano
Hi,
yes, vmLatest is a bit unstable right now, Nicolas Cellier is working on optimising integer operations and that causes some noise in the middle.
It will be fixed soon but for the moment the âworkaroundâ is using stable vm⦠I suppose next couple of days it will be fixed.
Esteban
> On 21 Mar 2016, at 08:19, Nicolai Hess <nicolaihess(a)gmail.com> wrote:
>
> PharoVM-Spur32-win-latest.zip from 18.03.16:
>
> Opening a fresh image works, but using the menu shows an error
> Improper store into indexable object
>
> [31mError: Improper store into indexable object
> [0mBitmap(Object)>>error:
> Bitmap(Object)>>errorImproperStore
> Bitmap(Object)>>at:put:
> [ :assoc |
> | theta nextIndex nextColor nextWord distance step |
> nextIndex := (assoc key * length) rounded.
> nextColor := assoc value.
> nextWord := nextColor pixelWordForDepth: 32.
> distance := nextIndex - lastIndex.
> distance = 0
> ifTrue: [ distance := 1 ].
> step := 1.0 / distance asFloat.
> theta := 0.0.
> lastIndex + 1 to: nextIndex do: [ :i |
> theta := theta + step.
> "The following is an open-coded version of:
> color := nextColor alphaMixed: theta with: lastColor.
> bits at: i put: (color scaledPixelValue32).
> "
> bits
> at: i
> put: (self scaledAlphaMix: theta of: lastWord with: nextWord) ].
> lastIndex := nextIndex.
> lastColor := nextColor.
> lastWord := nextWord ] in GradientFillStyle>>computePixelRampOfSize: in Block: [ :assoc | ...
> SortedCollection(OrderedCollection)>>do:
> GradientFillStyle>>computePixelRampOfSize:
> [ :key | (GradientFillStyle new colorRamp: key) computePixelRampOfSize: 512 ] in GradientFillStyle class>>initPixelRampCache in Block: [ :key | (GradientFillStyle new colorRamp: key) co...etc...
> BlockClosure>>cull:
> [ | value |
> value := block cull: key.
> "Sadly we have to check the presence of key again
> in case of the block execution already added the entry"
> keyIndex
> associationAt: key
> ifAbsent: [ association := self newAssociationKey: key value: value.
> ^ self handleMiss: association ] ] in [ | association |
> association := keyIndex
> associationAt: key
> ifAbsent: [ | value |
> value := block cull: key.
> "Sadly we have to check the presence of key again
> in case of the block execution already added the entry"
> keyIndex
> associationAt: key
> ifAbsent: [ association := self newAssociationKey: key value: value.
> ^ self handleMiss: association ] ].
> ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ | value |...
> Dictionary>>associationAt:ifAbsent:
> [ | association |
> association := keyIndex
> associationAt: key
> ifAbsent: [ | value |
> value := block cull: key.
> "Sadly we have to check the presence of key again
> in case of the block execution already added the entry"
> keyIndex
> associationAt: key
> ifAbsent: [ association := self newAssociationKey: key value: value.
> ^ self handleMiss: association ] ].
> ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ | association |...
> UndefinedObject>>ifNil:ifNotNil:
> LRUCache(AbstractCache)>>critical:
> LRUCache>>at:ifAbsentPut:
> LRUCache(AbstractCache)>>at:
> GradientFillStyle>>pixelRamp
> BalloonEngine>>registerFill:
> BalloonEngine>>registerFills:
> BalloonEngine>>registerFill:and:
> BalloonEngine>>drawRectangle:fill:borderWidth:borderColor:transform:
> BalloonCanvas>>drawRectangle:color:borderWidth:borderColor:
> BalloonCanvas>>fillRectangle:basicFillStyle:
> FormCanvas>>balloonFillRectangle:fillStyle:
> FormCanvas>>fillRectangle:basicFillStyle:
> GradientFillStyle(FillStyle)>>fillRectangle:on:
> FormCanvas(Canvas)>>fillRectangle:fillStyle:
> FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle:
> MenuMorph(Morph)>>drawOn:
> MenuMorph>>drawOn:
> FormCanvas(Canvas)>>draw:
> [0m[31mError: Improper store into indexable object
> [0mBitmap(Object)>>error:
> Bitmap(Object)>>errorImproperStore
> Bitmap(Object)>>at:put:
> [ :assoc |
> | theta nextIndex nextColor nextWord distance step |
> nextIndex := (assoc key * length) rounded.
> nextColor := assoc value.
> nextWord := nextColor pixelWordForDepth: 32.
> distance := nextIndex - lastIndex.
> distance = 0
> ifTrue: [ distance := 1 ].
> step := 1.0 / distance asFloat.
> theta := 0.0.
> lastIndex + 1 to: nextIndex do: [ :i |
> theta := theta + step.
> "The following is an open-coded version of:
> color := nextColor alphaMixed: theta with: lastColor.
> bits at: i put: (color scaledPixelValue32).
> "
> bits
> at: i
> put: (self scaledAlphaMix: theta of: lastWord with: nextWord) ].
> lastIndex := nextIndex.
> lastColor := nextColor.
> lastWord := nextWord ] in GradientFillStyle>>computePixelRampOfSize: in Block: [ :assoc | ...
> SortedCollection(OrderedCollection)>>do:
> GradientFillStyle>>computePixelRampOfSize:
> [ :key | (GradientFillStyle new colorRamp: key) computePixelRampOfSize: 512 ] in GradientFillStyle class>>initPixelRampCache in Block: [ :key | (GradientFillStyle new colorRamp: key) co...etc...
> BlockClosure>>cull:
> [ | value |
> value := block cull: key.
> "Sadly we have to check the presence of key again
> in case of the block execution already added the entry"
> keyIndex
> associationAt: key
> ifAbsent: [ association := self newAssociationKey: key value: value.
> ^ self handleMiss: association ] ] in [ | association |
> association := keyIndex
> associationAt: key
> ifAbsent: [ | value |
> value := block cull: key.
> "Sadly we have to check the presence of key again
> in case of the block execution already added the entry"
> keyIndex
> associationAt: key
> ifAbsent: [ association := self newAssociationKey: key value: value.
> ^ self handleMiss: association ] ].
> ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ | value |...
> Dictionary>>associationAt:ifAbsent:
> [ | association |
> association := keyIndex
> associationAt: key
> ifAbsent: [ | value |
> value := block cull: key.
> "Sadly we have to check the presence of key again
> in case of the block execution already added the entry"
> keyIndex
> associationAt: key
> ifAbsent: [ association := self newAssociationKey: key value: value.
> ^ self handleMiss: association ] ].
> ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ | association |...
> UndefinedObject>>ifNil:ifNotNil:
> LRUCache(AbstractCache)>>critical:
> LRUCache>>at:ifAbsentPut:
> LRUCache(AbstractCache)>>at:
> GradientFillStyle>>pixelRamp
> GradientFillStyle>>=
> PluggableButtonMorph(Morph)>>fillStyle:
> PluggableButtonMorph>>extent:
> Pharo3Theme(UITheme)>>newButtonIn:for:getState:action:arguments:getEnabled:label:help:
> Pharo3Theme(UITheme)>>newTaskbarButtonIn:for:
> SpecWindow(SystemWindow)>>taskbarButtonFor:
> TaskbarTask>>taskbarButtonFor:
> [ :t |
> | button |
> button := t taskbarButtonFor: self.
> button ifNotNil: [ self addMorphBack: button ] ] in TaskbarMorph>>updateTaskButtons in Block: [ :t | ...
> OrderedCollection>>do:
> TaskbarMorph>>updateTaskButtons
> TaskbarMorph>>updateTasks
> [ self updateBounds.
> self updateTasks ] in TaskbarMorph>>ownerChanged in Block: [ self updateBounds....
> BlockClosure>>on:do:
> TaskbarMorph>>ownerChanged
> [0m
March 21, 2016
Re: [Pharo-dev] error on latest pharo spur 32 windows vm
by Max Leske
Thatâs a problem with the latest VM. You need to use the stable VM until Esteban has compiled a fixed version.
Cheers,
Max
> On 21 Mar 2016, at 08:19, Nicolai Hess <nicolaihess(a)gmail.com> wrote:
>
> PharoVM-Spur32-win-latest.zip from 18.03.16:
>
> Opening a fresh image works, but using the menu shows an error
> Improper store into indexable object
>
> [31mError: Improper store into indexable object
> [0mBitmap(Object)>>error:
> Bitmap(Object)>>errorImproperStore
> Bitmap(Object)>>at:put:
> [ :assoc |
> | theta nextIndex nextColor nextWord distance step |
> nextIndex := (assoc key * length) rounded.
> nextColor := assoc value.
> nextWord := nextColor pixelWordForDepth: 32.
> distance := nextIndex - lastIndex.
> distance = 0
> ifTrue: [ distance := 1 ].
> step := 1.0 / distance asFloat.
> theta := 0.0.
> lastIndex + 1 to: nextIndex do: [ :i |
> theta := theta + step.
> "The following is an open-coded version of:
> color := nextColor alphaMixed: theta with: lastColor.
> bits at: i put: (color scaledPixelValue32).
> "
> bits
> at: i
> put: (self scaledAlphaMix: theta of: lastWord with: nextWord) ].
> lastIndex := nextIndex.
> lastColor := nextColor.
> lastWord := nextWord ] in GradientFillStyle>>computePixelRampOfSize: in Block: [ :assoc | ...
> SortedCollection(OrderedCollection)>>do:
> GradientFillStyle>>computePixelRampOfSize:
> [ :key | (GradientFillStyle new colorRamp: key) computePixelRampOfSize: 512 ] in GradientFillStyle class>>initPixelRampCache in Block: [ :key | (GradientFillStyle new colorRamp: key) co...etc...
> BlockClosure>>cull:
> [ | value |
> value := block cull: key.
> "Sadly we have to check the presence of key again
> in case of the block execution already added the entry"
> keyIndex
> associationAt: key
> ifAbsent: [ association := self newAssociationKey: key value: value.
> ^ self handleMiss: association ] ] in [ | association |
> association := keyIndex
> associationAt: key
> ifAbsent: [ | value |
> value := block cull: key.
> "Sadly we have to check the presence of key again
> in case of the block execution already added the entry"
> keyIndex
> associationAt: key
> ifAbsent: [ association := self newAssociationKey: key value: value.
> ^ self handleMiss: association ] ].
> ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ | value |...
> Dictionary>>associationAt:ifAbsent:
> [ | association |
> association := keyIndex
> associationAt: key
> ifAbsent: [ | value |
> value := block cull: key.
> "Sadly we have to check the presence of key again
> in case of the block execution already added the entry"
> keyIndex
> associationAt: key
> ifAbsent: [ association := self newAssociationKey: key value: value.
> ^ self handleMiss: association ] ].
> ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ | association |...
> UndefinedObject>>ifNil:ifNotNil:
> LRUCache(AbstractCache)>>critical:
> LRUCache>>at:ifAbsentPut:
> LRUCache(AbstractCache)>>at:
> GradientFillStyle>>pixelRamp
> BalloonEngine>>registerFill:
> BalloonEngine>>registerFills:
> BalloonEngine>>registerFill:and:
> BalloonEngine>>drawRectangle:fill:borderWidth:borderColor:transform:
> BalloonCanvas>>drawRectangle:color:borderWidth:borderColor:
> BalloonCanvas>>fillRectangle:basicFillStyle:
> FormCanvas>>balloonFillRectangle:fillStyle:
> FormCanvas>>fillRectangle:basicFillStyle:
> GradientFillStyle(FillStyle)>>fillRectangle:on:
> FormCanvas(Canvas)>>fillRectangle:fillStyle:
> FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle:
> MenuMorph(Morph)>>drawOn:
> MenuMorph>>drawOn:
> FormCanvas(Canvas)>>draw:
> [0m[31mError: Improper store into indexable object
> [0mBitmap(Object)>>error:
> Bitmap(Object)>>errorImproperStore
> Bitmap(Object)>>at:put:
> [ :assoc |
> | theta nextIndex nextColor nextWord distance step |
> nextIndex := (assoc key * length) rounded.
> nextColor := assoc value.
> nextWord := nextColor pixelWordForDepth: 32.
> distance := nextIndex - lastIndex.
> distance = 0
> ifTrue: [ distance := 1 ].
> step := 1.0 / distance asFloat.
> theta := 0.0.
> lastIndex + 1 to: nextIndex do: [ :i |
> theta := theta + step.
> "The following is an open-coded version of:
> color := nextColor alphaMixed: theta with: lastColor.
> bits at: i put: (color scaledPixelValue32).
> "
> bits
> at: i
> put: (self scaledAlphaMix: theta of: lastWord with: nextWord) ].
> lastIndex := nextIndex.
> lastColor := nextColor.
> lastWord := nextWord ] in GradientFillStyle>>computePixelRampOfSize: in Block: [ :assoc | ...
> SortedCollection(OrderedCollection)>>do:
> GradientFillStyle>>computePixelRampOfSize:
> [ :key | (GradientFillStyle new colorRamp: key) computePixelRampOfSize: 512 ] in GradientFillStyle class>>initPixelRampCache in Block: [ :key | (GradientFillStyle new colorRamp: key) co...etc...
> BlockClosure>>cull:
> [ | value |
> value := block cull: key.
> "Sadly we have to check the presence of key again
> in case of the block execution already added the entry"
> keyIndex
> associationAt: key
> ifAbsent: [ association := self newAssociationKey: key value: value.
> ^ self handleMiss: association ] ] in [ | association |
> association := keyIndex
> associationAt: key
> ifAbsent: [ | value |
> value := block cull: key.
> "Sadly we have to check the presence of key again
> in case of the block execution already added the entry"
> keyIndex
> associationAt: key
> ifAbsent: [ association := self newAssociationKey: key value: value.
> ^ self handleMiss: association ] ].
> ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ | value |...
> Dictionary>>associationAt:ifAbsent:
> [ | association |
> association := keyIndex
> associationAt: key
> ifAbsent: [ | value |
> value := block cull: key.
> "Sadly we have to check the presence of key again
> in case of the block execution already added the entry"
> keyIndex
> associationAt: key
> ifAbsent: [ association := self newAssociationKey: key value: value.
> ^ self handleMiss: association ] ].
> ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ | association |...
> UndefinedObject>>ifNil:ifNotNil:
> LRUCache(AbstractCache)>>critical:
> LRUCache>>at:ifAbsentPut:
> LRUCache(AbstractCache)>>at:
> GradientFillStyle>>pixelRamp
> GradientFillStyle>>=
> PluggableButtonMorph(Morph)>>fillStyle:
> PluggableButtonMorph>>extent:
> Pharo3Theme(UITheme)>>newButtonIn:for:getState:action:arguments:getEnabled:label:help:
> Pharo3Theme(UITheme)>>newTaskbarButtonIn:for:
> SpecWindow(SystemWindow)>>taskbarButtonFor:
> TaskbarTask>>taskbarButtonFor:
> [ :t |
> | button |
> button := t taskbarButtonFor: self.
> button ifNotNil: [ self addMorphBack: button ] ] in TaskbarMorph>>updateTaskButtons in Block: [ :t | ...
> OrderedCollection>>do:
> TaskbarMorph>>updateTaskButtons
> TaskbarMorph>>updateTasks
> [ self updateBounds.
> self updateTasks ] in TaskbarMorph>>ownerChanged in Block: [ self updateBounds....
> BlockClosure>>on:do:
> TaskbarMorph>>ownerChanged
> [0m
March 21, 2016
error on latest pharo spur 32 windows vm
by Nicolai Hess
PharoVM-Spur32-win-latest.zip from 18.03.16:
Opening a fresh image works, but using the menu shows an error
Improper store into indexable object
[31mError: Improper store into indexable object
[0mBitmap(Object)>>error:
Bitmap(Object)>>errorImproperStore
Bitmap(Object)>>at:put:
[ :assoc |
| theta nextIndex nextColor nextWord distance step |
nextIndex := (assoc key * length) rounded.
nextColor := assoc value.
nextWord := nextColor pixelWordForDepth: 32.
distance := nextIndex - lastIndex.
distance = 0
ifTrue: [ distance := 1 ].
step := 1.0 / distance asFloat.
theta := 0.0.
lastIndex + 1 to: nextIndex do: [ :i |
theta := theta + step.
"The following is an open-coded version of:
color := nextColor alphaMixed: theta with: lastColor.
bits at: i put: (color scaledPixelValue32).
"
bits
at: i
put: (self scaledAlphaMix: theta of: lastWord with: nextWord) ].
lastIndex := nextIndex.
lastColor := nextColor.
lastWord := nextWord ] in GradientFillStyle>>computePixelRampOfSize: in
Block: [ :assoc | ...
SortedCollection(OrderedCollection)>>do:
GradientFillStyle>>computePixelRampOfSize:
[ :key | (GradientFillStyle new colorRamp: key) computePixelRampOfSize: 512
] in GradientFillStyle class>>initPixelRampCache in Block: [ :key |
(GradientFillStyle new colorRamp: key) co...etc...
BlockClosure>>cull:
[ | value |
value := block cull: key.
"Sadly we have to check the presence of key again
in case of the block execution already added the entry"
keyIndex
associationAt: key
ifAbsent: [ association := self newAssociationKey: key value: value.
^ self handleMiss: association ] ] in [ | association |
association := keyIndex
associationAt: key
ifAbsent: [ | value |
value := block cull: key.
"Sadly we have to check the presence of key again
in case of the block execution already added the entry"
keyIndex
associationAt: key
ifAbsent: [ association := self newAssociationKey: key value:
value.
^ self handleMiss: association ] ].
^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ |
value |...
Dictionary>>associationAt:ifAbsent:
[ | association |
association := keyIndex
associationAt: key
ifAbsent: [ | value |
value := block cull: key.
"Sadly we have to check the presence of key again
in case of the block execution already added the entry"
keyIndex
associationAt: key
ifAbsent: [ association := self newAssociationKey: key value:
value.
^ self handleMiss: association ] ].
^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ |
association |...
UndefinedObject>>ifNil:ifNotNil:
LRUCache(AbstractCache)>>critical:
LRUCache>>at:ifAbsentPut:
LRUCache(AbstractCache)>>at:
GradientFillStyle>>pixelRamp
BalloonEngine>>registerFill:
BalloonEngine>>registerFills:
BalloonEngine>>registerFill:and:
BalloonEngine>>drawRectangle:fill:borderWidth:borderColor:transform:
BalloonCanvas>>drawRectangle:color:borderWidth:borderColor:
BalloonCanvas>>fillRectangle:basicFillStyle:
FormCanvas>>balloonFillRectangle:fillStyle:
FormCanvas>>fillRectangle:basicFillStyle:
GradientFillStyle(FillStyle)>>fillRectangle:on:
FormCanvas(Canvas)>>fillRectangle:fillStyle:
FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle:
MenuMorph(Morph)>>drawOn:
MenuMorph>>drawOn:
FormCanvas(Canvas)>>draw:
[0m[31mError: Improper store into indexable object
[0mBitmap(Object)>>error:
Bitmap(Object)>>errorImproperStore
Bitmap(Object)>>at:put:
[ :assoc |
| theta nextIndex nextColor nextWord distance step |
nextIndex := (assoc key * length) rounded.
nextColor := assoc value.
nextWord := nextColor pixelWordForDepth: 32.
distance := nextIndex - lastIndex.
distance = 0
ifTrue: [ distance := 1 ].
step := 1.0 / distance asFloat.
theta := 0.0.
lastIndex + 1 to: nextIndex do: [ :i |
theta := theta + step.
"The following is an open-coded version of:
color := nextColor alphaMixed: theta with: lastColor.
bits at: i put: (color scaledPixelValue32).
"
bits
at: i
put: (self scaledAlphaMix: theta of: lastWord with: nextWord) ].
lastIndex := nextIndex.
lastColor := nextColor.
lastWord := nextWord ] in GradientFillStyle>>computePixelRampOfSize: in
Block: [ :assoc | ...
SortedCollection(OrderedCollection)>>do:
GradientFillStyle>>computePixelRampOfSize:
[ :key | (GradientFillStyle new colorRamp: key) computePixelRampOfSize: 512
] in GradientFillStyle class>>initPixelRampCache in Block: [ :key |
(GradientFillStyle new colorRamp: key) co...etc...
BlockClosure>>cull:
[ | value |
value := block cull: key.
"Sadly we have to check the presence of key again
in case of the block execution already added the entry"
keyIndex
associationAt: key
ifAbsent: [ association := self newAssociationKey: key value: value.
^ self handleMiss: association ] ] in [ | association |
association := keyIndex
associationAt: key
ifAbsent: [ | value |
value := block cull: key.
"Sadly we have to check the presence of key again
in case of the block execution already added the entry"
keyIndex
associationAt: key
ifAbsent: [ association := self newAssociationKey: key value:
value.
^ self handleMiss: association ] ].
^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ |
value |...
Dictionary>>associationAt:ifAbsent:
[ | association |
association := keyIndex
associationAt: key
ifAbsent: [ | value |
value := block cull: key.
"Sadly we have to check the presence of key again
in case of the block execution already added the entry"
keyIndex
associationAt: key
ifAbsent: [ association := self newAssociationKey: key value:
value.
^ self handleMiss: association ] ].
^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ |
association |...
UndefinedObject>>ifNil:ifNotNil:
LRUCache(AbstractCache)>>critical:
LRUCache>>at:ifAbsentPut:
LRUCache(AbstractCache)>>at:
GradientFillStyle>>pixelRamp
GradientFillStyle>>=
PluggableButtonMorph(Morph)>>fillStyle:
PluggableButtonMorph>>extent:
Pharo3Theme(UITheme)>>newButtonIn:for:getState:action:arguments:getEnabled:label:help:
Pharo3Theme(UITheme)>>newTaskbarButtonIn:for:
SpecWindow(SystemWindow)>>taskbarButtonFor:
TaskbarTask>>taskbarButtonFor:
[ :t |
| button |
button := t taskbarButtonFor: self.
button ifNotNil: [ self addMorphBack: button ] ] in
TaskbarMorph>>updateTaskButtons in Block: [ :t | ...
OrderedCollection>>do:
TaskbarMorph>>updateTaskButtons
TaskbarMorph>>updateTasks
[ self updateBounds.
self updateTasks ] in TaskbarMorph>>ownerChanged in Block: [ self
updateBounds....
BlockClosure>>on:do:
TaskbarMorph>>ownerChanged
[0m
March 21, 2016
Re: [Pharo-dev] 3 new Pharo videos
by Alexandre Bergel
Hubcap is great!!
It should definitely be part of Pharo. Can it show the project description?
Cheers,
Alexandre
> On Mar 18, 2016, at 4:56 PM, Torsten Bergmann <astares(a)gmx.de> wrote:
>
> I provided 3 new videos about my tools/goodies on YouTube:
>
> Pharo OS-Linux-Ubuntu
> https://www.youtube.com/watch?v=1X42GFbW4hg
>
> Pharo Hubcap
> https://www.youtube.com/watch?v=2Kwr8bkSI7M
>
> Pharo Pomodoro
> https://www.youtube.com/watch?v=w00IBi9iM2Y
>
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
March 20, 2016
Release of Pharo5?
by Alexandre Bergel
Hi!
Pharo 5 will be released in April right? Do we know exactly when? I would like to sync the release of Agile Visualization with Pharo 5.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
March 20, 2016
Re: [Pharo-dev] Receiving notification of theme changes or changes to syntax highlighting properties
by Henrik Nergaard
themeChanged is the hook method which is called from World and then by default recursively traverses the tree.
If you have anything in a morph which is theming dependent, then this method should be implemented.
Currently it is the morphs job to update its other parts when the theme changed (non morph objects which is theming dependent), using an announcement for this would mean that one has to subscribe to a global which brings its own set of problems.
ConfigurationOfRubric 2.12 includes support for themeChanged which will reapply the syntaxHighlighting as well.
Since each textStyler object has a reference to its view one could use that to update them when the styleTable is changed:
SHTextStylerST80 >>#StyleTableChanged
self allSubInstancesDo: [ :i |
i view themeChanged
]
Best regards,
Henrik
-----Original Message-----
From: Pharo-dev [mailto:pharo-dev-bounces@lists.pharo.org] On Behalf Of monty
Sent: Sunday, March 20, 2016 6:53 AM
To: pharo-dev(a)lists.pharo.org
Subject: Re: [Pharo-dev] Receiving notification of theme changes or changes to syntax highlighting properties
Yeah, I saw themeChanged, but what about non-morphs? How do they get notified? There should be some announcement that you can subscribe to. Should I add one?
> Sent: Saturday, March 19, 2016 at 10:20 PM
> From: "Cyril Ferlicot Delbecque" <cyril.ferlicot(a)gmail.com>
> To: pharo-dev(a)lists.pharo.org
> Subject: Re: [Pharo-dev] Receiving notification of theme changes or
> changes to syntax highlighting properties
>
>
>
> On 20/03/2016 03:12, monty wrote:
> > How can you receive notification of a theme change (like going to or from the Dark theme), or even better, notification of a change to some property of syntax highlighting (like the styling used for string literals)?
> >
>
> Hi,
>
> For the theme change part, morphs should implement a #themeChanged
> method that should update the colours and send the method to his submorphs.
>
>
> > And what is the preferred way of querying the current syntax highlighting properties? I am using "SHTextStylerST80 new attributesFor: aProperty" now (SHPreferences doesn't provide enough), but there is talk of Shout being removed.
> >
>
> --
> Cyril Ferlicot
>
> http://www.synectique.eu
>
> 165 Avenue Bretagne
> Lille 59000 France
>
>
March 20, 2016
Re: [Pharo-dev] Receiving notification of theme changes or changes to syntax highlighting properties
by monty
Yeah, I saw themeChanged, but what about non-morphs? How do they get notified? There should be some announcement that you can subscribe to. Should I add one?
> Sent: Saturday, March 19, 2016 at 10:20 PM
> From: "Cyril Ferlicot Delbecque" <cyril.ferlicot(a)gmail.com>
> To: pharo-dev(a)lists.pharo.org
> Subject: Re: [Pharo-dev] Receiving notification of theme changes or changes to syntax highlighting properties
>
>
>
> On 20/03/2016 03:12, monty wrote:
> > How can you receive notification of a theme change (like going to or from the Dark theme), or even better, notification of a change to some property of syntax highlighting (like the styling used for string literals)?
> >
>
> Hi,
>
> For the theme change part, morphs should implement a #themeChanged
> method that should update the colours and send the method to his submorphs.
>
>
> > And what is the preferred way of querying the current syntax highlighting properties? I am using "SHTextStylerST80 new attributesFor: aProperty" now (SHPreferences doesn't provide enough), but there is talk of Shout being removed.
> >
>
> --
> Cyril Ferlicot
>
> http://www.synectique.eu
>
> 165 Avenue Bretagne
> Lille 59000 France
>
>
March 20, 2016
Re: [Pharo-dev] Receiving notification of theme changes or changes to syntax highlighting properties
by Cyril Ferlicot Delbecque
On 20/03/2016 03:12, monty wrote:
> How can you receive notification of a theme change (like going to or from the Dark theme), or even better, notification of a change to some property of syntax highlighting (like the styling used for string literals)?
>
Hi,
For the theme change part, morphs should implement a #themeChanged
method that should update the colours and send the method to his submorphs.
> And what is the preferred way of querying the current syntax highlighting properties? I am using "SHTextStylerST80 new attributesFor: aProperty" now (SHPreferences doesn't provide enough), but there is talk of Shout being removed.
>
--
Cyril Ferlicot
http://www.synectique.eu
165 Avenue Bretagne
Lille 59000 France
March 20, 2016
Receiving notification of theme changes or changes to syntax highlighting properties
by monty
How can you receive notification of a theme change (like going to or from the Dark theme), or even better, notification of a change to some property of syntax highlighting (like the styling used for string literals)?
And what is the preferred way of querying the current syntax highlighting properties? I am using "SHTextStylerST80 new attributesFor: aProperty" now (SHPreferences doesn't provide enough), but there is talk of Shout being removed.
March 20, 2016