Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

DialogStudio-Dialog läuft nicht

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 18.09.2001 - 15:27    Titel: DialogStudio-Dialog läuft nicht Antworten mit Zitat

Hallo liebes Forum!
Ich habe ein Problem mit einem Script, bei dem ich ein paar Dialoge eingebaut habe.
Leider muss ich etwas ausschweifen, da der Fehler (für mich) nicht so leicht auszumachen ist.
Ich hoffe, ihr schlaft beim Lesen nicht ein.
Das Script an sich tut's, aber nun bin ich auf die blödsinnige Idee gekommen, die einzelnen Dialoge der Standard-Additions durch einen einzigen Dialog aus Dialog-Studio zu ersetzen. Nachdem ich den Dialog und die anschließende Auswertung zunächst in einem Extra-Script getestet habe und für gut befand, habe ich ihn in mein bisheriges (funktionierendes) Script eingeflochten.
Das neue Script bekomme ich aber einfach nicht richtig ans laufen.

Zunächst einmal zur Aufgabe des Scripts (bitte nicht zweifeln, was das alles soll, das alte Script tut genau das, was ich brauche)

Ich habe einen Ordner mit Files, die immer "x, x.1, x.2, x.3 etc." heissen.
Diese Files sollen durch Droppen des Ordners umbenannt werden.

Die neue Bezeichnung der Files setzt soll sich folgendermassen zusammensetzen:
- vorn eine bestimmte Numerierung
 (2 verschiedene Versionen möglich)
 siehe: Beispiel 1 + 2
- danach einen Titel (wird über Dialog abgefragt)
- und am Ende bestimmte Kürzel (werden über Dialog abgefragt),
 die Aufschluss über den Inhalt der Dateien geben
- Ausserdem gibts am Ende die Option,
 die umbenannten Dateien in 2 Unterordner namens Links + Rechts
 zu kopieren bzw. zu verschieben und mit einem L- bzw. R- am Anfang
 des Namens zu versehen.

Beispiele für die 2 Numerierungsarten

Beispiel 1:     Beispiel 2:

01a_Titel-DH    01aa_Titel-DH
01i_Titel-DH     01ai_Titel-DH
02a_Titel-DH    01ba_Titel-DH
02i_Titel-DH     01bi_Titel-DH
03a_Titel-DH    02aa_Titel-DH
03i_Titel-DH     02ai_Titel-DH
04a_Titel-DH    02ba_Titel-DH
04i_Titel-DH     02bi_Titel-DH
05a_Titel-DH    03aa_Titel-DH
usw.                usw.

_______________________________________________________


und hier nun mein altes Script, dass tadellos funktioniert:
(Sicher entdeckt ihr hier schon Fehler o. Dinge,
die man anders regeln könnte)


____________________________________________________________________
on open DropListe
tell application "Finder"
set DropAsText to DropListe as text
-- Überprüfung, ob ein Ordner gedroppt wurden, und kein einzelnen Files
set LetzterBuchstabe to (last character of DropAsText) as text
if (LetzterBuchstabe is ":") is true then
set AktuellerOrdner to (item 1 of DropListe)
else
set DialogText to "Bitte nur ORDNER auf das Script droppen! Keine einzelnen Files"
set ButtonText to "JA, ich weiss, und schäme mich für den Fehler und möchte abbrechen"
display dialog DialogText buttons {ButtonText} default button ButtonText
error number -128
end if
--Ende der Überprüfung
end tell


tell application "Finder"

--Start DIALOG1: Titel als Text eingeben ______
repeat
display dialog "Titel für die Dateinamen eingeben." default answer ""
set the titel_name to the text returned of the result

if the titel_name contains ":" then
beep
display dialog "Eine Datei darf kein (Smile enthalten."
else
exit repeat
end if

if the titel_name is not "" then exit repeat

end repeat
--Ende DIALOG1_____________________


