Daniel Brötzmann pushed to branch mainwindow at gajim / gajim
Commits:
318ca493 by wurstsalat at 2021-07-14T19:46:41+02:00
Workspaces: Add image avatars
- - - - -
2 changed files:
- gajim/gtk/avatar.py
- gajim/gtk/workspace_dialog.py
Changes:
=====================================
gajim/gtk/avatar.py
=====================================
@@ -349,13 +349,18 @@ def get_workspace_surface(self, workspace_id, size,
scale):
color = app.settings.get_workspace_setting(workspace_id, 'color')
avatar_sha = app.settings.get_workspace_setting(
workspace_id, 'avatar_sha')
- if not avatar_sha:
- rgba = make_rgba(color or DEFAULT_WORKSPACE_COLOR)
- letter = name[:1].upper()
- surface = make_workspace_avatar(
- letter, rgba_to_float(rgba), size, scale)
- self._cache[workspace_id][(size, scale)] = surface
- return surface
+ if avatar_sha:
+ surface = self._load_surface_from_storage(avatar_sha, size, scale)
+ if surface is None:
+ return None
+ return clip(surface, 'round-corners')
+
+ rgba = make_rgba(color or DEFAULT_WORKSPACE_COLOR)
+ letter = name[:1].upper()
+ surface = make_workspace_avatar(
+ letter, rgba_to_float(rgba), size, scale)
+ self._cache[workspace_id][(size, scale)] = surface
+ return surface
def prepare_for_publish(self, path):
success, data = self._load_for_publish(path)
=====================================
gajim/gtk/workspace_dialog.py
=====================================
@@ -49,7 +49,7 @@ def __init__(self, workspace_id=None):
name = _('My Workspace')
color = None
- avatar_sha = None
+ self._avatar_sha = None
if workspace_id is None:
self._ui.remove_workspace_button.set_sensitive(False)
@@ -58,8 +58,15 @@ def __init__(self, workspace_id=None):
workspace_id, 'name')
color = app.settings.get_workspace_setting(
workspace_id, 'color')
+ self._avatar_sha = app.settings.get_workspace_setting(
+ workspace_id, 'avatar_sha')
+ if self._avatar_sha == '':
+ self._avatar_sha = None
rgba = make_rgba(color or DEFAULT_WORKSPACE_COLOR)
+ if self._avatar_sha is not None:
+ self._ui.image_switch.set_state(True)
+ self._ui.style_stack.set_visible_child_name('image')
self._ui.entry.set_text(name)
self._ui.color_chooser.set_rgba(rgba)
@@ -92,25 +99,36 @@ def _on_text_changed(self, entry, _param):
def _on_image_switch_toggled(self, switch, *args):
if switch.get_active():
self._ui.style_stack.set_visible_child_name('image')
+ if self._workspace_id is not None:
+ self._avatar_sha = app.settings.get_workspace_setting(
+ self._workspace_id, 'avatar_sha')
else:
self._ui.style_stack.set_visible_child_name('color')
+ self._avatar_sha = None
+ self._update_avatar()
def _update_avatar(self):
name = self._ui.entry.get_text()
rgba = self._ui.color_chooser.get_rgba()
scale = self.get_scale_factor()
- surface = make_workspace_avatar(
- name[:1].upper(),
- rgba_to_float(rgba),
- AvatarSize.WORKSPACE_EDIT,
- scale)
+ if self._avatar_sha is not None:
+ surface = app.interface.avatar_storage.get_workspace_surface(
+ self._workspace_id,
+ AvatarSize.WORKSPACE_EDIT,
+ scale)
+ else:
+ surface = make_workspace_avatar(
+ name[:1].upper(),
+ rgba_to_float(rgba),
+ AvatarSize.WORKSPACE_EDIT,
+ scale)
self._ui.preview.set_from_surface(surface)
def _get_avatar_data(self):
if not self._avatar_selector.get_prepared():
return None
- success, data, width, height = self._avatar_selector.get_avatar_bytes()
+ success, data, _wid, _hei = self._avatar_selector.get_avatar_bytes()
if not success:
return None
@@ -119,15 +137,23 @@ def _get_avatar_data(self):
def _on_save(self, _button):
name = self._ui.entry.get_text()
rgba = self._ui.color_chooser.get_rgba()
- # use_image = self._ui.image_switch.get_active()
- # if use_image:
- # avatar = self._get_avatar_data()
+ use_image = self._ui.image_switch.get_active()
+ if use_image:
+ data = self._get_avatar_data()
+ if data is not None:
+ self._avatar_sha = app.interface.save_avatar(data)
if self._workspace_id is not None:
app.settings.set_workspace_setting(
self._workspace_id, 'name', name)
app.settings.set_workspace_setting(
self._workspace_id, 'color', rgba.to_string())
+ if self._avatar_sha is None:
+ app.settings.set_workspace_setting(
+ self._workspace_id, 'avatar_sha', '')
+ else:
+ app.settings.set_workspace_setting(
+ self._workspace_id, 'avatar_sha', self._avatar_sha)
app.window.update_workspace(self._workspace_id)
self.destroy()
@@ -136,6 +162,9 @@ def _on_save(self, _button):
workspace_id = app.settings.add_workspace(name)
app.settings.set_workspace_setting(
workspace_id, 'color', rgba.to_string())
+ if self._avatar_sha is not None:
+ app.settings.set_workspace_setting(
+ workspace_id, 'avatar_sha', self._avatar_sha)
app.window.add_workspace(workspace_id)
self.destroy()
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/318ca493a6d716bb69d927c0bbb6d9b543c6ab35
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/318ca493a6d716bb69d927c0bbb6d9b543c6ab35
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits