Remove config, UI improvements

This commit is contained in:
Marc Riera 2022-10-16 15:38:57 +02:00
parent 8c875d3b8d
commit b6a1a9f5bb
7 changed files with 49 additions and 48 deletions

View file

@ -3,14 +3,12 @@
import sys import sys
from PyQt5.QtWidgets import QApplication from PyQt5.QtWidgets import QApplication
from gui.main import MainWindow from gui.main import MainWindow
from handlers.config import ConfigHandler
from handlers.gamepad import GamepadHandler from handlers.gamepad import GamepadHandler
class App(QApplication): class App(QApplication):
def __init__(self, sys_argv): def __init__(self, sys_argv):
super(App, self).__init__(sys_argv) super(App, self).__init__(sys_argv)
self.config = ConfigHandler("config.json") self.main_view = MainWindow(GamepadHandler)
self.main_view = MainWindow(GamepadHandler, self.config)
self.main_view.show() self.main_view.show()
if __name__ == '__main__': if __name__ == '__main__':

View file

@ -6,11 +6,10 @@ from handlers.gamepad import Gamepad
from models.gamepad import GamepadModel from models.gamepad import GamepadModel
class MainWindow(QMainWindow): class MainWindow(QMainWindow):
def __init__(self, gamepad_handler, config_handler): def __init__(self, gamepad_handler):
super().__init__() super().__init__()
self._gamepad_handler = gamepad_handler self._gamepad_handler = gamepad_handler
self._config_handler = config_handler
self._gui = Ui_MainWindow() self._gui = Ui_MainWindow()
self._gui.setupUi(self) self._gui.setupUi(self)
@ -19,14 +18,26 @@ class MainWindow(QMainWindow):
self._gui.tableView_physicalControllerList.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents) self._gui.tableView_physicalControllerList.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents)
self._gui.tableView_physicalControllerList.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch) self._gui.tableView_physicalControllerList.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch)
self._gui.tableView_physicalControllerList.horizontalHeader().setSectionResizeMode(2, QHeaderView.ResizeToContents) self._gui.tableView_physicalControllerList.horizontalHeader().setSectionResizeMode(2, QHeaderView.ResizeToContents)
self._gui.tableView_physicalControllerList.selectionModel().selectionChanged.connect(self.controller_list_selection_changed)
self._gui.tableView_physicalControllerList.selectRow(0)
self._gui.pushButton_physicalControllerRefresh.clicked.connect(self.controller_list_refresh) self._gui.pushButton_physicalControllerRefresh.clicked.connect(self.controller_list_refresh)
self._gui.pushButton_physicalControllerConfig.clicked.connect(self.save) self._gui.pushButton_emulatedControllerStart.clicked.connect(self.start)
def controller_list_refresh(self): def controller_list_refresh(self):
self.gamepad_model.beginResetModel() self.gamepad_model.beginResetModel()
self.gamepad_model.gamepads = self._gamepad_handler.find_gamepads() self.gamepad_model.gamepads = self._gamepad_handler.find_gamepads()
self.gamepad_model.endResetModel() self.gamepad_model.endResetModel()
def save(self): def controller_list_selection_changed(self):
self._config_handler.save() enabled = False
rows = self._gui.tableView_physicalControllerList.selectionModel().selectedRows()
if rows and self.gamepad_model.gamepads[rows[0].row()].type != Gamepad.GamepadType.UNKNOWN:
enabled = True
self._gui.pushButton_emulatedControllerStart.setEnabled(enabled)
def start(self):
rows = self._gui.tableView_physicalControllerList.selectionModel().selectedRows()
if rows:
gamepad = self.gamepad_model.gamepads[rows[0].row()]
print(gamepad.name)

View file