--Start DIALOG2: Namensanhang1 (output_name = -P oder -D) bestimmen
display dialog "Soll ein P oder ein D angehängt werden" buttons {"ein P", "ein D"} default button 2
set output_parameter to button returned of the result
if output_parameter is "ein P" then
set output_name to "-P"
else if output_parameter is "ein D" then
set output_name to "-D"
end if
--Ende DIALOG2 ________________________

--Start DIALOG3: Namensanhang2 (huelsen_name = H oder nix) bestimmen
display dialog "Soll ein H angehängt werden?" buttons {"Leider Nö", "Jupps"} default button 2
set huelsen_parameter to button returned of the result
if huelsen_parameter is "Jupps" then
set huelsen_name to "H"
else if huelsen_parameter is "Leider Nö" then
set huelsen_name to ""
end if
--Ende DIALOG3 __________________________

--Start DIALOG4: Numerierungsart auswählen (anzahl_bahnen = 1 oder 2) bestimmen
display dialog "Numerierung ..." buttons {"Version 2", "Version 1"} default button 2
set bahn_parameter to button returned of the result
if bahn_parameter is "Version 1" then
set anzahl_bahnen to 1
else if the bahn_parameter is "Version 2" then
set anzahl_bahnen to 2
end if
--Ende DIALOG4 ________________________

--Start DIALOG5: Option für Ordner Links + Rechts ________
display dialog "Links & Rechts einrichten?" buttons {"JA", "NEIN"} default button 2
set the LR_parameter to the button returned of the result
--Ende DIALOG5 _________________________


--Start DIALOG6: Letzte Sicherheitsabfrage __________________________________________
display dialog "Alle Angaben okay? Kanns losgehen?" --LETZTE ABFRAGE
--Ende DIALOG6 _________________________


set namensanhang to titel_name & output_name & huelsen_name -- namen zusammensetzen
set selection to (every file in AktuellerOrdner) -- dateien im Ordner auswählen
end tell

tell application "Finder" to tell selection -- Numerierung Version1 beginnen (wenn anzahl_bahnen = 1)
if anzahl_bahnen is 1 then
tell its item named "x" to set name to "01a_" & namensanhang
tell its item named "x.1" to set name to "01i_" & namensanhang
if (file "x.2" exists) is true then
tell its item named "x.2" to set name to "02a_" & namensanhang
tell its item named "x.3" to set name to "02i_" & namensanhang
end if
if (file "x.4" exists) is true then
tell its item named "x.4" to set name to "03a_" & namensanhang
tell its item named "x.5" to set name to "03i_" & namensanhang
end if
if (file "x.6" exists) is true then
tell its item named "x.6" to set name to "04a_" & namensanhang
tell its item named "x.7" to set name to "04i_" & namensanhang
end if

... -- usw.

if (file "x.78" exists) is true then
tell its item named "x.78" to set name to "40a_" & namensanhang
tell its item named "x.79" to set name to "40i_" & namensanhang
end if
end if


if anzahl_bahnen is 2 then -- Numerierung Version2 beginnen (wenn anzahl_bahnen = 2)
tell its item named "x" to set name to "01aa_" & namensanhang
tell its item named "x.1" to set name to "01ai_" & namensanhang
if (file "x.2" exists) is true then
tell its item named "x.2" to set name to "01ba_" & namensanhang
tell its item named "x.3" to set name to "01bi_" & namensanhang
end if
if (file "x.4" exists) is true then
tell its item named "x.4" to set name to "02aa_" & namensanhang
tell its item named "x.5" to set name to "02ai_" & namensanhang
end if
if (file "x.6" exists) is true then
tell its item named "x.6" to set name to "02ba_" & namensanhang
tell its item named "x.7" to set name to "02bi_" & namensanhang
end if

... -- usw.

if (file "x.78" exists) is true then
tell its item named "x.78" to set name to "20ba_" & namensanhang
tell its item named "x.79" to set name to "20bi_" & namensanhang
end if
end if


