Daniel Brötzmann pushed to branch master at gajim / gajim
Commits: 45173cd1 by wurstsalat at 2021-12-11T17:51:20+01:00 Preview: Hide buttons by default
- - - - - 5c0618cf by wurstsalat at 2021-12-11T17:51:23+01:00 Preview: Improve display for public MUCs
- - - - -
3 changed files:
- gajim/common/preview.py - gajim/data/gui/preview.ui - gajim/gtk/preview.py
Changes:
===================================== gajim/common/preview.py ===================================== @@ -61,11 +61,14 @@ def __init__(self, orig_path: Optional[Path], thumb_path: Optional[Path], size: int, - widget: Any) -> None: + widget: Any, + context: Optional[str] = None + ) -> None: self._uri = uri self._urlparts = urlparts self._filename = filename_from_uri(uri) self._widget = widget + self._context = context
self.account = widget.account self.orig_path = orig_path @@ -102,6 +105,10 @@ def is_audio(self) -> bool: def uri(self) -> str: return self._uri
+ @property + def context(self) -> Optional[str]: + return self._context + @property def filename(self) -> str: return self._filename @@ -240,13 +247,17 @@ def is_previewable(self,
return True
- def create_preview(self, uri: str, widget: Any, context: str) -> None: + def create_preview(self, + uri: str, + widget: Any, + context: Optional[str] = None + ) -> None: if uri.startswith('geo:'): preview = Preview(uri, None, None, None, 96, widget) preview.update_widget() return
- preview = self._process_web_uri(uri, widget) + preview = self._process_web_uri(uri, widget, context)
if not preview.orig_exists(): if context is not None: @@ -267,7 +278,11 @@ def create_preview(self, uri: str, widget: Any, context: str) -> None: self._on_thumb_load_finished, preview)
- def _process_web_uri(self, uri: str, widget: Any) -> Preview: + def _process_web_uri(self, + uri: str, + widget: Any, + context: Optional[str] = None + ) -> Preview: urlparts = urlparse(uri) size = app.settings.get('preview_size') orig_path, thumb_path = get_image_paths(uri, @@ -280,7 +295,8 @@ def _process_web_uri(self, uri: str, widget: Any) -> Preview: orig_path, thumb_path, size, - widget) + widget, + context=context)
def _on_orig_load_finished(self, data: Optional[bytes],
===================================== gajim/data/gui/preview.ui ===================================== @@ -55,7 +55,6 @@ <signal name="realize" handler="_on_realize" swapped="no"/> <child> <object class="GtkButton" id="download_button"> - <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">False</property> <property name="no-show-all">True</property> @@ -91,7 +90,6 @@ <signal name="realize" handler="_on_realize" swapped="no"/> <child> <object class="GtkButton" id="save_as_button"> - <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">False</property> <property name="no-show-all">True</property> @@ -126,7 +124,6 @@ <signal name="realize" handler="_on_realize" swapped="no"/> <child> <object class="GtkButton" id="open_folder_button"> - <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">False</property> <property name="no-show-all">True</property>
===================================== gajim/gtk/preview.py ===================================== @@ -114,6 +114,11 @@ def update(self, preview: Preview, data: Optional[GdkPixbufType]) -> None: self._ui.icon_event_box.show() image.set_property('pixel-size', 64)
+ file_size_string = _('File size unknown') + if preview.file_size != 0: + file_size_string = GLib.format_size_full( + preview.file_size, self._units) + if preview.orig_exists(): self._ui.download_button.hide() self._ui.open_folder_button.show() @@ -126,19 +131,21 @@ def update(self, preview: Preview, data: Optional[GdkPixbufType]) -> None: self._ui.right_box.pack_end(audio_widget, False, True, 0) self._ui.right_box.reorder_child(audio_widget, 1) else: + self._ui.download_button.show() self._ui.save_as_button.hide() self._ui.open_folder_button.hide() + allow_in_public = app.settings.get('preview_anonymous_muc') + if preview.context == 'public' and not allow_in_public: + image = Gtk.Image.new_from_icon_name( + 'dialog-question', Gtk.IconSize.DIALOG) + self._ui.icon_button.set_image(image) + file_size_string = _('Automatic preview disabled')
- file_size_string = _('File size unknown') - if preview.file_size != 0: - file_size_string = GLib.format_size_full( - preview.file_size, self._units) self._ui.file_size.set_text(file_size_string) - self._ui.file_name.set_text(preview.filename) self._ui.file_name.set_tooltip_text(preview.filename)
- def _get_context_menu(self): + def _get_context_menu(self) -> Gtk.Menu: def _destroy(menu, _pspec): visible = menu.get_property('visible') if not visible: @@ -167,12 +174,17 @@ def _destroy(menu, _pspec):
return menu.context_menu
- def _on_download(self, _menu): + def _on_download(self, _menu: Gtk.Menu) -> None: + if self._preview is None: + return if not self._preview.orig_exists(): app.interface.preview_manager.download_content( self._preview, force=True)
- def _on_open(self, _menu): + def _on_open(self, _menu: Gtk.Menu) -> None: + if self._preview is None: + return + if self._preview.is_geo_uri: open_uri(self._preview.uri) return @@ -184,7 +196,7 @@ def _on_open(self, _menu):
open_file(self._preview.orig_path)
- def _on_save_as(self, _menu): + def _on_save_as(self, _menu: Gtk.Menu) -> None: def _on_ok(target_path): dirname = Path(target_path).parent if not os.access(dirname, os.W_OK): @@ -206,18 +218,18 @@ def _on_ok(target_path): file_name=self._preview.filename, transient_for=app.app.get_active_window())
- def _on_open_folder(self, _menu): + def _on_open_folder(self, _menu: Gtk.Menu) -> None: if not self._preview.orig_exists(): app.interface.preview_manager.download_content( self._preview, force=True) return open_file(self._preview.orig_path.parent)
- def _on_copy_link_location(self, _menu): + def _on_copy_link_location(self, _menu: Gtk.Menu) -> None: clipboard = Gtk.Clipboard.get_default(Gdk.Display.get_default()) clipboard.set_text(self._preview.uri, -1)
- def _on_open_link_in_browser(self, _menu): + def _on_open_link_in_browser(self, _menu: Gtk.Menu) -> None: if self._preview.is_aes_encrypted: if self._preview.is_geo_uri: open_uri(self._preview.uri) @@ -226,17 +238,20 @@ def _on_open_link_in_browser(self, _menu): else: open_uri(self._preview.uri)
- def _on_content_button_clicked(self, _button): + def _on_content_button_clicked(self, _button: Gtk.Button) -> None: action = app.settings.get('preview_leftclick_action') method = getattr(self, f'_on_{action}') method(None)
- def _on_button_press_event(self, _button, event): + def _on_button_press_event(self, + _button: Gtk.Button, + event: Gdk.EventButton + ) -> None: if event.type == Gdk.EventType.BUTTON_PRESS and event.button == 3: # Right click menu = self._get_context_menu() menu.popup_at_pointer(event)
@staticmethod - def _on_realize(event_box): + def _on_realize(event_box: Gtk.EventBox) -> None: event_box.get_window().set_cursor(get_cursor('pointer'))
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/644db237d875d2a2a20066503bcd7a45...