Fix to sorting by state after table reload.
This commit is contained in:
		
							parent
							
								
									341d733e4d
								
							
						
					
					
						commit
						2962e9bc81
					
				| @ -55,6 +55,10 @@ qubes_guid_path = '/usr/bin/qubes_guid' | ||||
| 
 | ||||
| update_suggestion_interval = 14 # 14 days | ||||
| 
 | ||||
| power_order = Qt.DescendingOrder | ||||
| update_order = Qt.AscendingOrder | ||||
| 
 | ||||
| 
 | ||||
| class QubesConfigFileWatcher(ProcessEvent): | ||||
|     def __init__ (self, update_func): | ||||
|         self.update_func = update_func | ||||
| @ -159,14 +163,19 @@ class VmInfoWidget (QWidget): | ||||
|         def __lt__(self, other): | ||||
|             self_val = self.upd_info_item.value | ||||
|             other_val = other.upd_info_item.value | ||||
|             if self.tableWidget().sort_state_by_upd: | ||||
|             if self.tableWidget().horizontalHeader().sortIndicatorOrder() == update_order: | ||||
|                 # the result will be sorted by upd, sorting order: Ascending | ||||
|                 self_val += 1 if self.vm.is_running() else 0 | ||||
|                 other_val += 1 if other.vm.is_running() else 0 | ||||
|                 return (self_val) > (other_val) #sort with Ascending Order | ||||
|                 return (self_val) > (other_val) | ||||
|             elif self.tableWidget().horizontalHeader().sortIndicatorOrder() == power_order: | ||||
|                 #the result will be sorted by power state, sorting order: Descending | ||||
|                 self_val = -(self_val/10 + 10*(1 if self.vm.is_running() else 0)) | ||||
|                 other_val = -(other_val/10 + 10*(1 if other.vm.is_running() else 0)) | ||||
|                 return (self_val) > (other_val) | ||||
|             else: | ||||
|                 self_val = self_val/10 + 10*(1 if self.vm.is_running() else 0) | ||||
|                 other_val = other_val/10 + 10*(1 if other.vm.is_running() else 0) | ||||
|                 return (self_val) < (other_val) #sort with Descending order | ||||
|                 #it would be strange if this happened | ||||
|                 return  | ||||
| 
 | ||||
|     def __init__(self, vm, parent = None): | ||||
|         super (VmInfoWidget, self).__init__(parent) | ||||
| @ -558,6 +567,11 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | ||||
|         self.setSizeIncrement(QtCore.QSize(200, 30)) | ||||
|         self.centralwidget.setSizeIncrement(QtCore.QSize(200, 30)) | ||||
|         self.table.setSizeIncrement(QtCore.QSize(200, 30)) | ||||
| 
 | ||||
|         self.sort_by_mem = None | ||||
|         self.sort_by_cpu = None | ||||
|         self.sort_by_state = None | ||||
| 
 | ||||
|         self.fill_table() | ||||
|         self.move(cur_pos) | ||||
|              | ||||
| @ -574,10 +588,6 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | ||||
|         self.table.horizontalHeader().setResizeMode(QHeaderView.Fixed) | ||||
|      | ||||
|         self.table.sortItems(self.columns_indices["Label"], Qt.AscendingOrder) | ||||
|         self.sort_by_mem = None | ||||
|         self.sort_by_cpu = None | ||||
|         self.sort_by_state = None | ||||
|         self.table.sort_state_by_upd = True | ||||
| 
 | ||||
|         self.context_menu = QMenu(self) | ||||
|         self.context_menu.addAction(self.action_settings) | ||||
| @ -716,7 +726,6 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | ||||
|         self.reload_table = False | ||||
|         self.table.setSortingEnabled(True) | ||||
|          | ||||
| 
 | ||||
|     def mark_table_for_update(self): | ||||
|         self.reload_table = True | ||||
| 
 | ||||
| @ -731,18 +740,16 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | ||||
|                     vm.last_power_state = state | ||||
|                     some_vms_have_changed_power_state = True | ||||
| 
 | ||||
|             reload_table = self.reload_table | ||||
|             if self.reload_table or ((not self.show_inactive_vms) and some_vms_have_changed_power_state):  | ||||
|                 self.fill_table() | ||||
|                 self.set_table_geom_height() | ||||
|                 self.set_table_geom_width() | ||||
|                 update_devs=True | ||||
| 
 | ||||
| 
 | ||||
|             if self.sort_by_state != None and self.table.sort_state_by_upd  and some_vms_have_changed_power_state: | ||||
|                 self.table.sort_state_by_upd = not self.table.sort_state_by_upd # sorter indicator changed will switch it...and we want it to remain unswtched. | ||||
|             elif self.sort_by_state != None and some_vms_have_changed_power_state: | ||||
|                 self.table.sortItems(self.columns_indices["State"], self.sort_by_state) | ||||
| 
 | ||||
| 
 | ||||
|             blk_visible = None | ||||
|             rows_with_blk = None | ||||
|             if update_devs == True: | ||||
| @ -784,7 +791,9 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | ||||
|                 self.table.sortItems(self.columns_indices["CPU"], self.sort_by_cpu) | ||||
|             elif self.sort_by_mem != None: | ||||
|                 self.table.sortItems(self.columns_indices["MEM"], self.sort_by_mem) | ||||
|              | ||||
|             elif self.sort_by_state != None and reload_table: | ||||
|                 #needed to sort after reload (fill_table sorts items with setSortingEnabled, but by that time the widgets values are not correct yet). | ||||
|                 self.table.sortItems(self.columns_indices["State"], self.sort_by_state) | ||||
|              | ||||
|             self.table_selection_changed() | ||||
| 
 | ||||
| @ -811,6 +820,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | ||||
|             trayIcon.showMessage ("Qubes Manager", str, msecs=5000) | ||||
|         return res | ||||
| 
 | ||||
| 
 | ||||
|     def sortIndicatorChanged(self, column, order): | ||||
|         if column == self.columns_indices["CPU"] or column == self.columns_indices["CPU Graph"]: | ||||
|             self.sort_by_mem = None | ||||
| @ -823,13 +833,10 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | ||||
|             self.sort_by_mem = order | ||||
|             return | ||||
|         elif column == self.columns_indices["State"]: | ||||
|             self.table.sort_state_by_upd = not self.table.sort_state_by_upd | ||||
|              | ||||
|             self.sort_by_cpu = None | ||||
|             self.sort_by_mem = None | ||||
|             if self.table.sort_state_by_upd: | ||||
|                 self.sort_by_state = Qt.DescendingOrder | ||||
|             else: | ||||
|                 self.sort_by_state = Qt.AscendingOrder | ||||
|             self.sort_by_state = order | ||||
|             return | ||||
|         else: | ||||
|             self.sort_by_cpu = None | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Agnieszka Kostrzewa
						Agnieszka Kostrzewa