Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/pr/341'
Browse files Browse the repository at this point in the history
* origin/pr/341:
  Add a "show internal" option to Qube Manager
  • Loading branch information
marmarek committed Mar 14, 2023
2 parents e550f12 + 9177c06 commit 9777f20
Showing 1 changed file with 36 additions and 22 deletions.
58 changes: 36 additions & 22 deletions qubesmanager/qube_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -671,12 +671,15 @@ def lessThan(self, left, right):

# pylint: disable=too-many-return-statements
def filterAcceptsRow(self, sourceRow, sourceParent):
if self.window.show_all.isChecked():
return super().filterAcceptsRow(sourceRow, sourceParent)

index = self.sourceModel().index(sourceRow, 0, sourceParent)
vm = self.sourceModel().data(index, Qt.UserRole)

# if hide internal is true, ignore all other filters
if not self.window.show_internal_action.isChecked() and vm.internal:
return False
if self.window.show_all.isChecked():
return super().filterAcceptsRow(sourceRow, sourceParent)

if self.window.show_running.isChecked() and \
vm.state['power'] != 'Halted':
return super().filterAcceptsRow(sourceRow, sourceParent)
Expand Down Expand Up @@ -748,45 +751,52 @@ def __init__(self, qt_app, qubes_app, dispatcher, _parent=None):
self.fill_cache()
self.qubes_model = QubesTableModel(self.qubes_cache)

self.proxy = QubesProxyModel(self)
self.proxy.setSourceModel(self.qubes_model)
self.proxy.setSortRole(Qt.UserRole + 1)
self.proxy.setSortCaseSensitivity(Qt.CaseInsensitive)
self.proxy.setFilterKeyColumn(2)
self.proxy.setFilterCaseSensitivity(Qt.CaseInsensitive)
self.proxy.layoutChanged.connect(self.save_sorting)
self.proxy.layoutChanged.connect(self.update_template_menu)
self.proxy.layoutChanged.connect(self.update_network_menu)

self.show_running.stateChanged.connect(self.invalidate)
self.show_halted.stateChanged.connect(self.invalidate)
self.show_network.stateChanged.connect(self.invalidate)
self.show_templates.stateChanged.connect(self.invalidate)
self.show_standalone.stateChanged.connect(self.invalidate)
self.show_all.stateChanged.connect(self.invalidate)

self.table.setModel(self.proxy)
self.table.setItemDelegateForColumn(3, StateIconDelegate())
self.table.resizeColumnsToContents()
selection_model = self.table.selectionModel()
selection_model.selectionChanged.connect(self.table_selection_changed)

self.table.setContextMenuPolicy(Qt.CustomContextMenu)
self.table.customContextMenuRequested.connect(self.open_context_menu)

# Create view menu
for col_no, column in enumerate(self.qubes_model.columns_indices):
action = self.menu_view.addAction(column)
action.setData(column)
action.setCheckable(True)
action.toggled.connect(partial(self.showhide_column, col_no))

self.menu_view.addSeparator()
self.show_internal_action = self.menu_view.addAction(
self.tr('Show internal qubes'))
self.show_internal_action.setCheckable(True)
self.show_internal_action.toggled.connect(self.invalidate)

self.menu_view.addSeparator()
self.menu_view.addAction(self.action_toolbar)
self.menu_view.addAction(self.action_menubar)

self.menu_view.addSeparator()
self.menu_view.addAction(self.action_compact_view)

self.proxy = QubesProxyModel(self)
self.proxy.setSourceModel(self.qubes_model)
self.proxy.setSortRole(Qt.UserRole + 1)
self.proxy.setSortCaseSensitivity(Qt.CaseInsensitive)
self.proxy.setFilterKeyColumn(2)
self.proxy.setFilterCaseSensitivity(Qt.CaseInsensitive)
self.proxy.layoutChanged.connect(self.save_sorting)
self.proxy.layoutChanged.connect(self.update_template_menu)
self.proxy.layoutChanged.connect(self.update_network_menu)

self.table.setModel(self.proxy)
self.table.setItemDelegateForColumn(3, StateIconDelegate())
self.table.resizeColumnsToContents()
selection_model = self.table.selectionModel()
selection_model.selectionChanged.connect(self.table_selection_changed)

self.table.setContextMenuPolicy(Qt.CustomContextMenu)
self.table.customContextMenuRequested.connect(self.open_context_menu)

try:
self.load_manager_settings()
except Exception as ex: # pylint: disable=broad-except
Expand Down Expand Up @@ -941,6 +951,8 @@ def save_showing(self):
self.show_templates.isChecked())
self.manager_settings.setValue('show/standalone',
self.show_standalone.isChecked())
self.manager_settings.setValue('show/internal',
self.show_internal_action.isChecked())
self.manager_settings.setValue('show/all', self.show_all.isChecked())

def save_sorting(self):
Expand Down Expand Up @@ -1152,6 +1164,8 @@ def load_manager_settings(self):
self.show_all.setChecked(self.manager_settings.value(
'show/all', "true") == "true")

self.show_internal_action.setChecked(self.manager_settings.value(
'show/internal', "false") == "true")
# load last window size
self.resize(self.manager_settings.value("window_size",
QSize(1100, 600)))
Expand Down

0 comments on commit 9777f20

Please sign in to comment.