Source code for RWESharp.ui.hotkeysuiconnector

from __future__ import annotations
from PySide6.QtWidgets import QDialog, QTreeWidgetItem
from PySide6.QtCore import Slot, Qt
from RWESharp.ui.uiscripts.hotkeys import Ui_Hotkeys
from RWESharp.ui.KeyDialog import KeyDialog
from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from RWESharp.Core.Manager import Manager


[docs] class HotkeysUI(QDialog):
[docs] def __init__(self, manager: Manager, parent=None): super().__init__(parent) self.manager = manager self.ui = Ui_Hotkeys() self.ui.setupUi(self) self.loaditems() self.ui.treeWidget.itemDoubleClicked.connect(self.change) self.dialog: KeyDialog | None = None self.ui.treeWidget.expandAll() self.ui.treeWidget.resizeColumnToContents(0) self.ui.treeWidget.collapseAll() self.ui.treeWidget.setAlternatingRowColors(True) self.ui.Search.textChanged.connect(self.update_filters) self.found = [] self.ui.spinBox.valueChanged.connect(self.spinfounditems) self.ui.spinBox.hide()
[docs] def spinfounditems(self): if len(self.found) == 0: return self.ui.treeWidget.setCurrentItem(self.found[self.ui.spinBox.value() - 1])
[docs] def loaditems(self): for i in self.manager.hotkey_trees: self.ui.treeWidget.addTopLevelItem(i.construct_tree())
[docs] def update_filters(self, text: str): # self.loaditems() # self.ui.treeWidget.clearSelection() # self.ui.treeWidget.collapseAll() if text == "": self.ui.spinBox.hide() return self.found = [*self.ui.treeWidget.findItems(text, Qt.MatchFlag.MatchContains | Qt.MatchFlag.MatchRecursive, 1), *self.ui.treeWidget.findItems(text, Qt.MatchFlag.MatchContains | Qt.MatchFlag.MatchRecursive, 0)] # self.found = [i for i in self.found if len(i.data(0, Qt.ItemDataRole.UserRole)) > 1] self.ui.spinBox.setMinimum(1) self.ui.spinBox.setMaximum(len(self.found)) self.ui.spinBox.setSuffix(f"/{len(self.found)}") self.ui.spinBox.setVisible(len(self.found) > 0) self.spinfounditems()
[docs] @Slot(QTreeWidgetItem, int) def change(self, item: QTreeWidgetItem, column: int): # opening thing data = item.data(0, Qt.ItemDataRole.UserRole) if len(data) <= 1: return if column != 1: return if self.dialog is not None: self.dialog.close() self.dialog = None self.dialog = KeyDialog(data[1], item, self) self.dialog.exec()