From 7a2bc9845ef2944ee230ae1bd489a563c56beb0a Mon Sep 17 00:00:00 2001 From: Trigg Date: Fri, 23 Feb 2024 11:52:12 +0000 Subject: [PATCH] - Implemented Hide-on-mouseover --- discover_overlay/discover_overlay.py | 7 +- discover_overlay/glade/settings.glade | 140 +++++++++++++++++- discover_overlay/locales/base.pot | 11 +- .../locales/cy/LC_MESSAGES/default.po | 35 +++-- .../locales/de/LC_MESSAGES/default.po | 11 +- .../locales/en/LC_MESSAGES/default.po | 9 ++ .../locales/fr/LC_MESSAGES/default.po | 11 +- .../locales/tr/LC_MESSAGES/default.po | 11 +- discover_overlay/overlay.py | 59 +++++++- discover_overlay/settings_window.py | 14 ++ 10 files changed, 280 insertions(+), 28 deletions(-) diff --git a/discover_overlay/discover_overlay.py b/discover_overlay/discover_overlay.py index 302e141..4176bcb 100755 --- a/discover_overlay/discover_overlay.py +++ b/discover_overlay/discover_overlay.py @@ -245,7 +245,10 @@ class Discover: self.voice_overlay.set_order( config.getint("main", "order", fallback=0)) self.voice_overlay.set_hide_on_mouseover( - config.getboolean("text", "autohide", fallback=False)) + config.getboolean("main", "autohide", fallback=False)) + self.voice_overlay.set_mouseover_timer( + config.getint("main", "autohide_timer", fallback=1)) + self.voice_overlay.set_horizontal(config.getboolean( "main", "horizontal", fallback=False)) self.voice_overlay.set_guild_ids(self.parse_guild_ids( @@ -320,6 +323,8 @@ class Discover: config.getint("text", "line_limit", fallback=20)) self.text_overlay.set_hide_on_mouseover( config.getboolean("text", "autohide", fallback=False)) + self.text_overlay.set_mouseover_timer( + config.getint("text", "autohide_timer", fallback=1)) self.text_overlay.set_monitor(monitor) self.text_overlay.set_floating( diff --git a/discover_overlay/glade/settings.glade b/discover_overlay/glade/settings.glade index 430d652..379235c 100644 --- a/discover_overlay/glade/settings.glade +++ b/discover_overlay/glade/settings.glade @@ -117,6 +117,13 @@ 1 10 + + 1 + 100 + 1 + 1 + 10 + @@ -155,6 +162,13 @@ 1 10 + + 1 + 100 + 1 + 1 + 10 + -100 100 @@ -256,7 +270,7 @@ - + voice_grid True @@ -1448,7 +1462,72 @@ 0 1 - 2 + 3 + + + + + + voice_mouseover_grid + True + False + + + voice_hide_mouseover_label + True + False + Hide Overlay on Mouseover + 0 + + + 0 + 0 + + + + + voice_show_mouseover_label + True + False + Show again after (seconds) + 0 + + + 0 + 1 + + + + + voice_hide_mouseover + True + True + False + True + + + + 1 + 0 + + + + + voice_show_mouseover + True + True + voice_show_mouseover_adj + + + + 1 + 1 + + + + + 2 + 0 @@ -1469,7 +1548,7 @@ - + text_grid True @@ -1800,6 +1879,32 @@ 2 + + + text_hide_mouseover_label + True + False + Hide Overlay on Mouseover + 0 + + + 0 + 13 + + + + + text_show_mouseover_label + True + False + Show again after (seconds) + 0 + + + 0 + 14 + + Reset Text Settings @@ -1809,11 +1914,40 @@ True + + 1 + 15 + + + + + text_hide_mouseover + True + True + False + True + + 1 13 + + + text_show_mouseover + True + True + 1 + text_show_mouseover_adj + 1 + + + + 1 + 14 + + diff --git a/discover_overlay/locales/base.pot b/discover_overlay/locales/base.pot index ec35460..ef51d9e 100644 --- a/discover_overlay/locales/base.pot +++ b/discover_overlay/locales/base.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-28 19:09+0200\n" +"POT-Creation-Date: 2024-02-23 11:44+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -298,6 +298,12 @@ msgstr "" msgid "Reset Voice Settings" msgstr "" +msgid "Hide Overlay on Mouseover" +msgstr "" + +msgid "Show again after (seconds)" +msgstr "" + msgid "Voice" msgstr "" @@ -334,6 +340,9 @@ msgstr "" msgid "Reset Text Settings" msgstr "" +msgid "1" +msgstr "" + msgid "Text" msgstr "" diff --git a/discover_overlay/locales/cy/LC_MESSAGES/default.po b/discover_overlay/locales/cy/LC_MESSAGES/default.po index d7a5eaa..d5618bc 100644 --- a/discover_overlay/locales/cy/LC_MESSAGES/default.po +++ b/discover_overlay/locales/cy/LC_MESSAGES/default.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-28 19:09+0200\n" +"POT-Creation-Date: 2024-02-23 11:44+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -65,7 +65,7 @@ msgstr "Symud y defnyddiwr i ystafell lais, yn ôl ID Ystafell" msgid "" "If tray icon is enabled, start with only tray icon and no configuration " "window" -msgstr "" +msgstr "If tray icon is enabled, start with only tray icon and no configuration window" msgid "For gamescope compatibility ensure ENV has 'GDK_BACKEND=x11'" msgstr "Ar gyfer cydnawsedd gamescope sicrhau bod gan ENV 'GDK_BACKEND=x11'" @@ -228,7 +228,7 @@ msgid "Avatar" msgstr "Avatar" msgid "Show Names" -msgstr "" +msgstr "Dangos Enwau" msgid "Font" msgstr "Ffont" @@ -255,7 +255,7 @@ msgid "Show Test Content" msgstr "Dangos cynnwys y prawf" msgid "Test Data Count" -msgstr "" +msgstr "Profi Cyfrif Data" msgid "Show While Disconnected" msgstr "Dangos Wrth Ddatgysylltu" @@ -267,7 +267,7 @@ msgid "Limit text length" msgstr "Cyfyngu ar hyd y testun" msgid "Show Avatar" -msgstr "" +msgstr "Dangos Avatar" msgid "Square Avatar" msgstr "Avatar Sgwâr" @@ -285,13 +285,13 @@ msgid "Display Speakers Only" msgstr "Dangos siaradwyr yn unig" msgid "Speakers Grace Period" -msgstr "" +msgstr "Amser Siaradwr" msgid "Overflow Style" msgstr "Arddull gorlifo" msgid "Order Users By" -msgstr "" +msgstr "Gorchmynion Defnyddwyr gan" msgid "Highlight Self" msgstr "Tynnu sylw at eich hunan" @@ -300,10 +300,16 @@ msgid "Border width" msgstr "lled y ffin" msgid "Padding between users" -msgstr "" +msgstr "Padio rhwng defnyddwyr" msgid "Reset Voice Settings" -msgstr "" +msgstr "Ailosod Gosodiadau Llais" + +msgid "Hide Overlay on Mouseover" +msgstr "Cuddio troshaenu ar mouseover" + +msgid "Show again after (seconds)" +msgstr "Dangoswch eto ar ôl" msgid "Voice" msgstr "LLais" @@ -336,10 +342,13 @@ msgid "Server" msgstr "Gweinydd" msgid "Popup time limit" -msgstr "" +msgstr "Terfyn amser popup" msgid "Reset Text Settings" -msgstr "" +msgstr "Ailosod Gosodiadau Testun" + +msgid "1" +msgstr "1" msgid "Text" msgstr "Testun" @@ -375,7 +384,7 @@ msgid "Unknown" msgstr "Anhysbys" msgid "Reset Notification Settings" -msgstr "" +msgstr "Ailosodwch Gosodiadau Hysbysu " msgid "Notification" msgstr "Hysbysiad" @@ -399,7 +408,7 @@ msgid "Hide Overlays" msgstr "Cuddio troslun" msgid "Reset Core Settings" -msgstr "" +msgstr "Ailosod Gosodiadau Craidd" msgid "Core" msgstr "Craidd" diff --git a/discover_overlay/locales/de/LC_MESSAGES/default.po b/discover_overlay/locales/de/LC_MESSAGES/default.po index ea985d3..df8a5ec 100644 --- a/discover_overlay/locales/de/LC_MESSAGES/default.po +++ b/discover_overlay/locales/de/LC_MESSAGES/default.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: unnamed project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-28 19:09+0200\n" +"POT-Creation-Date: 2024-02-23 11:44+0000\n" "PO-Revision-Date: 2022-09-23 23:05+0200\n" "Last-Translator: Baumfinder \n" "Language-Team: German \n" @@ -314,6 +314,12 @@ msgstr "" msgid "Reset Voice Settings" msgstr "" +msgid "Hide Overlay on Mouseover" +msgstr "" + +msgid "Show again after (seconds)" +msgstr "" + msgid "Voice" msgstr "Sprache" @@ -350,6 +356,9 @@ msgstr "" msgid "Reset Text Settings" msgstr "" +msgid "1" +msgstr "" + msgid "Text" msgstr "Text" diff --git a/discover_overlay/locales/en/LC_MESSAGES/default.po b/discover_overlay/locales/en/LC_MESSAGES/default.po index 71df261..d9a21c5 100644 --- a/discover_overlay/locales/en/LC_MESSAGES/default.po +++ b/discover_overlay/locales/en/LC_MESSAGES/default.po @@ -279,6 +279,12 @@ msgstr "" msgid "Reset Voice Settings" msgstr "" +msgid "Hide Overlay on Mouseover" +msgstr "" + +msgid "Show again after (seconds)" +msgstr "" + msgid "Voice" msgstr "" @@ -315,6 +321,9 @@ msgstr "" msgid "Reset Text Settings" msgstr "" +msgid "1" +msgstr "" + msgid "Text" msgstr "" diff --git a/discover_overlay/locales/fr/LC_MESSAGES/default.po b/discover_overlay/locales/fr/LC_MESSAGES/default.po index 78839f5..67d057d 100644 --- a/discover_overlay/locales/fr/LC_MESSAGES/default.po +++ b/discover_overlay/locales/fr/LC_MESSAGES/default.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-28 19:09+0200\n" +"POT-Creation-Date: 2024-02-23 11:44+0000\n" "PO-Revision-Date: 2023-07-28 19:06+0200\n" "Last-Translator: Noé Lopez \n" "Language-Team: English \n" @@ -307,6 +307,12 @@ msgstr "Espace entre les utilisateurs" msgid "Reset Voice Settings" msgstr "Réinitialiser les paramètres de voix" +msgid "Hide Overlay on Mouseover" +msgstr "" + +msgid "Show again after (seconds)" +msgstr "" + msgid "Voice" msgstr "Voix" @@ -343,6 +349,9 @@ msgstr "Limite de temps du popup" msgid "Reset Text Settings" msgstr "Réinitialiser les paramètres de texte" +msgid "1" +msgstr "" + msgid "Text" msgstr "Texte" diff --git a/discover_overlay/locales/tr/LC_MESSAGES/default.po b/discover_overlay/locales/tr/LC_MESSAGES/default.po index 17962a2..0718f1f 100644 --- a/discover_overlay/locales/tr/LC_MESSAGES/default.po +++ b/discover_overlay/locales/tr/LC_MESSAGES/default.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-28 19:09+0200\n" +"POT-Creation-Date: 2024-02-23 11:44+0000\n" "PO-Revision-Date: 2023-04-17 15:44+0300\n" "Last-Translator: Ahmet Arda Kavakcı \n" "Language-Team: Turkish \n" @@ -306,6 +306,12 @@ msgstr "Kullanıcılar arası iç boşluk" msgid "Reset Voice Settings" msgstr "" +msgid "Hide Overlay on Mouseover" +msgstr "" + +msgid "Show again after (seconds)" +msgstr "" + msgid "Voice" msgstr "Ses" @@ -342,6 +348,9 @@ msgstr "" msgid "Reset Text Settings" msgstr "" +msgid "1" +msgstr "" + msgid "Text" msgstr "Yazı" diff --git a/discover_overlay/overlay.py b/discover_overlay/overlay.py index aca6ba5..d8a908e 100644 --- a/discover_overlay/overlay.py +++ b/discover_overlay/overlay.py @@ -65,6 +65,7 @@ class OverlayWindow(Gtk.Window): self.hidden = False self.enabled = False self.set_size_request(50, 50) + self.hide_on_mouseover = True self.connect('draw', self.overlay_draw_pre) # Set RGBA screen = self.get_screen() @@ -97,9 +98,10 @@ class OverlayWindow(Gtk.Window): self.floating = False self.force_xshape = False self.context = None - self.autohide = False self.redraw_id = None + self.draw_blank = False + self.timeout_mouse_over = 1 self.timer_after_draw = None if piggyback: @@ -108,6 +110,11 @@ class OverlayWindow(Gtk.Window): self.get_screen().connect("composited-changed", self.check_composite) self.get_screen().connect("monitors-changed", self.screen_changed) self.get_screen().connect("size-changed", self.screen_changed) + self.get_window().set_events(self.get_window().get_events() | Gdk.EventMask.ENTER_NOTIFY_MASK) + self.connect("enter-notify-event", self.mouseover) + self.connect("leave-notify-event", self.mouseout) + self.mouse_over_timer = None + def set_gamescope_xatom(self, enabled): if self.piggyback_parent: @@ -163,6 +170,26 @@ class OverlayWindow(Gtk.Window): else: if not self.hidden and self.enabled: self.set_gamescope_xatom(1) + # If we're hiding on mouseover, allow mouse-in + if self.hide_on_mouseover: + # We've mouse-overed + if self.draw_blank: + self.set_untouchable() + context.set_source_rgba(0.0, 0.0, 0.0, 0.0) + context.set_operator(cairo.OPERATOR_SOURCE) + context.paint() + return + else: + (width, height) = self.get_size() + surface = cairo.ImageSurface( + cairo.FORMAT_ARGB32, width, height) + surface_ctx = cairo.Context(surface) + self.overlay_draw(None, surface_ctx) + reg = Gdk.cairo_region_create_from_surface(surface) + self.input_shape_combine_region(reg) + + + self.overlay_draw(_w, context, data) def overlay_draw(self, _w, context, data=None): @@ -203,6 +230,16 @@ class OverlayWindow(Gtk.Window): reg = Gdk.cairo_region_create_from_surface(surface) self.input_shape_combine_region(reg) + def set_hide_on_mouseover(self, hide): + self.hide_on_mouseover = hide + if self.hide_on_mouseover: + self.set_needs_redraw() + else: + self.set_untouchable() + + def set_mouseover_timer(self, time): + self.timeout_mouse_over = time + def unset_shape(self): """ Remove XShape (not input shape) @@ -375,12 +412,6 @@ class OverlayWindow(Gtk.Window): self.set_gamescope_xatom(0) self.hide() - def set_hide_on_mouseover(self, hide): - """ - Set Mouseover hide - """ - self.autohide = hide - def set_task(self, visible): self.set_skip_pager_hint(not visible) self.set_skip_taskbar_hint(not visible) @@ -390,3 +421,17 @@ class OverlayWindow(Gtk.Window): def screen_changed(self, screen=None): self.set_monitor(self.monitor) + + def mouseover(self, a=None, b=None): + self.draw_blank = True + self.set_needs_redraw() + return True + + def mouseout(self, a=None, b=None): + GLib.timeout_add_seconds(self.timeout_mouse_over, self.mouseout_timed) + + return True + + def mouseout_timed(self, a=None, b=None): + self.draw_blank = False + self.set_needs_redraw() \ No newline at end of file diff --git a/discover_overlay/settings_window.py b/discover_overlay/settings_window.py index bc8916f..6282ee3 100644 --- a/discover_overlay/settings_window.py +++ b/discover_overlay/settings_window.py @@ -1132,3 +1132,17 @@ class MainSettingsWindow(): def notification_reset_all(self, button): self.config_remove_section("notification") self.read_config() + + def voice_hide_mouseover_changed(self, button): + self.config_set("main", "autohide", "%s" % (button.get_active())) + + def text_hide_mouseover_changed(self,button): + self.config_set("text", "autohide", "%s" % (button.get_active())) + + def voice_mouseover_timeout_changed(self, button): + self.config_set("main", "autohide_timer", "%s" % + (int(button.get_value()))) + + def text_mouseover_timeout_changed(self, button): + self.config_set("text", "autohide_timer", "%s" % + (int(button.get_value()))) \ No newline at end of file