Python-With-Kivy-Template/src/core/window.py

79 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__()
settings_manager.set_main_window(self)
self._controller = None
self._setup_styling()
self._setup_signals()
self._subscribe_to_events()
self._load_widgets(args, unknownargs)
def _setup_styling(self):
self.title = app_name
self.icon = settings_manager.get_window_icon()
self.size = (settings.config.main_window_width,
settings.config.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_manager.clear_pid()
quit()
def on_stop(self):
self._tear_down()