81 lines
1.9 KiB
Python
81 lines
1.9 KiB
Python
# Python imports
|
|
import time
|
|
import signal
|
|
|
|
# Lib imports
|
|
from kivy.app import App
|
|
from kivy.graphics import Color, Rectangle
|
|
from kivy.config import Config
|
|
from kivy.properties import (
|
|
BooleanProperty,
|
|
StringProperty,
|
|
ListProperty,
|
|
)
|
|
|
|
# Application imports
|
|
from core.controller import Controller
|
|
|
|
|
|
class ControllerStartExceptiom(Exception):
|
|
...
|
|
|
|
|
|
|
|
|
|
class Window(App):
|
|
"""docstring for Window."""
|
|
|
|
shape_image = StringProperty('', force_dispatch=True)
|
|
|
|
def __init__(self, args, unknownargs):
|
|
super(Window, self).__init__()
|
|
|
|
self._controller = None
|
|
|
|
self._setup_styling()
|
|
self._setup_signals()
|
|
self._subscribe_to_events()
|
|
|
|
settings.set_main_window(self)
|
|
self._load_widgets(args, unknownargs)
|
|
|
|
|
|
def _setup_styling(self):
|
|
self.title = app_name
|
|
self.icon = settings.get_window_icon()
|
|
self.size = (settings.get_main_window_width(),
|
|
settings.get_main_window_height())
|
|
|
|
def _setup_signals(self):
|
|
...
|
|
|
|
def _subscribe_to_events(self):
|
|
event_system.subscribe("tear_down", self._tear_down)
|
|
|
|
def _load_widgets(self, args, unknownargs):
|
|
self._controller = Controller(args, unknownargs)
|
|
if not self._controller:
|
|
raise ControllerStartException("Controller exited and doesn't exist...")
|
|
|
|
def build(self):
|
|
self.root = root = self._controller.get_core_widget()
|
|
root.bind(size=self._update_rect, pos=self._update_rect)
|
|
|
|
with root.canvas.before:
|
|
Color(25, 25, 25, 0.64)
|
|
self.rect = Rectangle(size=root.size, pos=root.pos)
|
|
|
|
return root
|
|
|
|
def _update_rect(self, instance, value):
|
|
self.rect.pos = instance.pos
|
|
self.rect.size = instance.size
|
|
|
|
def _tear_down(self, widget=None, eve=None):
|
|
settings.clear_pid()
|
|
time.sleep(event_sleep_time)
|
|
quit()
|
|
|
|
def on_stop(self):
|
|
self._tear_down()
|