Search code examples
adobe-indesignextendscript

How can I programmatically close the story editor in InDesign using ExtendScript?


I use a script which opens the story editor like this:

app.menuActions.itemByID(119793).invoke();

How can I close it programmatically? How can I detect whether it's opened or closed?


Solution

  • A story editor window may be closed with its close method.

    Here is a function which closes the story editor window if it's open. It tests for the presence of a zoom property on the window to determine whether the window is a story editor or not (Thanks Loic Aigon for this idea)... There must be a better way of doing this but I haven't found it.

    function closeStoryEditor() {
      var windows = app.activeDocument.windows,
        nbWindows = windows.length,
        i,
        closedWindow = false;
      for (i = 0; !closedWindow && i < nbWindows; i += 1) {
        if (!windows[i].hasOwnProperty("zoom")) {
          // Let us presume that a window without a zoom method is a story editor window...
          windows[i].close();
          closedWindow = true;
        }
      }
    }