Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 29.04.2006 - 23:13 Titel: window-aufruf aus droplet (on open-handler) |
|
|
komme mit xcode nicht so recht klar:
habe mir mit xcode ein AppleScript-Droplet angelegt, ein window mit textfeldern gebastelt, den open-handler des scriptes geschrieben, in dem ich nun das interface, das ich gebastelt habe, unter bestimmten voraussetzungen öffnen will, aber es will nicht.
das droplet an sich läuft, doch wenn ich das fenster aufrufen will mit
open window "Fenstername"
liefert folgenden fehler:
Can't make «class kind» of item 1 of window id 1 into type reference. (-1700)
der aufruf findet im on open-handler statt. ist das okay so? und woran kann's sonst liegen??? _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
ShooTerKo •--->


Anmeldedatum: 21.03.2006 Beiträge: 221 Wohnort: Hamburg
|
Verfasst am: 02.05.2006 - 13:00 Titel: |
|
|
Hm, wirklich faszinierend
Mit Code: | show window "Fenstername" | geht es, schließt man es allerdings händisch, so existiert es für das Droplet nicht mehr, ein weiteres Code: | show window "Fenstername" | läuft dann ins Leere. Eine Abhilfe hierfür wäre Code: | on should close theObject
tell theObject to hide
return false
end should close
| , was für den User ein Schließen simuliert, das Fenster jedoch nur unsichtbar macht, es also weiterhin für den show-Handler verfügbar hält.
Hoffe, dass ich das Problem richtig verstanden habe,
CU
ShooTerKo |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 02.05.2006 - 13:55 Titel: |
|
|
ShooTerKo hat Folgendes geschrieben: | Mit
Code: | show window "Fenstername"
| geht es, schließt man es allerdings händisch, so existiert es für das Droplet nicht mehr, ein weiteres...
... hoffe, dass ich das Problem richtig verstanden habe |
also erst mal vielen dank für deine antwort, aber ich weiss nicht, ob du das problem wirklich richtig verstanden hast?
also bei mir gehts gar nicht mit open window "fenstername". auch nicht beim ersten mal.
nochmal zusammengefasst: ich brauche ein droplet, dass erst mal ohne UI loslegt, und erst bei erfüllung einer bedingung das UI aufmacht, in dem texteingaben gemacht werden.
ich bekomme das prinzipiell nicht hin, bzw. weiss nicht wie ich's machen muss? helf mir bitte mal weiter auf die sprünge. bin noch blutiger xcode-anfänger. _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
ShooTerKo •--->


Anmeldedatum: 21.03.2006 Beiträge: 221 Wohnort: Hamburg
|
Verfasst am: 02.05.2006 - 15:13 Titel: |
|
|
Ach so
Mein Script sieht so aus: Code: | on open names
show window "TestWindow"
end open
on should close theObject
tell theObject to hide
return false
end should close |
Du musst allerdings noch den on should close-Handler mit deinem Script verbinden. Läuft bei mir super
CU
ShooTerKo |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 04.05.2006 - 09:04 Titel: |
|
|
moin, shooterko
jo, sowiet löppt dat nu. das fenster erscheint. ich blick das nur nicht mit den ganzen on-handlern. meine scriptstruktur sieht so aus:
on open names
-- entscheidung welches script laufen soll
if diesunddas = 1 then
run script EINS
else if diesunddas = 2 then
run script ZWEI
end if
-- dann werden noch variablen übergeben
end open
script EINS
on run
-- • hier laufen sachen ab
end run
end script
script ZWEI
on run
-- • hier laufen sache ab
-- • und variablen werden ermittelt aus texten
-- HIER BRAUCH ICH MEINEN DIALOG (UI)
-- • window anzeigen und textfelder befüllen
-- show window "W1"
-- set contents of text field "T1" of window "W1" to VarT1
end run
-- on clicked theObjekt
-- • HIER BESTÄTIGEN + ABBRUCH-BUTTON REIN?
-- end clicked
end script
Das Fenster (mit einigen Textfeldern zum ausfüllen + Bestätigen + Abbruch-Button) erscheint jetzt, aber wo packe ich meine Auswertung der Eingaben rein, wo den OK + CANCEL (on clicked?) rein. ich kann ja keinen handler innerhalb des "on run"-handlers benutzen. und dann wäre da noch so ein -1708-Error, der immer herumnervt, sobald das fenster erscheint!?
Ich weiss: Fragen über Fragen...
(PS: Hatte gehofft, dich mal per AIM zu treffen, da du dich mit XCode ja gut auszukennen scheinst. Hatte aber leider noch kein Glück) _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
ShooTerKo •--->


