Add "Higlight Self" option

This commit is contained in:
mastercooker 2020-10-03 11:28:17 +01:00
parent 5e03ac23ed
commit bd2be2b98c
4 changed files with 57 additions and 28 deletions

View file

@ -38,11 +38,23 @@ import logging
class Discover:
def __init__(self):
pass
self.a = Autostart("discover_overlay")
# a.set_autostart(True)
self.create_gui()
self.connection = DiscordConnector(
self.text_settings, self.voice_settings,
self.text_overlay, self.voice_overlay)
self.connection.connect()
GLib.timeout_add((1000 / 60), self.connection.do_read)
try:
Gtk.main()
except:
pass
def create_gui(self):
self.voice_overlay = VoiceOverlayWindow()
self.text_overlay = TextOverlayWindow()
self.voice_overlay = VoiceOverlayWindow(self)
self.text_overlay = TextOverlayWindow(self)
self.menu = self.make_menu()
self.make_sys_tray_icon(self.menu)
self.voice_settings = VoiceSettingsWindow(self.voice_overlay)
@ -103,23 +115,7 @@ class Discover:
def close(self, a=None, b=None, c=None):
Gtk.main_quit()
def main(self):
self.a = Autostart("discover_overlay")
# a.set_autostart(True)
self.create_gui()
self.connection = DiscordConnector(
self.text_settings, self.voice_settings,
self.text_overlay, self.voice_overlay)
self.connection.connect()
GLib.timeout_add((1000 / 60), self.connection.do_read)
try:
Gtk.main()
except:
pass
def entrypoint():
logging.getLogger().setLevel(logging.INFO)
discover = Discover()
discover.main()

View file

@ -15,8 +15,9 @@ from .image_getter import get_surface
class TextOverlayWindow(OverlayWindow):
def __init__(self):
def __init__(self, discover):
OverlayWindow.__init__(self)
self.discover = discover
self.text_spacing = 4
self.content = []
self.text_font = None

View file

@ -1,4 +1,5 @@
import gi
gi.require_version("Gtk", "3.0")
gi.require_version('PangoCairo', '1.0')
gi.require_version('GdkPixbuf', '2.0')
@ -13,10 +14,10 @@ import logging
class VoiceOverlayWindow(OverlayWindow):
def __init__(self):
def __init__(self, discover):
OverlayWindow.__init__(self)
self.discover = discover
self.avatars = {}
self.avatar_size = 48
@ -87,6 +88,9 @@ class VoiceOverlayWindow(OverlayWindow):
def set_only_speaking(self, only_speaking):
self.only_speaking = only_speaking
def set_highlight_self(self, highlight_self):
self.highlight_self = highlight_self
def set_wind_col(self):
self.col(self.wind_col)
@ -142,16 +146,28 @@ class VoiceOverlayWindow(OverlayWindow):
if not self.connected:
return
connection = self.discover.connection
self_user = connection.user
# Gather which users to draw
if self.only_speaking:
self.users_to_draw = self.userlist[:]
self.users_to_draw = self.userlist[:]
for user in self.userlist:
# Bad object equality here, so we need to reassign
if user["id"] == self_user["id"]:
self_user = user
# Remove users that arent speaking
for user in self.userlist:
if self.only_speaking:
speaking = "speaking" in user and user["speaking"]
if not speaking:
self.users_to_draw.remove(user)
else:
self.users_to_draw = self.userlist
if self.highlight_self:
try:
self.users_to_draw.remove(self_user)
except ValueError:
pass # Not in list
self.users_to_draw.insert(0, self_user)
# Get size of window
(w, h) = self.get_size()
@ -369,7 +385,6 @@ class VoiceOverlayWindow(OverlayWindow):
context.close_path()
context.clip()
# Top band
context.arc(0.5, 0.5, 0.2, 1.0 * math.pi, 0)
context.stroke()

View file

@ -57,6 +57,8 @@ class VoiceSettingsWindow(SettingsWindow):
"main", "square_avatar", fallback=False)
self.only_speaking = config.getboolean(
"main", "only_speaking", fallback=False)
self.highlight_self = config.getboolean(
"main", "highlight_self", fallback=False)
self.monitor = config.get("main", "monitor", fallback="None")
self.vert_edge_padding = config.getint(
"main", "vert_edge_padding", fallback=0)
@ -80,6 +82,7 @@ class VoiceSettingsWindow(SettingsWindow):
self.overlay.set_text_padding(self.text_padding)
self.overlay.set_square_avatar(self.square_avatar)
self.overlay.set_only_speaking(self.only_speaking)
self.overlay.set_highlight_self(self.highlight_self)
self.overlay.set_monitor(self.get_monitor_index(self.monitor))
self.overlay.set_vert_edge_padding(self.vert_edge_padding)
self.overlay.set_horz_edge_padding(self.horz_edge_padding)
@ -113,6 +116,7 @@ class VoiceSettingsWindow(SettingsWindow):
config.set("main", "font", self.font)
config.set("main", "square_avatar", "%d" % (int(self.square_avatar)))
config.set("main", "only_speaking", "%d" % (int(self.only_speaking)))
config.set("main", "highlight_self", "%d" % (int(self.highlight_self)))
config.set("main", "monitor", self.monitor)
config.set("main", "vert_edge_padding", "%d" %
(self.vert_edge_padding))
@ -265,6 +269,11 @@ class VoiceSettingsWindow(SettingsWindow):
only_speaking.set_active(self.only_speaking)
only_speaking.connect("toggled", self.change_only_speaking)
highlight_self_label = Gtk.Label.new("Highlight Self")
highlight_self = Gtk.CheckButton.new()
highlight_self.set_active(self.highlight_self)
highlight_self.connect("toggled", self.change_highlight_self)
box.attach(font_label, 0, 0, 1, 1)
box.attach(font, 1, 0, 1, 1)
box.attach(bg_col_label, 0, 1, 1, 1)
@ -295,6 +304,8 @@ class VoiceSettingsWindow(SettingsWindow):
box.attach(square_avatar, 1, 15, 1, 1)
box.attach(only_speaking_label, 0, 16, 1, 1)
box.attach(only_speaking, 1, 16, 1, 1)
box.attach(highlight_self_label, 0, 17, 1, 1)
box.attach(highlight_self, 1, 17, 1, 1)
self.add(box)
@ -453,3 +464,9 @@ class VoiceSettingsWindow(SettingsWindow):
self.only_speaking = button.get_active()
self.save_config()
def change_highlight_self(self, button):
self.overlay.set_highlight_self(button.get_active())
self.highlight_self = button.get_active()
self.save_config()