logo       

Fwd: Omnibrowser, italic Traits' method names: msg#00101

lang.smalltalk.squeak.beginners

Subject: Fwd: Omnibrowser, italic Traits' method names

Hello Robert,

I asked David Röthlisberger and he did it in same way you wrote.

Best regards,
Juraj


Begin forwarded message:

From: David Röthlisberger <roethlis@xxxxxxxxxxxx>
Date: 24. června 2007 13:36:22 GMT+02:00
To: "'Juraj Kubelka'" <Juraj.Kubelka@xxxxxxxxx>
Subject: AW: [Newbies] Omnibrowser, italic Traits' method names

Hi Juraj,

I remember you wrote about changes which
gives icons to column items. Is it also possible to set a
color in your implementation? I may help you to finish,
because I need to extend visualization support (for example
green Trait names) in OB.

Yes, it is possible to set colors for the items.
I use a subclass of LazyListMorph and override #colorForRow: to answer the
color of the column item. And then i also introduced a new
OBPluggableListMorph class and let it answer the new OBLazyListMorph class
in #listMorphClass, as Robert Krahn explained.

OBLazyListMorph >> #colorForRow: reads like this:

colorForRow: row
| item |
^(selectedRow notNil and: [ row = selectedRow])
ifTrue: [ Color red ]
ifFalse: [ item := self getListItem: row. item isText
ifTrue: [item colorAt: 1] ifFalse: [self color] ].

Now you can use the TextColor>>green attribute when building the strings for
the column items.

This seems to be the easiest solution.
With these two new classes I could also add support for icons.

Cheers,
David


Begin forwarded message:

From: Robert Krahn <robert.krahn@xxxxxxxxxxxxxxxxxxxxxxxxxx>
Date: 24. června 2007 2:51:33 GMT+02:00
To: "A friendly place to get answers to even the most basic
questions
about Squeak." <beginners@xxxxxxxxxxxxxxxxxxxxxxxxxx>
Subject: Re: [Newbies] Omnibrowser, italic Traits' method names
Reply-To: "A friendly place to get answers to even the most basic
questions about Squeak." <beginners@xxxxxxxxxxxxxxxxxxxxxxxxxx>

Sorry, I don't want to spam you but I thought about a possible
solution for that issue.

The first thing one could do is to subclass LazyListMorph to have a
Morph which permits the displayStrings to keep their color.
Then there
is the need for a new PluggableListMorph which overrides
PluggableListMorph >>listMorphClass to get this subclass of
LazyListMorph. The next thing is to construct another
OBMorphBuilder
which changes #listMorphForColumn:.

Then a new builder exists which delivers browsers with the wanted
property. I don't know if there are other classes which have to be
changed (OBPane?) or if there is an easier solution. Please give me
your opinion.

Robert

Am 24.06.2007 um 02:18 schrieb Robert Krahn:


Am 24.06.2007 um 00:44 schrieb Juraj Kubelka:

It is possible to use TextEmphasis>>bold now but TextColor>>green
attribute doesn't work.

Yes, thats why the standard colors in LazyListMorph overwrite your
chosen color. LazyListMorph >>display: atRow:on: looks like that:

display: item atRow: row on: canvas
"display the given item at row row"
| drawBounds |
drawBounds := self drawBoundsForRow: row.
drawBounds := drawBounds intersect: self bounds.
item isText
ifTrue: [ canvas drawString: item in:
drawBounds font: (font
emphasized: (item emphasisAt: 1)) color: (self colorForRow: row) ]
ifFalse: [ canvas drawString: item in:
drawBounds font: font
color: (self colorForRow: row) ].

The item is your displayString but the color is changed to
LazyListMorph >>colorForRow: which turns out to be the follow:

colorForRow: row
^(selectedRow notNil and: [ row = selectedRow])
ifTrue: [ Color red ]
ifFalse: [ self color ].

It seems that those things are really in the guts of the
system and
because of that they cannot be parameterized easily (yet).
_______________________________________________
Beginners mailing list
Beginners@xxxxxxxxxxxxxxxxxxxxxxxxxx
http://lists.squeakfoundation.org/mailman/listinfo/beginners

_______________________________________________
Beginners mailing list
Beginners@xxxxxxxxxxxxxxxxxxxxxxxxxx
http://lists.squeakfoundation.org/mailman/listinfo/beginners







<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise