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