Tests with configs

This commit is contained in:
Marc Riera Irigoyen 2022-10-12 23:48:00 +02:00
parent 25ba4cdbc0
commit 8c875d3b8d
5 changed files with 48 additions and 27 deletions

View file

@ -3,12 +3,14 @@
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.main_view = MainWindow(GamepadHandler) self.config = ConfigHandler("config.json")
self.main_view = MainWindow(GamepadHandler, self.config)
self.main_view.show() self.main_view.show()
if __name__ == '__main__': if __name__ == '__main__':

View file

@ -6,10 +6,11 @@ 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): def __init__(self, gamepad_handler, config_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)
@ -20,9 +21,12 @@ class MainWindow(QMainWindow):
self._gui.tableView_physicalControllerList.horizontalHeader().setSectionResizeMode(2, QHeaderView.ResizeToContents) 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)
self._gui.pushButton_physicalControllerConfig.clicked.connect(self.save)
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()
return
def save(self):
self._config_handler.save()

View file

@ -1,13 +1,27 @@
import json
class ConfigHandler: class ConfigHandler:
def __init__(self): def __init__(self, path):
super().__init__() super().__init__()
def load(): 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 return
def save():
return
def update():
return

View file

@ -1,5 +1,6 @@
from enum import Enum 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
class GamepadHandler: class GamepadHandler:
def __init__(self): def __init__(self):
@ -24,11 +25,23 @@ class Gamepad:
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.id = self._get_gamepad_id()
self.config = None self.hash = self._get_gamepad_hash()
self.type = self._get_gamepad_type()
self.config = []
def get_gamepad_type(self, vid, pid): def _get_gamepad_id(self):
match vid, pid: vid = format(self.vid, "x").zfill(4)
pid = format(self.pid, "x").zfill(4)
id = str(vid + ":" + pid)
return id
def _get_gamepad_hash(self):
hash = sha1(str(self.id + ":" + self.name).encode('utf-8')).hexdigest()
return hash
def _get_gamepad_type(self):
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

View file

@ -1,4 +1,3 @@
from hashlib import sha1
from PyQt5.QtCore import Qt, QVariant, QAbstractTableModel from PyQt5.QtCore import Qt, QVariant, QAbstractTableModel
from handlers.gamepad import Gamepad from handlers.gamepad import Gamepad
@ -13,7 +12,7 @@ class GamepadModel(QAbstractTableModel):
if role == Qt.DisplayRole: if role == Qt.DisplayRole:
match index.column(): match index.column():
case 0: case 0:
return self.get_gamepad_id(index) return self.gamepads[index.row()].id
case 1: case 1:
return self.gamepads[index.row()].name return self.gamepads[index.row()].name
case 2: case 2:
@ -35,14 +34,3 @@ class GamepadModel(QAbstractTableModel):
return QVariant() return QVariant()
return headers[section] return headers[section]
def get_gamepad_id(self, index):
vid = format(self.gamepads[index.row()].vid, "x").zfill(4)
pid = format(self.gamepads[index.row()].pid, "x").zfill(4)
id = str(vid + ":" + pid)
return id
def get_gamepad_hash(self, index):
id = self.get_gamepad_id(index)
name = self.gamepads[index.row()].name
hash = sha1(str(id + ":" + name).encode('utf-8')).hexdigest()
return hash