NonInteractiveUIManager vs. Epicea

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

NonInteractiveUIManager vs. Epicea

Holger Freyther
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"?


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:
Reply | Threaded
Open this post in threaded view
|

Re: NonInteractiveUIManager vs. Epicea

EstebanLM
I spotted the same problem today… yes, fogbugz is better place :)

Esteban

> On 22 Jun 2016, at 00:23, Holger Freyther <[hidden email]> wrote:
>
> 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"?
>
>
> 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:


Reply | Threaded
Open this post in threaded view
|

Re: NonInteractiveUIManager vs. Epicea

Uko2
yay, thanks. I wanted to report this but forgot

> On 22 Jun 2016, at 00:27, Esteban Lorenzano <[hidden email]> wrote:
>
> I spotted the same problem today… yes, fogbugz is better place :)
>
> Esteban
>
>> On 22 Jun 2016, at 00:23, Holger Freyther <[hidden email]> wrote:
>>
>> 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"?
>>
>>
>> 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:
>
>


Reply | Threaded
Open this post in threaded view
|

Re: NonInteractiveUIManager vs. Epicea

Ben Coman
In reply to this post by Holger Freyther
On Wed, Jun 22, 2016 at 6:23 AM, Holger Freyther <[hidden email]> wrote:
> Hi,
>
> would fogbugz be the better place for reports like this?

Yes. But it might get less immediate attention than you need.  If
something breaks your workflow, its *also* good to raise attention on
the mail list, and follow up with a link to the Fogbugz issue if you
didn't create one already.

cheers -ben

> 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"?
>
>
> 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:

Reply | Threaded
Open this post in threaded view
|

Re: NonInteractiveUIManager vs. Epicea

tinchodias
Thanks for reporting... I created the case and propose a fast fix:

Despite my "quick fix" avoids the DNU, we should discuss what should happen when there are lost changes in non.interactive mode. I think EpLostChangesDetector should only perform its detection.

What'd be the right test to do? "Smalltalk isInteractive"?

Martin

On Tue, Jun 21, 2016 at 8:50 PM, Ben Coman <[hidden email]> wrote:
On Wed, Jun 22, 2016 at 6:23 AM, Holger Freyther <[hidden email]> wrote:
> Hi,
>
> would fogbugz be the better place for reports like this?

Yes. But it might get less immediate attention than you need.  If
something breaks your workflow, its *also* good to raise attention on
the mail list, and follow up with a link to the Fogbugz issue if you
didn't create one already.

cheers -ben

> 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"?
>
>
> 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:


Reply | Threaded
Open this post in threaded view
|

Re: NonInteractiveUIManager vs. Epicea

stepharo
In reply to this post by Holger Freyther


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

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!

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:
>


Reply | Threaded
Open this post in threaded view
|

Re: NonInteractiveUIManager vs. Epicea

tinchodias


On Wed, Jun 22, 2016 at 4:31 AM, stepharo <[hidden email]> 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?

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:




Reply | Threaded
Open this post in threaded view
|

Re: NonInteractiveUIManager vs. Epicea

stepharo



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


On Wed, Jun 22, 2016 at 4:31 AM, stepharo <[hidden email]> 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: