From 8c827b126f47d506c1ed5eea3628694920147fbd Mon Sep 17 00:00:00 2001 From: DYefremov Date: Sun, 12 Jul 2020 11:11:32 +0300 Subject: [PATCH] added bouquets import via dnd --- app/ui/imports.py | 4 ++-- app/ui/main_app_window.py | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/ui/imports.py b/app/ui/imports.py index 97ed8255..d0abc660 100644 --- a/app/ui/imports.py +++ b/app/ui/imports.py @@ -12,7 +12,7 @@ from app.ui.main_helper import on_popup_menu from .uicommons import Gtk, UI_RESOURCES_PATH, KeyboardKey, Column -def import_bouquet(transient, model, path, settings, services, appender): +def import_bouquet(transient, model, path, settings, services, appender, file_path=None): """ Import of single bouquet """ itr = model.get_iter(path) bq_type = BqType(model.get(itr, Column.BQ_TYPE)[0]) @@ -30,7 +30,7 @@ def import_bouquet(transient, model, path, settings, services, appender): elif bq_type is BqType.WEBTV: f_pattern = "webtv.xml" - file_path = get_chooser_dialog(transient, settings, "bouquet files", (f_pattern,)) + file_path = file_path or get_chooser_dialog(transient, settings, "bouquet files", (f_pattern,)) if file_path == Gtk.ResponseType.CANCEL: return diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py index b35695fa..e60eb2a8 100644 --- a/app/ui/main_app_window.py +++ b/app/ui/main_app_window.py @@ -988,6 +988,12 @@ class Application(Gtk.Application): data = data.get_text() if not data: return + + if data.startswith("file://"): + from urllib.parse import unquote, urlparse + self.on_import_bouquet(None, file_path=urlparse(unquote(data)).path.strip()) + return + itr_str, sep, source = data.partition("::::") if source != self.BQ_MODEL_NAME: return @@ -1907,14 +1913,14 @@ class Application(Gtk.Application): else: show_dialog(DialogType.INFO, self._main_window, "Done!") - def on_import_bouquet(self, action, value=None): + def on_import_bouquet(self, action, value=None, file_path=None): model, paths = self._bouquets_view.get_selection().get_selected_rows() if not paths: self.show_error_dialog("No selected item!") return appender = self.append_bouquet if self._s_type is SettingsType.ENIGMA_2 else self.append_bouquets - import_bouquet(self._main_window, model, paths[0], self._settings, self._services, appender) + import_bouquet(self._main_window, model, paths[0], self._settings, self._services, appender, file_path) def on_import_bouquets(self, action, value=None): response = show_dialog(DialogType.CHOOSER, self._main_window, settings=self._settings)