Philipp Hörist pushed to branch master at gajim / gajim
Commits: 1f081612 by Philipp Hörist at 2022-11-05T23:27:57+01:00 refactor: Make open_file() only accept Path objects
- - - - -
3 changed files:
- gajim/common/helpers.py - gajim/gtk/conversation/rows/file_transfer_jingle.py - gajim/gtk/filetransfer.py
Changes:
===================================== gajim/common/helpers.py ===================================== @@ -1111,16 +1111,12 @@ def open_file_uri(uri: str) -> None:
@catch_exceptions -def open_file(path: Union[str, Path]) -> None: - if sys.platform == 'win32': - os.startfile(path) - else: - # Call str() to make it work with pathlib.Path - path = str(path) - if path.startswith('/'): - open_file_uri('file://' + escape_iri_path(path)) - else: - open_file_uri(path) +def open_file(path: Path) -> None: + if not path.exists(): + log.warning('Unable to open file, path %s does not exist', path) + return + + open_file_uri(path.as_uri())
def filesystem_path_from_uri(uri: str) -> Optional[Path]:
===================================== gajim/gtk/conversation/rows/file_transfer_jingle.py ===================================== @@ -18,9 +18,9 @@ from typing import Optional
import logging -import os import time from datetime import datetime +from pathlib import Path
from gi.repository import GdkPixbuf from gi.repository import GLib @@ -347,15 +347,14 @@ def _on_reject_file_request(self, _button: Gtk.Button) -> None: def _on_open_file(self, _button: Gtk.Button) -> None: assert self._file_props is not None assert self._file_props.file_name is not None - if os.path.exists(self._file_props.file_name): - open_file(self._file_props.file_name) + open_file(Path(self._file_props.file_name))
def _on_open_folder(self, _button: Gtk.Button) -> None: assert self._file_props is not None assert self._file_props.file_name is not None - path = os.path.split(self._file_props.file_name)[0] - if os.path.exists(path) and os.path.isdir(path): - open_file(path) + + folder = Path(self._file_props.file_name).parent + open_file(folder)
def _on_bad_hash_retry(self, _button: Gtk.Button) -> None: app.interface.instances['file_transfers'].show_hash_error(
===================================== gajim/gtk/filetransfer.py ===================================== @@ -29,6 +29,7 @@ from enum import unique from datetime import datetime from datetime import timezone +from pathlib import Path
from gi.repository import Gtk from gi.repository import Gdk @@ -1030,9 +1031,9 @@ def _on_open_folder_menuitem_activate(self, widget): file_props = FilesProp.getFilePropByType(sid[0], sid[1:]) if not file_props.file_name: return - path = os.path.split(file_props.file_name)[0] - if os.path.exists(path) and os.path.isdir(path): - open_file(path) + + folder = Path(file_props.file_name).parent + open_file(folder)
def _on_cancel_menuitem_activate(self, widget): self._on_cancel_button_clicked(widget)
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/1f0816120038977fcc5b9185bd1ea8683...