@ -76,6 +76,7 @@ class Ui_MainWindow(object):
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem1) self.horizontalLayout.addItem(spacerItem1)
self.pushButton_emulatedControllerStart = QtWidgets.QPushButton(self.groupBox_emulatedController) self.pushButton_emulatedControllerStart = QtWidgets.QPushButton(self.groupBox_emulatedController)
self.pushButton_emulatedControllerStart.setEnabled(False)
self.pushButton_emulatedControllerStart.setObjectName("pushButton_emulatedControllerStart") self.pushButton_emulatedControllerStart.setObjectName("pushButton_emulatedControllerStart")
self.horizontalLayout.addWidget(self.pushButton_emulatedControllerStart) self.horizontalLayout.addWidget(self.pushButton_emulatedControllerStart)
self.verticalLayout_main.addWidget(self.groupBox_emulatedController) self.verticalLayout_main.addWidget(self.groupBox_emulatedController)

View file

@ -152,6 +152,9 @@
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_emulatedControllerStart"> <widget class="QPushButton" name="pushButton_emulatedControllerStart">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text"> <property name="text">
<string>Start</string> <string>Start</string>
</property> </property>

View file

@ -1,27 +0,0 @@
import json
class ConfigHandler:
def __init__(self, path):
super().__init__()
self._path = path
self._config = []
self.load()
def load(self):
try:
with open(self._path, 'r') as f:
self._config = json.load(f)
except Exception:
pass
def save(self):
with open(self._path, 'w') as f:
json.dump(self._config, f, indent = 4)
def get_config(self, hash):
return None
def set_config(self, hash, data):
return

View file

@ -2,17 +2,6 @@ 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
from hashlib import sha1 from hashlib import sha1
class GamepadHandler:
def __init__(self):
super().__init__()
def find_gamepads():
gamepads = []
devices = [InputDevice(path) for path in list_devices()]
for device in devices:
gamepads.append(Gamepad(device.info.vendor, device.info.product, device.name))
return gamepads
class Gamepad: class Gamepad:
class GamepadType(Enum): class GamepadType(Enum):
@ -40,12 +29,39 @@ class Gamepad:
hash = sha1(str(self.id + ":" + self.name).encode('utf-8')).hexdigest() hash = sha1(str(self.id + ":" + self.name).encode('utf-8')).hexdigest()
return hash return hash
def _get_gamepad_type(self): def get_gamepad_type(self):
match self.vid, self.pid: match self.vid, self.pid:
case 0x0f0d, 0x00c1: case 0x0f0d, 0x00c1:
return self.GamepadType.NSWITCH return self.GamepadType.NSWITCH
return self.GamepadType.UNKNOWN return self.GamepadType.UNKNOWN
class EmulatedGamepad:
class GamepadType(Enum):
DGOC44U = 0
PS1 = 1
def __init__(self, type):
super().__init__()
self.type = type
class GamepadHandler:
def __init__(self):
super().__init__()
def find_gamepads():
gamepads = []
devices = [InputDevice(path) for path in list_devices()]
for device in devices:
gamepads.append(Gamepad(device.info.vendor, device.info.product, device.name))
return gamepads
def start_gamepad_emulator(gamepad: Gamepad, emulated_gamepad: EmulatedGamepad):
realtype = gamepad.type
emutype = emulated_gamepad.type
print(str(realtype)+str(emutype))
""" 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],
e.EV_ABS : [(e.ABS_X, AbsInfo(0, 0, 255, 0, 0, 0)), (e.ABS_Y, AbsInfo(0, 0, 255, 0, 0, 0))] e.EV_ABS : [(e.ABS_X, AbsInfo(0, 0, 255, 0, 0, 0)), (e.ABS_Y, AbsInfo(0, 0, 255, 0, 0, 0))]

View file

@ -33,4 +33,3 @@ class GamepadModel(QAbstractTableModel):
if role != Qt.DisplayRole or orientation != Qt.Horizontal: if role != Qt.DisplayRole or orientation != Qt.Horizontal:
return QVariant() return QVariant()
return headers[section] return headers[section]