Anmeldedatum: 21.03.2006 Beiträge: 221 Wohnort: Hamburg
|
Verfasst am: 04.05.2006 - 10:48 Titel: |
|
|
Hi, du baust das Window ja im Interface Builder, dort kannst du dann in der Informationspalette unter "Applescript" die Events aktivieren, die du per Applescript handlen möchtest.
Dort kannst du auch angeben, in welchem Script das passieren soll, meistens (bei kleineren Projekten) das Hauptscript, du hättest aber auch die Möglichkeit, für jedes deiner Fenster ein eigenes Script anzugeben, z.B. zwecks Übersichtlichkeit.
Die Handler kannst du ohne Probleme in dein Hauptscript einbauen. Sie werden ja eh nur verwendet, wenn das mit ihnen verbundene Event ausgelöst wird.
Bei dir also außerhalb der script-Blöcke.
Zu AIM: Ja, ist momentan ein bisschen schwierig, meistens bin ich in der Firma online und da wird chatten nicht so gern gesehen
CU
ShooTerKo |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 04.05.2006 - 23:15 Titel: |
|
|
jupps! supi! danke, danke!
soweit is jetzt alles gut, und der error -1708 ist auch weg, nachdem ich die Title bar controls "Close", "Minimize", "Zoom (and resize)" deaktiviert habe.
jetzt fehlt mir nur noch eines zum glücklich-sein:
wie stelle ich es an, dass mein droplet-script nicht weiterläuft solang das window offen ist. es soll erst fortgefahren werden, wenn die eingaben im UI getätigt sind, und der "Ändern"-button gezündet wird.
die handler für's UI hab ich jetzt im hauptscript liegen.
in meinem unterscript rufe ich das UI auf über
show window
und befülle die textfelder mit variablen.
wie stelle ich's an, dass dieses unterscript jetzt anhält, bis der "ändern"-button im on clicked-handler aktiviert wird? _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
ShooTerKo •--->


Anmeldedatum: 21.03.2006 Beiträge: 221 Wohnort: Hamburg
|
Verfasst am: 05.05.2006 - 09:57 Titel: |
|
|
Eine Möglichkeit, die mir spontan einfällt:
Du verknüpfst den opened-Handler des Windows mit deinem Script und schreibst dort z.B. Code: | set prefWindowOpened to true | und in deinem open-Handler fragst du diesen Parameter ab. Ist prefWindowOpened true, lasse ihn einfach in einer Schleife warten, bis prefWindowOpened wieder false ist um danach wieder mit der Schleife fortzufahren.
Das Code: | set prefWindowOpened to false | könntest du gut im on should close-Handler einfügen, wo du das Fenster ja wieder auf unsichtbar stellst.
CU
ShooTerKo |
|
Nach oben |
|
 |
ShooTerKo •--->


Anmeldedatum: 21.03.2006 Beiträge: 221 Wohnort: Hamburg
|
Verfasst am: 05.05.2006 - 10:12 Titel: |
|
|
Ach so, prefWindowOpened sollte natürlich global oder property oä. sein.
CU
ShooTerKo |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 05.05.2006 - 10:38 Titel: |
|
|
sowas ähnliches hab ich schon probiert:
hauptscript: property weiter : false
clicked handler: weiter wird true, wenn der ändern-button gedrückt wird.
unterscript: repeat while weiter is false
das script ist aber mit der schleife beschäftigt, und das window ist nicht mehr im vordergrund und kann nicht bearbeitet werden (eingaben in die textfelder). _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
ShooTerKo •--->


