Le 22/6/16 à 14:35, Martin Dias a écrit :
On Wed, Jun 22, 2016 at 4:31 AM, stepharo <stepharo@free.fr <mailto: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: