- Implement custom default avatar fixes #191 and #8 again

This commit is contained in:
trigg 2022-01-15 14:43:08 +00:00
parent 26586c5ffb
commit e0ee6c4085
5 changed files with 120 additions and 5 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View file

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="17"
height="17"
viewBox="0 0 17 17"
version="1.1"
id="svg5"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="discover-overlay.svg"
inkscape:export-filename="/home/nicola/Documents/svg/discover-overlay.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
units="px"
width="256px"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-midpoints="true"
inkscape:zoom="1.8351571"
inkscape:cx="108.98249"
inkscape:cy="149.30602"
inkscape:window-width="1366"
inkscape:window-height="705"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer3" />
<g
inkscape:groupmode="layer"
id="layer5"
inkscape:label="Logo"
style="display:inline">
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Avatars"
sodipodi:insensitive="true">
<rect
style="fill:#fec832;fill-opacity:1"
id="rect68"
width="17"
height="17"
x="0"
y="0" />
<circle
style="fill:#fec832;fill-opacity:1;stroke-width:0.264583"
id="path663"
cx="8.4666662"
cy="8.4666662"
r="8.4666662" />
<g
id="g606-6"
style="display:inline"
transform="translate(-4.2,-25)">
<path
id="rect132-6-2"
style="display:inline;fill:#ffffff;stroke-width:0.268097"
d="m 6.3499997,36.512498 v 2.946591 A 8.466666,8.466666 0 0 0 12.7,42.333331 8.466666,8.466666 0 0 0 19.05,39.458573 v -2.946075 z" />
<ellipse
style="fill:#ffffff;stroke-width:0.280016"
id="path258-9"
cx="12.7"
cy="36.512497"
rx="6.3499999"
ry="2.6458333" />
<circle
style="fill:#ffffff;stroke-width:0.264583"
id="path362-1"
cx="12.7"
cy="29.897917"
r="2.6458333" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View file

@ -19,6 +19,7 @@ import requests
import cairo
import PIL
import PIL.Image as Image
import os
gi.require_version('GdkPixbuf', '2.0')
# pylint: disable=wrong-import-position
from gi.repository import Gio, GdkPixbuf
@ -95,6 +96,23 @@ class SurfaceGetter():
except PIL.UnidentifiedImageError:
logging.error("Unknown image type")
def get_file(self):
locations = [os.path.expanduser('~/.local/'), '/usr/']
for prefix in locations:
try:
image = Image.open(os.path.join(prefix,self.url))
surface = self.from_pil(image)
self.func(self.identifier, surface)
return
except ValueError:
logging.error("Unable to read %s", self.url)
except TypeError:
logging.error("Unable to read %s", self.url)
except PIL.UnidentifiedImageError:
logging.error("Unknown image type")
def from_pil(self, image, alpha=1.0):
"""
:param im: Pillow Image
@ -119,8 +137,12 @@ def get_image(func, identifier, ava, size):
def get_surface(func, identifier, ava, size):
"""Download to cairo surface"""
image_getter = SurfaceGetter(func, identifier, ava, size)
thread = threading.Thread(target=image_getter.get_url, args=())
thread.start()
if identifier.startswith('http'):
thread = threading.Thread(target=image_getter.get_url, args=())
thread.start()
else:
thread = threading.Thread(target=image_getter.get_file, args=())
thread.start()
def get_aspected_size(img, width, height, anchor=0, hanchor=0):

View file

@ -61,7 +61,7 @@ class VoiceOverlayWindow(OverlayWindow):
self.guild_ids = tuple()
self.force_location()
get_surface(self.recv_avatar,
"https://cdn.discordapp.com/embed/avatars/3.png",
"share/icons//hicolor/256x256/apps/discover-overlay-default.png",
'def', self.avatar_size)
self.set_title("Discover Voice")
self.redraw()

View file

@ -20,8 +20,8 @@ setup(
('share/applications', [
'discover_overlay.desktop'
]),
('share/icons/hicolor/256x256/apps', ['discover-overlay.png', 'discover-overlay-tray.png']),
('share/icons/hicolor/scalable/apps', ['discover-overlay.svg', 'discover-overlay-tray.svg'])
('share/icons/hicolor/256x256/apps', ['discover-overlay.png', 'discover-overlay-tray.png', 'discover-overlay-default.png']),
('share/icons/hicolor/scalable/apps', ['discover-overlay.svg', 'discover-overlay-tray.svg', 'discover-overlay-default.svg'])
],
install_requires=[
'PyGObject>=3.22',