2021-11-25 06:44:12 +00:00
|
|
|
# Python imports
|
2021-10-11 05:34:13 +00:00
|
|
|
import builtins
|
|
|
|
|
2021-12-07 04:44:39 +00:00
|
|
|
# Lib imports
|
2021-11-25 06:44:12 +00:00
|
|
|
|
|
|
|
# Application imports
|
2022-01-31 02:29:57 +00:00
|
|
|
from controller import IPCServerMixin
|
2021-11-25 06:44:12 +00:00
|
|
|
|
|
|
|
|
2021-12-07 04:44:39 +00:00
|
|
|
|
|
|
|
|
2022-01-20 02:14:44 +00:00
|
|
|
class Builtins(IPCServerMixin):
|
2021-10-14 02:30:08 +00:00
|
|
|
"""Docstring for __builtins__ extender"""
|
2021-10-11 05:34:13 +00:00
|
|
|
|
2021-10-14 02:30:08 +00:00
|
|
|
def __init__(self):
|
2022-02-01 07:43:09 +00:00
|
|
|
# NOTE: The format used is list of [type, target, (data,)] Where:
|
2022-01-31 00:09:00 +00:00
|
|
|
# type is useful context for control flow,
|
|
|
|
# target is the method to call,
|
|
|
|
# data is the method parameters to give
|
2021-10-14 02:30:08 +00:00
|
|
|
# Where data may be any kind of data
|
2021-10-14 03:01:12 +00:00
|
|
|
self._gui_events = []
|
2022-02-01 07:43:09 +00:00
|
|
|
self._module_events = []
|
2021-11-25 06:44:12 +00:00
|
|
|
self.is_ipc_alive = False
|
2022-01-24 16:24:55 +00:00
|
|
|
self.ipc_authkey = b'solarfm-ipc'
|
|
|
|
self.ipc_address = '127.0.0.1'
|
|
|
|
self.ipc_port = 4848
|
|
|
|
self.ipc_timeout = 15.0
|
|
|
|
|
2021-10-11 05:34:13 +00:00
|
|
|
|
2021-10-14 02:30:08 +00:00
|
|
|
# Makeshift fake "events" type system FIFO
|
|
|
|
def _pop_gui_event(self):
|
|
|
|
if len(self._gui_events) > 0:
|
|
|
|
return self._gui_events.pop(0)
|
|
|
|
return None
|
2021-10-11 05:34:13 +00:00
|
|
|
|
2022-02-01 07:43:09 +00:00
|
|
|
def _pop_module_event(self):
|
|
|
|
if len(self._module_events) > 0:
|
|
|
|
return self._module_events.pop(0)
|
2021-10-14 02:30:08 +00:00
|
|
|
return None
|
2021-10-11 05:34:13 +00:00
|
|
|
|
|
|
|
|
2021-10-14 02:30:08 +00:00
|
|
|
def push_gui_event(self, event):
|
|
|
|
if len(event) == 3:
|
|
|
|
self._gui_events.append(event)
|
|
|
|
return None
|
2021-10-11 05:34:13 +00:00
|
|
|
|
2022-02-01 07:43:09 +00:00
|
|
|
raise Exception("Invald event format! Please do: [type, target, (data,)]")
|
2021-10-11 05:34:13 +00:00
|
|
|
|
2022-02-01 07:43:09 +00:00
|
|
|
def push_module_event(self, event):
|
2021-10-14 02:30:08 +00:00
|
|
|
if len(event) == 3:
|
2022-02-01 07:43:09 +00:00
|
|
|
self._module_events.append(event)
|
2021-10-14 02:30:08 +00:00
|
|
|
return None
|
2021-10-11 05:34:13 +00:00
|
|
|
|
2022-02-01 07:43:09 +00:00
|
|
|
raise Exception("Invald event format! Please do: [type, target, (data,)]")
|
2021-10-11 05:34:13 +00:00
|
|
|
|
2021-10-14 02:30:08 +00:00
|
|
|
def read_gui_event(self):
|
|
|
|
return self._gui_events[0]
|
|
|
|
|
2022-02-01 07:43:09 +00:00
|
|
|
def read_module_event(self):
|
|
|
|
return self._module_events[0]
|
2021-10-14 02:30:08 +00:00
|
|
|
|
|
|
|
def consume_gui_event(self):
|
|
|
|
return self._pop_gui_event()
|
|
|
|
|
2022-02-01 07:43:09 +00:00
|
|
|
def consume_module_event(self):
|
|
|
|
return self._pop_module_event()
|
2021-10-14 02:30:08 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# NOTE: Just reminding myself we can add to builtins two different ways...
|
|
|
|
# __builtins__.update({"event_system": Builtins()})
|
2022-01-31 00:09:00 +00:00
|
|
|
builtins.app_name = "SolarFM"
|
2021-10-14 02:30:08 +00:00
|
|
|
builtins.event_system = Builtins()
|
2022-01-19 22:10:43 +00:00
|
|
|
builtins.event_sleep_time = 0.2
|
2021-11-18 01:55:12 +00:00
|
|
|
builtins.debug = False
|
2022-01-20 05:49:19 +00:00
|
|
|
builtins.trace_debug = False
|