Add "Higlight Self" option
This commit is contained in:
parent
5e03ac23ed
commit
bd2be2b98c
4 changed files with 57 additions and 28 deletions
|
|
@ -38,11 +38,23 @@ import logging
|
||||||
|
|
||||||
class Discover:
|
class Discover:
|
||||||
def __init__(self):
|
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):
|
def create_gui(self):
|
||||||
self.voice_overlay = VoiceOverlayWindow()
|
self.voice_overlay = VoiceOverlayWindow(self)
|
||||||
self.text_overlay = TextOverlayWindow()
|
self.text_overlay = TextOverlayWindow(self)
|
||||||
self.menu = self.make_menu()
|
self.menu = self.make_menu()
|
||||||
self.make_sys_tray_icon(self.menu)
|
self.make_sys_tray_icon(self.menu)
|
||||||
self.voice_settings = VoiceSettingsWindow(self.voice_overlay)
|
self.voice_settings = VoiceSettingsWindow(self.voice_overlay)
|
||||||
|
|
@ -103,23 +115,7 @@ class Discover:
|
||||||
def close(self, a=None, b=None, c=None):
|
def close(self, a=None, b=None, c=None):
|
||||||
Gtk.main_quit()
|
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():
|
def entrypoint():
|
||||||
logging.getLogger().setLevel(logging.INFO)
|
logging.getLogger().setLevel(logging.INFO)
|
||||||
discover = Discover()
|
discover = Discover()
|
||||||
discover.main()
|
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,9 @@ from .image_getter import get_surface
|
||||||
|
|
||||||
|
|
||||||
class TextOverlayWindow(OverlayWindow):
|
class TextOverlayWindow(OverlayWindow):
|
||||||
def __init__(self):
|
def __init__(self, discover):
|
||||||
OverlayWindow.__init__(self)
|
OverlayWindow.__init__(self)
|
||||||
|
self.discover = discover
|
||||||
self.text_spacing = 4
|
self.text_spacing = 4
|
||||||
self.content = []
|
self.content = []
|
||||||
self.text_font = None
|
self.text_font = None
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import gi
|
import gi
|
||||||
|
|
||||||
gi.require_version("Gtk", "3.0")
|
gi.require_version("Gtk", "3.0")
|
||||||
gi.require_version('PangoCairo', '1.0')
|
gi.require_version('PangoCairo', '1.0')
|
||||||
gi.require_version('GdkPixbuf', '2.0')
|
gi.require_version('GdkPixbuf', '2.0')
|
||||||
|
|
@ -13,10 +14,10 @@ import logging
|
||||||
|
|
||||||
class VoiceOverlayWindow(OverlayWindow):
|
class VoiceOverlayWindow(OverlayWindow):
|
||||||
|
|
||||||
|
def __init__(self, discover):
|
||||||
def __init__(self):
|
|
||||||
OverlayWindow.__init__(self)
|
OverlayWindow.__init__(self)
|
||||||
|
|
||||||
|
self.discover = discover
|
||||||
self.avatars = {}
|
self.avatars = {}
|
||||||
|
|
||||||
self.avatar_size = 48
|
self.avatar_size = 48
|
||||||
|
|
@ -87,6 +88,9 @@ class VoiceOverlayWindow(OverlayWindow):
|
||||||
def set_only_speaking(self, only_speaking):
|
def set_only_speaking(self, only_speaking):
|
||||||
self.only_speaking = only_speaking
|
self.only_speaking = only_speaking
|
||||||
|
|
||||||
|
def set_highlight_self(self, highlight_self):
|
||||||
|
self.highlight_self = highlight_self
|
||||||
|
|
||||||
def set_wind_col(self):
|
def set_wind_col(self):
|
||||||
self.col(self.wind_col)
|
self.col(self.wind_col)
|
||||||
|
|
||||||
|
|
@ -142,16 +146,28 @@ class VoiceOverlayWindow(OverlayWindow):
|
||||||
if not self.connected:
|
if not self.connected:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
connection = self.discover.connection
|
||||||
|
self_user = connection.user
|
||||||
|
|
||||||
# Gather which users to draw
|
# 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
|
# Remove users that arent speaking
|
||||||
for user in self.userlist:
|
if self.only_speaking:
|
||||||
speaking = "speaking" in user and user["speaking"]
|
speaking = "speaking" in user and user["speaking"]
|
||||||
if not speaking:
|
if not speaking:
|
||||||
self.users_to_draw.remove(user)
|
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
|
# Get size of window
|
||||||
(w, h) = self.get_size()
|
(w, h) = self.get_size()
|
||||||
|
|
@ -369,7 +385,6 @@ class VoiceOverlayWindow(OverlayWindow):
|
||||||
context.close_path()
|
context.close_path()
|
||||||
context.clip()
|
context.clip()
|
||||||
|
|
||||||
|
|
||||||
# Top band
|
# Top band
|
||||||
context.arc(0.5, 0.5, 0.2, 1.0 * math.pi, 0)
|
context.arc(0.5, 0.5, 0.2, 1.0 * math.pi, 0)
|
||||||
context.stroke()
|
context.stroke()
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,8 @@ class VoiceSettingsWindow(SettingsWindow):
|
||||||
"main", "square_avatar", fallback=False)
|
"main", "square_avatar", fallback=False)
|
||||||
self.only_speaking = config.getboolean(
|
self.only_speaking = config.getboolean(
|
||||||
"main", "only_speaking", fallback=False)
|
"main", "only_speaking", fallback=False)
|
||||||
|
self.highlight_self = config.getboolean(
|
||||||
|
"main", "highlight_self", fallback=False)
|
||||||
self.monitor = config.get("main", "monitor", fallback="None")
|
self.monitor = config.get("main", "monitor", fallback="None")
|
||||||
self.vert_edge_padding = config.getint(
|
self.vert_edge_padding = config.getint(
|
||||||
"main", "vert_edge_padding", fallback=0)
|
"main", "vert_edge_padding", fallback=0)
|
||||||
|
|
@ -80,6 +82,7 @@ class VoiceSettingsWindow(SettingsWindow):
|
||||||
self.overlay.set_text_padding(self.text_padding)
|
self.overlay.set_text_padding(self.text_padding)
|
||||||
self.overlay.set_square_avatar(self.square_avatar)
|
self.overlay.set_square_avatar(self.square_avatar)
|
||||||
self.overlay.set_only_speaking(self.only_speaking)
|
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_monitor(self.get_monitor_index(self.monitor))
|
||||||
self.overlay.set_vert_edge_padding(self.vert_edge_padding)
|
self.overlay.set_vert_edge_padding(self.vert_edge_padding)
|
||||||
self.overlay.set_horz_edge_padding(self.horz_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", "font", self.font)
|
||||||
config.set("main", "square_avatar", "%d" % (int(self.square_avatar)))
|
config.set("main", "square_avatar", "%d" % (int(self.square_avatar)))
|
||||||
config.set("main", "only_speaking", "%d" % (int(self.only_speaking)))
|
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", "monitor", self.monitor)
|
||||||
config.set("main", "vert_edge_padding", "%d" %
|
config.set("main", "vert_edge_padding", "%d" %
|
||||||
(self.vert_edge_padding))
|
(self.vert_edge_padding))
|
||||||
|
|
@ -265,6 +269,11 @@ class VoiceSettingsWindow(SettingsWindow):
|
||||||
only_speaking.set_active(self.only_speaking)
|
only_speaking.set_active(self.only_speaking)
|
||||||
only_speaking.connect("toggled", self.change_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_label, 0, 0, 1, 1)
|
||||||
box.attach(font, 1, 0, 1, 1)
|
box.attach(font, 1, 0, 1, 1)
|
||||||
box.attach(bg_col_label, 0, 1, 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(square_avatar, 1, 15, 1, 1)
|
||||||
box.attach(only_speaking_label, 0, 16, 1, 1)
|
box.attach(only_speaking_label, 0, 16, 1, 1)
|
||||||
box.attach(only_speaking, 1, 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)
|
self.add(box)
|
||||||
|
|
||||||
|
|
@ -453,3 +464,9 @@ class VoiceSettingsWindow(SettingsWindow):
|
||||||
|
|
||||||
self.only_speaking = button.get_active()
|
self.only_speaking = button.get_active()
|
||||||
self.save_config()
|
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()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue