Finish basic UI, add type detection

This commit is contained in:
Marc Riera Irigoyen 2022-10-12 17:16:58 +02:00
parent 5a8522d05a
commit 25ba4cdbc0
6 changed files with 45 additions and 12 deletions

View file

@ -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

View file

@ -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()

View file

@ -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>

13
handlers/config.py Normal file
View file

@ -0,0 +1,13 @@
class ConfigHandler:
def __init__(self):
super().__init__()
def load():
return
def save():
return
def update():
return

View file

@ -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],

View file

@ -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)