hilfdirselbst.ch
Facebook Twitter gamper-media
Mac OS X enthält verschiedene integrierte Werkzeuge und Technologien, mit denen sich gängige Aufgaben schnell und einfach automatisieren lassen.
Hans Haesler  M  p
Beiträge: 5414
19. Mär 2003, 23:55
Beitrag #1 von 3
Bewertung:
(601 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Inline graphic per Applescript erstellen


Michael Slomski möchte einen Bildrahmen per Script im Text einbetten (siehe seine
Frage im QuarkXPress-Forum).

Von Hand ist es umständlich: zum Objektwerkzeug wechseln, die Box kopieren, zum
Inhaltswerkzeug wechseln, den Cursor in der Zielbox plazieren und die Box einsetzen.

Per Script gibt es mehrere Möglichkeiten. Die einfachste imitiert das Kopieren /
Einsetzen (= copy / paste). Ein neues Dokument, eine kleine Bildbox erzeugen und
eine grössere Textbox. Dann dieses Script abspielen:
---
tell document 1 of application "QuarkXPress 4.11"
  activate
  set selection to null
  set tool mode to drag mode
  set selected of picture box 1 to true
  copy
  set tool mode to contents mode
  set selected of text box 1 to true
  paste
end tell
---
Das Abspielen funktioniert auch mehrmals, weil mit 'set selection to null' die Auswahl
aufgehoben wird.

Man könnte auch per Script die Bildbox erzeugen und dann einsetzen. Aber das Problem
ist immer die Adressierung der Boxen.

Ich ziehe es deshalb vor, die zu verankerte Bildbox manuell vorzubereiten und schon in
eine Textbox zu verankern. Ich kann dabei die Ausrichtung am Text festlegen ("Oberlänge"
oder "Grundline") die Umflusswerte einstellen und so weiter. Die Textbox benenne ich und
auch die Zielbox bekommt einen Namen. So wird eine ausgewählte Box benannt:
---
tell document 1 of application "QuarkXPress 4.11"
  tell current box
    set name to "one"
  end tell
end tell
---
Ich habe dafür komfortablere Scripts. Nur verlangen...

Die zu verankernde Box ist vorbereitet in der Textbox "one" und die Zielbox heist "main"
und sollte mindestens zwei Absätze enthalten (oder im Script 'paragraph 2' ändern).
Das Script kopiert den <b>Text</b> der Textbox "one", weil eine verankerte Box als Text
behandelt wird.
---
tell document 1 of application "QuarkXPress 4.11"
  activate
  set tool mode to drag mode
  copy text 1 of text box "one" to before character 1 &not;
    of paragraph 2 of story 1 of text box "main"
end tell
---
Dies sind erste Hinweise, wie man die Sache anpacken kann. Jede Aufgabe hat aber spezielle
Bedingungen, deshalb muss man praktisch immer ein Script nach Mass entwickeln.

Hans Haesler, <a href="mailto:hsa@ringier.ch">hsa@ringier.ch</a> Top
 
X
Anonym
Beiträge: 22827
19. Mär 2003, 15:49
Beitrag #2 von 3
Beitrag ID: #418073
Bewertung:
(598 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Inline graphic per Applescript erstellen


Hallo Hans,
danke für deine Hilfe. Anscheinden geht es also nur mit cut/copy und paste und dem Wechseln des Toolwerkzeuges. Und man muß dabei natürlich aufpassen, da immer die richtige Box markiert ist
Viel eleganter wäre es natürlich, wenn es etwa folgendes gäbe:
create text/picture box at insertation point with properties {...}

Michael

[ Diese Nachricht wurde geändert von: Michael Slomski am 2003-03-19 15:01 ]
als Antwort auf: [#418072] Top
 
Hans Haesler  M  p
Beiträge: 5414
19. Mär 2003, 23:55
Beitrag #3 von 3
Beitrag ID: #418074
Bewertung:
(598 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Inline graphic per Applescript erstellen


Hallo Michael,

zuerst ein Intermezzo. Ein aufmerksamer Leser hat mir folgendes mitgeteilt:

"Seit QuarkXPress 4 ist es nicht mehr notwendig, ins Objektwerkzeug zu wechseln,
um Objekte in die Zwischenablage zu kopieren oder auszuschneiden. Es genügt,
Befehl-Alt-X für das Ausschneiden bzw. Befehl-Alt-C für das Kopieren zu drücken."

Diese Befehle kenne ich, aber ich denke eigentlich selten daran, sie anzuwenden.
Obwohl ich ein Fan von Tastatur-Kürzeln bin.

Aber... bei einem Script <b>muss</b> das Werkzeug gewechselt werden, sonst geschieht nichts.

Nicht ganz richtig ist Deine Meinung, dass nur 'cut/copy' und 'paste' funktionieren.
Mein zweites Beispiel gebraucht auch 'copy', ist aber etwas anderes als der bekannte
Menübefehl "Bearbeiten / Kopieren". Mit 'copy text 1 of text box ...' wird das
Objekt direkt kopiert. Ohne die Zwischenablage zu bemühen. Damit wird der Ablauf
beschleunigt.

Hingegen hast Du recht, dass es schön wäre, eine Box direkt an der Cursor-Position
erzeugen zu können.

Und: ja, es braucht einigen Aufwand, damit das richtige Objekt in der richtigen
Zielbox am richtigen Ort landet.

Meistens gehe ich so vor, dass die Story durch alle Boxen fliesst. Dann genügt es,
eine davon auszuwählen und mit 'current box' zu adressieren.

Jedes Jahr, im September, wird bei uns die französische Ausgabe des schweizerischen
GaultMillau-Restaurant-Führers hergestellt. Die Informationen (Kochmützen, Gabeln,
Neu, Punktzuwachs, Parkplatz, Terrasse usw.) sind ab Datenbank in einzelne XPress-
Tags-Dateien exportiert worden. Die Dateien haben alle kurze Namen, z.B. "001.TXT".
Also nur fortlaufende Nummern, von 001 bis 285.

Die Datei des Haupttextes wird manuell importiert. Anfangs des ersten Absatzes jedes
Restaurants wurde beim Export ein Code eingefügt, z.B. "$0013". Ein Dollar-Zeichen,
gefolgt von der Nummer 001 und einer '3', die Anzahl Kochmützen. Dies ist notwendig,
weil für jede Zahl (von Null bis 4) eine eigene verankerte Box vorbereitet werden
musste, damit das Alinieren am Restaurant-Namen gelingt.

Das Script geht alle Absätze durch. Wenn einer mit einem Dollar-Zeichen beginnt,
werden die Zeichen 2 bis 4 gespeichert und mit dem Suffix ".TXT" versehen: der
Name der kleinen Textdatei. Das fünfte Zeichen ist die Nummer, in welche die
Datei geladen werden muss. Die fünf Zeichen werden entfernt und die verankerte
Box wird an ihre Stelle kopiert. Der Ablauf ist rasend schnell und die Ausführung
zuverlässiger, als wenn ich alles manuell kopieren/einsetzen würde...

Damit der Anwender auf dem laufenden gehalten wird, zeigt ein Statusfenster mit
Ziffern an, welcher Absatz von wievielen gerade behandelt wird. Eventuelle Fehler
werden auch gezählt. Und ein Progressionsbalken untermalt das Ganze optisch.

Hans Haesler, <a href="mailto:hsa@ringier.ch">hsa@ringier.ch</a>
als Antwort auf: [#418072] Top