[GastForen Programmierung/Entwicklung AppleScript QXP 6.1: Vorsicht, beim Abfragen von Seitennummern

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

QXP 6.1: Vorsicht, beim Abfragen von Seitennummern

Hans Haesler
  
Beiträge gesamt: 5826

4. Apr 2004, 22:11
Beitrag # 1 von 2
Bewertung:
(511 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mit früheren XPress-Versionen galt die folgende Konstruktion als zuverlässig.
---
tell document 1 of application "QuarkXPress 6.1"
  tell current box
    set pageNumber to page number of page 1
  end tell
end tell
---
Das Resultat entspricht der Numerierung in der Seitenlayout-Palette.

Wenn die Box aber auf der Montagefläche liegt, dann ist das Resultat '2001' oder höher. Damit kann man prüfen, ob eine Box auf einer Seite steht oder nicht …
---
if pageNumber > 2000 then
display dialog "Dieses Script funktioniert nicht mit Boxen auf der Montagefläche." buttons "OK" default button 1 with icon 0
error number -128
---
… mit einem Dialog das Problem mitteilen und mit dem Befehl 'error number -128' die Ausführung abbrechen.

Das funktioniert gut - auch mit QXP 6.1 - mit Doppelseiten-Layouts. Wenn das 6.1-Layout aber mit Einzelseiten aufgebaut ist und eine Box auf der Montagefläche steht, dann gibt es garantiert Probleme. Im besten Fall ist das Ergebnis nur '1' (statt '2001'). Meistens wird aber XPress unvermittelt beendet, wieder gestartet und die Fehlermeldung "QuarkXPress got an error: Connection is invalid. [-609]" erscheint.

Abhilfe: statt 'page number' den Ausdruck 'index' gebrauchen:
Code
set pageIndex to index of page 1 of current box 

Damit ist das Ergebnis wieder '2001' und XPress stürzt nicht ab.

Hans Haesler <hsa@ringier.ch>
X

QXP 6.1: Vorsicht, beim Abfragen von Seitennummern

Hans Haesler
  
Beiträge gesamt: 5826

6. Apr 2004, 17:48
Beitrag # 2 von 2
Beitrag ID: #418718
Bewertung:
(510 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
"Erstens ist es komplizierter und zweitens als man denkt." Oder wie lautet der Spruch nun schon wieder?

Wenn zu den Doppel- und Einzelseitenlayouts auch noch die Musterseiten abgedeckt werden sollten, dann gibt es ein Problem: Der Gebrauch von 'index' ist okay bei Doppel- und Einzelseiten, aber bei Musterseiten gibt es einen Crash. Aber mit Musterseiten kann man 'page number' verwenden, was wie schon erwähnt mit Einzelseiten nicht geht.

Was tun? Einen Test einbauen, welcher feststellt, ob Layout- oder Musterseiten angezeigt sind. In eine Variable (hier 'docRef') die entsprechende Objektreferenz geben und in einer zweiten (hier 'isDoc') festhalten, ob Layout oder Musterseite. Um die Seitennummer "absturzlos" zu erhalten, kann dann im Handler 'getPageNumber()' jene Form verwendet werden, welche kein Problem verursacht:
---
tell application "QuarkXPress 6.1"
  tell document 1
    -- Die Variable 'docRef' erlaubt, entweder das Layout oder das Musterdokument zu adressieren
    -- und der Zustand von 'isDoc' ermöglicht später, die gefahrlose Formulierung einzusetzen
    set isDoc to 1
    set docRef to object reference
    if masterdoc is true then
      set isDoc to 0
      set docRef to object reference of master document 1 of application "QuarkXPress 6.1"
    end if
  end tell
 
  tell docRef
    set pageNumber to my getPageNumber(isDoc, docRef)
    if pageNumber > 2000 then
      display dialog "Dieses Script funktioniert nicht mit Boxen auf der Montagefläche." buttons "OK" default button 1 with icon 0
      -- mit dem nächsten Befehl wird die Ausführung abgebrochen
      error number -128
    end if
    --
    -- der Test ist bestanden. Weitere Befehle hier einfügen.
    --
  end tell
end tell

on getPageNumber(isDoc, docRef)
  tell application "QuarkXPress 6.1"
    if isDoc = 1 then
      tell docRef
        set pageNumber to index of page 1 of current box
      end tell
    else
      tell docRef
        set pageNumber to page number of page 1 of current box
      end tell
    end if
  end tell
end getPageNumber
---

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#418717]