From cff51fdabdb32bf10de46080a86a276241cc92e9 Mon Sep 17 00:00:00 2001 From: Olivier Medoc Date: Tue, 5 Mar 2013 13:12:31 +0100 Subject: [PATCH] mainui: Changed the showhide algorithm to handle internal VMs Additionnally, the windows resizing algorithm has been changed to use the count of displayed internal VMs. --- qubesmanager/main.py | 49 ++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/qubesmanager/main.py b/qubesmanager/main.py index 9f808e8..4d63ba6 100755 --- a/qubesmanager/main.py +++ b/qubesmanager/main.py @@ -734,6 +734,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): self.screen_changed = False self.running_vms_count = 0 + self.internal_vms_count = 0 self.vm_errors = {} self.vm_rec = {} @@ -903,6 +904,15 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): n = self.table.rowCount() else: n = self.running_vms_count + if self.show_internal_vms: + if self.show_inactive_vms: + n = self.table.rowCount() + else: + n = self.running_vms_count + elif self.show_inactive_vms: + n = self.table.rowCount() - self.internal_vms_count + else: + n = self.running_vms_count if n > default_rows: H += default_rows*self.row_height @@ -945,6 +955,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): self.qvm_collection.unlock_db() running_count = 0 + internal_count = 0 vms_list = [vm for vm in self.qvm_collection.values()] for vm in vms_list: @@ -952,10 +963,12 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): vm.last_running = vm.last_power_state in ["Running", "Transient"] if vm.last_running: running_count += 1 + if vm.internal: + internal_count += 1 vm.error_msg = self.vm_errors[vm.qid] if vm.qid in self.vm_errors else None self.running_vms_count = running_count - + self.internal_vms_count = internal_count return vms_list def fill_table(self): @@ -981,14 +994,14 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): self.reload_table = False self.table.setSortingEnabled(True) - self.showhide_inactive_vms(True) + self.showhide_vms(True, True) self.set_table_geom_size() - if not self.show_inactive_vms: - self.showhide_inactive_vms(self.show_inactive_vms) + if (not self.show_inactive_vms) or (not self.show_internal_vms): + self.showhide_vms(self.show_inactive_vms, self.show_internal_vms) self.set_table_geom_size() - def showhide_inactive_vms(self, show_inactive): - if show_inactive: + def showhide_vms(self, show_inactive, show_internal): + if show_inactive and show_internal: row_no = 0 while row_no < self.table.rowCount(): self.table.setRowHidden(row_no, False) @@ -998,22 +1011,8 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): while row_no < self.table.rowCount(): widget = self.table.cellWidget(row_no, self.columns_indices["State"]) running = widget.vm.last_running - if not running: - self.table.setRowHidden(row_no, True) - row_no += 1 - - def showhide_internal_vms(self, show_internal): - if show_internal: - row_no = 0 - while row_no < self.table.rowCount(): - self.table.setRowHidden(row_no, False) - row_no += 1 - else: - row_no = 0 - while row_no < self.table.rowCount(): - widget = self.table.cellWidget(row_no, self.columns_indices["State"]) internal = widget.vm.internal - if internal: + if not (show_inactive or running) or not (show_internal or not internal): self.table.setRowHidden(row_no, True) row_no += 1 @@ -1056,8 +1055,8 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): update_devs=True if (not self.show_inactive_vms) and some_vms_have_changed_power_state: - self.showhide_inactive_vms(True) - self.showhide_inactive_vms(False) + self.showhide_vms(True, True) + self.showhide_vms(False, self.show_internal_vms) self.set_table_geom_size() if self.sort_by_column == "State" and some_vms_have_changed_power_state: @@ -1574,7 +1573,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): def action_showallvms_triggered(self): self.show_inactive_vms = self.action_showallvms.isChecked() - self.showhide_inactive_vms(self.show_inactive_vms) + self.showhide_vms(self.show_inactive_vms, self.show_internal_vms) self.set_table_geom_size() if self.settings_loaded: self.manager_settings.setValue('view/show_inactive_vms', self.show_inactive_vms) @@ -1584,7 +1583,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): def action_showinternalvms_triggered(self): self.show_internal_vms = self.action_showinternalvms.isChecked() - self.showhide_internal_vms(self.show_internal_vms) + self.showhide_vms(self.show_inactive_vms, self.show_internal_vms) self.set_table_geom_size() if self.settings_loaded: self.manager_settings.setValue('view/show_internal_vms', self.show_internal_vms)