Skip to content

Commit

Permalink
Remove all Python 2 __future__ calls
Browse files Browse the repository at this point in the history
  • Loading branch information
C0rn3j committed Aug 27, 2024
1 parent 504f8ff commit 3a82071
Show file tree
Hide file tree
Showing 91 changed files with 4,349 additions and 4,473 deletions.
977 changes: 488 additions & 489 deletions scc/actions.py

Large diffs are not rendered by default.

21 changes: 9 additions & 12 deletions scc/cemuhook_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
Accepts all connections from clients and sends data captured
by 'cemuhook' actions to them.
"""
from __future__ import unicode_literals
from scc.tools import find_library
from scc.lib.enum import IntEnum
from ctypes import c_uint32, c_int, c_bool, c_char_p, c_size_t, c_float
Expand Down Expand Up @@ -33,7 +32,7 @@ class MessageType(IntEnum):
class CemuhookServer:
C_DATA_T = c_float * 6
timeout = timedelta(seconds=1)

def __init__(self, daemon):
self._lib = find_library('libcemuhook')
self._lib.cemuhook_data_received.argtypes = [ c_int, c_char_p, c_int, c_char_p, c_size_t ]
Expand All @@ -43,44 +42,42 @@ def __init__(self, daemon):
self._lib.cemuhook_socket_enable.argtypes = []
self._lib.cemuhook_socket_enable.restype = c_bool
self.last_signal = datetime.now()

if not self._lib.cemuhook_socket_enable():
raise OSError("cemuhook_socket_enable failed")

self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

poller = daemon.get_poller()
daemon.poller.register(self.socket.fileno(), poller.POLLIN, self.on_data_received)

server_port = int(os.getenv('SCC_SERVER_PORT') or PORT);
server_ip = os.getenv('SCC_SERVER_IP') or IP;
self.socket.bind((server_ip, server_port))
log.info("Created CemuHookUDP Motion Provider")

Thread(target=self._keepalive).start()


def _keepalive(self):
while True:
if datetime.now() - self.last_signal >= self.timeout:
# feed all zeroes to indicate the gyro has not changed
self.feed((0.0, 0.0, 0.0, 0.0, 0.0, 0.0))
sleep(1)

def on_data_received(self, fd, event_type):
if fd != self.socket.fileno(): return
message, (ip, port) = self.socket.recvfrom(BUFFER_SIZE)
buffer = create_string_buffer(BUFFER_SIZE)
self._lib.cemuhook_data_received(fd, ip.encode('utf-8'), port, message, len(message), buffer)


def feed(self, data):
self.last_signal = datetime.now()
c_data = CemuhookServer.C_DATA_T()
#log.debug(data)
c_data[0:6] = data[0:6]
#log.debug(list(c_data))
self._lib.cemuhook_feed(self.socket.fileno(), 0, c_data)


55 changes: 26 additions & 29 deletions scc/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
Handles loading, storing and querying config file
"""
from __future__ import unicode_literals

from scc.paths import get_config_path
from scc.profile import Encoder
from scc.special_actions import ChangeProfileAction
Expand Down Expand Up @@ -39,7 +37,7 @@ class Config(object):
"ds4drv": True, # At least one of hiddrv or evdevdrv has to be enabled as well
"ds5drv": True,
},
"fix_xinput" : True, # If True, attempt is done to deatach emulated controller
"fix_xinput" : True, # If True, attempt is done to deatach emulated controller
# from 'Virtual core pointer' core device.
"gui": {
# GUI-only settings
Expand Down Expand Up @@ -112,7 +110,7 @@ class Config(object):
# See drivers/sc_dongle.py, read_serial method
"ignore_serials" : True,
}

CONTROLLER_DEFAULTS = {
# Defaults for controller config
"name": None, # Filled with controller ID on runtime
Expand All @@ -126,13 +124,13 @@ class Config(object):
"menu_confirm": "A",
"menu_cancel": "B",
}


def __init__(self):
self.filename = os.path.join(get_config_path(), "config.json")
self.reload()


def reload(self):
""" (Re)loads configuration. Works as load(), but handles exceptions """
try:
Expand All @@ -143,13 +141,13 @@ def reload(self):
self.create()
if self.check_values():
self.save()


def _check_dict(self, values, defaults):
"""
Recursivelly checks if 'config' contains all keys in 'defaults'.
Creates keys with default values where missing.
Returns True if anything was changed.
"""
rv = False
Expand All @@ -160,13 +158,13 @@ def _check_dict(self, values, defaults):
if type(values[d]) == dict:
rv = self._check_dict(values[d], defaults[d]) or rv
return rv


def check_values(self):
"""
Check if all required values are in place and fill by default
whatever is missing.
Returns True if anything gets changed.
"""
rv = self._check_dict(self.values, self.DEFAULTS)
Expand All @@ -178,8 +176,8 @@ def check_values(self):
del a["profile"]
rv = True
return rv


def get_controller_config(self, controller_id):
"""
Returns self['controllers'][controller_id], creating new node populated
Expand All @@ -202,19 +200,19 @@ def get_controller_config(self, controller_id):
}
rv["name"] = controller_id
return rv


def load(self):
self.values = json.loads(open(self.filename, "r").read())


def create(self):
""" Creates new, empty configuration """
self.values = {}
self.check_values()
self.save()


def save(self):
""" Saves configuration file """
# Check & create directory
Expand All @@ -225,22 +223,21 @@ def save(self):
jstr = Encoder(sort_keys=True, indent=4).encode(data)
open(self.filename, "w").write(jstr)
log.debug("Configuration saved")


def __iter__(self):
for k in self.values:
yield k

def get(self, key, default=None):
return self.values.get(key, default)

def set(self, key, value):
self.values[key] = value

__getitem__ = get
__setitem__ = set

def __contains__(self, key):
""" Returns true if there is such value """
return key in self.values

18 changes: 8 additions & 10 deletions scc/gui/aboutdialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"""
SC-Controller - About dialog
"""
from __future__ import unicode_literals
from scc.tools import _

from gi.repository import Gtk
Expand All @@ -12,15 +11,15 @@
class AboutDialog(Editor):
""" Standard looking about dialog """
GLADE = "about.glade"

def __init__(self, app):
self.app = app
self.setup_widgets()


def setup_widgets(self):
Editor.setup_widgets(self)

# Get app version
app_ver = "(unknown version)"
try:
Expand All @@ -33,15 +32,14 @@ def setup_widgets(self):
pass
# Display version in UI
self.builder.get_object("lblVersion").set_label(app_ver)


def show(self, modal_for):
if modal_for:
self.window.set_transient_for(modal_for)
self.window.set_modal(True)
self.window.show()


def on_dialog_response(self, *a):
self.close()

Loading

0 comments on commit 3a82071

Please sign in to comment.