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 | update_suggestion_interval = 14 # 14 days | ||||||
| 
 | 
 | ||||||
|  | power_order = Qt.DescendingOrder | ||||||
|  | update_order = Qt.AscendingOrder | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| class QubesConfigFileWatcher(ProcessEvent): | class QubesConfigFileWatcher(ProcessEvent): | ||||||
|     def __init__ (self, update_func): |     def __init__ (self, update_func): | ||||||
|         self.update_func = update_func |         self.update_func = update_func | ||||||
| @ -159,14 +163,19 @@ class VmInfoWidget (QWidget): | |||||||
|         def __lt__(self, other): |         def __lt__(self, other): | ||||||
|             self_val = self.upd_info_item.value |             self_val = self.upd_info_item.value | ||||||
|             other_val = other.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 |                 self_val += 1 if self.vm.is_running() else 0 | ||||||
|                 other_val += 1 if other.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: |             else: | ||||||
|                 self_val = self_val/10 + 10*(1 if self.vm.is_running() else 0) |                 #it would be strange if this happened | ||||||
|                 other_val = other_val/10 + 10*(1 if other.vm.is_running() else 0) |                 return  | ||||||
|                 return (self_val) < (other_val) #sort with Descending order |  | ||||||
| 
 | 
 | ||||||
|     def __init__(self, vm, parent = None): |     def __init__(self, vm, parent = None): | ||||||
|         super (VmInfoWidget, self).__init__(parent) |         super (VmInfoWidget, self).__init__(parent) | ||||||
| @ -558,6 +567,11 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
|         self.setSizeIncrement(QtCore.QSize(200, 30)) |         self.setSizeIncrement(QtCore.QSize(200, 30)) | ||||||
|         self.centralwidget.setSizeIncrement(QtCore.QSize(200, 30)) |         self.centralwidget.setSizeIncrement(QtCore.QSize(200, 30)) | ||||||
|         self.table.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.fill_table() | ||||||
|         self.move(cur_pos) |         self.move(cur_pos) | ||||||
|              |              | ||||||
| @ -574,10 +588,6 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
|         self.table.horizontalHeader().setResizeMode(QHeaderView.Fixed) |         self.table.horizontalHeader().setResizeMode(QHeaderView.Fixed) | ||||||
|      |      | ||||||
|         self.table.sortItems(self.columns_indices["Label"], Qt.AscendingOrder) |         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 = QMenu(self) | ||||||
|         self.context_menu.addAction(self.action_settings) |         self.context_menu.addAction(self.action_settings) | ||||||
| @ -715,8 +725,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
|         self.vms_in_table = vms_in_table |         self.vms_in_table = vms_in_table | ||||||
|         self.reload_table = False |         self.reload_table = False | ||||||
|         self.table.setSortingEnabled(True) |         self.table.setSortingEnabled(True) | ||||||
| 
 |          | ||||||
| 
 |  | ||||||
|     def mark_table_for_update(self): |     def mark_table_for_update(self): | ||||||
|         self.reload_table = True |         self.reload_table = True | ||||||
| 
 | 
 | ||||||
| @ -731,17 +740,15 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
|                     vm.last_power_state = state |                     vm.last_power_state = state | ||||||
|                     some_vms_have_changed_power_state = True |                     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):  |             if self.reload_table or ((not self.show_inactive_vms) and some_vms_have_changed_power_state):  | ||||||
|                 self.fill_table() |                 self.fill_table() | ||||||
|                 self.set_table_geom_height() |                 self.set_table_geom_height() | ||||||
|                 self.set_table_geom_width() |                 self.set_table_geom_width() | ||||||
|                 update_devs=True |                 update_devs=True | ||||||
| 
 | 
 | ||||||
| 
 |             elif self.sort_by_state != None and some_vms_have_changed_power_state: | ||||||
|             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. |  | ||||||
|                 self.table.sortItems(self.columns_indices["State"], self.sort_by_state) |                 self.table.sortItems(self.columns_indices["State"], self.sort_by_state) | ||||||
|                  |  | ||||||
| 
 | 
 | ||||||
|             blk_visible = None |             blk_visible = None | ||||||
|             rows_with_blk = None |             rows_with_blk = None | ||||||
| @ -784,8 +791,10 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
|                 self.table.sortItems(self.columns_indices["CPU"], self.sort_by_cpu) |                 self.table.sortItems(self.columns_indices["CPU"], self.sort_by_cpu) | ||||||
|             elif self.sort_by_mem != None: |             elif self.sort_by_mem != None: | ||||||
|                 self.table.sortItems(self.columns_indices["MEM"], self.sort_by_mem) |                 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() |             self.table_selection_changed() | ||||||
| 
 | 
 | ||||||
|         if not out_of_schedule: |         if not out_of_schedule: | ||||||
| @ -811,6 +820,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
|             trayIcon.showMessage ("Qubes Manager", str, msecs=5000) |             trayIcon.showMessage ("Qubes Manager", str, msecs=5000) | ||||||
|         return res |         return res | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|     def sortIndicatorChanged(self, column, order): |     def sortIndicatorChanged(self, column, order): | ||||||
|         if column == self.columns_indices["CPU"] or column == self.columns_indices["CPU Graph"]: |         if column == self.columns_indices["CPU"] or column == self.columns_indices["CPU Graph"]: | ||||||
|             self.sort_by_mem = None |             self.sort_by_mem = None | ||||||
| @ -823,13 +833,10 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
|             self.sort_by_mem = order |             self.sort_by_mem = order | ||||||
|             return |             return | ||||||
|         elif column == self.columns_indices["State"]: |         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_cpu = None | ||||||
|             self.sort_by_mem = None |             self.sort_by_mem = None | ||||||
|             if self.table.sort_state_by_upd: |             self.sort_by_state = order | ||||||
|                 self.sort_by_state = Qt.DescendingOrder |  | ||||||
|             else: |  | ||||||
|                 self.sort_by_state = Qt.AscendingOrder |  | ||||||
|             return |             return | ||||||
|         else: |         else: | ||||||
|             self.sort_by_cpu = None |             self.sort_by_cpu = None | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Agnieszka Kostrzewa
						Agnieszka Kostrzewa