[GastForen Programmierung/Entwicklung AppleScript Gruppen finden

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

Gruppen finden

Anonym
Beiträge gesamt: 22827

16. Jun 2005, 12:48
Beitrag # 1 von 9
Bewertung:
(2249 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich habe 200 Gruppen, die aus je einer Text und einer Bildbox bestehen. Alles auf einer Seite.
Jetzt möchte ich eine Textdatei mit folgendem Inhalt erstellen:
Text tab Bildname return

Die Texte kriege ich raus, die Bildnamen auch.
Nur wie bekomme ich zB. zu Textbox 1 die dazugehörige picture box?

Gruß Michael

PS.: Die Textbox befindet sich unmittelbar unter der jeweiligen Bildbox. Also wäre auch eine Berechnung der Koordinaten der 'passenden' Box möglich.
X

Gruppen finden

Hans Haesler
  
Beiträge gesamt: 5826

16. Jun 2005, 14:32
Beitrag # 2 von 9
Beitrag ID: #419783
Bewertung:
(2248 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,

welches Programm? Welche Version? Unter welchem Mac OS?

Das Berechnen der Koordinaten bringt uns sehr wahrscheinlich auch nicht viel weiter.

Aber eine mögliche Lösung sehe ich so: Die Auswahl aufheben. Das Werkzeug auf 'item tool' setzen.
Eine Wiederholungschleife durch alle Bildboxen. Wenn die aktuelle Box ein Bild enthält, den Namen
feststellen, die Box auswählen, dann den Inhalt der ausgewählten Textbox holen und die Ergebnisse
in die Datei schreiben. Die Auswahl aufheben. Und so weiter.

Du schaffst es bestimmt, diese Outline in einen funktionierenden Code umzuwandeln. :-)

Gruss, Hans


als Antwort auf: [#419782]

Gruppen finden

Anonym
Beiträge gesamt: 22827

16. Jun 2005, 15:31
Beitrag # 3 von 9
Beitrag ID: #419784
Bewertung:
(2248 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

ich habe was viel besseres. Allerdings hat mich dein Hinweis auf die Selection darauf gebracht. Ich habe einfach mal eine Gruppe manuell ausgewählt und per Script get properties of selection angeschaut... Da kam so etwas wie gruop box raus :-)

Darauf hier mein Script:

set oldDelims to AppleScript's text item delimiters
set AppleScript's text item delimiters to {":"}

set myFile to (choose file name)
set myFileRef to (open for access myFile with write permission)

tell application "QuarkXPress Passport"
 tell document 1
  get selection
  set selection to null
  tell page 1
   set tbCount to count text boxes
   set picCount to count picture boxes
   set groupCount to count group boxes
   
   repeat with i from 1 to groupCount
    tell group box i
     -- count generic boxes
     -- get class of generic box 1
     set myText to every text of text box 1
     
     set myPath to file path of image 1 of picture box 1
     set myFileName to (last text item of myPath)
     --write myText & " " & myFileName & return to myFileRef
    end tell
   end repeat
   
  end tell
 end tell
end tell
set AppleScript's text item delimiters to oldDelims


close access myFileRef



DAs ist alle noch ohne Netz und doppelten Boden und leider funktioniert die write Zeil enicht im Quarkkontext . Es kommt ein Fehler:
„QuarkXPress“ hat einen Fehler erhalten: Die Datei „some object“ ist nicht geöffnet.

Anscheinend hat Quark ein eigenes write :-(
Vielleicht weiß du da weiter. Sonst muß ich den Text innerhalb des Tell Quark Blockes ersteinmal in einer großen Variable sammeln und am Ende schreiben.

Gruß Michael

PS.: Quark 6.5 und 10.3.9


als Antwort auf: [#419782]

Gruppen finden

Hans Haesler
  
Beiträge gesamt: 5826

16. Jun 2005, 15:49
Beitrag # 4 von 9
Beitrag ID: #419785
Bewertung:
(2248 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,

XPress hat kein eigenes 'write' sondern ein 'save'. Deshalb funktioniert es nicht. Du musst einen 'write'-Handler
schreiben und ihn aus der XPress-Schleife heraus mit dem Befehl 'my write(myText & " " & myFileName & return)'
aufrufen. Das 'my' vor dem 'write' ist ein alleinstehendes Wort. Deshalb sollte als Präfix von Variablen-Namen
nicht 'my' gewählt werden. Wie leicht kann sich ein Wortzwischenraum einschleichen.

Das Schreiben in die Datei sollte immer mit einem 'try'-Wickel abgesichert werden. Beispiele findest Du im Thema:
"Zeitmessung mit Ordneraktion" http://www.page-online.de/page/forum/viewthread/2613

Abgesehen davon: Wenn Du nicht jede Gruppe einzeln manuell auswählen willst, dann musst Du wohl oder übel
meiner Outline folgen ...

Gruss, Hans


als Antwort auf: [#419782]

Gruppen finden

Anonym
Beiträge gesamt: 22827

16. Jun 2005, 16:14
Beitrag # 5 von 9
Beitrag ID: #419786
Bewertung:
(2248 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

ja das mit dem myXXX habe ich geahnt. DAs muste kommen :->
Aber dein Kampf wird vergeblich sein  (siehe Windmühlenflügel).
Aber der Trick mit dem Handler funktionierte.
Und die Selction braucht man wirklich nicht. ganz einfach eine Schleife über die group boxes laufen lassen.

Hier also das komplette Script (immer noch ohne Netz), da ich aus der Ergebnissdatei erstmal fix eine neue Quarkdatei generieren muß

set oldDelims to AppleScript's text item delimiters
set AppleScript's text item delimiters to {":"}

set myFile to (choose file name)
set myFileRef to (open for access myFile with write permission)

on doWriteMyStuff(myFile, myStuff)
 write myStuff & return to myFile
end doWriteMyStuff

tell application "QuarkXPress Passport"
 tell document 1
  get selection
  set selection to null
  tell page 1
   set tbCount to count text boxes
   set picCount to count picture boxes
   set groupCount to count group boxes
   
   repeat with i from 1 to groupCount
    tell group box i
     -- count generic boxes
     -- get class of generic box 1
     set myText to every text of text box 1
     
     set myPath to file path of image 1 of picture box 1
     set myFileName to (last text item of myPath)
     doWriteMyStuff(myFileRef, myText & " " & myFileName) of me
    end tell
   end repeat
   
  end tell
 end tell
end tell
set AppleScript's text item delimiters to oldDelims

close access myFileRef


Und bitte beachten: doWriteMyStuff() of me. Damit läßt sich das my-Problem doch elegant umschiffen?

Gruß Michael


als Antwort auf: [#419782]

Gruppen finden

Hans Haesler
  
Beiträge gesamt: 5826

16. Jun 2005, 16:40
Beitrag # 6 von 9
Beitrag ID: #419787
Bewertung:
(2248 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,

okay, ich glaube Dir schon, dass es mit den 'group boxes' klappt.

Aber mir gefällt der Umgang mit der Textatei nicht. Diese wird zu Beginn geöffnet
und dann wird die ganze Wiederholungsschleife ohne Atempause gemacht.

Ich weiss, dass XPress sehr robust ist. Aber es könnte mal ein Zwischenfall
eintreten und dann bliebe die Datei offen. Und beim erneuten Starten des Scripts
käme eine Fehlermeldung. Deshalb den Schreibvorgang mit dem 'try'-Wickel
absichern. Doch dies ist anscheinend ein weiteres Windmühlenkapitel ...

Übrigens: Das 'of me' ist eine andere Form von 'my'.

Gruss, Hans


als Antwort auf: [#419782]

Gruppen finden

Anonym
Beiträge gesamt: 22827

17. Jun 2005, 17:46
Beitrag # 7 von 9
Beitrag ID: #419788
Bewertung:
(2248 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,,

du hast ja recht. Nur bei mir tickte die Uhr im Hintergrund und da habe ich erstmal eine quick und dirty Version zum gebraucht. Du ahnst ja nicht, wieviele offene Dateien bei mir deswegen hinterher in der Tonne lagen :-((

Und das "of me" nur eine syntaktische Abart von my ist, ist mir schon klar. Ich wollte ja nur mal zeigen, das man so eine Zeile auch anders schreiben kann.

Inzwischen ist das script auch entsprechend angepaßt worden, damit keine offenen Dateien im Fehlerfall mehr übrigbleiben.

Jetzt wäre es nur noch interessant, ob man diese grouped boxes auch per Script erstellen kann (ohne erst die zukünftigen GRuppenelemente erst zu selektieren und dann den entsprechenden Menübefehl aufrufen)

Gruß
Michael


als Antwort auf: [#419782]

Gruppen finden

Anonym
Beiträge gesamt: 22827

17. Jun 2005, 18:56
Beitrag # 8 von 9
Beitrag ID: #419789
Bewertung:
(2248 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

bevor du sagst, es geht nicht... :-)
Ich habe gerade nach langem suchen etwas in eine Forum von Quark gefunden.
Wenn man folgende Zeilen an geigneter Stelle im Script einsetzt:
     set selected of myTextBox to true
     set selected of myPicBox to true
     set grouped of group box 1 to true
      set selected of group box 1 to false

dann erhält man wunderbare Gruppen. Die 1 in der letzten Zeil ist wichtig, da dies immer die zuletzt erzeugte Gruppe ist.

Gruß Michael


als Antwort auf: [#419782]

Gruppen finden

Hans Haesler
  
Beiträge gesamt: 5826

2. Jul 2005, 23:38
Beitrag # 9 von 9
Beitrag ID: #419790
Bewertung:
(2248 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,

ja, das ist ein Variante eines alten Scripts, mit welchem ausgewählte Boxen
gruppiert werden.

Mit Deinem Code ist es wichtig, dass das Objekt-Werkzeug ausgewählt ist,
damit die Auswahl der gewünschten Boxen erhalten bleibt.

Gruss, Hans


als Antwort auf: [#419782]
X