- Fix hide overlay option
- Added settings keypress handler - - Override arrow key behaviour to always be navigation - - Add space/escape keys to focus on specific widgets - - when focused allow alerting of number - - Highlight focused widget - - F1/F2 to switch tabs - Moved advanced voice options to another tab - Changed float/edge option to a pull-down box -Fixed bug where mouse-over options reset to default in settings - Fixed show/hide on float/edge options
This commit is contained in:
parent
29f8c7476c
commit
2243681f63
3 changed files with 1497 additions and 1404 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -424,17 +424,16 @@ class OverlayWindow(Gtk.Window):
|
||||||
"""
|
"""
|
||||||
Set if this overlay should be visible
|
Set if this overlay should be visible
|
||||||
"""
|
"""
|
||||||
if self.enabled != enabled:
|
self.enabled = enabled
|
||||||
self.enabled = enabled
|
if enabled and not self.hidden and not self.piggyback_parent:
|
||||||
if enabled and not self.hidden and not self.piggyback_parent:
|
self.show_all()
|
||||||
self.show_all()
|
self.set_untouchable()
|
||||||
self.set_untouchable()
|
if self.discover.steamos:
|
||||||
if self.discover.steamos:
|
self.set_gamescope_xatom(1)
|
||||||
self.set_gamescope_xatom(1)
|
else:
|
||||||
else:
|
if self.discover.steamos:
|
||||||
if self.discover.steamos:
|
self.set_gamescope_xatom(0)
|
||||||
self.set_gamescope_xatom(0)
|
self.hide()
|
||||||
self.hide()
|
|
||||||
|
|
||||||
def set_task(self, visible):
|
def set_task(self, visible):
|
||||||
self.set_skip_pager_hint(not visible)
|
self.set_skip_pager_hint(not visible)
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,9 @@ class MainSettingsWindow():
|
||||||
self.icon_name = "discover-overlay"
|
self.icon_name = "discover-overlay"
|
||||||
self.tray_icon_name = "discover-overlay-tray"
|
self.tray_icon_name = "discover-overlay-tray"
|
||||||
|
|
||||||
|
self.spinning_focus = None
|
||||||
|
self.scale_focus = None
|
||||||
|
|
||||||
icon_theme = Gtk.IconTheme.get_default()
|
icon_theme = Gtk.IconTheme.get_default()
|
||||||
icon_theme.add_resource_path(os.path.expanduser(
|
icon_theme.add_resource_path(os.path.expanduser(
|
||||||
'~/.local/share/pipx/venvs/discover-overlay/share/icons'))
|
'~/.local/share/pipx/venvs/discover-overlay/share/icons'))
|
||||||
|
|
@ -58,7 +61,6 @@ class MainSettingsWindow():
|
||||||
self.steamos = False
|
self.steamos = False
|
||||||
self.voice_placement_window = None
|
self.voice_placement_window = None
|
||||||
self.text_placement_window = None
|
self.text_placement_window = None
|
||||||
self.voice_advanced = False
|
|
||||||
self.tray = None # Systemtray as fallback
|
self.tray = None # Systemtray as fallback
|
||||||
self.ind = None # AppIndicator
|
self.ind = None # AppIndicator
|
||||||
if self.alternative_autostart:
|
if self.alternative_autostart:
|
||||||
|
|
@ -126,7 +128,6 @@ class MainSettingsWindow():
|
||||||
if settings:
|
if settings:
|
||||||
settings.set_property(
|
settings.set_property(
|
||||||
"gtk-application-prefer-dark-theme", Gtk.true)
|
"gtk-application-prefer-dark-theme", Gtk.true)
|
||||||
self.widget['notebook'].set_tab_pos(Gtk.PositionType.LEFT)
|
|
||||||
# TODO Not assume the display size. Probably poll it from GDK Display?
|
# TODO Not assume the display size. Probably poll it from GDK Display?
|
||||||
window.set_default_size(1280, 800)
|
window.set_default_size(1280, 800)
|
||||||
|
|
||||||
|
|
@ -135,12 +136,16 @@ class MainSettingsWindow():
|
||||||
css.load_from_data(bytes("* { font-size:18px; }", "utf-8"))
|
css.load_from_data(bytes("* { font-size:18px; }", "utf-8"))
|
||||||
window.get_style_context().add_provider(
|
window.get_style_context().add_provider(
|
||||||
css, Gtk.STYLE_PROVIDER_PRIORITY_USER)
|
css, Gtk.STYLE_PROVIDER_PRIORITY_USER)
|
||||||
|
|
||||||
# Space is premium. Sorry Craig
|
|
||||||
self.widget['voice_advanced_grid'].set_column_homogeneous(False)
|
|
||||||
else:
|
else:
|
||||||
self.widget['overview_close_button'].hide()
|
self.widget['overview_close_button'].hide()
|
||||||
|
|
||||||
|
self.super_focus = Gtk.CssProvider.new()
|
||||||
|
self.super_focus.load_from_data(
|
||||||
|
bytes(
|
||||||
|
"""scale { background-color: rgba(100%, 0%, 0%, 0.3); background-image:unset; }
|
||||||
|
spinbutton { background-color: rgba(100%, 0%, 0%, 0.3); background-image:unset;}
|
||||||
|
""", "utf-8"))
|
||||||
|
|
||||||
screen = window.get_screen()
|
screen = window.get_screen()
|
||||||
screen_type = "%s" % (screen)
|
screen_type = "%s" % (screen)
|
||||||
self.is_wayland = False
|
self.is_wayland = False
|
||||||
|
|
@ -168,6 +173,7 @@ class MainSettingsWindow():
|
||||||
self.populate_guild_menu()
|
self.populate_guild_menu()
|
||||||
|
|
||||||
builder.connect_signals(self)
|
builder.connect_signals(self)
|
||||||
|
window.connect('key-press-event', self.keypress_in_settings)
|
||||||
|
|
||||||
if '--minimized' in self.args:
|
if '--minimized' in self.args:
|
||||||
self.start_minimized = True
|
self.start_minimized = True
|
||||||
|
|
@ -179,6 +185,93 @@ class MainSettingsWindow():
|
||||||
self.icon_name, Gtk.IconSize.DIALOG)
|
self.icon_name, Gtk.IconSize.DIALOG)
|
||||||
self.widget['window'].set_default_icon_name(self.icon_name)
|
self.widget['window'].set_default_icon_name(self.icon_name)
|
||||||
|
|
||||||
|
def keypress_in_settings(self, window, event):
|
||||||
|
if self.spinning_focus:
|
||||||
|
match event.keyval:
|
||||||
|
case Gdk.KEY_Right:
|
||||||
|
step = self.spinning_focus.get_increments().step
|
||||||
|
value = self.spinning_focus.get_value()
|
||||||
|
self.spinning_focus.set_value(value + step)
|
||||||
|
pass
|
||||||
|
case Gdk.KEY_Left:
|
||||||
|
step = self.spinning_focus.get_increments().step
|
||||||
|
value = self.spinning_focus.get_value()
|
||||||
|
self.spinning_focus.set_value(value - step)
|
||||||
|
pass
|
||||||
|
case Gdk.KEY_Up:
|
||||||
|
step = self.spinning_focus.get_increments().step
|
||||||
|
value = self.spinning_focus.get_value()
|
||||||
|
self.spinning_focus.set_value(value + step)
|
||||||
|
case Gdk.KEY_Down:
|
||||||
|
step = self.spinning_focus.get_increments().step
|
||||||
|
value = self.spinning_focus.get_value()
|
||||||
|
self.spinning_focus.set_value(value - step)
|
||||||
|
case Gdk.KEY_space:
|
||||||
|
self.spinning_focus.get_style_context().remove_provider(self.super_focus)
|
||||||
|
self.spinning_focus = None
|
||||||
|
case Gdk.KEY_Escape:
|
||||||
|
self.spinning_focus.get_style_context().remove_provider(self.super_focus)
|
||||||
|
|
||||||
|
self.spinning_focus = None
|
||||||
|
elif self.scale_focus:
|
||||||
|
match event.keyval:
|
||||||
|
case Gdk.KEY_Right:
|
||||||
|
value = self.scale_focus.get_value()
|
||||||
|
self.scale_focus.set_value(value + 0.1)
|
||||||
|
pass
|
||||||
|
case Gdk.KEY_Left:
|
||||||
|
value = self.scale_focus.get_value()
|
||||||
|
self.scale_focus.set_value(value - 0.1)
|
||||||
|
pass
|
||||||
|
case Gdk.KEY_Up:
|
||||||
|
value = self.scale_focus.get_value()
|
||||||
|
self.scale_focus.set_value(value + 0.1)
|
||||||
|
case Gdk.KEY_Down:
|
||||||
|
value = self.scale_focus.get_value()
|
||||||
|
self.scale_focus.set_value(value - 0.1)
|
||||||
|
case Gdk.KEY_space:
|
||||||
|
self.scale_focus.get_style_context().remove_provider(self.super_focus)
|
||||||
|
self.scale_focus = None
|
||||||
|
case Gdk.KEY_Escape:
|
||||||
|
self.scale_focus.get_style_context().remove_provider(self.super_focus)
|
||||||
|
self.scale_focus = None
|
||||||
|
else:
|
||||||
|
match event.keyval:
|
||||||
|
case Gdk.KEY_Left:
|
||||||
|
window.do_move_focus(window, Gtk.DirectionType.LEFT)
|
||||||
|
case Gdk.KEY_Right:
|
||||||
|
window.do_move_focus(window, Gtk.DirectionType.RIGHT)
|
||||||
|
case Gdk.KEY_Up:
|
||||||
|
window.do_move_focus(window, Gtk.DirectionType.UP)
|
||||||
|
case Gdk.KEY_Down:
|
||||||
|
window.do_move_focus(window, Gtk.DirectionType.DOWN)
|
||||||
|
case Gdk.KEY_F1:
|
||||||
|
self.widget['notebook'].prev_page()
|
||||||
|
case Gdk.KEY_F2:
|
||||||
|
self.widget['notebook'].next_page()
|
||||||
|
case Gdk.KEY_Escape:
|
||||||
|
return True
|
||||||
|
case Gdk.KEY_space:
|
||||||
|
widget = self.window.get_focus()
|
||||||
|
if widget:
|
||||||
|
# I really want there to be a better way...
|
||||||
|
widget_type = "%s" % (widget)
|
||||||
|
if 'Gtk.SpinButton' in widget_type:
|
||||||
|
self.spinning_focus = widget
|
||||||
|
|
||||||
|
widget.get_style_context().add_provider(
|
||||||
|
self.super_focus, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
|
||||||
|
return True
|
||||||
|
elif 'Gtk.Scale' in widget_type:
|
||||||
|
self.scale_focus = widget
|
||||||
|
widget.get_style_context().add_provider(
|
||||||
|
self.super_focus, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
case _:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def request_channels_from_guild(self, guild_id):
|
def request_channels_from_guild(self, guild_id):
|
||||||
with open(self.rpc_file, 'w') as f:
|
with open(self.rpc_file, 'w') as f:
|
||||||
f.write('--rpc --guild-request=%s' % (guild_id))
|
f.write('--rpc --guild-request=%s' % (guild_id))
|
||||||
|
|
@ -284,7 +377,6 @@ class MainSettingsWindow():
|
||||||
|
|
||||||
def read_config(self):
|
def read_config(self):
|
||||||
self.loading_config = True
|
self.loading_config = True
|
||||||
self.widget['voice_advanced_grid'].hide()
|
|
||||||
|
|
||||||
# Read config and put into gui
|
# Read config and put into gui
|
||||||
config = ConfigParser(interpolation=None)
|
config = ConfigParser(interpolation=None)
|
||||||
|
|
@ -299,10 +391,10 @@ class MainSettingsWindow():
|
||||||
self.voice_floating_h = config.getint(
|
self.voice_floating_h = config.getint(
|
||||||
"main", "floating_h", fallback=400)
|
"main", "floating_h", fallback=400)
|
||||||
|
|
||||||
if config.getboolean("main", "floating", fallback=False):
|
self.widget['voice_anchor_float'].set_active(
|
||||||
self.widget['voice_floating_button'].set_active(True)
|
0 if config.getboolean("main", "floating", fallback=False) else 1)
|
||||||
else:
|
self.update_floating_ahchor()
|
||||||
self.widget['voice_anchor_to_edge_button'].set_active(True)
|
|
||||||
self.widget['voice_align_1'].set_active(
|
self.widget['voice_align_1'].set_active(
|
||||||
config.getboolean("main", "rightalign", fallback=False))
|
config.getboolean("main", "rightalign", fallback=False))
|
||||||
self.widget['voice_align_2'].set_active(
|
self.widget['voice_align_2'].set_active(
|
||||||
|
|
@ -438,6 +530,12 @@ class MainSettingsWindow():
|
||||||
self.widget['voice_inactive_fade_time'].set_value(
|
self.widget['voice_inactive_fade_time'].set_value(
|
||||||
config.getint("main", "inactive_fade_time", fallback=30)
|
config.getint("main", "inactive_fade_time", fallback=30)
|
||||||
)
|
)
|
||||||
|
self.widget['voice_hide_mouseover'].set_active(
|
||||||
|
config.getboolean("main", "autohide", fallback=False)
|
||||||
|
)
|
||||||
|
self.widget['voice_show_mouseover'].set_value(
|
||||||
|
config.getint("main", "autohide_timer", fallback=5)
|
||||||
|
)
|
||||||
|
|
||||||
# Read Text section
|
# Read Text section
|
||||||
|
|
||||||
|
|
@ -486,6 +584,13 @@ class MainSettingsWindow():
|
||||||
self.widget['text_line_limit'].set_value(
|
self.widget['text_line_limit'].set_value(
|
||||||
config.getint("text", "line_limit", fallback=20))
|
config.getint("text", "line_limit", fallback=20))
|
||||||
|
|
||||||
|
self.widget['text_hide_mouseover'].set_active(
|
||||||
|
config.getboolean("text", "autohide", fallback=False)
|
||||||
|
)
|
||||||
|
self.widget['text_show_mouseover'].set_value(
|
||||||
|
config.getint("text", "autohide_timer", fallback=5)
|
||||||
|
)
|
||||||
|
|
||||||
# Read Notification section
|
# Read Notification section
|
||||||
self.widget['notification_enable'].set_active(
|
self.widget['notification_enable'].set_active(
|
||||||
config.getboolean("notification", "enabled", fallback=False))
|
config.getboolean("notification", "enabled", fallback=False))
|
||||||
|
|
@ -829,11 +934,20 @@ class MainSettingsWindow():
|
||||||
with open(self.config_file, 'w') as file:
|
with open(self.config_file, 'w') as file:
|
||||||
config.write(file)
|
config.write(file)
|
||||||
|
|
||||||
def voice_anchor_to_edge_changed(self, button):
|
def voice_anchor_float_changed(self, button):
|
||||||
self.config_set("main", "floating", "False")
|
self.config_set("main", "floating", "%s" % (button.get_active() == 0))
|
||||||
|
self.update_floating_ahchor()
|
||||||
|
|
||||||
def voice_floating_changed(self, button):
|
def update_floating_ahchor(self):
|
||||||
self.config_set("main", "floating", "True")
|
floating = self.widget['voice_anchor_float'].get_active() == 0
|
||||||
|
if floating:
|
||||||
|
self.widget['voice_align_1'].hide()
|
||||||
|
self.widget['voice_align_2'].hide()
|
||||||
|
self.widget['voice_place_window_button'].show()
|
||||||
|
else:
|
||||||
|
self.widget['voice_align_1'].show()
|
||||||
|
self.widget['voice_align_2'].show()
|
||||||
|
self.widget['voice_place_window_button'].hide()
|
||||||
|
|
||||||
def voice_monitor_changed(self, button):
|
def voice_monitor_changed(self, button):
|
||||||
self.config_set("main", "monitor", "%s" % (button.get_active()))
|
self.config_set("main", "monitor", "%s" % (button.get_active()))
|
||||||
|
|
@ -844,13 +958,6 @@ class MainSettingsWindow():
|
||||||
def voice_align_2_changed(self, button):
|
def voice_align_2_changed(self, button):
|
||||||
self.config_set("main", "topalign", "%s" % (button.get_active()))
|
self.config_set("main", "topalign", "%s" % (button.get_active()))
|
||||||
|
|
||||||
def voice_show_advanced_options_button_changed(self, button):
|
|
||||||
self.voice_advanced = not self.voice_advanced
|
|
||||||
if self.voice_advanced:
|
|
||||||
self.widget['voice_advanced_grid'].show()
|
|
||||||
else:
|
|
||||||
self.widget['voice_advanced_grid'].hide()
|
|
||||||
|
|
||||||
def voice_font_changed(self, button):
|
def voice_font_changed(self, button):
|
||||||
self.config_set("main", "font", button.get_font())
|
self.config_set("main", "font", button.get_font())
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue