tooltips support for the bouquets list

This commit is contained in:
DYefremov
2021-12-11 16:48:13 +03:00
parent eeeca881e8
commit 5b6900cae7
2 changed files with 40 additions and 5 deletions

View File

@@ -2453,7 +2453,11 @@ Author: Dmitriy Yefremov
<property name="tooltip_text" translatable="yes">IPTV</property>
<property name="direction">none</property>
<child>
<placeholder/>
<object class="GtkImage" id="iptv_menu_button_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">emblem-shared-symbolic</property>
</object>
</child>
</object>
<packing>
@@ -3204,6 +3208,7 @@ Author: Dmitriy Yefremov
<property name="search_column">0</property>
<property name="rubber_banding">True</property>
<property name="enable_tree_lines">True</property>
<property name="tooltip_column">1</property>
<property name="activate_on_single_click">True</property>
<signal name="button-press-event" handler="on_view_popup_menu" object="bouquets_popup_menu" swapped="no"/>
<signal name="button-press-event" handler="on_view_press" swapped="yes"/>
@@ -3215,6 +3220,7 @@ Author: Dmitriy Yefremov
<signal name="focus-in-event" handler="on_view_focus" swapped="no"/>
<signal name="key-press-event" handler="on_tree_view_key_press" swapped="no"/>
<signal name="key-release-event" handler="on_tree_view_key_release" swapped="no"/>
<signal name="query-tooltip" handler="on_bq_view_query_tooltip" swapped="no"/>
<signal name="row-activated" handler="on_bouquets_selection" object="bouquets_tree_store" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection" id="bouquets_selection">

View File

@@ -28,6 +28,7 @@
import os
import sys
from collections import Counter
from contextlib import suppress
from datetime import datetime
from functools import lru_cache
@@ -136,6 +137,7 @@ class Application(Gtk.Application):
"on_to_fav_copy": self.on_to_fav_copy,
"on_to_fav_end_copy": self.on_to_fav_end_copy,
"on_fav_sort": self.on_fav_sort,
"on_bq_view_query_tooltip": self.on_bq_view_query_tooltip,
"on_fav_view_query_tooltip": self.on_fav_view_query_tooltip,
"on_services_view_query_tooltip": self.on_services_view_query_tooltip,
"on_view_drag_begin": self.on_view_drag_begin,
@@ -1254,7 +1256,34 @@ class Application(Gtk.Application):
return -181.0 if pos == "T" else -182.0
# ********************* Hints *************************#
# ********************* Hints ************************* #
def on_bq_view_query_tooltip(self, view, x, y, keyboard_mode, tooltip):
if not self._main_window.is_active():
return False
result = view.get_dest_row_at_pos(x, y)
if not result:
return False
path, pos = result
model = view.get_model()
row = model[path][:]
name, b_type = row[Column.BQ_NAME], row[Column.BQ_TYPE]
b_id = f"{name}:{b_type}"
bq = self._bouquets.get(b_id, None)
if bq is None:
return False
counter = Counter(s.service_type for s in filter(None, (self._services.get(f_id, None) for f_id in bq)))
services_txt = "\n".join(f"{k}: {v}" for k, v in counter.items())
n_msg, s_msg, f_msg = get_message("Name"), get_message("Services"), get_message("File")
f = f"\n\n{f_msg}: *.{self._bq_file.get(b_id, None)}.{b_type}" if self._s_type is SettingsType.ENIGMA_2 else ""
tooltip.set_text(f"{n_msg}: {name}\n{s_msg}:\n{services_txt}{f}")
view.set_tooltip_row(tooltip, path)
return True
def on_fav_view_query_tooltip(self, view, x, y, keyboard_mode, tooltip):
""" Sets detailed info about service in the tooltip [fav view]. """
@@ -1287,13 +1316,13 @@ class Application(Gtk.Application):
if srv and srv.picon_id:
tooltip.set_icon(get_picon_pixbuf(self._settings.profile_picons_path + srv.picon_id,
size=self._settings.tooltip_logo_size))
tooltip.set_text(
self.get_hint_for_bq_list(srv) if target is ViewTarget.FAV else self.get_hint_for_srv_list(srv))
txt = self.get_hint_for_fav_list(srv) if target is ViewTarget.FAV else self.get_hint_for_srv_list(srv)
tooltip.set_text(txt)
view.set_tooltip_row(tooltip, path)
return True
return False
def get_hint_for_bq_list(self, srv):
def get_hint_for_fav_list(self, srv):
""" Returns detailed info about service as formatted string for using as hint. """
header, ref = self.get_hint_header_info(srv)