[GastForen Programmierung/Entwicklung AppleScript Eine Bildunterschrift unter eine Bildbox setzen

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

Eine Bildunterschrift unter eine Bildbox setzen

Hans Haesler
  
Beiträge gesamt: 5826

8. Nov 2003, 22:02
Beitrag # 1 von 4
Bewertung:
(1278 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Seb möchte gerne eine Bildunterschrift unter die Box des soeben geladenen Bildes anfügen. Damit die Textbox an der richtigen Stelle erzeugt werden kann, müssen – wie er richtig vermutet – die Koordinaten der Bildbox ausgelesen werden.

Das Script beginnt mit dem Definieren des Textes: die Variable 'aCaption' (= eine Legende) wird initialisiert.

Dann werden die vier Werte der 'bounds' in eine Liste geschrieben.

Weil eine Textbox erzeugt wird, muss die Seite, auf welcher die ausgewählte Bildbox steht, festgestellt werden. Dies geschieht mit 'set nPage to name of page 1'. Anschliessend muss die Auswahl aufgehoben werden (= 'set selection to null') sonst stürzt XPress unweigerlich ab.

Die Werte der Liste sehen aus wie Textketten, aber ihre 'class' wird entweder als 'vertical measurement' oder 'horizontal measurement' zurückgegeben. Damit man mit diesen Werten rechnen kann, müssen sie in Bruchzahlen (= 'as real') verwandelt werden. Aber nur der untere Rand (= y2) muss konvertiert werden. Den oberen Rand (= y1) brauchen wir überhaupt nicht. Und den linken (= x1) und den rechten (x2) können wir unverändert in die Properties der Textbox einsetzen.

Der Zusatz 'as millimeter units' ist nur notwendig, wenn die vertikale Masseinheit des Dokuments nicht "Millimeter" ist. Man könnte auch zu Beginn des Scripts die Masseinheit abfragen und nach Bedarf temporär umstellen, damit im Script die nackten Zahlen verwendet werden können.

Das Script befiehlt der aktuellen Seite, eine Textbox zu erzeugen: 'at beginning' heisst soviel wie "zuvorderst". Die Properties der Textbox werden gleichzeitig festgesetzt. Die 'bounds' entsprechen jenen der Bildbox. Das heisst,  der untere Rand plus 2 mm ist der obere Rand der Textbox. Der untere Rand der Textbox wird auch vom unteren Rand der Bildbox aus bestimmt. Die horizontalen Werte werden unverändert von der Bildbox übernommen.

Die weiteren Properties: 'contents' ist der Inhalt, also das definierte Copyright, der Schriftgrad wird bestimmt (= 'size:10) und ebenso die Ausrichtung (zentriert = 'centered').
---
set aCaption to "Copyright: Sebs!"

tell application "QuarkXPress 4.11"
  activate
  tell document 1
    tell current box
      set {y1, x1, y2, x2} to bounds as list
      set nPage to name of page 1
    end tell
    set selection to null
    set y2 to y2 as millimeter units as real
    tell page nPage
      make text box at beginning with properties {bounds:{((y2 + 2) as millimeter units), x1, ((y2 + 6) as millimeter units), x2}}
      tell text box 1
        set properties of paragraph 1 to {contents:aCaption, size:10, justification:centered}
      end tell
    end tell
  end tell
end tell
---
Mit QXP 4.11 und unter Mac OS 9.2.2 funktioniert dieses Snippet. Aber auch diesmal habe ich es unter Mac OS X nicht getestet (es macht überhaupt keinen Sinn, QuarkXPress 4 oder 5 im Classic-Modus einzusetzen).

Hans Haesler <hsa@ringier.ch>
X

Eine Bildunterschrift unter eine Bildbox setzen

Anonym
Beiträge gesamt: 22827

13. Nov 2003, 20:00
Beitrag # 2 von 4
Beitrag ID: #418433
Bewertung:
(1277 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
ersteinmal sorry für die späte meldung.
ich bekommen immer  die meldung: "...kann nicht umgewandelt werden"
ich glaube das script kann irgendwie die Zeichenkette nicht richtig interpretieren.:

hier ein auszug aus dem eventprotokoll:
---
tell application "QuarkXPress Passport&#153; 4.11"
 activate
 get bounds of current box of document 1
  {&laquo;data FXVM0062A13F&raquo;, &laquo;data FXHM00EA0C12&raquo;, &laquo;data FXVM00E870DE&raquo;, &laquo;data FXHM018DD7A3&raquo;}
 get name of page 1 of current box of document 1
  "1"
 set selection of document 1 to null
  "&#132;&laquo;data FXVM00E870DE&raquo;&#147; kann nicht in real umgewandelt werden."
---

du sagtest man kann auch zu beginn des scriptes masseinheiten auslesen und auf millimeter umstellen? wie geht das denn-??

PS. QuarkXpress 4.11 setze ich nur unter OSX zu testzwecken ein. auf meinem mac läuft kein os9 mehr.


Danke!!!


als Antwort auf: [#418432]

Eine Bildunterschrift unter eine Bildbox setzen

Hans Haesler
  
Beiträge gesamt: 5826

13. Nov 2003, 22:31
Beitrag # 3 von 4
Beitrag ID: #418434
Bewertung:
(1277 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Seb,

also... wenn Du QuarkXPress 4.11 unter Mac OS X einsetzest, dann läuft es im Classic-Modus und dazu braucht es nun mal ein Mac OS 9.2.x.

Das Umwandlungs-Problem ist bekannt. Zwei Themen dazu wurden von Armin Egginger in diesem Forum eröffnet. Im April 2003:
http://www.page-online.de/page/forum/viewthread/1788 und im September 2003: http://www.page-online.de/page/forum/viewthread/1979

Und im Mai 2003 habe ich weitere Erklärungen geliefert: http://www.page-online.de/page/forum/viewthread/1815

Hier nochmals das Script. Diesmal angepasst an den Classic-Modus, mit explizitem Einsatz von 'coerce'. Die Masseinheiten sollte man zuerst testen und nur umstellen, wenn sie nicht in Millimetern sind. Sonst wird das Dokument unnötigerweise zweimal aufgefrischt. Zweimal, weil am Schluss die Einheiten anwenderfreundlicherweise wieder auf die ursprüngliche Einheiten zurückgestellt werden sollten.

Die Variable 'mes' wird anfangs des Scripts auf '0' gesetzt. Die Masseinheiten werden in den Variablen 'vMes' und hMes' gespeichert. Dann wird getestet, ob sie in 'millimeters' sind oder nicht. Im zweiten Fall wird die "Flagge" 'mes' auf '1' gesetzt und die Einheiten werden auf Millimeter umgestellt. Von nun an kann man mit nackten Zahlen arbeiten. Die Werte der Boxen sind immer "Millimeter". Am Schluss wird die 'flag' getestet. Wenn der Wert '1' ist &#150; und nur dann &#150; werden die 'properties' wieder auf die in 'vMes' und 'hMes' gespeicherten Konstanten zurückgesetzt.
---
set aCaption to "Copyright: Sebs!"
set mes to 0

tell application "QuarkXPress 4.11"
  activate
  tell document 1
    set vMes to vertical measure
    set hMes to horizontal measure
    if vMes is not millimeters or hMes is not millimeters then
      set mes to 1
      set properties to {vertical measures, horizontal measures}
    end if
    tell current box
      set {y1, x1, y2, x2} to bounds as list
      set y1 to coerce y1 to real
      set x1 to coerce x1 to real
      set y2 to coerce y2 to real
      set x2 to coerce x2 to real
      set nPage to name of page 1
    end tell
    set selection to null
    tell page nPage
      make text box at beginning with properties {bounds:{(y2 + 2), x1, (y2 + 6), x2}}
      tell text box 1
        set properties of paragraph 1 to {contents:aCaption, size:10, justification:centered}
      end tell
    end tell
    if mes = 1 then
      set properties to {vertical measure:vMes, horizontal measure:hMes}
    end if
  end tell
end tell
---

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#418432]

Eine Bildunterschrift unter eine Bildbox setzen

Anonym
Beiträge gesamt: 22827

25. Nov 2003, 22:43
Beitrag # 4 von 4
Beitrag ID: #418435
Bewertung:
(1277 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
...


als Antwort auf: [#418432]
X