- Boring shapes for those who would prefer them
This commit is contained in:
parent
5b30f4b05e
commit
3cc3b62247
2 changed files with 62 additions and 16 deletions
|
|
@ -86,6 +86,7 @@ class VoiceOverlayWindow(OverlayWindow):
|
|||
self.channel_title = ""
|
||||
self.border_width = 2
|
||||
self.icon_transparency = 0.0
|
||||
self.fancy_border = False
|
||||
|
||||
self.round_avatar = True
|
||||
self.icon_only = True
|
||||
|
|
@ -258,6 +259,13 @@ class VoiceOverlayWindow(OverlayWindow):
|
|||
self.round_avatar = not i
|
||||
self.needsredraw = True
|
||||
|
||||
def set_fancy_border(self, border):
|
||||
"""
|
||||
Sets if border should wrap around non-square avatar images
|
||||
"""
|
||||
self.fancy_border = border
|
||||
self.needsredraw = True
|
||||
|
||||
def set_only_speaking(self, only_speaking):
|
||||
"""
|
||||
Set if overlay should only show people who are talking
|
||||
|
|
@ -789,20 +797,35 @@ class VoiceOverlayWindow(OverlayWindow):
|
|||
return
|
||||
|
||||
# Draw the "border" by doing a scaled-up copy in a flat colour
|
||||
if border_colour:
|
||||
if border_colour:
|
||||
self.col(border_colour)
|
||||
context.set_operator(cairo.OPERATOR_SOURCE)
|
||||
for off_x in range(-self.border_width, self.border_width+1):
|
||||
for off_y in range(-self.border_width, self.border_width+1):
|
||||
context.save()
|
||||
if self.round_avatar:
|
||||
context.new_path()
|
||||
context.arc(pos_x + off_x + (avatar_size / 2), pos_y+ off_y +
|
||||
(avatar_size / 2), avatar_size / 2, 0, 2 * math.pi)
|
||||
context.clip()
|
||||
draw_img_to_mask(mask, context, pos_x + off_x, pos_y + off_y,
|
||||
if self.fancy_border:
|
||||
context.set_operator(cairo.OPERATOR_SOURCE)
|
||||
for off_x in range(-self.border_width, self.border_width+1):
|
||||
for off_y in range(-self.border_width, self.border_width+1):
|
||||
context.save()
|
||||
if self.round_avatar:
|
||||
context.new_path()
|
||||
context.arc(pos_x + off_x + (avatar_size / 2), pos_y+ off_y +
|
||||
(avatar_size / 2), avatar_size / 2, 0, 2 * math.pi)
|
||||
context.clip()
|
||||
draw_img_to_mask(mask, context, pos_x + off_x, pos_y + off_y,
|
||||
avatar_size, avatar_size)
|
||||
context.restore()
|
||||
context.restore()
|
||||
else:
|
||||
if self.round_avatar:
|
||||
context.new_path()
|
||||
context.arc(pos_x + (avatar_size / 2), pos_y+
|
||||
(avatar_size / 2), avatar_size / 2 + (self.border_width/2.0), 0, 2 * math.pi)
|
||||
context.set_line_width(self.border_width)
|
||||
context.stroke()
|
||||
else:
|
||||
context.new_path()
|
||||
context.rectangle(pos_x - (self.border_width/2), pos_y - (self.border_width/2), avatar_size + self.border_width, avatar_size + self.border_width)
|
||||
context.set_line_width(self.border_width)
|
||||
|
||||
context.stroke()
|
||||
|
||||
# Cut the image back out
|
||||
context.save()
|
||||
if self.round_avatar:
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ class VoiceSettingsWindow(SettingsWindow):
|
|||
self.show_disconnected = None
|
||||
self.border_width = 2
|
||||
self.icon_transparency = 1.0
|
||||
self.fancy_border = False
|
||||
|
||||
self.init_config()
|
||||
self.create_gui()
|
||||
|
|
@ -170,6 +171,8 @@ class VoiceSettingsWindow(SettingsWindow):
|
|||
self.border_width = config.getint("main", "border_width", fallback=2)
|
||||
self.icon_transparency = config.getfloat(
|
||||
"main", "icon_transparency", fallback=1.0)
|
||||
self.fancy_border = config.getboolean("main",
|
||||
"fancy_border", fallback=True)
|
||||
|
||||
# Pass all of our config over to the overlay
|
||||
self.overlay.set_align_x(self.align_x)
|
||||
|
|
@ -204,6 +207,7 @@ class VoiceSettingsWindow(SettingsWindow):
|
|||
self.overlay.set_show_disconnected(self.show_disconnected)
|
||||
self.overlay.set_border_width(self.border_width)
|
||||
self.overlay.set_icon_transparency(self.icon_transparency)
|
||||
self.overlay.set_fancy_border(self.fancy_border)
|
||||
|
||||
self.overlay.set_floating(
|
||||
self.floating, self.floating_x, self.floating_y, self.floating_w, self.floating_h)
|
||||
|
|
@ -268,6 +272,7 @@ class VoiceSettingsWindow(SettingsWindow):
|
|||
config.set("main", "border_width", "%s" % (int(self.border_width)))
|
||||
config.set("main", "icon_transparency", "%.2f" %
|
||||
(self.icon_transparency))
|
||||
config.set("main", "fancy_border", "%d" % (int(self.fancy_border)))
|
||||
|
||||
with open(self.config_file, 'w') as file:
|
||||
config.write(file)
|
||||
|
|
@ -474,6 +479,16 @@ class VoiceSettingsWindow(SettingsWindow):
|
|||
avatar_box.attach(square_avatar_label, 0, 3, 1, 1)
|
||||
avatar_box.attach(square_avatar, 1, 3, 1, 1)
|
||||
|
||||
# Fancy Avatar shapes
|
||||
fancy_avatar_label = Gtk.Label.new(_("Fancy Avatar shapes"))
|
||||
fancy_avatar_label.set_xalign(0)
|
||||
fancy_avatar = Gtk.CheckButton.new()
|
||||
fancy_avatar.set_active(self.fancy_border)
|
||||
fancy_avatar.connect("toggled", self.change_fancy_avatar)
|
||||
|
||||
avatar_box.attach(fancy_avatar_label, 0, 4, 1, 1)
|
||||
avatar_box.attach(fancy_avatar, 1 , 4, 1, 1)
|
||||
|
||||
# Display icon only
|
||||
icon_only_label = Gtk.Label.new(_("Display Icon Only"))
|
||||
icon_only_label.set_xalign(0)
|
||||
|
|
@ -491,8 +506,8 @@ class VoiceSettingsWindow(SettingsWindow):
|
|||
only_speaking.set_active(self.only_speaking)
|
||||
only_speaking.connect("toggled", self.change_only_speaking)
|
||||
|
||||
alignment_box.attach(only_speaking_label, 0, 8, 1, 1)
|
||||
alignment_box.attach(only_speaking, 1, 8, 1, 1)
|
||||
alignment_box.attach(only_speaking_label, 0, 9, 1, 1)
|
||||
alignment_box.attach(only_speaking, 1, 9, 1, 1)
|
||||
|
||||
# Highlight self
|
||||
highlight_self_label = Gtk.Label.new(_("Highlight Self"))
|
||||
|
|
@ -501,8 +516,8 @@ class VoiceSettingsWindow(SettingsWindow):
|
|||
highlight_self.set_active(self.highlight_self)
|
||||
highlight_self.connect("toggled", self.change_highlight_self)
|
||||
|
||||
avatar_box.attach(highlight_self_label, 0, 5, 1, 1)
|
||||
avatar_box.attach(highlight_self, 1, 5, 1, 1)
|
||||
alignment_box.attach(highlight_self_label, 0, 8, 1, 1)
|
||||
alignment_box.attach(highlight_self, 1, 8, 1, 1)
|
||||
|
||||
# Order avatars
|
||||
order_label = Gtk.Label.new(_("Order Avatars By"))
|
||||
|
|
@ -845,6 +860,14 @@ class VoiceSettingsWindow(SettingsWindow):
|
|||
self.square_avatar = button.get_active()
|
||||
self.save_config()
|
||||
|
||||
def change_fancy_avatar(self, button):
|
||||
"""
|
||||
Fancy avatar border shapes changed
|
||||
"""
|
||||
self.overlay.set_fancy_border(button.get_active())
|
||||
self.fancy_avatar = button.get_active()
|
||||
self.save_config()
|
||||
|
||||
def change_only_speaking(self, button):
|
||||
"""
|
||||
Show only speaking users setting changed
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue