Extras ausblenden ohne Vorschau

Ich krieg ja immer einen kleinen Schreck, wenn ich eine Kundendatei öffne und die sieht dann so aus:

So unübersichtlich kann eine InDesign Seite aussehen

Man könnte jetzt natürlich „w“ drücken, um in der Vorschau zu landen. Aber… Die Hilfslinien hätte ich gern, aber den ganzen Rest nicht.

Die Lösung? Ein Script, natürlich.

Das Script „turn_off_extras“ liegt hier.
Eine Anleitung zum Installieren liegt hier.

Geben Sie dem Script am besten ein Tastaturkürzel (bei mir liegt es auf F3), dann geht das in Zukunft ruckzuck.

Anmerkungen zum Gebrauch

Wenn Sie das Script starten, kriegen Sie dieses Dialogfeld:

Das Dialogfeld von ‚turn_off_extras‘
  • Links klicken Sie an und aus, was sichtbar sein soll oder eben nicht. Klicken Sie rechts auf „Anwenden“.
  • Der Default-Button (i.e. der, den Sie mit der Return Taste auslösen) blendet alles aus.
  • Das Script merkt sich beim ersten Start im Dokument, welchen Anzeigezustand es vorfindet. Diesen können Sie dann später mit „org. Zustand“ wieder herstellen.

Anmerkungen für (angehende) Scripter

JSON

Ich verwende im Script die Routinen von „https://www.npmjs.com/package/JSON2“, um auf JSON als Dateiformat zugreifen zu können.
JSON.stringify() und JSON.parse() zu verwenden, ist eine wesentlich bessere Idee als o.toSource() und o.eval()

Kopieren Sie sich einfach die init() Funktion in eigene Projekte.

Datenhaltung

Einiges im Script ist ziemlich hau ruck (wollte nicht zu viel Zeit damit verbringen), aber die Datenhaltung der Preferences ist ganz hübsch.

var prefs = {
  textPreferences: {
    name: "Text Einstellungen",
    enableStylePreviewMode: "Formatabweichungen anzeigen",
    highlightCustomSpacing: "Spationierung anzeigen",
    highlightHjViolations: "Silbentrennung anzeigen",
    highlightKeeps: "Umbruchverletzung anzeigen",
    highlightKinsoku: "Kinsoku anzeigen",
    highlightSubstitutedFonts: "Ersetzte Schriften anzeigen",
    highlightSubstitutedGlyphs: "Ersetzte Glyphen anzeigen",
    showInvisibles: "Verborgene Zeichen anzeigen",
  },
  gridPreferences: {
    name: "Raster Einstellungen",
    baselineGridShown: "Grundlinienraster anzeigen",
    documentGridShown: "Dokumentraster azeigen",
  },
  guidePreferences: {
    name: "Hilfslinien Einstellungen",
    guidesShown: "Hilfslinien anzeigen",
  },
  viewPreferences: {
    name: "Fenster Einstellungen",
    showFrameEdges: "Rahmenkanten anzeigen",
    showNotes: "Notizen anzeigen",
  },
  xmlViewPreferences: {
    name: "XML Einstellungen",
    showTaggedFrames: "Getaggte Rahmen anzeigen",
    showTagMarkers: "Tagmarken anzeigen"
  }
}

Wenn Sie noch nicht allzuviel mit eigenen Objektstrukturen gemacht haben, schauen Sie sich das mal an.

ScriptUI

Aus dem prefs-Objekt generiere ich automatisch den Dialog per ScriptUI.

Falls Sie noch keine eigenen Interfaces gebaut haben, ist das also auch ein hübsches Beispiel, inklusive onClick Funktionen und defaultElement

var w = new Window("dialog");
w.orientation ="row";
w.alignChildren = "top";
w.main = w.add("group");
w.main.orientation = "column";
w.main.alignChildren = "fill";
for ( var p in prefs ) {
  w.main[p] = w.main.add( "panel" );
  w.main[p].text = prefs[p].name;
  w.main[p].alignChildren = "fill";
  for ( var o in prefs[p] ) {
    if ( o.search(/_value/) == -1 && o != "name") {
      var aux = w.main[p].add("group");
      w.main[p][o] = aux.add('checkbox');
      w.main[p][o].value = prefs[p][o+"_value"];
      aux.add("statictext", undefined, prefs[p][o] );
    }
  }
}
w.btns = w.add("group");
w.btns.orientation = "column";
w.btns.alignChildren = "fill";
w.defaultElement = w.btns.add("button", undefined, "Alle aus");
w.btns.cancel = w.btns.add("button", undefined, "Abbrechen");
w.btns.ok = w.btns.add("button", undefined, "Anwenden");
w.btns.restore = w.btns.add("button", undefined, "org. Zustand", {enabled: doc.extractLabel("gs_prefs_resetter") != ""} );
 
w.btns.ok.onClick = function() {
  for ( var p in prefs ) {
    for ( var o in prefs[p] ) {
      if ( o != "name" && o.search("_value") == -1 ) {
        prefs[p][o] = this.window.main[p][o].value;
      }
    }
  }
  w.close(1);
}