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

Drag&Drop innerhalb von ASStudio(Xcode)
Gehe zu Seite 1, 2  Weiter
 
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-Studio Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
prof_hastig
•->
•->


Anmeldedatum: 29.01.2004
Beiträge: 9

BeitragVerfasst am: 29.01.2004 - 21:14    Titel: Drag&Drop innerhalb von ASStudio(Xcode) Antworten mit Zitat

Hallo,

sitze gerade an meiner ersten ASS Application. Stehe for folgendem Problem:

Was für ein Item, muss ich wählen, wenn Benutzer innerhalb des Progs dateien in ein Fenster ziehen sollen und welchen eventHandler muss ich dann setzen?

Muss ich bei dem dazugehörenden Skript auch zusätzlich den Code benutzen, den ich bei einem Droplet benutze oder kann ich die Variable theObject direkt weiter verwursten?

Macht es in so einem Fall dann einen Unterschied, wenn ich 1 File(Datei oder Ordner) oder mehrer Files habe?

Danke für eure Hilfe
ph
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 30.01.2004 - 15:38    Titel: Antworten mit Zitat

Hallo prof_hastig,

hast du dir das mitgelieferte Beispiel "Drag and Drop" schon angesehen?
In dem Beispiel werden folgende Items verwendet: table, button, ImageView, TextField

Du brauchst zumindest den "on drop" Handler. In allen Beispielscripten wird auch "on awake from nib" verwendet. Dort werden die Datentypen festgelegt, auf die das jeweilige Item reagieren soll.

Zitat:
Muss ich bei dem dazugehörenden Skript auch zusätzlich den Code benutzen, den ich bei einem Droplet benutze oder kann ich die Variable theObject direkt weiter verwursten?


Solange du nur ein Item als "Drop-Zone" verwendest, dürfte die Verwendung von theObject kein Problem sein. Sobald mehrere Items dropable sind, könnte ich mir vorstellen, dass es zu Problemen kommen könnte.

Zitat:
Macht es in so einem Fall dann einen Unterschied, wenn ich 1 File(Datei oder Ordner) oder mehrer Files habe?


Es wird immer eine Liste übergeben. Wenn du nur eine Datei drauf ziehst, enthält die Liste eben nur einen Eintrag. Du musst natürlich dafür sorgen, dass entweder nur das erste (gedroppte) Item verarbeitet wird oder - wo es Sinn macht - die ganze Liste abgearbeitet wird.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
prof_hastig
•->
•->


Anmeldedatum: 29.01.2004
Beiträge: 9

BeitragVerfasst am: 30.01.2004 - 15:56    Titel: Antworten mit Zitat

Da hab ich ja ausreichend Material zum studieren ;-)

Eine Frage noch, macht es einen Unterschied(von der Anzahl der files abgesehen) ob es sich um files oder folders handelt, oder werden die gleich behandelt?

Vielen Dank
ph
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 30.01.2004 - 16:56    Titel: Antworten mit Zitat

Files, Folder oder gar Volumes werden anscheinend alle gleich behandelt.
Im Beispiel-Script "Drag and Drop" hat es auf jeden Fall geklappt. Im Script selbst ist nirgends eine Überprüfung bzw. Unterscheidung zu sehen, also wird wohl erst gar kein Unterschied gemacht.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
prof_hastig
•->
•->


Anmeldedatum: 29.01.2004
Beiträge: 9

BeitragVerfasst am: 30.01.2004 - 16:58    Titel: Antworten mit Zitat

Alles klar, vielen Dank
ph
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BleedingMoon
•->
•->


Anmeldedatum: 17.10.2004
Beiträge: 18

BeitragVerfasst am: 28.10.2004 - 13:36    Titel: Antworten mit Zitat

Hallo zusammen,
ich hänge auch gerade bei einem Drag&Drop Problem.
Und zwar möchte ich es schaffen, dass man einen Ordner auf meine Applikation ziehen kann und dass danach der Ordner Pfad angezeigt wird und später mit dem Ordner eine bestimmte Aktion durchgeführt werden kann.
Das Drag&Drop-Beispiel hab ich mir angeschaut und auch teilweise übernommen.
Ich hab nun folgenden Code:
Code:

