Connect failed: Connection timed out

[GastForen Programmierung/Entwicklung AppleScript Texte umfärben von Schwarz zu Sonderfarbe (Sprachwechsel)

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

Texte umfärben von Schwarz zu Sonderfarbe (Sprachwechsel)

Anonym
Beiträge gesamt: 22827

13. Nov 2004, 21:21
Beitrag # 1 von 9
Bewertung:
(1530 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich möchte  gerne mehrere Textrahmen in einem QuarkXPress 5 Dokument (möglichst auf einmal) aktivieren und die darin enthaltenen Texte in eine anderen Farbe einfärben. Die Texte sind jetzt in der Systemfarbe Schwarz eingefärbt. Durch löschen der Farbe in der Farbpalette ist dieses nicht möglich, da sich die ja nicht löschen lässt. Der Textrahmen ist in der Farbe „Keine“ eingefärbt. Momentan kenne ich die Farbe aber noch nicht die den Texten zuzuweisen ist, aber mit Gewissheit ist es eine Sonderfarbe (Texthinterleger). Ich nenne sie erst einmal „Text_D“.

Ist das eine Aufgabe für ein AppleScript?

Gruß
Uwe
X

Texte umfärben von Schwarz zu Sonderfarbe (Sprachwechsel)

Hans Haesler
  
Beiträge gesamt: 5826

13. Nov 2004, 22:37
Beitrag # 2 von 9
Beitrag ID: #419209
Bewertung:
(1529 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

aber sicher! Doch weil ich mit dem Scripten der schlechten QuarkXPress-5-Version keine Praxis-Erfahrung habe, muss
ich zuerst ausprobieren, wie die ausgewählten Boxen am rationellsten anzusprechen sind (entweder mit 'every text box
whose selected is true' oder mit einer Repeat-Schleife die Boxen einzeln besuchen).

Ich nehme an, dass die Farbe definiert sein wird, wenn das Script aufgerufen wird, ist. Die einfachste Lösung:
Einer Variablen die Namen aller Farben zuweisen und dann dem Anwender einen Dialog zeigen, mit der Liste der Farben,
aus welcher er die gewünschte wählt.

Variante: In der gezeigten Liste die Zeile "Neue Farbe" einfügen. Und wenn der Anwender diese wählt, per Dialog die
Werte, den Namen und ob separiert oder nicht, einsammeln (sehr aufwendig). Einfacher ginge es sicher, wenn der
XPress-Dialog zum Erzeugen einer neuen Farbe per 'select menu' gezeigt werden kann.

Ich werde mal versuche, etwas brauchbares zu entwickeln und melde mich dann wieder.

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#419208]

Texte umfärben von Schwarz zu Sonderfarbe (Sprachwechsel)

Hans Haesler
  
Beiträge gesamt: 5826

13. Nov 2004, 23:16
Beitrag # 3 von 9
Beitrag ID: #419210
Bewertung:
(1529 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

versuch's bitte mal damit (als kompiliertes Script speichern und im Script-Menü versorgen):
---
tell application "QuarkXPress 5.01"
  activate
  try
    -- Dieser Test prüft, ob ein Dokument offen ist. Wenn nicht, wird nach dem Klick auf "OK" abgebrochen
    if not (exists document 1) then error "Bitte ein Dokument öffnen."
   
    tell document 1
      -- Dieser Test stellt sicher, dass nicht ein Musterdokument angezeigt ist
      if masterdoc is true then error "Dieses Script funktioniert nicht mit Musterseiten."
     
      -- Dieser Test stellt sicher, dass eine Textbox ausgewählt ist
      if not (exists (text box 1 whose selected is true)) then error "Es ist keine Textbox ausgewählt."
     
      -- Dieser Abschnitt erstellt eine Liste der vorhandenen Farben und bittet den Anwender, eine davon auszuwählen
      set colorList to name of every color spec
      set newColor to (choose from list colorList with prompt &not;
        "Die Farbe für die Texte wählen:" without multiple selections allowed and empty selection allowed) as string
      if newColor is false then error number -128
     
      -- Dieser Befehl färbt die Texte der ausgewählten Textboxen mit der gewählten Farbe ein.
      tell (every text box whose selected is true)
        set properties of story 1 to {color:newColor}
      end tell
    end tell
   
  on error errMsg number errNum
    if errNum is not -128 then
      display dialog errMsg & "
[" & errNum & "]" buttons "OK" default button 1 with icon 0
    end if
    return
  end try
end tell
---

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#419208]

Texte umfärben von Schwarz zu Sonderfarbe (Sprachwechsel)

Anonym
Beiträge gesamt: 22827

15. Nov 2004, 11:40
Beitrag # 4 von 9
Beitrag ID: #419211
Bewertung:
(1529 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
wie immer eine tolle und gelungene Sache.
Ich habe jetzt leider in meiner Musterseite, die ich gerade getestet habe, durchgestrichene Preise (Linie) und gerahmte Boxen (hatte ich am Anfang nicht bedacht). Kann man die Farbänderungen an Linien und Rahmen noch mit einfliessen lassen, oder würde das zu weit führen?
Wie auch immer: Mit diesem Script habe ich mir schon mal viel mühselige Arbeit erspart. Vor allen Dingen kann ich so keinen Textrahmen vergessen, was ja beim manuellen Umfärben schnell passieren kann.

Vielen Dank
Uwe


als Antwort auf: [#419208]

Texte umfärben von Schwarz zu Sonderfarbe (Sprachwechsel)

Hans Haesler
  
Beiträge gesamt: 5826

15. Nov 2004, 12:14
Beitrag # 5 von 9
Beitrag ID: #419212
Bewertung:
(1529 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

bitteschön. Ja, die Farbänderungen können auch auf den Randstil angewendet werden. Und auch auf Linien-
boxen. Aber damit wird es schon recht kompliziert. Zwei Fragen: Sind es Linien des einfachen Typs (also
ohne Abstandsfarbe)? Müssen auch Absatzlinien miteinbezogen werden?

* * * * *
Währenddem ich auf die Antworten warte, hier schon mal eine Verbesserung:

Damit die Liste mit Farben, welche wir nicht zuweisen wollen, nicht unnötigerweise verlängert wird,
kann beim Aufstellen der Liste die Einschränkung 'whose separation is false' angefügt werden.

Aber dann sollte dieser Befehl in einen try-Block gesetzt werden, um eine Fehlermeldung abzufangen,
wenn im Dokument keine Schmuckfarbe existiert. Doch dann wäre die Variable 'colorList' nicht definiert.
Um diesen Fall abzudecken, kann man sie vorgängig als leer initialisieren ... 'set colorList to {}' und
nach dem Austellen der Liste prüfen ... 'if colorList is {} then'.

Eine andere Möglichkeit: Die Aktion in den 'on error'-Teil verlegen:
---
      try
        set colorList to name of every color spec whose separation is false
      on error
        set colorList to {"Magenta"}
      end try
      set newColor to (choose from list colorList with prompt &not;
        "Die Farbe für die Texte wählen:" without multiple selections allowed and empty selection allowed) as string
      if newColor is "false" then error number -128
---
Anstelle des Zuteilens von "Magenta" kann auch ein Dialog eingefügt werden, welcher dem Anwender mehr
oder weniger höflich mitteilt, dass keine Schmuckfarbe vorhanden ist. Nicht vergessen: Anschliessend die
Zeile 'error number -128' zum Abbruch der Ausführung einfügen.

In der letzten Zeile dieses Snippets sieht man, dass 'false' nicht mehr als Boolean sondern als String
eingesetzt ist. Wenn der Anwender im 'choose from list'-Dialog den Button "Abbruch" betätigt, wird die
Ausführung nicht abgebrochen. Aber das Resultat ist "false", im String-Format, weil ein gewählter
Farbname als Liste zurückgegeben wird (z.B. {"01_deutsch"}) mit dem Zusatz 'as string' verwandelt wird.

Diese beiden Elemente (Resultat und Testausdruck) hatte ich im obigen Script nicht in Einklang gebracht.

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#419208]

Texte umfärben von Schwarz zu Sonderfarbe (Sprachwechsel)

Anonym
Beiträge gesamt: 22827

15. Nov 2004, 13:45
Beitrag # 6 von 9
Beitrag ID: #419213
Bewertung:
(1529 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
die Verbesserung ist ja sehr komfortabel.
Zu deiner Frage: Es sind Linien der einfachen Typs. Sie werden gebraucht, um einen alten Preis durchzustreichen (Vorher/Nachher).
Die gerahmten Boxen bestehen aus Textrahmen (ich will nicht hoffen das es auch mal gerahmte Bildboxen gibt).

Uwe


als Antwort auf: [#419208]

Texte umfärben von Schwarz zu Sonderfarbe (Sprachwechsel)

Hans Haesler
  
Beiträge gesamt: 5826

15. Nov 2004, 14:02
Beitrag # 7 von 9
Beitrag ID: #419214
Bewertung:
(1529 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

okay &#133; und hier ist das Script mit den gewünschten Erweiterungen. Nun werden auch die Randstile (vorsorglich auch jene von
Bildboxen) und die Linienboxen umgefärbt. Auch die vorgängig erläuterten Verbesserungen sind im folgenden Code enthalten:
---
tell application "QuarkXPress 5.01"
  activate
  try
    -- Dieser Test prüft, ob ein Dokument offen ist. Wenn nicht, wird nach dem Klick auf "OK" abgebrochen
    if not (exists document 1) then error "Bitte ein Dokument öffnen."
   
    tell document 1
      -- Dieser Test stellt sicher, dass nicht ein Musterdokument angezeigt ist
      if masterdoc is true then error "Dieses Script funktioniert nicht mit Musterseiten."
     
      -- Dieser Test stellt sicher, dass eine Box ausgewählt ist
      if not (exists (generic box 1 whose selected is true)) then error "Es ist keine Box ausgewählt."
     
      -- Dieser Abschnitt erstellt eine Liste der vorhandenen Farben und bittet den Anwender, eine davon auszuwählen
      try
        set colorList to name of every color spec whose separation is false
      on error
        set colorList to {"Magenta"}
      end try
      set newColor to (choose from list colorList with prompt &not;
        "Die Farbe für die neue Sprache wählen:" without multiple selections allowed and empty selection allowed) as string
      if newColor is "false" then error number -128
     
      -- eventuell ausgewählte Linienboxen werden auch umgefärbt
      try
        tell (every line box whose selected is true)
          set properties to {color:newColor}
        end tell
      end try
      -- Dieser Befehl färbt die  Randstile der ausgewählten Bildboxen mit der gewählten Farbe ein.
      try
        tell (every picture box whose selected is true)
          set properties to {frame:{color:newColor}}
        end tell
      end try
      -- Dieser Befehl färbt die Texte e der ausgewählten Textboxen mit der gewählten Farbe ein.
      try
        tell (every text box whose selected is true)
          set properties to {frame:{color:newColor}}
          set properties of story 1 to {color:newColor}
        end tell
      end try
    end tell
   
  on error errMsg number errNum
    if errNum is not -128 then
      display dialog errMsg & "
[" & errNum & "]" buttons "OK" default button 1 with icon 0
    end if
    return
  end try
end tell
---
Weil beim Umfärben der Texte die Auswahl verlorengeht, muss diese Aktion am Schluss vorgenommen werden. Sonst würden
eventuelle Linienboxen nicht einbezogen.

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#419208]

Texte umfärben von Schwarz zu Sonderfarbe (Sprachwechsel)

Anonym
Beiträge gesamt: 22827

15. Nov 2004, 19:43
Beitrag # 8 von 9
Beitrag ID: #419215
Bewertung:
(1529 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Toll und genial!
Das hilft mir sehr.
Danke Hans.

Uwe


als Antwort auf: [#419208]

Texte umfärben von Schwarz zu Sonderfarbe (Sprachwechsel)

Hans Haesler
  
Beiträge gesamt: 5826

16. Nov 2004, 08:13
Beitrag # 9 von 9
Beitrag ID: #419216
Bewertung:
(1529 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

bitteschön. :-)

Ich habe mir auch überlegt, dass es eventuell nützlich wäre, die Farbe "Schwarz" in der Liste der Farben aufzuführen.
Für den Fall, dass man eine irrtümliche Auwahl wieder zurücksetzen kann. Falls erwünscht: bitte melden.

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#419208]
X