# Python imports # 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 .body_grid import BodyGrid class RegionWindow(Gtk.Window): def __init__(self): super(RegionWindow, self).__init__() self._set_window_data() self._setup_styling() self._setup_signals() self._subscribe_to_events() self._load_widgets() def _setup_styling(self): self.set_default_size(600, 480) self.set_keep_above(True) self.set_deletable(False) self.set_decorated(False) self.set_resizable(True) self.set_skip_pager_hint(True) self.set_skip_taskbar_hint(True) self.set_has_resize_grip(True) def _setup_signals(self): ... def _subscribe_to_events(self): event_system.subscribe("show_region_window", self._show_region_window) def _load_widgets(self): gdk_window = self.get_screen().get_root_window() self.add( BodyGrid(self, gdk_window) ) def _set_window_data(self) -> None: 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) # bind css file cssProvider = Gtk.CssProvider() cssProvider.load_from_path( settings.get_css_file() ) screen = Gdk.Screen.get_default() styleContext = Gtk.StyleContext() styleContext.add_provider_for_screen(screen, cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_USER) def _area_draw(self, widget: Gtk.ApplicationWindow, cr: cairo.Context) -> None: cr.set_source_rgba( *(0, 0, 0, 0.0) ) cr.set_operator(cairo.OPERATOR_SOURCE) cr.paint() cr.set_operator(cairo.OPERATOR_OVER) def _show_region_window(self): self.show()