on drop theObject drag info dragInfo
   if "file names" is in types of pasteboard of dragInfo then
      set theFiles to {}
      set preferred type of pasteboard of dragInfo to "file names"
      set theFiles to contents of pasteboard of dragInfo
         repeat with theItem in theFiles
            log (theItem)
               set theItem to theItem as alias   
               chooseFolder(theItem)
         end repeat
....


So, das Problem ist nun, dass ich bei log(theItem) den normalen Ordnerpfad angezeigt bekomme. DAs ist soweit OK. Wenn ich jetzt allerdings mit "theItem" eine Ordneraktion chooseFolder ausführen will, wird mir immer angezeigt, dass die Datei(!) nicht gefunden werden kann. Deshalb habe ich auch aus snows Tutorial die Zeile "set theItem to theItem as alias " übernommen, aber das geht auch nicht.

Das eigentliche Problem ist halt, dass ich leider noch nicht weiß, wie die Daten in "pasteboard" übergeben werden und wie man die genauer ansprechen kann.

Ich hoffe ich konnte mein Problem anschaulich erklären und dass mir jemand helfen kann.

Ach ja,
an der Methode chooseFolder liegt es nicht, da ich auch noch diesen Aufruf hier in meinem Programm verwende:
Code:

      set FileFolder to (choose folder)
      chooseFolder(FileFolder)



Und da geht alles reibungslos


Naja zur Vollständigkeit halber, den chooseFolder inhalt noch:

Code:
on chooseFolder(selectedFolder)
   set theFileList to selectedFolder as list
   tell window "mainWindow"
      set the contents of the text field "folderField" to selectedFolder
   end tell
   set noFolderChoosen to 0
end chooseFolder


Mit theFileList arbeite ich später dann noch weiter.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 28.10.2004 - 18:40    Titel: Antworten mit Zitat

Sollen die Dateien bzw. Ordner auf das Programm-Icon gezogen werden? Dann bist du in diesem Thread falsch.
Hier geht es darum, Dateien oder Ordner auf ein Objekt des bereits geöffneten Programmfensters zu ziehen.

Falls es also darum geht, eine Droplet/Applet-Kombination zu erstellen, lies dir meinen gleichnamigen Workshop-Artikel durch. Du findest dort auch einen Link zu einem Beispiel-Projekt.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
BleedingMoon
•->
•->


Anmeldedatum: 17.10.2004
Beiträge: 18

BeitragVerfasst am: 28.10.2004 - 18:46    Titel: Antworten mit Zitat

Hi Snow!
Ne, das Programm ist schon offen!
Es enthält ein Textfeld, in das man entweder per choose Folder den entsprechenden Ordner auswählen kann oder eben per Drag&Drop aus nem Finder-Fenster (also so ist es gedacht)

Eine Droplet/Applet-Applikation soll es also im Moment nicht darstellen.

Um vielleicht mein Problem genauer zu erklären:
Ich zieh in das bereits offene Programm einen Ordner und in der übergebenen pasteboard-Variablen (oder was weiß ich, was das genau ist)
steht auch der Pfad von diesem Ordner.
Nun kann ich allerdings NICHTS mehr mit diesem Wert anfangen, als ihn in das NStextfield zu schreiben. Wenn ich mit diesem Ordner "arbeiten" will kommt sofort immer die Meldung, dass der Ordner/Datei nicht gefunden werden kann.
Dabei hab ich schon versucht diesen Wert als string und als alias zu übergeben und was weiß ich, aber immer mit dem selben Ergebnis ;-(
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 28.10.2004 - 19:06    Titel: Antworten mit Zitat

Ich habe mir eben nochmal das Droplet-Example angesehen. Wenn ich dort eine Datei oder einen Ordner in das 'Files'-Fenster ziehe, sind die dort angezeigten Pfade auch unvollständig.

Sie beginnen alle mit "/Users/....."

Wenn du so eine bescheidene Pfadangabe zu etwas Nützlichem machen willst, probiere mal folgendes:

-- folgende Zeile simuliert die chaotische Pfadübernahme
set Pfadtext to "/Users/snow/Desktop/Rechenspiel.app"

set derPfad to POSIX file Pfadtext

Das Ergebnis ist eine Referenz in der Form:

file "X Disk:Users:snow:Desktop:Rechenspiel.app"
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
BleedingMoon
•->
•->


Anmeldedatum: 17.10.2004
Beiträge: 18

BeitragVerfasst am: 28.10.2004 - 19:29    Titel: Antworten mit Zitat

Danke für den Hinweis. Gleich bei mir eingebaut , doch allerdings bekomm ich dann genau bei dieser Zeile nen AppleSript-Fehler (CannotCreateScriptError irgendwas) (also ich will auch Ordner auswählen und nicht Dateien, falls es daran liegen sollte)

Und ich hab auch nochmal den Pfadwert angeguckt, wenn man zum Beispiel einen Ordner per "choose Folder" auswählt, da bekommt man dann auch einen Pfad in der "bescheidenen" Form raus.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 28.10.2004 - 20:42    Titel: Antworten mit Zitat

Versuche mal die unvollständige Pfadangabe mit 'as string' zuerst in einen normalen Textwert umzuwandeln. Ich nehme an, innerhalb der Table-Row ist das Unicode-Text. Evtl. führt dies zu dem Fehler.

Ich gebe zu, ich rate hier nur herum. AppleScript Studio habe ich vor zwei Jahren mal etwas ausprobiert - das war's dann auch schon.
Im Prinzip warte ich noch darauf, dass es so intuitiv nutzbar wird, wie es FaceSpan unter OS 9 war.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
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: 28.10.2004 - 22:49    Titel: Antworten mit Zitat

Habe gerade ein Testprojekt von mir gefunden, wo ich dieses Problem schon gelöst hatte.

Der einzige Unterschied, den ich entdecken konnte liegt im Drop-Handler:

repeat with theItem in theFiles
set theItem to (theItem as POSIX file) as string
set theDataRow to make new data row at end of data rows of theDataSource
set contents of data cell "files" of theDataRow to theItem
end repeat

So bekommst du die vollständigen Pfade in die jeweilige Reihe. Wenn du dann später eine Referenz brauchst, genügt es 'alias' vor diesen Wert zu setzen.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
BleedingMoon
•->
•->


Anmeldedatum: 17.10.2004
Beiträge: 18

BeitragVerfasst am: 31.10.2004 - 10:46    Titel: Antworten mit Zitat

Hi!

Nach einigem hin und her hab ichs , dank deinem Vorschlag snow, doch noch hinbekommen. Das Umwandeln per/in "POSIX file" war des Rätsels Lösung.
Vielen Dank nochmal für die Antwort.

Jetzt müßte xCode nurnoch mein angegebenes icon übernehmen und dann wäre die App fertig, aber trotz mehrmaligem Neubooten will xCode das icon nicht übernehmen, obwohl bei "Application Icon" eigentlich das richtige Icon angezeigt wird *grummel*
(Bei ner Test-Objective C App wurde das Icon wenigstens nach einmal Neubooten übernommen)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BleedingMoon
•->
•->


Anmeldedatum: 17.10.2004
Beiträge: 18

BeitragVerfasst am: 07.11.2004 - 04:28    Titel: Antworten mit Zitat

Snow hat Folgendes geschrieben:
Wenn du dann später eine Referenz brauchst, genügt es 'alias' vor diesen Wert zu setzen.


Hi mal wieder Wink

Genau DAMIT habe ich im Moment ein riesen Problem.
Wenn ich mit dem "gePOSIXten" Item später wieder arbeiten und eine Referenz haben will , a la

set choosenItem to (theItem as POSIX file)
...
if kind of alias choosenItem is "Folder" then
blahblah


Hängt sich das Script erstmal für ne halbe Ewigkeit auf und dann brichts mit einer Fehlermeldung ab.

Ist dieses komische Verhalten eventl. bekannt oder mach ich einfach was falsch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BleedingMoon
•->
•->


Anmeldedatum: 17.10.2004
Beiträge: 18

BeitragVerfasst am: 07.11.2004 - 13:04    Titel: Antworten mit Zitat

Ok, also im Moment hab ich wenigstens die Fehlermeldung weg bekommen, aber es dauert immer noch ne halbe Ewigkeit bis das Sript weitermacht. Foldendes hab ich jetzt:


set choosenItem to (theItem as POSIX file)
...
tell application "Finder"
set choosenItem to choosenItem as alias
if kind of choosenItem is "Folder" then
-- aufhänger
blahblah
...
end tell
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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-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