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

window-aufruf aus droplet (on open-handler)
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Studio Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 29.04.2006 - 23:13    Titel: window-aufruf aus droplet (on open-handler) Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 02.05.2006 - 13:00    Titel: Antworten mit Zitat

Hm, wirklich faszinierend Shocked
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
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 02.05.2006 - 13:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 02.05.2006 - 15:13    Titel: Antworten mit Zitat

Ach so Smile
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 Very Happy

CU
ShooTerKo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 04.05.2006 - 09:04    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 04.05.2006 - 10:48    Titel: Antworten mit Zitat

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 Rolling Eyes

CU
ShooTerKo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 04.05.2006 - 23:15    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 05.05.2006 - 09:57    Titel: Antworten mit Zitat

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. Cool
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. Wink

CU
ShooTerKo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 05.05.2006 - 10:12    Titel: Antworten mit Zitat

Ach so, prefWindowOpened sollte natürlich global oder property oä. sein.

CU
ShooTerKo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 05.05.2006 - 10:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 05.05.2006 - 12:55    Titel: Antworten mit Zitat

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 Sad
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... Embarassed
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... Confused
Ach, so richtig schön ist das alles nicht Mad

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 Rotz und Wasser heulen )

CU
ShooTerKo Rotz und Wasser heulen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 05.05.2006 - 13:25    Titel: Antworten mit Zitat

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.eins auf die Fresse
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 05.05.2006 - 14:07    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
ShooTerKo
•--->
•--->


Anmeldedatum: 21.03.2006
Beiträge: 221
Wohnort: Hamburg

BeitragVerfasst am: 05.05.2006 - 14:08    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 06.05.2006 - 23:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Studio Forum Alle Zeiten sind GMT + 2 Stunden
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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