Anmeldedatum: 21.03.2006 Beiträge: 221 Wohnort: Hamburg
|
Verfasst am: 05.05.2006 - 12:55 Titel: |
|
|
So, wie wir uns das vorstellen, klappt es leider nicht. Einmal im open-Handler angekommen, werden die Befehle in ihm abgearbeitet, die GUI wird erst nach abarbeiten des Handlers wieder angesprochen
Ein möglicher Workaround: Der on open-Handler speichert nur die übergebenen Dateien in eine Liste und sonst nichts. Im idle-Handler prüfst du jede Sekunde, ob in der Liste etwas drinsteht und wenn, dann soll er etwas tun. Aber ach nein, da haben wir ja das gleiche Problem, erstmal in einem Handler drin, arbeitet er ihn auch ab...
Oder folgendermaßen: Im idle-Handler wird immer nur eine Datei abgearbeitet, danach der idle-Handler mit return .5 verlassen. In dieser Zeit müssten die GUI-Events abgearbeitet werden...
Ach, so richtig schön ist das alles nicht
Oder du bist streng mit dem User: Zieht er Dateien aufs Droplet, und es ist dein Window geöffnet, passiert halt nichts. Wenn das Fenster nicht geöffnet ist, soll er die draufgezogenen Dateien abarbeiten, bis er fertig ist, ohne Unterbrechungen zuzulassen (klingt wie Aufgeben, gell )
CU
ShooTerKo  |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 05.05.2006 - 13:25 Titel: |
|
|
das gibt's doch nicht! es muss doch eine möglichkeit geben, egal ob droplet oder as-application, informationen aus dateien zu holen, daraufhin ein UI zu zünden, das einige infos daraus enthält, abzuwarten, bis eingaben getätigt wurden, und wenn mit bestätigen-button ausgelöst wird, die änderungen an den entsprechenden dateien vorzunehmen.
naja, ich check mal weiter ab. aufgeben is noch nich.
für ratschläge aller art bin ich natürlich weiterhin dankbar.
eigentlich hatte ich es auch schon fast. doch dann kam mir wieder ein error -1708 dazwischen.
also danke erstma. _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 05.05.2006 - 14:07 Titel: |
|
|
Hst du es schon mal so probiert, wie ich es in meinem Droplet/Applet-Artikel beschrieben hatte? Der ist zwar schon recht alt und vieles hat sich in der Zwischenzeit verändert - aber vielleicht funktioniert es ja noch genauso wie damals. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
ShooTerKo •--->


Anmeldedatum: 21.03.2006 Beiträge: 221 Wohnort: Hamburg
|
Verfasst am: 05.05.2006 - 14:08 Titel: |
|
|
Du kannst die Optionen / Einstellungen auch per choose from list oder display dialog eingeben lassen, darauf wartet das Script und die Dialoge bekommen den Focus.
Ein normales Window ist halt ein eigenständiges Objekt. Vielleicht kann man es noch als modal definieren?
CU
ShooTerKo |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 06.05.2006 - 23:23 Titel: |
|
|
also erstma danke für's mitgrübeln!
@snow: aber das ist ja nicht so ganz genau mein thema: ich will definitiv ein droplet, aber eben mit UI. ich hatte mir deinen workshop schon vorher mal durchgelesen.
@ShooTerKu: choose from list fällt flach, da ich z.B. Ordner droppen will, in denen dann diverse dateien überarbeitet werden sollen, oder aber auch einzelne files droppen.
und der schnöde "display dialog" geht auch nicht, da ich einen umfangreicheren dialog brauche. allein aus diesem grund schlag ich mich jetzt mit xcode rum. sonst hätte ich's per script-editor gemacht.
aber: irgendwie hab ich schon einen plan b im kopf. da mach ich mich jetzt mal dran, und wenn's klappt meld ich mich. und wenn nicht, natürlich auch _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
|