Mouse_Keyboard/src/core/window.py

72 lines
2.0 KiB
Python

# Python imports
import os
# Lib imports
import gi
import cairo
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
from gi.repository import Gtk
from gi.repository import Gdk
# Application imports
from .signals_mixin import SignalsMixin
from .container import Container
class Window(SignalsMixin, Gtk.ApplicationWindow):
"""docstring for Window."""
def __init__(self, args, unknownargs):
super(Window, self).__init__()
self.setup_win_settings()
self.setup_styling()
self.setup_signals()
self.setup_custom_event_signals()
self.add(Container())
self.show_all()
def setup_signals(self):
self.connect("delete-event", Gtk.main_quit)
def setup_win_settings(self):
self.set_icon_from_file(ICON_FILE)
self.set_title(app_name)
self.set_default_size(800, 200)
self.set_keep_above(True)
self.set_accept_focus(False)
self.set_skip_taskbar_hint(True)
self.set_skip_pager_hint(True)
self.set_type_hint(3) # 3 = TOOLBAR
self.set_gravity(8) # 5 = CENTER, 8 = SOUTH
self.set_position(1) # 1 = CENTER, 4 = CENTER_ALWAYS
self.stick()
def setup_styling(self):
screen = self.get_screen()
visual = screen.get_rgba_visual()
if visual != None and screen.is_composited():
self.set_visual(visual)
self.set_app_paintable(True)
self.connect("draw", self._area_draw)
css_provider = Gtk.CssProvider()
css_provider.load_from_path(CSS_FILE)
screen = Gdk.Screen.get_default()
style_context = Gtk.StyleContext()
style_context.add_provider_for_screen(screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
def _area_draw(self, widget, cr):
cr.set_source_rgba(0, 0, 0, 0.54)
cr.set_operator(cairo.OPERATOR_SOURCE)
cr.paint()
cr.set_operator(cairo.OPERATOR_OVER)
def main(self):
Gtk.main()