ui,stats: improved restoring columns

This commit is contained in:
Gustavo Iñiguez Goia 2024-12-18 16:18:54 +01:00
parent eab75b8a48
commit 843f537000
Failed to generate hash of commit

View file

@ -1845,7 +1845,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
cur_idx = self.tabWidget.currentIndex() cur_idx = self.tabWidget.currentIndex()
self.IN_DETAIL_VIEW[cur_idx] = False self.IN_DETAIL_VIEW[cur_idx] = False
self._set_active_widgets(False) self._set_active_widgets(cur_idx, False)
if cur_idx == StatsDialog.TAB_RULES: if cur_idx == StatsDialog.TAB_RULES:
self._restore_rules_tab_widgets(True) self._restore_rules_tab_widgets(True)
return return
@ -1872,6 +1872,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
self._restore_last_selected_row() self._restore_last_selected_row()
def _cb_main_table_double_clicked(self, row): def _cb_main_table_double_clicked(self, row):
prev_idx = self.tabWidget.currentIndex()
data = row.data() data = row.data()
idx = row.column() idx = row.column()
cur_idx = 1 cur_idx = 1
@ -1881,7 +1882,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
self.IN_DETAIL_VIEW[cur_idx] = True self.IN_DETAIL_VIEW[cur_idx] = True
self.LAST_SELECTED_ITEM = row.model().index(row.row(), self.COL_NODE).data() self.LAST_SELECTED_ITEM = row.model().index(row.row(), self.COL_NODE).data()
self.tabWidget.setCurrentIndex(cur_idx) self.tabWidget.setCurrentIndex(cur_idx)
self._set_active_widgets(True, str(data)) self._set_active_widgets(prev_idx, True, str(data))
self._set_nodes_query(data) self._set_nodes_query(data)
elif idx == StatsDialog.COL_RULES: elif idx == StatsDialog.COL_RULES:
@ -1889,7 +1890,8 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
self.IN_DETAIL_VIEW[cur_idx] = True self.IN_DETAIL_VIEW[cur_idx] = True
self.LAST_SELECTED_ITEM = row.model().index(row.row(), self.COL_RULES).data() self.LAST_SELECTED_ITEM = row.model().index(row.row(), self.COL_RULES).data()
r_name, node = self._set_rules_tab_active(row, cur_idx, self.COL_RULES, self.COL_NODE) r_name, node = self._set_rules_tab_active(row, cur_idx, self.COL_RULES, self.COL_NODE)
self._set_active_widgets(True, str(data)) self.tabWidget.setCurrentIndex(cur_idx)
self._set_active_widgets(prev_idx, True, str(data))
self._set_rules_query(r_name, node) self._set_rules_query(r_name, node)
elif idx == StatsDialog.COL_DSTIP: elif idx == StatsDialog.COL_DSTIP:
@ -1899,7 +1901,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
ip = rowdata ip = rowdata
self.LAST_SELECTED_ITEM = ip self.LAST_SELECTED_ITEM = ip
self.tabWidget.setCurrentIndex(cur_idx) self.tabWidget.setCurrentIndex(cur_idx)
self._set_active_widgets(True, ip) self._set_active_widgets(prev_idx, True, ip)
self._set_addrs_query(ip) self._set_addrs_query(ip)
elif idx == StatsDialog.COL_DSTHOST: elif idx == StatsDialog.COL_DSTHOST:
@ -1911,7 +1913,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
return return
self.LAST_SELECTED_ITEM = host self.LAST_SELECTED_ITEM = host
self.tabWidget.setCurrentIndex(cur_idx) self.tabWidget.setCurrentIndex(cur_idx)
self._set_active_widgets(True, host) self._set_active_widgets(prev_idx, True, host)
self._set_hosts_query(host) self._set_hosts_query(host)
elif idx == StatsDialog.COL_DSTPORT: elif idx == StatsDialog.COL_DSTPORT:
@ -1921,7 +1923,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
port = rowdata port = rowdata
self.LAST_SELECTED_ITEM = port self.LAST_SELECTED_ITEM = port
self.tabWidget.setCurrentIndex(cur_idx) self.tabWidget.setCurrentIndex(cur_idx)
self._set_active_widgets(True, port) self._set_active_widgets(prev_idx, True, port)
self._set_ports_query(port) self._set_ports_query(port)
elif idx == StatsDialog.COL_UID: elif idx == StatsDialog.COL_UID:
@ -1931,7 +1933,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
uid = rowdata uid = rowdata
self.LAST_SELECTED_ITEM = uid self.LAST_SELECTED_ITEM = uid
self.tabWidget.setCurrentIndex(cur_idx) self.tabWidget.setCurrentIndex(cur_idx)
self._set_active_widgets(True, uid) self._set_active_widgets(prev_idx, True, uid)
self._set_users_query(uid) self._set_users_query(uid)
else: else:
@ -1939,7 +1941,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
self.IN_DETAIL_VIEW[cur_idx] = True self.IN_DETAIL_VIEW[cur_idx] = True
self.LAST_SELECTED_ITEM = row.model().index(row.row(), self.COL_PROCS).data() self.LAST_SELECTED_ITEM = row.model().index(row.row(), self.COL_PROCS).data()
self.tabWidget.setCurrentIndex(cur_idx) self.tabWidget.setCurrentIndex(cur_idx)
self._set_active_widgets(True, self.LAST_SELECTED_ITEM) self._set_active_widgets(prev_idx, True, self.LAST_SELECTED_ITEM)
self._set_process_query(self.LAST_SELECTED_ITEM) self._set_process_query(self.LAST_SELECTED_ITEM)
self._restore_details_view_columns( self._restore_details_view_columns(
@ -1996,7 +1998,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
return return
rule_name = row.model().index(row.row(), self.COL_R_NAME).data() rule_name = row.model().index(row.row(), self.COL_R_NAME).data()
self._set_active_widgets(True, rule_name) self._set_active_widgets(cur_idx, True, rule_name)
r_name, node = self._set_rules_tab_active(row, cur_idx, self.COL_R_NAME, self.COL_R_NODE) r_name, node = self._set_rules_tab_active(row, cur_idx, self.COL_R_NAME, self.COL_R_NODE)
self.LAST_SELECTED_ITEM = row.model().index(row.row(), self.COL_R_NAME).data() self.LAST_SELECTED_ITEM = row.model().index(row.row(), self.COL_R_NAME).data()
self._set_rules_query(r_name, node) self._set_rules_query(r_name, node)
@ -2013,7 +2015,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
data = row.model().index(row.row(), self.COL_WHAT).data() data = row.model().index(row.row(), self.COL_WHAT).data()
self._set_active_widgets(True, str(data)) self._set_active_widgets(cur_idx, True, str(data))
if cur_idx == StatsDialog.TAB_NODES: if cur_idx == StatsDialog.TAB_NODES:
self._set_nodes_query(data) self._set_nodes_query(data)
@ -2452,7 +2454,7 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
return self.TABLES[self.tabWidget.currentIndex()]['view'] return self.TABLES[self.tabWidget.currentIndex()]['view']
def _set_active_widgets(self, state, label_txt=""): def _set_active_widgets(self, prev_idx, state, label_txt=""):
cur_idx = self.tabWidget.currentIndex() cur_idx = self.tabWidget.currentIndex()
self._clear_rows_selection() self._clear_rows_selection()
self.TABLES[cur_idx]['label'].setVisible(state) self.TABLES[cur_idx]['label'].setVisible(state)
@ -2473,10 +2475,10 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
header = self.TABLES[cur_idx]['view'].horizontalHeader() header = self.TABLES[cur_idx]['view'].horizontalHeader()
if state == True: if state == True:
# going to normal state
self._cfg.setSettings("{0}{1}".format(Config.STATS_VIEW_COL_STATE, cur_idx), header.saveState())
else:
# going to details state # going to details state
self._cfg.setSettings("{0}{1}".format(Config.STATS_VIEW_COL_STATE, prev_idx), header.saveState())
else:
# going to normal state
self._cfg.setSettings("{0}{1}".format(Config.STATS_VIEW_DETAILS_COL_STATE, cur_idx), header.saveState()) self._cfg.setSettings("{0}{1}".format(Config.STATS_VIEW_DETAILS_COL_STATE, cur_idx), header.saveState())
def _restore_last_selected_row(self): def _restore_last_selected_row(self):
@ -2498,6 +2500,12 @@ class StatsDialog(QtWidgets.QDialog, uic.loadUiType(DIALOG_UI_PATH)[0]):
def _restore_details_view_columns(self, header, settings_key): def _restore_details_view_columns(self, header, settings_key):
header.blockSignals(True); header.blockSignals(True);
# In order to resize the last column of a view, we firstly force a
# resizeToContens call.
# Secondly set resizeMode to Interactive (allow to move columns by
# users + programmatically)
header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
header.setSectionResizeMode(QtWidgets.QHeaderView.Interactive)
col_state = self._cfg.getSettings(settings_key) col_state = self._cfg.getSettings(settings_key)
if type(col_state) == QtCore.QByteArray: if type(col_state) == QtCore.QByteArray: