• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Wir haben den Frühjahrsputz beendet, Ihr auch? Welches Foto zu dem Thema hat Euch dann am Besten gefallen? Hier geht es lang zur Abstimmung --> Klick

Progress-Balken mit Cancel-Funktion

Sese42

Erdapfel
Registriert
23.07.12
Beiträge
1
Hallo zusammen,

ich hab' letztens begonnen in Xcode 4 mit Cocoa Applescript zu programmieren. Dabei bin ich auf folgendes Problem gestoßen, für das ich leider keine Lösung habe:

Das folgende Script funktioniert in dem Sinne, dass man den Start-Button (linked mit clickedStart_(...)) drückt, ein Prozess startet und der Progress-Balken "myProgressBar" läuft.

Was nicht klappt ist, dass sich während der Repeat-Schleife der Cancel-Button (linked mit clickedStop_(...)) drücken ließe um den Process vorzeitig abzubrechen. Beide Buttons ("Start" und "Cancel") sind nach einmaligem Drücken von "Start" eingefroren. Erst wenn der Prozess zu Ende ist, kann man wieder einen Button drücken :(

Was mache ich falsch? Wie kann ich einen Prozess im Hintergrund laufen lassen, dessen Fortschritt über den Progress-Balken angezeigt wird, und der sich nahezu jederzeit über den Cancel-Button abbrechen lässt?

Danke im Voraus für Eure Hilfe, Sese :)

Code:
--  Cocoa Applescript Application
--
--  AppDelegate.applescript
--  SimpleProgressBar
--

script AppDelegate
    property parent : class "NSObject"
    property myProgressBar : missing value
    property myPleaseStop : false
    
    on myRun_()
        -- init
        set myProgressBar's isIndeterminate to false
        myProgressBar's setMinValue_(0)
        myProgressBar's setMaxValue_(100)
    end myRun_
    
    on clickedStop_(aNotification)
        -- set stop flag
        set myPleaseStop to true
    end clickedStop_
    
    on clickedStart_(aNotification)
        -- start progress
        set myPleaseStop to false
        repeat with myCounter from 1 to 5
            myProgressBar's incrementBy_(20.0)
            delay 2
            if myPleaseStop is true then exit repeat
        end repeat
    end clickedStart_
    
    
    on applicationWillFinishLaunching_(aNotification)
        -- Insert code here to initialize your application before any files are opened 
        myRun_()
    end applicationWillFinishLaunching_
    
    on applicationShouldTerminate_(sender)
        -- Insert code here to do any housekeeping before your application quits 
        return current application's NSTerminateNow
    end applicationShouldTerminate_
    
end script