extend the Borg Interface section
This commit is contained in:
parent
780718c197
commit
b27f288965
|
@ -1957,15 +1957,26 @@ self.config['borgqt']['includes'] = json.dumps(includes,
|
||||||
|
|
||||||
** Borg Interface
|
** Borg Interface
|
||||||
|
|
||||||
Für die jeweiligen Funktionen von gls:borg wurde eine Hauptklasse
|
Zuerst erschien es sinnvoll die Kommunikation zwischen gls:borg und Borg-Qt
|
||||||
~BorgQtThread~ erstellt um soviel Code wie möglich zwischen den einzelnen
|
über einfache Funktionen laufen zu lassen. Dieser Ansatz hatte allerdings zwei
|
||||||
Funktionen wiederverwendne zu können. Jede Funktion vererbt die Klasse dann und
|
Probleme. Zum Einen wurde es relativ umständlich Informationen zu verarbeiten
|
||||||
adaptiert sie soweit als nötig.
|
und weiterzugeben zum anderen führte es zu dem unschönen Nebeneffekt dass, das
|
||||||
|
gls:ui eingefroren ist. Threads sollten hier abhilfe schaffen.
|
||||||
|
|
||||||
|
Python würde hierzu ein Modul, ~threading.Thread~ footcite:threading,
|
||||||
|
mitliefern. Allerdings war es nicht möglich den Fortschrittsdialog und den
|
||||||
|
Thread so zu verknüpfen das sich der Dialog schliesst wenn das Backup
|
||||||
|
durchgelaufen ist und der Thread wieder entfernt wird. Aus diesem Grund wurde
|
||||||
|
dann ein erfolgreicher Test mit dem PyQt Modul ~QThread~ footcite:qthread
|
||||||
|
gemacht. Mit diesem war es ohne weiteres möglich den Dialog zu schliessen
|
||||||
|
sobald das Backup fertig durchgelaufen war. Auch das stoppen des Threads mit
|
||||||
|
einem Klick auf den "Cancel" Button funktioniert einwandfrei.
|
||||||
|
|
||||||
Damit gls:borg aus der Anwendung angesteuert werden kann wird das Python Modul
|
Damit gls:borg aus der Anwendung angesteuert werden kann wird das Python Modul
|
||||||
~subprocess~footcite:subprocess verwendet. Dieses erlaubt einem neue Prozesse
|
~subprocess~ footcite:subprocess verwendet. Dieses erlaubt einem neue Prozesse
|
||||||
zu erstellen welche man oftmals benötigt um etwa, wie im Fall von Borg-Qt,
|
zu erstellen welche man oftmals benötigt um etwa, wie im Fall von Borg-Qt,
|
||||||
externe Applikationen zu starten, zu steuern und ihre Ausgabewerte auszulesen.
|
externe Applikationen zu starten, zu steuern und ihre Ausgabewerte auszulesen.
|
||||||
|
Das effektive Kommando wird dann aus dem Property ~self.command~ gelesen.
|
||||||
|
|
||||||
Damit gls:borg die Ausgabe im gls:json Format ausgibt muss man man noch die
|
Damit gls:borg die Ausgabe im gls:json Format ausgibt muss man man noch die
|
||||||
Parameter ~--log-json~ und ~--json~ ausgeben. Der erste Parameter ändert
|
Parameter ~--log-json~ und ~--json~ ausgeben. Der erste Parameter ändert
|
||||||
|
@ -2004,6 +2015,13 @@ def process_json_error(self, json_err):
|
||||||
raise BorgException(err['message'])
|
raise BorgException(err['message'])
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
Die ganze Funktionalität wurde dann in der Klasse ~BorgQtThread~
|
||||||
|
zusammengefasst. Somit kann für jede Funktion von gls:borg eine einzelne Klasse
|
||||||
|
geschrieben werden welche dann von ~BorgQtThread~ die Funktionen erbt. Die
|
||||||
|
Funktionsklassen müssen dann jeweils nur die Methode
|
||||||
|
~self.create_command(self)~ implementieren welche das Property ~self.command~
|
||||||
|
erstellt und die einfachen Funktionen von gls:borg sollten direkt funktioneren.
|
||||||
|
|
||||||
** Backup
|
** Backup
|
||||||
|
|
||||||
Bei den Backups handelt es sich ohne Zweifel um die wichtigste Funktion von
|
Bei den Backups handelt es sich ohne Zweifel um die wichtigste Funktion von
|
||||||
|
|
Reference in New Issue