|  | {{header}} | 
|  | {{include field.fragment}} | 
|  | {{object 16 0}} << | 
|  | {{streamlen}} | 
|  | >> | 
|  | stream | 
|  | // In order to get icons from a document, you have to first add icons | 
|  | // to the document, and the only way to initially get an icon object, | 
|  | // it would seem, is from a button in a field. Then it can be added | 
|  | // any number of times, which does nothing but accumulate the list of | 
|  | // names of the added icons. Whee. | 
|  | try { | 
|  | var doc = this; | 
|  | app.alert("doc is " + doc); | 
|  | var icon = doc.getField("MyField.MyPushButton").buttonGetIcon(); | 
|  | app.alert("icon is " + icon); | 
|  | doc.addIcon("icon1", icon); | 
|  | doc.addIcon("icon2", icon); | 
|  | app.alert("icon list is now " + doc.icons); | 
|  | var icon1 = doc.icons[0]; | 
|  | var icon2 = doc.icons[1]; | 
|  | app.alert("they are named " + icon1.name + " and " + icon2.name); | 
|  | var icon1_again = doc.getIcon("icon1"); | 
|  | var icon2_again = doc.getIcon("icon2"); | 
|  | app.alert("they are also named " + icon1_again.name + | 
|  | " and " + icon2_again.name); | 
|  | app.alert("but they are made anew each time since " + | 
|  | (icon1 == icon1_again) + " is returned from comparison"); | 
|  | app.alert("Prototype comparison is " + (icon1.__proto__ == icon1_again.__proto__)); | 
|  |  | 
|  | // Icons are "dynamic" objects, so theoretically we can make them from | 
|  | // the JS side as well, although they will not be bound on the fxjs side. | 
|  | var dubious = new icon1.constructor(); | 
|  | app.alert("Made anew from JS side since comparison is " + (dubious == icon1)); | 
|  | app.alert("Prototype comparison is " + (dubious.__proto__ == icon1.__proto__)); | 
|  |  | 
|  | // Can't retrieve the name because no fxjs binding present. | 
|  | app.alert("Dubious name is " + dubious.name); | 
|  |  | 
|  | // No error setting the name because for an unbound object, control doesn't | 
|  | // get far enough to reach the readonly check in the property handler. | 
|  | dubious.name = "pebble"; | 
|  |  | 
|  | // The previous was a silent no-op under the covers. | 
|  | app.alert("name is unchanged from " + dubious.name); | 
|  | } catch (e) { | 
|  | app.alert("error: " + e); | 
|  | } | 
|  | try { | 
|  | icon1.name = "chowder"; | 
|  | } catch (e) { | 
|  | app.alert("As expected, trying to change the name gave: " + e); | 
|  | } | 
|  | endstream | 
|  | endobj | 
|  | {{xref}} | 
|  | {{trailer}} | 
|  | {{startxref}} | 
|  | %%EOF |