mirror of
https://github.com/marcriera/ddgo-converter.git
synced 2025-04-20 02:49:28 +02:00
Finish basic UI, add type detection
This commit is contained in:
parent
5a8522d05a
commit
25ba4cdbc0
6 changed files with 45 additions and 12 deletions
16
gui/main.py
16
gui/main.py
|
@ -1,6 +1,6 @@
|
||||||
import sys
|
import sys
|
||||||
from PyQt5 import uic
|
from PyQt5.QtCore import Qt
|
||||||
from PyQt5.QtWidgets import QMainWindow, QTableWidgetItem
|
from PyQt5.QtWidgets import QMainWindow, QTableWidgetItem, QHeaderView
|
||||||
from gui.main_ui import Ui_MainWindow
|
from gui.main_ui import Ui_MainWindow
|
||||||
from handlers.gamepad import Gamepad
|
from handlers.gamepad import Gamepad
|
||||||
from models.gamepad import GamepadModel
|
from models.gamepad import GamepadModel
|
||||||
|
@ -13,12 +13,16 @@ class MainWindow(QMainWindow):
|
||||||
self._gui = Ui_MainWindow()
|
self._gui = Ui_MainWindow()
|
||||||
self._gui.setupUi(self)
|
self._gui.setupUi(self)
|
||||||
|
|
||||||
model = GamepadModel(gamepad_handler.find_gamepads())
|
self.gamepad_model = GamepadModel(self._gamepad_handler.find_gamepads())
|
||||||
self._gui.tableView_physicalControllerList.setModel(model)
|
self._gui.tableView_physicalControllerList.setModel(self.gamepad_model)
|
||||||
|
self._gui.tableView_physicalControllerList.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents)
|
||||||
self._gui.tableView_physicalControllerList.resizeColumnsToContents()
|
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)
|
self._gui.pushButton_physicalControllerRefresh.clicked.connect(self.controller_list_refresh)
|
||||||
|
|
||||||
def controller_list_refresh(self):
|
def controller_list_refresh(self):
|
||||||
|
self.gamepad_model.beginResetModel()
|
||||||
|
self.gamepad_model.gamepads = self._gamepad_handler.find_gamepads()
|
||||||
|
self.gamepad_model.endResetModel()
|
||||||
return
|
return
|
||||||
|
|
|
@ -37,7 +37,7 @@ class Ui_MainWindow(object):
|
||||||
self.tableView_physicalControllerList.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
|
self.tableView_physicalControllerList.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
|
||||||
self.tableView_physicalControllerList.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
|
self.tableView_physicalControllerList.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
|
||||||
self.tableView_physicalControllerList.setObjectName("tableView_physicalControllerList")
|
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.tableView_physicalControllerList.verticalHeader().setVisible(False)
|
||||||
self.verticalLayout_2.addWidget(self.tableView_physicalControllerList)
|
self.verticalLayout_2.addWidget(self.tableView_physicalControllerList)
|
||||||
self.horizontalLayout_physicalControllerActions = QtWidgets.QHBoxLayout()
|
self.horizontalLayout_physicalControllerActions = QtWidgets.QHBoxLayout()
|
||||||
|
|
|
@ -61,8 +61,8 @@
|
||||||
<property name="selectionBehavior">
|
<property name="selectionBehavior">
|
||||||
<enum>QAbstractItemView::SelectRows</enum>
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
</property>
|
</property>
|
||||||
<attribute name="horizontalHeaderStretchLastSection">
|
<attribute name="horizontalHeaderHighlightSections">
|
||||||
<bool>true</bool>
|
<bool>false</bool>
|
||||||
</attribute>
|
</attribute>
|
||||||
<attribute name="verticalHeaderVisible">
|
<attribute name="verticalHeaderVisible">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
|
|
13
handlers/config.py
Normal file
13
handlers/config.py
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
|
||||||
|
class ConfigHandler:
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
def load():
|
||||||
|
return
|
||||||
|
|
||||||
|
def save():
|
||||||
|
return
|
||||||
|
|
||||||
|
def update():
|
||||||
|
return
|
|
@ -1,3 +1,4 @@
|
||||||
|
from enum import Enum
|
||||||
from evdev import InputDevice, list_devices, ecodes as e, UInput, AbsInfo
|
from evdev import InputDevice, list_devices, ecodes as e, UInput, AbsInfo
|
||||||
|
|
||||||
class GamepadHandler:
|
class GamepadHandler:
|
||||||
|
@ -13,12 +14,24 @@ class GamepadHandler:
|
||||||
|
|
||||||
class Gamepad:
|
class Gamepad:
|
||||||
|
|
||||||
|
class GamepadType(Enum):
|
||||||
|
UNKNOWN = 0
|
||||||
|
CLASSIC = 1
|
||||||
|
NSWITCH = 2
|
||||||
|
|
||||||
def __init__(self, vid, pid, name):
|
def __init__(self, vid, pid, name):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.vid = vid
|
self.vid = vid
|
||||||
self.pid = pid
|
self.pid = pid
|
||||||
self.name = name
|
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 = {
|
""" cap = {
|
||||||
e.EV_KEY : [e.BTN_NORTH, e.BTN_SOUTH, e.BTN_EAST, e.BTN_WEST, e.BTN_SELECT, e.BTN_START],
|
e.EV_KEY : [e.BTN_NORTH, e.BTN_SOUTH, e.BTN_EAST, e.BTN_WEST, e.BTN_SELECT, e.BTN_START],
|
||||||
|
|
|
@ -17,9 +17,12 @@ class GamepadModel(QAbstractTableModel):
|
||||||
case 1:
|
case 1:
|
||||||
return self.gamepads[index.row()].name
|
return self.gamepads[index.row()].name
|
||||||
case 2:
|
case 2:
|
||||||
return self.get_gamepad_hash(index)
|
if self.gamepads[index.row()].type == Gamepad.GamepadType.UNKNOWN:
|
||||||
case _:
|
return "Not configured"
|
||||||
return None
|
else:
|
||||||
|
return "Configured"
|
||||||
|
elif role == Qt.TextAlignmentRole and index.column() != 1:
|
||||||
|
return Qt.AlignCenter
|
||||||
|
|
||||||
def rowCount(self, index):
|
def rowCount(self, index):
|
||||||
return len(self.gamepads)
|
return len(self.gamepads)
|
||||||
|
|
Loading…
Add table
Reference in a new issue