From 17a3ec4fef6e761794f490eb198c41812f9a2780 Mon Sep 17 00:00:00 2001 From: DYefremov Date: Wed, 4 Dec 2019 23:06:38 +0300 Subject: [PATCH] base impl of send to --- app/connections.py | 4 ++-- app/ui/transmitter.glade | 14 ++++++++------ app/ui/transmitter.py | 28 ++++++++++++++++++++-------- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/app/connections.py b/app/connections.py index 0de6844a..715f592a 100644 --- a/app/connections.py +++ b/app/connections.py @@ -278,8 +278,8 @@ class HttpAPI: self._base_url = "http://{}:{}/api/".format(host, port) init_auth(user, password, self._base_url) - from concurrent.futures import ProcessPoolExecutor as PoolExecutor - self._executor = PoolExecutor(max_workers=1) + from concurrent.futures import ThreadPoolExecutor as PoolExecutor + self._executor = PoolExecutor(max_workers=2) def send(self, req_type, ref, callback=print): url = self._base_url + req_type.value diff --git a/app/ui/transmitter.glade b/app/ui/transmitter.glade index f9d1f85d..6a2568de 100644 --- a/app/ui/transmitter.glade +++ b/app/ui/transmitter.glade @@ -49,19 +49,18 @@ Author: Dmitriy Yefremov - + True False - 2 - 2 - 2 - 2 vertical - 5 True True + 2 + 2 + 2 + 2 gtk-dnd-multiple @@ -71,6 +70,9 @@ Author: Dmitriy Yefremov 0 + diff --git a/app/ui/transmitter.py b/app/ui/transmitter.py index 20dd372a..e286edb6 100644 --- a/app/ui/transmitter.py +++ b/app/ui/transmitter.py @@ -3,7 +3,7 @@ from gi.repository import GLib from app.connections import HttpRequestType from app.tools.yt import YouTube from app.ui.iptv import get_yt_icon -from .uicommons import Gtk, UI_RESOURCES_PATH, TEXT_DOMAIN +from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, TEXT_DOMAIN class LinksTransmitter: @@ -27,6 +27,11 @@ class LinksTransmitter: self._main_window = builder.get_object("main_window") self._url_entry = builder.get_object("url_entry") + style_provider = Gtk.CssProvider() + style_provider.load_from_path(UI_RESOURCES_PATH + "style.css") + self._url_entry.get_style_context().add_provider_for_screen(Gdk.Screen.get_default(), style_provider, + Gtk.STYLE_PROVIDER_PRIORITY_USER) + def show(self, show): self._tray.set_visible(show) if not show: @@ -44,18 +49,22 @@ class LinksTransmitter: self._app_window.present() if visible else self._app_window.iconify() def on_query_tooltip(self, icon, g, x, y, tooltip: Gtk.Tooltip): - if self._main_window.get_visible(): + if self._main_window.get_visible() or not self._url_entry.get_text(): return False - tooltip.set_text("Test") + tooltip.set_text(self._url_entry.get_text()) return True - def on_drag_data_received(self, widget, drag_context, x, y, data, info, time): - gen = self.activate_url(data.get_text()) + def on_drag_data_received(self, entry, drag_context, x, y, data, info, time): + url = data.get_text() + GLib.idle_add(entry.set_text, url) + gen = self.activate_url(url) GLib.idle_add(lambda: next(gen, False), priority=GLib.PRIORITY_LOW) def activate_url(self, url): + self._url_entry.set_name("GtkEntry") result = urlparse(url) + if result.scheme and result.netloc: self._url_entry.set_sensitive(False) yt_id = YouTube.get_yt_id(url) @@ -67,6 +76,9 @@ class LinksTransmitter: yield True if links: url = links[sorted(links, key=lambda x: int(x.rstrip("p")), reverse=True)[0]] + else: + self.on_play(links) + return else: self._url_entry.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, None) @@ -75,9 +87,9 @@ class LinksTransmitter: def on_play(self, res): """ Play callback """ - self._url_entry.set_sensitive(True) - if res: - print(res) + GLib.idle_add(self._url_entry.set_sensitive, True) + res = res.get("result", None) if res else res + self._url_entry.set_name("GtkEntry" if res else "digit-entry") def on_exit(self, item=None): self.show(False)