We deliberately keep icon information separate, as much as possible, from actor definitions. There are two main mechanisms. The first, used by Const, is to include the icon in the Vergil library. The file $PTII/ptolemy/actor/lib/genericsources.xml has this in it:
<entity name="Const" class="ptolemy.actor.lib.Const">
<doc>Create a constant sequence.</doc>
<property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
<property name="attributeName" value="value"/>
<property name="displayWidth" value="60"/>
</property>
</entity>
When you drag a Const in the from the library, it will come
with an instance of BoxedValueIcon inside it.
Monitor value also uses this mechanism.
The other commonly used mechanism is to define an XML file
named ConstIcon.xml, and to put it in the same directory as
Const.java. I think this second mechanism is completely
bypassed by Kepler, so most of the icons we create are never
seen in Kepler...
I personally wish we hadn't forked the icon rendering
in Kepler, but I guess it was partly a branding issue
and partly an aesthetic issue. But that's where we are...
Edward
On 8/14/12 11:25 AM, Sean Riddle wrote:
I'm still a little puzzled as to the nature of the bypass that Constant and MonitorValue apparently use. If anyone has any more details, I would love your input. Neither actor appears to explicitly create an "_icon" attribute, which would customize the icon. There are no obvious suspects in the Java classes, nor in the XML declarations for the classes. - Sean On Mon, Aug 13, 2012 at 4:39 PM, Matt Jones <[email protected] <mailto:[email protected]>> wrote: Kepler has a default icon that it uses if a valid mapping can't be found, so that is its fallback. There is already a config setting that allows you to let the ptolemy behavior through for particular actors. That was added to accomodate the dynamic actors like Monitor and Constant to allow them to show their values. So, you should be able to configure others to allow that too without any new code. Look at Monitor to see how it is configured for an example. Matt On Mon, Aug 13, 2012 at 2:19 PM, Sean Riddle <[email protected] <mailto:[email protected]>> wrote: Well, the problematic attributes are the ones that Kepler displays appreciably differently than Ptolemy, especially if it is to the detriment of the usability of the actor. If you meant how will I actually find them in the codebase, I'm not particularly sure; I was planning on just classifying them as the problems are noticed. If a mapping for an icon is not found in the configuration, what does the system do? Does it fall back to the Ptolemy system? If not, how would people feel about me adding a sentinel value that can be used in the configuration files to specify that the Ptolemy icon generation system should be used instead? - Sean On Mon, Aug 13, 2012 at 2:54 PM, Daniel Crawl <[email protected] <mailto:[email protected]>> wrote: Hi Sean, Icons are set in ComponentEntity.addSVGIconTo() based on the LSID, class, or semantic type. This uses the configuration files uiSVGIconMappingsByLSID.xml, uiSVGIconMappingsByClass.xml, and uiSVGIconMappingsBySemanticTyp__e.xml to determine the icon. How would you identify problematic attributes? Maybe only attributes that are Parameters should have their icons changed? --dan On 8/13/12 2:37 PM, Sean Riddle wrote: Hi all, I'm taking a look at bug 4903, which is Kepler displaying certain icons incorrectly. It appears that the problem comes down to Ptolemy using the normal, standard method of icon determination, and Kepler using a custom method that sometimes gives erroneous results - this is implemented in org.kepler.gui.KeplerXMLIcon in the gui module. Manually disabling the custom icon rendering class allows me to instantiate MonitorReceiverContents and get the expected icon as in Ptolemy. I'm a little unsure about how to implement a fix to this. Is there a way, as with the _alternateGetMoml attribute, to set the custom icon rendering on a per-class/LSID basis? If so, disabling it for problematic attributes would be a simple fix. On the other hand, if there's no way to customize the behavior for certain actors, I could still modify KeplerXMLIcon such that it performs like the XmlIcon Ptolemy class for any problematic attributes. I'm going to poke around assessing the viability of the latter approach, but if anyone knows this part of the code better, feel free to suggest something different. Thanks, Sean _________________________________________________ Kepler-dev mailing list [email protected] <mailto:[email protected]> http://lists.nceas.ucsb.edu/__kepler/mailman/listinfo/__kepler-dev <http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev> _______________________________________________ Kepler-dev mailing list [email protected] <mailto:[email protected]> http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev _______________________________________________ Kepler-dev mailing list [email protected] http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev
<<attachment: eal.vcf>>
_______________________________________________ Kepler-dev mailing list [email protected] http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev
