Prechádzať zdrojové kódy

Refactored QThread classes for more clarity and less code duplication

Marta Marczykowska-Górecka 5 rokov pred
rodič
commit
6e10daa309
2 zmenil súbory, kde vykonal 17 pridanie a 37 odobranie
  1. 10 11
      qubesmanager/common_threads.py
  2. 7 26
      qubesmanager/qube_manager.py

+ 10 - 11
qubesmanager/common_threads.py

@@ -25,34 +25,33 @@ from qubesadmin import exc
 
 
 # pylint: disable=too-few-public-methods
-class RemoveVMThread(QtCore.QThread):
+class QubesThread(QtCore.QThread):
     def __init__(self, vm):
         QtCore.QThread.__init__(self)
         self.vm = vm
         self.msg = None
-        self.is_error = False
+        self.msg_is_success = False
 
+
+# pylint: disable=too-few-public-methods
+class RemoveVMThread(QubesThread):
     def run(self):
         try:
             del self.vm.app.domains[self.vm.name]
         except (exc.QubesException, KeyError) as ex:
             self.msg = ("Error removing qube!", str(ex))
-            self.is_error = True
 
 
 # pylint: disable=too-few-public-methods
-class CloneVMThread(QtCore.QThread):
-    def __init__(self, src_vm, dst_name):
-        QtCore.QThread.__init__(self)
-        self.src_vm = src_vm
+class CloneVMThread(QubesThread):
+    def __init__(self, vm, dst_name):
+        super(CloneVMThread, self).__init__(vm)
         self.dst_name = dst_name
-        self.msg = None
-        self.is_error = False
 
     def run(self):
         try:
-            self.src_vm.app.clone_vm(self.src_vm, self.dst_name)
+            self.vm.app.clone_vm(self.vm, self.dst_name)
             self.msg = ("Sucess", "The qube was cloned sucessfully.")
+            self.msg_is_success = True
         except exc.QubesException as ex:
             self.msg = ("Error while cloning qube!", str(ex))
-            self.is_error = True

+ 7 - 26
qubesmanager/qube_manager.py

@@ -249,29 +249,16 @@ class VmShutdownMonitor(QtCore.QObject):
 
 
 # pylint: disable=too-few-public-methods
-class StartVMThread(QtCore.QThread):
-    def __init__(self, vm):
-        QtCore.QThread.__init__(self)
-        self.vm = vm
-        self.msg = None
-        self.is_error = False
-
+class StartVMThread(common_threads.QubesThread):
     def run(self):
         try:
             self.vm.start()
         except exc.QubesException as ex:
             self.msg = ("Error starting Qube!", str(ex))
-            self.is_error = True
 
 
 # pylint: disable=too-few-public-methods
-class UpdateVMThread(QtCore.QThread):
-    def __init__(self, vm):
-        QtCore.QThread.__init__(self)
-        self.vm = vm
-        self.msg = None
-        self.is_error = False
-
+class UpdateVMThread(common_threads.QubesThread):
     def run(self):
         try:
             if self.vm.qid == 0:
@@ -301,24 +288,19 @@ class UpdateVMThread(QtCore.QThread):
                         user="root", wait=False)
         except (ChildProcessError, exc.QubesException) as ex:
             self.msg = ("Error on qube update!", str(ex))
-            self.is_error = True
 
 
 # pylint: disable=too-few-public-methods
-class RunCommandThread(QtCore.QThread):
+class RunCommandThread(common_threads.QubesThread):
     def __init__(self, vm, command_to_run):
-        QtCore.QThread.__init__(self)
-        self.vm = vm
+        super(RunCommandThread, self).__init__(vm)
         self.command_to_run = command_to_run
-        self.msg = None
-        self.is_error = False
 
     def run(self):
         try:
             self.vm.run(self.command_to_run)
         except (ChildProcessError, exc.QubesException) as ex:
             self.msg = ("Error while running command!", str(ex))
-            self.is_error = True
 
 
 class VmManagerWindow(ui_qubemanager.Ui_VmManagerWindow, QtGui.QMainWindow):
@@ -521,18 +503,17 @@ class VmManagerWindow(ui_qubemanager.Ui_VmManagerWindow, QtGui.QMainWindow):
 
                 if thread.msg:
                     (title, msg) = thread.msg
-                    if thread.is_error:
-                        QtGui.QMessageBox.warning(
+                    if thread.msg_is_success:
+                        QtGui.QMessageBox.information(
                             None,
                             self.tr(title),
                             self.tr(msg))
                     else:
-                        QtGui.QMessageBox.information(
+                        QtGui.QMessageBox.warning(
                             None,
                             self.tr(title),
                             self.tr(msg))
 
-
                 self.threads_list.remove(thread)
                 return