diff --git a/gui/main.py b/gui/main.py index 510395b..daefd7f 100755 --- a/gui/main.py +++ b/gui/main.py @@ -1,6 +1,6 @@ import sys -from PyQt5 import uic -from PyQt5.QtWidgets import QMainWindow, QTableWidgetItem +from PyQt5.QtCore import Qt +from PyQt5.QtWidgets import QMainWindow, QTableWidgetItem, QHeaderView from gui.main_ui import Ui_MainWindow from handlers.gamepad import Gamepad from models.gamepad import GamepadModel @@ -13,12 +13,16 @@ class MainWindow(QMainWindow): self._gui = Ui_MainWindow() self._gui.setupUi(self) - model = GamepadModel(gamepad_handler.find_gamepads()) - self._gui.tableView_physicalControllerList.setModel(model) - - self._gui.tableView_physicalControllerList.resizeColumnsToContents() + self.gamepad_model = GamepadModel(self._gamepad_handler.find_gamepads()) + self._gui.tableView_physicalControllerList.setModel(self.gamepad_model) + self._gui.tableView_physicalControllerList.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents) + self._gui.tableView_physicalControllerList.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch) + self._gui.tableView_physicalControllerList.horizontalHeader().setSectionResizeMode(2, QHeaderView.ResizeToContents) self._gui.pushButton_physicalControllerRefresh.clicked.connect(self.controller_list_refresh) def controller_list_refresh(self): + self.gamepad_model.beginResetModel() + self.gamepad_model.gamepads = self._gamepad_handler.find_gamepads() + self.gamepad_model.endResetModel() return diff --git a/gui/main_ui.py b/gui/main_ui.py index ec702b7..6895031 100644 --- a/gui/main_ui.py +++ b/gui/main_ui.py @@ -37,7 +37,7 @@ class Ui_MainWindow(object): self.tableView_physicalControllerList.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection) self.tableView_physicalControllerList.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) self.tableView_physicalControllerList.setObjectName("tableView_physicalControllerList") - self.tableView_physicalControllerList.horizontalHeader().setStretchLastSection(True) + self.tableView_physicalControllerList.horizontalHeader().setHighlightSections(False) self.tableView_physicalControllerList.verticalHeader().setVisible(False) self.verticalLayout_2.addWidget(self.tableView_physicalControllerList) self.horizontalLayout_physicalControllerActions = QtWidgets.QHBoxLayout() diff --git a/gui/main_ui.ui b/gui/main_ui.ui index c9c3451..ee2389d 100644 --- a/gui/main_ui.ui +++ b/gui/main_ui.ui @@ -61,8 +61,8 @@ <property name="selectionBehavior"> <enum>QAbstractItemView::SelectRows</enum> </property> - <attribute name="horizontalHeaderStretchLastSection"> - <bool>true</bool> + <attribute name="horizontalHeaderHighlightSections"> + <bool>false</bool> </attribute> <attribute name="verticalHeaderVisible"> <bool>false</bool> diff --git a/handlers/config.py b/handlers/config.py new file mode 100644 index 0000000..f2978f2 --- /dev/null +++ b/handlers/config.py @@ -0,0 +1,13 @@ + +class ConfigHandler: + def __init__(self): + super().__init__() + + def load(): + return + + def save(): + return + + def update(): + return \ No newline at end of file diff --git a/handlers/gamepad.py b/handlers/gamepad.py index 7521968..9e71d2e 100755 --- a/handlers/gamepad.py +++ b/handlers/gamepad.py @@ -1,3 +1,4 @@ +from enum import Enum from evdev import InputDevice, list_devices, ecodes as e, UInput, AbsInfo class GamepadHandler: @@ -13,12 +14,24 @@ class GamepadHandler: class Gamepad: + class GamepadType(Enum): + UNKNOWN = 0 + CLASSIC = 1 + NSWITCH = 2 + def __init__(self, vid, pid, name): super().__init__() self.vid = vid self.pid = pid self.name = name + self.type = self.get_gamepad_type(vid, pid) + self.config = None + def get_gamepad_type(self, vid, pid): + match vid, pid: + case 0x0f0d, 0x00c1: + return self.GamepadType.NSWITCH + return self.GamepadType.UNKNOWN """ cap = { e.EV_KEY : [e.BTN_NORTH, e.BTN_SOUTH, e.BTN_EAST, e.BTN_WEST, e.BTN_SELECT, e.BTN_START], diff --git a/models/gamepad.py b/models/gamepad.py index 997b509..3b1297b 100644 --- a/models/gamepad.py +++ b/models/gamepad.py @@ -17,9 +17,12 @@ class GamepadModel(QAbstractTableModel): case 1: return self.gamepads[index.row()].name case 2: - return self.get_gamepad_hash(index) - case _: - return None + if self.gamepads[index.row()].type == Gamepad.GamepadType.UNKNOWN: + return "Not configured" + else: + return "Configured" + elif role == Qt.TextAlignmentRole and index.column() != 1: + return Qt.AlignCenter def rowCount(self, index): return len(self.gamepads)