Discussion:
The Inbox: Morphic-kfr.1469.mcz
(too old to reply)
c***@source.squeak.org
0000-12-07 20:13:39 UTC
Permalink
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-kfr.1469.mcz

==================== Summary ====================

Name: Morphic-kfr.1469
Author: kfr
Time: 6 December 2018, 9:13:24.890102 pm
UUID: 3388ff60-ace3-4cf7-a1d4-f3fb7b7d9bce
Ancestors: Morphic-mt.1468

Don't hide the ProjectViewMorph and it's owner when loading

=============== Diff against Morphic-mt.1468 ===============

Item was changed:
----- Method: ComplexProgressIndicator>>withProgressDo: (in category 'as yet unclassified') -----
withProgressDo: aBlock

| safetyFactor totals trialRect delta targetOwner |

Smalltalk isMorphic ifFalse: [^aBlock value].
formerProject := Project current.
formerWorld := formerProject world.
formerProcess := Processor activeProcess.
targetMorph
ifNil: [targetMorph := ProgressTargetRequestNotification signal].
targetMorph ifNil: [
trialRect := Rectangle center: Sensor cursorPoint extent: ***@80.
delta := trialRect amountToTranslateWithin: formerWorld bounds.
trialRect := trialRect translateBy: delta.
translucentMorph := TranslucentProgessMorph new
opaqueBackgroundColor: Color white;
bounds: trialRect;
openInWorld: formerWorld.
] ifNotNil: [
targetOwner := targetMorph owner.
translucentMorph := TranslucentProgessMorph new
setProperty: #morphicLayerNumber toValue: targetMorph morphicLayerNumber - 0.1;
bounds: targetMorph boundsInWorld;
openInWorld: targetMorph world.
].
stageCompleted := 0.
safetyFactor := 1.1. "better to guess high than low"
translucentMorph setProperty: #progressStageNumber toValue: 1.
translucentMorph hide.
+ "targetOwner ifNotNil: [targetOwner hide]."
- targetOwner ifNotNil: [targetOwner hide].
totals := self loadingHistoryDataForKey: 'total'.
newRatio := 1.0.
estimate := totals size < 2 ifTrue: [
15000 "be a pessimist"
] ifFalse: [
(totals sum - totals max) / (totals size - 1 max: 1) * safetyFactor.
].
start := Time millisecondClockValue.
self forkProgressWatcher.

[
aBlock
on: ProgressInitiationException
do: [ :ex |
ex sendNotificationsTo: [ :min :max :curr |
"ignore this as it is inaccurate"
].
].
] on: ProgressNotification do: [ :note | | stageCompletedString |
translucentMorph show.
targetOwner ifNotNil: [targetOwner show].
note extraParam ifNotNil:[self addProgressDecoration: note extraParam].
stageCompletedString := (note messageText findTokens: ' ') first.
stageCompleted := (stageCompletedString copyUpTo: $:) asNumber.
cumulativeStageTime := Time millisecondClockValue - start max: 1.
prevData := self loadingHistoryDataForKey: stageCompletedString.
prevData isEmpty ifFalse: [
newRatio := (cumulativeStageTime / (prevData average max: 1)) asFloat.
].
self
loadingHistoryAt: stageCompletedString
add: cumulativeStageTime.
translucentMorph
setProperty: #progressStageNumber
toValue: stageCompleted + 1.
note resume.
].

stageCompleted := 999. "we may or may no
marcel.taeumel
2018-12-07 10:28:19 UTC
Permalink
Hi Karl,

it seems that the "ComplexProgressIndicator" is only used in the context of
project tooling. So, your fix makes sense. The name
"ComplexProgressIndicator" reads more general than it is (used) at the
moment. In that case, your fix could break more (unknown) things.
"targetOwner hide" might be meaningful in some ways.

I don't know...what about:
- adding your change
- renaming "ComplexProgressIndicator" to "ProjectProgressIndicator"
- adding a subclass "ComplexProgressIndicator" to "ProjectProgressIndicator"
-- but into the package "60Deprecated". (Same as we did with "ContextPart").

Any other Squeaker's out there using "ComplexProgressIndicator" for things?

(Note that MorphicUIManager >> #displayProgress:at:from:to:during: uses
"SystemProgressMorph" througout the image.)

Best,
Marcel
Post by c***@source.squeak.org
http://source.squeak.org/inbox/Morphic-kfr.1469.mcz
==================== Summary ====================
Name: Morphic-kfr.1469
Author: kfr
Time: 6 December 2018, 9:13:24.890102 pm
UUID: 3388ff60-ace3-4cf7-a1d4-f3fb7b7d9bce
Ancestors: Morphic-mt.1468
Don't hide the ProjectViewMorph and it's owner when loading
=============== Diff against Morphic-mt.1468 ===============
----- Method: ComplexProgressIndicator>>withProgressDo: (in category 'as
yet unclassified') -----
withProgressDo: aBlock
| safetyFactor totals trialRect delta targetOwner |
Smalltalk isMorphic ifFalse: [^aBlock value].
formerProject := Project current.
formerWorld := formerProject world.
formerProcess := Processor activeProcess.
targetMorph
ifNil: [targetMorph := ProgressTargetRequestNotification signal].
targetMorph ifNil: [
delta := trialRect amountToTranslateWithin: formerWorld bounds.
trialRect := trialRect translateBy: delta.
translucentMorph := TranslucentProgessMorph new
opaqueBackgroundColor: Color white;
bounds: trialRect;
openInWorld: formerWorld.
] ifNotNil: [
targetOwner := targetMorph owner.
translucentMorph := TranslucentProgessMorph new
setProperty: #morphicLayerNumber toValue: targetMorph
morphicLayerNumber - 0.1;
bounds: targetMorph boundsInWorld;
openInWorld: targetMorph world.
].
stageCompleted := 0.
safetyFactor := 1.1. "better to guess high than low"
translucentMorph setProperty: #progressStageNumber toValue: 1.
translucentMorph hide.
+ "targetOwner ifNotNil: [targetOwner hide]."
- targetOwner ifNotNil: [targetOwner hide].
totals := self loadingHistoryDataForKey: 'total'.
newRatio := 1.0.
estimate := totals size < 2 ifTrue: [
15000 "be a pessimist"
] ifFalse: [
(totals sum - totals max) / (totals size - 1 max: 1) * safetyFactor.
].
start := Time millisecondClockValue.
self forkProgressWatcher.
[
aBlock
on: ProgressInitiationException
do: [ :ex |
ex sendNotificationsTo: [ :min :max :curr |
"ignore this as it is inaccurate"
].
].
] on: ProgressNotification do: [ :note | | stageCompletedString |
translucentMorph show.
targetOwner ifNotNil: [targetOwner show].
note extraParam ifNotNil:[self addProgressDecoration: note
extraParam].
stageCompletedString := (note messageText findTokens: ' ') first.
stageCompleted := (stageCompletedString copyUpTo: $:) asNumber.
cumulativeStageTime := Time millisecondClockValue - start max: 1.
prevData := self loadingHistoryDataForKey: stageCompletedString.
prevData isEmpty ifFalse: [
newRatio := (cumulativeStageTime / (prevData average max: 1)) asFloat.
].
self
loadingHistoryAt: stageCompletedString
add: cumulativeStageTime.
translucentMorph
setProperty: #progressStageNumber
toValue: stageCompleted + 1.
note resume.
].
stageCompleted := 999. "we may or may not get here"
!
--
Sent from: http://forum.world.st/Squeak-Dev-f
K K Subbu
2018-12-08 16:34:29 UTC
Permalink
Post by c***@source.squeak.org
----- Method: ComplexProgressIndicator>>withProgressDo: (in category 'as yet unclassified') -----
withProgressDo: aBlock
| safetyFactor totals trialRect delta targetOwner |
targetOwner is an uninitialized local variable
Post by c***@source.squeak.org
....
targetMorph ifNil: [
...
It is not set in this part of the test. Should it be set to nil here?
Post by c***@source.squeak.org
] ifNotNil: [
targetOwner := targetMorph owner.
.....
].
....
+ "targetOwner ifNotNil: [targetOwner hide]."
but is used here.

Rega
karl ramberg
2018-12-08 18:38:11 UTC
Permalink
Yes, we could remove targetOwner from the method, but since I'm not sure
about how other callers use it I did not do it in this version.

Cheers,
Karl

Loading...