In this case traits would pollute as much as global variables (or more). Take a look at TEasilyThemed ands its users⦠Esteban
On 05 Feb 2016, at 03:08, Ben Coman <btc@openInWorld.com> wrote:
On Fri, Feb 5, 2016 at 5:21 AM, stepharo <stepharo@free.fr> wrote:
Hi guys
I do not have the answer but I hate such patterns
Smalltalk ui icons iconNamed: #protocolExtension.
To me a tools using an icon should declare the icons as a ***local*** ressources.
+100. At a minimum this should probably be... self iconNamed: #protocolExtension.
maybe supplied by a trait. Initially this might be... TGlobalIcons>>iconNamed: symbol ^ Smalltalk ui icons iconNamed: symbol
but later be replaced by... TClassIcons>>iconNamed: symbol ^ IconContainer at: symbol
and the tools would know how to work with those traits, e.g. in GTExplorer, a tab displaying the icons for a class. But IIUC traits can't add variables, but did I hear any object can be annotated? So could TClassIcons store a dictionary holding the icons as an annotation on the class? But we would need some way to store such resources with the package, in Monticello or otherwise.
cheers -ben
We could imagine that there is a IconContainer and that as a tool I declare that I want an icons and I install it on myself.
| t | t := Tool new. ic := IconContainer for: #darkTheme. t askAninnstallIcon: ic iconFor: #button.
Then if the IconContainer changes, then it can notify its users to ask for a new version of the icon.
ic broadcastNewIcon: #button
This way
t does not have to use a plain bad global variable and does not care about the global namespace. t should only use local resources held in classVar for example.
Such Smalltalk ui icons is a dynamic global variable!
Stef
Le 4/2/16 17:00, Esteban Lorenzano a écrit :
Smalltalk ui icons iconNamed: #protocolExtension.
Still ugly, but Iâm not happy with the idea of a selector-per-icon⦠they will never be enough and well⦠is like a monolithic vision. Not that what we have is much better, but you can consider it an iteration :)
Esteban
On 04 Feb 2016, at 16:19, Aliaksei Syrel <alex.syrel@gmail.com> wrote:
Hi
For ages to access an icon we used:
Smalltalk ui icons protocolPrivateIcon
Smalltalk ui icons returns an instance of ThemeIcons. After refactoring (case https://pharo.fogbugz.com/f/cases/16651) all methods to access icon (for example protocolPrivateIcon) were removed.
ThemeIcons>>#doesNotUnderstand: aMessage converts message sent to iconNamed: aMessage selector which works.
BUT we have this all over the image: <Screen Shot 2016-02-04 at 16.13.03.png>
So, what is the best practice to access icons to use in application?
Cheers, Alex