if the LR_parameter is "JA" then -- Dateien in Subfolder Links + Rechts verschieben (wenn LR_parameter = JA)
make new folder at AktuellerOrdner with properties ¨
{name:"Links"}
make new folder at AktuellerOrdner with properties ¨
{name:"Rechts"}
duplicate every file of AktuellerOrdner to folder "Links" of AktuellerOrdner
move every file of AktuellerOrdner to folder "Rechts" of AktuellerOrdner

set zaehlerende to (count items in folder "Links" of AktuellerOrdner) -- L- bzw. R- im Namen voranstellen
repeat with zaehler from 1 to zaehlerende -- Dateischleife
set name of file zaehler of folder "Links" of AktuellerOrdner to "L-" & name of file zaehler of folder "Links" of AktuellerOrdner
set name of file zaehler of folder "Rechts" of AktuellerOrdner to "R-" & name of file zaehler of folder "Rechts" of AktuellerOrdner
end repeat -- nächste Datei im Ordner
end if


end tell
end open
_______________________________________________________


so, und statt der 6 Standard-Addition-Dialoge wollte ich nun diesen Dialog einsetzen:
(nur damit läufts nicht, und ich habe keine Ahnung warum. Vermutlich liegt der Fehler
schon im "alten Script")

_______________________________________________________
set theDialog to {size:{370, 170}, style:standard window, closeable:true, name:"Ausschiess-PSe umbenennen", default item:6, contents:{¨
{class:group box, name:"P oder D", bounds:{5, 15, 130, 80}}, ¨
{class:radio button, bounds:{14, 35, 118, 51}, name:"ein P", value:true}, ¨
{class:radio button, bounds:{14, 57, 114, 73}, name:"ein D", value:false}, ¨
{class:group box, name:"Numerierung", bounds:{135, 15, 240, 80}}, ¨
{class:radio button, bounds:{146, 35, 231, 51}, name:"Vers. 1", value:true}, ¨
{class:radio button, bounds:{146, 57, 231, 73}, name:"Vers. 2", value:false}, ¨
{class:group box, name:"L + R einr.", bounds:{251, 15, 350, 80}}, ¨
{class:radio button, bounds:{262, 35, 342, 51}, name:"NEIN", value:true}, ¨
{class:radio button, bounds:{262, 57, 342, 73}, name:"JA", value:false}, ¨
{class:text field, bounds:{19, 101, 223, 120}, value:"Kurztitel"}, ¨
{class:push button, bounds:{285, 138, 355, 158}, name:"Okay"}, ¨
{class:push button, bounds:{193, 138, 273, 158}, name:"Abbrechen"}}}

dd auto dialog theDialog with fonts {name:"Charcoal", size:12} with grayscale

set MyDialogResult to result

if item 2 of MyDialogResult is true then -- Dialog auswerten:  P oder D
set output_name to "-P"
else
set output_name to "-D"
end if


if item 5 of MyDialogResult is true then -- Dialog auswerten:  Numerierung 1 oder 2
set anzahl_bahnen to "1"
else
set anzahl_bahnen to "2"
end if


if item 8 of MyDialogResult is true then -- Dialog auswerten:   L + R einrichten?
set LR_parameter to "NEIN"
else
set LR_parameter to "JA"
end if

set titel_name to item 10 of MyDialogResult
set huelsen_name to "H"
set namensanhang to titel_name & output_name & huelsen_name
_______________________________________________________

Ausserdem wäre ich sehr sehr dankbar, wenn ich mit dem Thema "Dateien ausdrucken + löschen" keine Monologe mehr führen müsste. Vielleicht nimmt sich ja jemand auch dieser Sache einmal an. Ich wäre auch mit einem Hinweis, dass das alles hoffnungslos ist, zufrieden Wink
_________________
- anholn deit kriegen -
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 19.09.2001 - 00:15    Titel: DialogStudio-Dialog läuft nicht Antworten mit Zitat

Hallo Holli,

einen kleinen Unterschied habe ich gerade bemerkt.

Im alten Script hieß es:

display dialog "Numerierung ..." buttons { "Version 2", "Version 1" } default button 2
set bahn_parameter to button returned of the result
if bahn_parameter is "Version 1" then
set anzahl_bahnen to 1
else if the bahn_parameter is "Version 2" then
set anzahl_bahnen to 2
end if


In der Variablen "anzahl_bahnen" befand sich also ein Zahlenwert.

Im Dialog Director Skript steht:

if item 5 of MyDialogResult is true then -- Dialog auswerten: Numerierung 1 oder 2
set anzahl_bahnen to "1"
else
set anzahl_bahnen to "2"
end if


Dadurch dass "1" und "2" in Anführungszeichen stehen, handelt es sich um einen Textwert.

Du kannst das folgendermaßen überprüfen:

if item 5 of MyDialogResult is true then -- Dialog auswerten: Numerierung 1 oder 2
set anzahl_bahnen to "1"
else
set anzahl_bahnen to "2"
end if
log class of anzahl_bahnen

Durch das log-Kommando wird im Eventprotokoll der Datentyp angezeigt. In diesem Fall *string*

In deinem alten Skript hingegen steht *integer*

Falls das noch nicht alles war, wäre es nicht schlecht, wenn du beschreiben könntest, wie sich der Fehler auswirkt. Fehlermeldung oder was?
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com


Zuletzt bearbeitet von Snow am 01.03.2003 - 15:06, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 19.09.2001 - 21:11    Titel: DialogStudio-Dialog läuft nicht Antworten mit Zitat

Hallo Snow
Du bist doch der allerbeste. Du hast es voll getroffen! Tüttel raus, und schon ging das Script ab wie 'ne Tüte Mücken Wink)
Vielen Dank, dass du dich durch das Script gewühlt hast. Ik könnt Dir echt knutschen!!! Ich hatte schon stundenlang herumgedoctort, bin aber nich auf den Trichter gekommen. Der mittlere Teil des Scriptes wurde durch den Fehler einfach nicht abgearbeitet, weil die Bedingung ja schließlich nicht erfüllt waren. Also, du hast mich wirklich glücklich gemacht!!

Da hab ich gleich noch eine Bitte an Dich: Ich hab schonmal das Thema Dateien drucken + Löschen gepostet. Vielleicht kannst du mir da auch mal 'nen Schubs geben!? Es geht darum, PDFs auszudrucken (auf einen bestimmten Drucker mit bestimmten Einstellungen: Duplexdruck, A3 oder A4) Den Wechsel zwischen den Druckern könnte ich dadurch organisieren, das ich 2 gescriptete Eingangsordner anlegen könnte (ein A4 / ein A3). Das Problem sind aber die Druckdialoge, die sich ja anscheinend nicht scripten lassen, oder? Ich könnte mit auch mit einem QuicKey helfen, aber das Script wartet leider nicht ab, bis der QuicKey abgearbeitet ist, da es dies natürlich nicht kontrollieren kann, und QuicKey selbst ist ja auch nicht scriptfähig. Vielleicht haste ja einfach mal 'nen anderen Ansatz!?
Vielen Dank
_________________
- anholn deit kriegen -
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Jens Hoffmann
•--->
•--->


Anmeldedatum: 07.05.2001
Beiträge: 175

BeitragVerfasst am: 20.09.2001 - 10:09    Titel: DialogStudio-Dialog läuft nicht Antworten mit Zitat

Zitat:
Ich könnte mit auch mit einem QuicKey helfen, aber das Script wartet leider nicht ab, bis der QuicKey abgearbeitet ist, da es dies natürlich nicht kontrollieren kann, und QuicKey selbst ist ja auch nicht scriptfähig.

Hallo iScript
Mit dem Druckproblem ansich kann ich Dir leider nicht helfen, aber da Du QuickKey und AppleScript erwähnst: Es gibt ein anderes Tool namens KeyQuencer, mit dem Du AppleScripte aus den Makros aufrufen und umgekehrt aus AppleScripten KeyQuencer-Makros ausführen lassen kannst. Ob sich Dein Druckdialog damit steuern lässt, hängt von seinem Aufbau ab. Generell kannst Du mit KeyQuencer jede Eingabe automatisieren. z.B. ein Makro wartet bis ein Bestätigen-Dialog aufpoppt und klickt dann auf OK oder sonstwas usw. Du kannst Eingaben in Textfelder machen, aus (Popup-)Menüs auswählen oder eben warten bis ein AS abgearbeitet ist um dann im Makro fortzufahren, das am Ende wieder ein AS aufruft. Leider gibt's die Anleitung nur in Englisch und die Programmierung ist nicht ganz einfach, aber eben sehr weitreichend.
Die Shareware gibt es unter http://www.binarysoft.com/

Grüße, Jens
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 20.09.2001 - 18:40    Titel: DialogStudio-Dialog läuft nicht Antworten mit Zitat

Hi, Jens!
Danke für den Tip. Ich werd' mir das mal anschauen. Mit QuickKeys hätte ich natürlich auch die Möglichkeit, nach der Abarbeitung wiederum ein anderes Script aufzurufen. Leider sind Solche Lösungen ja etwas instabil auf äußere Einflüsse. Schade eigentlich, das Druckdialoge nicht scriptfähig sind. Ich halte Druckdialog sowieso generell und unnötigerweise für zu kompliziert. Wenn man in der Druckvorstufe tätig ist, begegnet man unzähligen Problemen im PostScript nur deshalb, weil die Bedienung der Druckeinstellungen einfach zu kompliziert sind. In der Windowswelt siehts da natürlich nicht anders aus, aber schade, dass Apple oder Adobe das nicht besser hinbekommen. Die Schnittstellen sind einfach nicht klar genug definiert/strukturiert.
So, dann erst mal vielen Dank! Ich lass meine vorige Frage aber trotzdem nochmals offen (hat jemand Snow gesehen? Smile
_________________
- anholn deit kriegen -
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 25.09.2001 - 11:59    Titel: DialogStudio-Dialog läuft nicht Antworten mit Zitat

Hallo Jens!
Der Tipp mit dem Programm "KeyQuencer" war 'ne Supersache. Das Tool ist eine hervorragende Ergänzung zu AppleScript, um Dialoge und dergleichen aus dem AS heraus zu steuern. Man braucht nicht einmal zwischen den Programmen hin-und-her zu hoppen. Ein einfacher tell-Aufruf aus dem AS reicht, um eine komplette KeyQuencer-Action ablaufen zu lassen. end tell, und schon kann's weitergehen im Script. Hervorragende Sache.
Hier ein Beispiel, um den richtigen Drucker u. das richtige Papierformat vor dem Drucken auszuwählen:

on adding folder items to this_folder after receiving added_items
tell application "Finder"
activate
set ThePDFFile to (files of this_folder whose name ends with ".pdf")
select ThePDFFile
set label index of selection to 2
open ThePDFFile
end tell

tell application "KeyQuencer Engine"
DoScript ¨
"
Wait 1 ticks
Open apple \"Auswahl\"                -- Auswahl öffnen
WaitApp \"Auswahl\"                   -- wait for Application
Type \"PSPrinter 8.3.1-D\"            -- LaserWriter auswählen
Key cmd \"w\"                         -- Auswahl schliessen
Button 1                              -- Druckerwechsel bestätigen
SwitchApp \"Acrobat\" partial         -- zu Acrobat wechseln
WaitApp \"Acrobat\" partial           -- wait for Application
Menu \"Datei\" \"Seiten\" partial     -- Seiteneinrichtung aufrufen
PopUpMenu button 5 \"A4\"             -- A4 einstellen
PopUpMenu button 6 \"1 Sei\"  partial -- 1 Seite einstellen
Type \"100\"                          -- 100 Prozent einstellen
Click screen 498 160                  -- Hochformat einstellen
Button 1                              -- mit OK bestätigen
"
end tell

Das war genau das, was ich brauchte. Vielen Dank Jens!
_________________
- anholn deit kriegen -
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter