MVC und ProgressDialoge
Verfasst: Sonntag 13. Juli 2008, 01:10
Hallo,
ich halte mich für gewöhnlich an das MVC-Prinzip, jetzt habe ich aber folgendes Problem:
es gibt ein database-package, darin eine Klasse mit einer Methode, die alle Einträge eines bestimmten Types löschen soll. Dies sind meist ein paar hundert Beiträge, und jeder Beitrag hat noch Einträge in einigen anderen Tabellen. (Realisiert ist das ganze durch in C++ geschr. Bibliotheken, is aber nicht wichtig).
Jedenfalls dauert das sehr lange und der User möchte natürlich sehen, dass etwas passiert. Also macht man einen Progress-Dialog.
Wie verbinde ich nun aber die Arbeit der Datenbankklassen-Methode mit dem ProgressDialog?
Ich erzeuge einen Thread für die Datenbankklassen-Methode und erzeuge einen Dialog mit einer Fortschrittsanzeige. Wie verbinde ich das Ganze, so dass die Datenbankklasse aber genausogut von einer Konsolenanwendung aufgerufen werden kann?
Signals and Slots wäre eine gute Möglichkeit, aber falls möglich sollte man hier auf alles Framework- und Guitoolkitspezifische verzichten.
Man könnte vielleicht als Parameter (default-wert None) eine Funktion übergeben, die nach einem Fortschritt der Arbeit aufgerufen werden soll. Diese könnte dann je nachdem den progressdialog informieren oder z:b. ne funktion aufrufen die einen stern* oder punkt . auf die konsole malt.
Was haltet ihr von dieser Idee? und wie genau wird die umgesetzt? also rein schematisch gesehen.
oder was macht ihr in so einem fall?
ciao
ich halte mich für gewöhnlich an das MVC-Prinzip, jetzt habe ich aber folgendes Problem:
es gibt ein database-package, darin eine Klasse mit einer Methode, die alle Einträge eines bestimmten Types löschen soll. Dies sind meist ein paar hundert Beiträge, und jeder Beitrag hat noch Einträge in einigen anderen Tabellen. (Realisiert ist das ganze durch in C++ geschr. Bibliotheken, is aber nicht wichtig).
Jedenfalls dauert das sehr lange und der User möchte natürlich sehen, dass etwas passiert. Also macht man einen Progress-Dialog.
Wie verbinde ich nun aber die Arbeit der Datenbankklassen-Methode mit dem ProgressDialog?
Ich erzeuge einen Thread für die Datenbankklassen-Methode und erzeuge einen Dialog mit einer Fortschrittsanzeige. Wie verbinde ich das Ganze, so dass die Datenbankklasse aber genausogut von einer Konsolenanwendung aufgerufen werden kann?
Signals and Slots wäre eine gute Möglichkeit, aber falls möglich sollte man hier auf alles Framework- und Guitoolkitspezifische verzichten.
Man könnte vielleicht als Parameter (default-wert None) eine Funktion übergeben, die nach einem Fortschritt der Arbeit aufgerufen werden soll. Diese könnte dann je nachdem den progressdialog informieren oder z:b. ne funktion aufrufen die einen stern* oder punkt . auf die konsole malt.
Was haltet ihr von dieser Idee? und wie genau wird die umgesetzt? also rein schematisch gesehen.
oder was macht ihr in so einem fall?
ciao