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