1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

"display dialog.." mit countdown timer???

Dieses Thema im Forum "AppleScript" wurde erstellt von vacuouslytrue, 04.08.05.

  1. Hallo zusammen,

    ich bin beim Schreiben eines Applescriptes auf folgendes Problem gestossen:

    Mit "display dialog... giving up after..." kann man ja einen default button angeben, der nach einer vorgegebenen Anzahl von Sekunden gewaehlt wird. Jetzt wuerde ich dem Nutzer gerne in der Dialogbox mitteilen, wie lange er noch Zeit fuer die Eingabe hat. Dies wuerde ich gerne genau so realisieren wie beim Shutdown-Dialogfenster, also dass z.B. 2 Minuten rueckwaerts gezaehlt werden. Selbst nach langem Googlen bin ich auf keinen gruenen Zweig gekommen.
    Es scheint so, als koennte eine Dialogbox nur statische Dinge anzeigen, aber keine dynamische Veraenderung von Sekunden z.B.

    Wie koennte man das realisieren???

    Ich bin fuer jede Hilfe dankbar.

    Viele Gruesse!
     
  2. pi26

    pi26 Adams Parmäne

    Dabei seit:
    17.12.04
    Beiträge:
    1.297

    Zu dieser Frage vielleicht einmal ein paar grundsätzliche Bemerkungen, weil auch einige andere hier sich immer wieder die Fertiglösung innerhalb von Applescript wünschen:


    1. Dein Problem ist wohl nur über eine Applescript-Applikation (siehe in XCode) sauber lösbar, es sei denn du startest eine Schleife, die wiederholt einen Dialog mit reduzierter Zeitangabe aufruft...
    2. Applescript ist genial für systemweite und applikationsübergreifende Programmierung
    3. Aber, wer hohe fixe Ansprüche an eine Benutzeroberfläche bei flacher Lernkurve haben möchte sollte IMHO zu Realbasic greifen. Übrigens ohne auf die unter 2. genannten Stärken zu verzichten, weil aus Realbasic auch der Aufruf von Applescript möglich ist.
    4. Wer programmieren lernen will, braucht in erster Linie kreative Ideen für Programme.
    5. Wer Angst hat wegen irgendeiner Programmiersprache keine "richtigen Programme" schreiben zu können erfüllt Punkt 4 nicht
    6. Wer aus seinem jeweils aktuellen Wissen, und sei es noch so bescheiden, ein nützliches Programm zu machen versucht und dabei weiterlernt ist auf dem richtigen Weg.
    7. Wer Schrott verkaufen kann fährt auch nicht schlecht - wie die Geschichte zeigt :p

    mfg pi26 ;)
     
    #2 pi26, 05.08.05
    Zuletzt bearbeitet: 05.08.05
    Skeeve gefällt das.
  3. Tekl

    Tekl Fairs Vortrefflicher

    Dabei seit:
    01.06.05
    Beiträge:
    4.622
    Kann man mit RealBasic eigentlich AppleScript komplett ersetzen? Also kann ich damit z.B. auch Apple Mail fernsteuern? Mit der AppleScript Syntax komme ich nämlich überhaupt nicht klar. Zwar verstehe ich die Quelltexte, da sie gut lesbar sind, aber oft stehe ich vor'm Berg, weil ich nicht weiß wie etwas genannt wird.
     
  4. the x-master

    the x-master Riesenboiken

    Dabei seit:
    29.01.06
    Beiträge:
    290
    Hallo vacuouslytrue,

    ich kenne mich zwar nicht mit RealBasic aus, denke trotzdem, dass ich dir helfen kann.
    Es gibt zwar eine AppleScript Lösung, die aber nicht so schön aussieht.
    Also füge das hier mal in den Skripteditor ein:

    Code:
     property theTime : 60
    
    repeat while theTime is not 0
    	
    	set the1 to display dialog "Sind Sie sicher, dass sie den Computer ausschalten wollen ?
    	
    Falls Sie sich nicht entscheiden, wird der Rechner automatisch in " & theTime & " Sekunden ausgeschaltet" with icon caution giving up after 1 buttons {"OK"} default button 1
    	if button returned of the1 is "OK" then
    		display dialog "Entscheidung getroffen... - der Rechner wird ausgeschaltet..." buttons {"OK"} default button 1
    		exit repeat
    		set theTime to 0
    	end if
    	
    	
    	set theTime to theTime - 1
    	
    end repeat
    
    -- Hier fügst du ein, was passieren soll, wenn man den Okay Button gedrückt oder die Zeit abgelaufen ist


    Dann habe ich hier noch eine andere Lösung, die aber etwas umfangreicher ist.

    Lade dir zuerst das angehängte Programm (ganz unten) herunter und probiere es aus !

    Wenn du clever bist, dann guckst du dir das hier mal genauer an:

    Also falls du Xcode (Developer Tools) nicht hast, dann lade sie dir von der Apple Homepage herunter, oder von der System CD (Tiger).
    AppleScript Studio (AppleScript + Xcode) ist eigentlich wie die Programme beim Skripteditor, AUSSER ;) - du kannst ein richtiges Interface, also ein richtiges Fenster damit erstellen.
    Dieses Fenster kann dann natürlich verschiedene TextFelder enthalten. Also auch ein zweites Text Feld mit den Sekunden.
    Ich habe mal solch ein Programm erstellt. Guck' es dir mal an und dann kannst du dir auch noch das Projekt dazu angucken.

    Xcode Fenster

    Also das Bild (Xcode Fenster) ist das Standard Xcode Fenster. Dort sind alle Komponenten deines Programms drin.
    Was rot gekennzeichnet ist, das fehlt. Bei dem Programm (Countdown.app) muss das ja so sein, denn ich habe noch nicht auf den Hammer (Build) gedrückt. Sobald du das tust, wird das Programmierte Programm erstellt. (.app).
    Dann ist dort noch eine Datei, die nennt sich MainMenu.nib (English), das ist die Interface Datei. (Interface)
    In dieser Datei kannst du alle Sachen ändern (Buttons, Text Felder, Sämtliche Namen, Name des Programms selber, etc)...

    So - nun ist also das Interface zusammengestellt. Jetzt muss noch alles programmiert werden ;)
    Auch nicht schwer. Das geht so. Zuerst musst du jedem Objekt seinen AppleScript Namen geben, denn wie sollst du sonst die Buttons oder Text Felder beim Programmieren ansprechen ?
    Festlegen des AppleScript Namens des 'Neustarten - Buttons
    Du rufst dieses Fenster zum Festlegen des AppleScript Namen auf, indem du Shift + Apfel (Command) + I drückst. Dort ist dann eine Spalte und bei der wählst du AppleScript. (Geht auch über Apfel + 8).
    Wenn du das also noch für den zweiten Button (Abbrechen) tust und für das Sekunden Text Feld, dann kann man mit dem Programmieren anfangen. Ach ja, auch nicht vergessen, dem Hauptfenster einen AppleScript Namen zu geben.
    Ist auch nicht soo schwer. Also du schließt dann die Interface Datei und öffnest die AppleScript Datei...(Countdown.applescript). Dort kannst du jetzt wie gewohnt den Code reinschreiben nur was für eine Verbindung hat das dann mit dem Interface. Also musst du etwas (falls du es nicht schon weißt) dazulernen.
    Hier ist das Bild des Codes, den ich überall erklärt habe. Experimentiere einfach mal mit dem Code und Xcode herum. Das kannst du natürlich erst, wenn du das Projekt hast. Das kommt noch. Ach ja, lade das Bild mal herunter. Das ist besser, denn im Browser kannst du das alles nicht so gut erkennen.
    Code

    So - hier ist das Xcode Projekt, wo alles drin ist, was ich eben erklärt habe:
    Xcode Projekt

    Falls du noch irgendwelche Fragen zu dem Projekt hast, dann frage einfach hier nochmal ;). Es kann sein, dass es jetzt anfangs ein wenig schwer klingt, aber wenn man ein wenig experimentiert, kommt man dahinter.
    Ich hoffe, dass ich dir helfen konnte.

    Grüße,
    X.

    P.S. Bitte warte kurz, bis die Bilder geladen sind, denn mein Server ist im Moment nicht der Schnellste :-[
     

    Anhänge:

    #4 the x-master, 05.02.07
    Zuletzt bearbeitet: 06.02.07
  5. chrisbau

    chrisbau Gast

    .xcode oder Bilder zum Download?

    Hallo X-Master,

    deine Anmerkungen zu X-Code haben mich sehr neugierig darauf gemacht. Ich habe eine Reihe kleinerer AppleScripts und hoffte nun, einige Unzulänglichkeiten mit X-Code ausbügeln zu können.

    Z.B. habe ich ein Script, das einen Timer (mit anschließendem Sleep-Befehl) bereitstellt, jede Aktualisierung der verbliebenen Zeit holt das Script jedoch in den Vordergrund bzw. lässt das Icon im Dock hüpfen. Dein Countdown-Programm sieht da schon sehr viel besser aus.

    Ich bin jedoch kläglich gescheitert bei dem Versuch, mittels X-Code aus dem Script ein Programm zu basteln. Die verlinkten Bilder sind nicht abrufbar, kannst du die noch mal online stellen? Und vielleicht auch das gesamte xcode-Projekt, sodass ich direkt in einer funktionierenden Vorlage probieren kann?

    Viele Grüße,
    Christoph
     

Diese Seite empfehlen