[GastForen Programmierung/Entwicklung AppleScript Text mit Formatierungen kopieren

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

Text mit Formatierungen kopieren

Goar
Beiträge gesamt: 395

26. Jul 2004, 22:04
Beitrag # 1 von 3
Bewertung:
(686 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Scripter,

in einer Artikelliste gibt es Absatzformate für Artikel-Bezeichnung und Artikel-Text. Wenn die Artikel-Bezeichnung aus einer Zeile besteht und der Artikel-Text aus zwei Zeilen (erste Zeile Text, zweite Zeile Artikel-Nr. und Preis), soll die erste Zeile des Artikel-Textes hinter die Artikel-Bezeichnung gesetzt werden, sofern dort der Platz ausreicht.

Eigentlich habe ich schon alles zusammen, bis einschließlich der Gesamtlänge der beiden Zeilen:
---
[code:1]set maxWidth to 60

tell document 1 of application "QuarkXPress 4.11"
 tell current box
  tell story 1
   repeat with i from 3 to 8 -- testweise nur diese Absätze
    try
     if name of style sheet of paragraph i contains "Bezeichnung" then
      if (count of lines of paragraph i) = 1 then
       set bezWidth to width of line 1 of paragraph i as millimeter units as real
      end if
      log bezWidth
     else if (name of style sheet of paragraph i contains "Artikel-Text") and (bezWidth ≠ "") then
      if (count of lines of paragraph i) = 2 then
       set txtWidth to width of line 1 of paragraph i as millimeter units as real
       set totalWidth to bezWidth + txtWidth
       if maxWidth > totalWidth then
       -- hier müsste ich jetzt irgendwie den Text markieren statt ihn zu kopieren
        set txtPara to every text of line 1 of paragraph i
       end if
       log (txtPara & totalWidth) as text
      else
       set bezWidth to ""
      end if
     else
      set bezWidth to ""
     end if
    on error
    end try
   end repeat
  end tell
 end tell
end tell
[/code:1]---

Nur gelingt es mir nicht, die erste Zeile des Artikel-Textes zu markieren, damit ich sie mit aller Formatierung (per XP-Marken-Text) sichern und hinter der Artikel-Bezeichnung wieder einsetzen kann. Dafür müsste ich nach dem Kopieren die Einfügemarke ans Ende des Artikel-Bezeichnungs-Absatzes setzen.

Meine Versuche, Begriffe aus dem XP-Verzeichnis (selection, insertion point) ohne Beispiel in funktionierenden Scriptzeilen unter zu bringen, sind wie so oft fehlgeschlagen.

Wer entfrustet mich?

Gruß, Goar
X

Text mit Formatierungen kopieren

Hans Haesler
  
Beiträge gesamt: 5826

27. Jul 2004, 00:34
Beitrag # 2 von 3
Beitrag ID: #418951
Bewertung:
(685 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,

ich würde Dich gerne von Deinen Qualen erlösen. Aber es ist etwas zu abstrakt.
Deshalb mein Angebot: sende mir bitte ein Dokument mit der entsprechenden Textbox,
welche Du kopierst und darin manuell das gewünschte Resultat herstellst.

Danach werde ich sicher klarer sehen und Dir mindestens eine funktioniende Lösung
präsentieren.

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#418950]

Text mit Formatierungen kopieren

Hans Haesler
  
Beiträge gesamt: 5826

28. Jul 2004, 09:17
Beitrag # 3 von 3
Beitrag ID: #418952
Bewertung:
(685 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,

ja, mit einem konkreten Beispiel ist es viel einfacher.

Zu Beginn des Scripts sollte die Variable 'bezWidth' initialisiert sein, weil dies sonst nur
unter bestimmten Umständen in der 'if / else if'-Schleife geschieht. Und wenn man Pech hat,
dann ist sie beim ersten Umgang unbekannt. Gut, es ist abgesichert durch 'try'.

Damit die Formatierungen übernommen werden, darf man den Text nicht direkt in eine Variable
geben. Man muss die Auswahl in eine Temp-Datei auf die Harddisk sichern und dann wieder
eingelesen. Nur so funktioniert das mit den XPress Tags.

Eine Variante ist, die gewünschte Textkette mit 'move' zu verschieben. Hier ist das Kernstück
des Scripts, die 'if maxWidth'-Schleife:
---
if maxWidth > totalWidth then
  -- den Zwischenraum einfügen
  copy space to before character 1 of line 1 of paragraph i
  -- den Text verschieben
  move every text of line 1 of paragraph i to before character -1 of paragraph (i - 1)
  -- das Shift-Return-Zeichen entfernen
  delete character -1 of line 1 of paragraph (i - 1)
end if
---
Nun wünsche ich Dir viel Spass beim Weiterentwickeln dieses Scripts.

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#418950]