def __init__(self, manager, away_message): if status.InteractiveDebug: Gtk.Window.__init__(self, type=Gtk.WindowType.TOPLEVEL, decorated=True, skip_taskbar_hint=False) else: Gtk.Window.__init__(self, type=Gtk.WindowType.POPUP, decorated=False, skip_taskbar_hint=True) self.get_style_context().add_class("csstage") trackers.con_tracker_get().connect(singletons.Backgrounds, "changed", self.on_bg_changed) self.destroying = False self.manager = manager status.screen = CScreensaver.Screen.new(status.Debug) self.away_message = away_message self.monitors = [] self.last_focus_monitor = -1 self.overlay = None self.clock_widget = None self.albumart_widget = None self.unlock_dialog = None self.audio_panel = None self.info_panel = None self.stage_refresh_id = 0 self.floaters = [] self.event_handler = EventHandler(manager) self.get_style_context().remove_class("background") self.set_events(self.get_events() | Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK | Gdk.EventMask.KEY_PRESS_MASK | Gdk.EventMask.KEY_RELEASE_MASK | Gdk.EventMask.EXPOSURE_MASK | Gdk.EventMask.VISIBILITY_NOTIFY_MASK | Gdk.EventMask.ENTER_NOTIFY_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK | Gdk.EventMask.FOCUS_CHANGE_MASK) c = Gdk.RGBA(0, 0, 0, 0) self.override_background_color(Gtk.StateFlags.NORMAL, c) self.update_geometry() self.overlay = Gtk.Overlay() trackers.con_tracker_get().connect(self.overlay, "realize", self.on_realized) trackers.con_tracker_get().connect(self.overlay, "get-child-position", self.position_overlay_child) self.overlay.show_all() self.add(self.overlay) # We hang onto the UPowerClient here so power events can # trigger changes to the info panel. self.power_client = singletons.UPowerClient trackers.con_tracker_get().connect(self.power_client, "power-state-changed", self.on_power_state_changed) # This filter suppresses any other windows that might share # our window group in muffin, from showing up over the Stage. # For instance: Chrome and Firefox native notifications. self.gdk_filter = CScreensaver.GdkEventFilter.new(self, 0) trackers.con_tracker_get().connect(status.screen, "size-changed", self.on_screen_size_changed) trackers.con_tracker_get().connect(status.screen, "monitors-changed", self.on_monitors_changed) trackers.con_tracker_get().connect(status.screen, "composited-changed", self.on_composited_changed) trackers.con_tracker_get().connect(self, "grab-broken-event", self.on_grab_broken_event) if status.InteractiveDebug: self.set_interactive_debugging(True)
def __init__(self, manager): super(OffscreenWindow, self).__init__() self.event_handler = EventHandler(manager)
def __init__(self, screen, manager, away_message): Gtk.Window.__init__(self, type=Gtk.WindowType.POPUP, decorated=False, skip_taskbar_hint=True) self.get_style_context().add_class("csstage") trackers.con_tracker_get().connect(singletons.Backgrounds, "changed", self.on_bg_changed) self.destroying = False self.manager = manager self.screen = screen self.away_message = away_message self.monitors = [] self.last_focus_monitor = -1 self.overlay = None self.clock_widget = None self.albumart_widget = None self.unlock_dialog = None self.status_bar = None self.floaters = [] self.event_handler = EventHandler(manager) self.get_style_context().remove_class("background") self.set_events(self.get_events() | Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK | Gdk.EventMask.KEY_PRESS_MASK | Gdk.EventMask.KEY_RELEASE_MASK | Gdk.EventMask.EXPOSURE_MASK | Gdk.EventMask.VISIBILITY_NOTIFY_MASK | Gdk.EventMask.ENTER_NOTIFY_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK | Gdk.EventMask.FOCUS_CHANGE_MASK) self.update_geometry() self.set_opacity(0.0) self.overlay = Gtk.Overlay() self.fader = Fader(self) trackers.con_tracker_get().connect(self.overlay, "realize", self.on_realized) trackers.con_tracker_get().connect(self.overlay, "get-child-position", self.position_overlay_child) self.overlay.show_all() self.add(self.overlay) # We hang onto the UPowerClient here so power events can # trigger changes to and from low-power mode (no plugins.) self.power_client = singletons.UPowerClient # This filter suppresses any other windows that might share # our window group in muffin, from showing up over the Stage. # For instance: Chrome and Firefox native notifications. self.gdk_filter = CScreensaver.GdkEventFilter() trackers.con_tracker_get().connect(self.screen, "monitors-changed", self.on_screen_changed) trackers.con_tracker_get().connect(self.screen, "size-changed", self.on_screen_changed)