Le 22/6/16 �� 14:35, Martin Dias a ��crit��:


On Wed, Jun 22, 2016 at 4:31 AM, stepharo <stepharo@free.fr> wrote:


Le 22/6/16 �� 00:23, Holger Freyther a ��crit :
Hi,

would fogbugz be the better place for reports like this? It looks like the introduction of Epicea has broken my use of headless images?

Should >>#initialize use "Smalltalk ui theme" instead of "UIManager default theme"?

Both loosk terrible. but Smalltalk ui theme is really a bad idea.
We should really remove this cancer XXX ff�� zz


I used it in a morph-builder visitor, that receives an epicea model object and answers a morph. I only access the textColor, but I can avoid it.��
��
If a tool need a theme, then it should have an instance variable theme and this instance var should be well initialized.
This pattern sucks!

So, if a morph builder wants to know the textColor and other colors of the current theme, how to access them?

Normally the theme should be know by the builder.
No global variable and the tool should register to the Theme and when the theme changed they should change too.
Right now all the Smalltalk ui.... is a global variable.

Stef

Martin

��

Stef



NonInteractiveUIManager>>theme
NonInteractiveUIManager(Object)>>doesNotUnderstand: #theme
EpDisplayMorphVisitor>>initialize
EpDisplayMorphVisitor class(Behavior)>>new
EpEntryItem>>displayWidget
[ :item | item displayWidget ] in EpLogBrowser>>initializeItemsModel in Block: [ :item | item displayWidget ]
BlockClosure>>cull:
BlockClosure>>cull:cull:
TreeModel>>wrapItem:
[ :node | self wrapItem: node content ] in TreeModel>>initialize in Block: [ :node | self wrapItem: node content ]
[ :node :cont | self rowMorphGetSelector value: node ] in SpecTreeColumn(MorphTreeColumn)>>rowMorphGetterBlock in Block: [ :node :cont | self rowMorphGetSelector value: no...etc...
SpecTreeColumn>>rowMorphFor:
[ :col |
| v |
v := col rowMorphFor: complexContents.
controls add: v.
col -> v ] in MorphTreeNodeMorph>>buildRowMorph in Block: [ :col | ...
OrderedCollection>>collect:
MorphTreeNodeMorph>>buildRowMorph
MorphTreeNodeMorph>>initRow
MorphTreeNodeMorph>>initWithContents:prior:forList:indentLevel:
[ :item :idx |
priorMorph := self indentingItemClass new
�� �� �� �� initWithContents: item
�� �� �� �� prior: priorMorph
�� �� �� �� forList: self
�� �� �� �� indentLevel: newIndent.
firstAddition ifNil: [ firstAddition := priorMorph ].
morphList add: priorMorph.
"Was this row expanded ? if true -> expand it
�� �� �� �� �� �� �� �� �� �� �� �� again "
((item hasEquivalentIn: expandedItems) or: [ priorMorph isExpanded ])
�� �� �� �� ifTrue: [ priorMorph isExpanded: true.
�� �� �� �� �� �� �� �� priorMorph
�� �� �� �� �� �� �� �� �� �� �� �� addChildrenForList: self
�� �� �� �� �� �� �� �� �� �� �� �� addingTo: morphList
�� �� �� �� �� �� �� �� �� �� �� �� withExpandedItems: expandedItems ] ] in MorphTreeMorph>>addMorphsTo:from:withExpandedItems:atLevel: in Block: [ :item :idx | ...
OrderedCollection(SequenceableCollection)>>withIndexDo:
OrderedCollection(SequenceableCollection)>>doWithIndex:
MorphTreeMorph>>addMorphsTo:from:withExpandedItems:atLevel:
MorphTreeMorph>>addSubmorphsFromNodeList:previouslyExpanded:
MorphTreeMorph>>addSubmorphsFromNodeList
MorphTreeMorph>>buildContents
MorphicTreeAdapter>>buildWidget
MorphicTreeAdapter(AbstractAdapter)>>adapt:
SpecInterpreter>>actionToPerformWithSelector:arguments:
SpecInterpreter>>performNextSelectorAndIncrementIndex
SpecInterpreter>>interpretASpec:selector:
SpecInterpreter>>interpretASpec:model:selector:
SpecInterpreter class>>private_interpretASpec:model:selector: