Hi,
ich habe ziemlich frisch mit Object C angefangen (AppleScript- und AppleScriptStudio-Kenntnisse vorhanden). Bei der Programmierung von einem kleinen Tool bin ich auf das folgende Problem gestoßen:
Das Tool hat ein einfaches GUI mit einem Button (Startbutton) und ein paar Textfelder für die Ausgabe. Bei Klicken auf den Start-Button soll der Button mit setEnbaled=FALSE deaktiviert werden, danach sollen paar Terminalbefehle mit NSTask ausgeführt werden und wenn diese Befehle (find, grep usw) durchgelaufen sind, soll der Start-Button wieder aktivi geschaltet werden.
Das Problem ist aber, dass die Terminalbefehle das GUI so sperren, dass die Deaktivierung vom Start-Button nicht dargestellt werden kann. Zur Veranschaulichung des Problems kurz die folgende Methode (Sleep(5) steht als Stellvertreter für die Terminalbefehle):
Meine Erwartung war, dass der Button deaktiviert und erst nach 10 Sekunden wieder aktiviert wird und das ist leider nicht der Fall. Wie könnte ich das Problem aus dem Weg gehen?
Viele Grüße, Scherak
ich habe ziemlich frisch mit Object C angefangen (AppleScript- und AppleScriptStudio-Kenntnisse vorhanden). Bei der Programmierung von einem kleinen Tool bin ich auf das folgende Problem gestoßen:
Das Tool hat ein einfaches GUI mit einem Button (Startbutton) und ein paar Textfelder für die Ausgabe. Bei Klicken auf den Start-Button soll der Button mit setEnbaled=FALSE deaktiviert werden, danach sollen paar Terminalbefehle mit NSTask ausgeführt werden und wenn diese Befehle (find, grep usw) durchgelaufen sind, soll der Start-Button wieder aktivi geschaltet werden.
Das Problem ist aber, dass die Terminalbefehle das GUI so sperren, dass die Deaktivierung vom Start-Button nicht dargestellt werden kann. Zur Veranschaulichung des Problems kurz die folgende Methode (Sleep(5) steht als Stellvertreter für die Terminalbefehle):
Code:
- (IBAction)start:(id)sender {
[myButton setEnabled:FALSE];
sleep(10);
[myButton setEnabled:TRUE];
}
Meine Erwartung war, dass der Button deaktiviert und erst nach 10 Sekunden wieder aktiviert wird und das ist leider nicht der Fall. Wie könnte ich das Problem aus dem Weg gehen?
Viele Grüße, Scherak