mirror of
https://github.com/DYefremov/DemonEditor.git
synced 2025-12-24 01:19:40 +01:00
yt list import dialog skeleton
This commit is contained in:
@@ -4,7 +4,8 @@ import urllib
|
|||||||
from html.parser import HTMLParser
|
from html.parser import HTMLParser
|
||||||
from urllib.request import Request
|
from urllib.request import Request
|
||||||
|
|
||||||
_YT_PATTERN = re.compile(r"https://www.youtube.com/.+(?:v=|\/)([\w-]{11})&?(list=)?([\w-]{34})?.*")
|
_YT_PATTERN = re.compile(r"https://www.youtube.com/.+(?:v=)([\w-]{11}).*")
|
||||||
|
_YT_LIST_PATTERN = re.compile(r"https://www.youtube.com/.+?(?:list=)([\w-]{34})?.*")
|
||||||
_YT_VIDEO_PATTERN = re.compile(r"https://r\d+---sn-[\w]{10}-[\w]{3,5}.googlevideo.com/videoplayback?.*")
|
_YT_VIDEO_PATTERN = re.compile(r"https://r\d+---sn-[\w]{10}-[\w]{3,5}.googlevideo.com/videoplayback?.*")
|
||||||
_HEADERS = {"User-Agent": "Mozilla/5.0"}
|
_HEADERS = {"User-Agent": "Mozilla/5.0"}
|
||||||
|
|
||||||
@@ -23,6 +24,13 @@ class YouTube:
|
|||||||
if yt:
|
if yt:
|
||||||
return yt.group(1)
|
return yt.group(1)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_yt_list_id(url):
|
||||||
|
""" Returns playlist id or None """
|
||||||
|
yt = re.search(_YT_LIST_PATTERN, url)
|
||||||
|
if yt:
|
||||||
|
return yt.group(1)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_yt_link(video_id):
|
def get_yt_link(video_id):
|
||||||
""" Getting link to YouTube video by id.
|
""" Getting link to YouTube video by id.
|
||||||
|
|||||||
155
app/ui/iptv.py
155
app/ui/iptv.py
@@ -1,3 +1,4 @@
|
|||||||
|
import concurrent.futures
|
||||||
import glob
|
import glob
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
@@ -11,9 +12,9 @@ from gi.repository import GLib
|
|||||||
|
|
||||||
from app.commons import run_idle, run_task
|
from app.commons import run_idle, run_task
|
||||||
from app.eparser.ecommons import BqServiceType, Service
|
from app.eparser.ecommons import BqServiceType, Service
|
||||||
from app.eparser.iptv import NEUTRINO_FAV_ID_FORMAT, StreamType, ENIGMA2_FAV_ID_FORMAT
|
from app.eparser.iptv import NEUTRINO_FAV_ID_FORMAT, StreamType, ENIGMA2_FAV_ID_FORMAT, get_fav_id
|
||||||
from app.properties import Profile
|
from app.properties import Profile
|
||||||
from app.tools.yt import YouTube
|
from app.tools.yt import YouTube, PlayListParser
|
||||||
from .dialogs import Action, show_dialog, DialogType, get_dialogs_string, get_message
|
from .dialogs import Action, show_dialog, DialogType, get_dialogs_string, get_message
|
||||||
from .main_helper import get_base_model, get_iptv_url
|
from .main_helper import get_base_model, get_iptv_url
|
||||||
from .uicommons import Gtk, Gdk, TEXT_DOMAIN, UI_RESOURCES_PATH, IPTV_ICON, Column, IS_GNOME_SESSION
|
from .uicommons import Gtk, Gdk, TEXT_DOMAIN, UI_RESOURCES_PATH, IPTV_ICON, Column, IS_GNOME_SESSION
|
||||||
@@ -543,5 +544,155 @@ class IptvListConfigurationDialog:
|
|||||||
self.update_reference()
|
self.update_reference()
|
||||||
|
|
||||||
|
|
||||||
|
class YtListImportDialog:
|
||||||
|
def __init__(self, transient, bouquet, fav_view, profile):
|
||||||
|
handlers = {"on_import": self.on_import,
|
||||||
|
"on_receive": self.on_receive,
|
||||||
|
"on_yt_url_entry_changed": self.on_url_entry_changed,
|
||||||
|
"on_yt_info_bar_close": self.on_info_bar_close,
|
||||||
|
"on_selected_toggled": self.on_selected_toggled,
|
||||||
|
"on_close": self.on_close}
|
||||||
|
|
||||||
|
builder = Gtk.Builder()
|
||||||
|
builder.set_translation_domain(TEXT_DOMAIN)
|
||||||
|
builder.add_objects_from_string(
|
||||||
|
get_dialogs_string(UI_RESOURCES_PATH + "yt_dialog.glade").format(use_header=IS_GNOME_SESSION),
|
||||||
|
("yt_import_dialog_window", "yt_liststore"))
|
||||||
|
builder.connect_signals(handlers)
|
||||||
|
|
||||||
|
self._dialog = builder.get_object("yt_import_dialog_window")
|
||||||
|
self._dialog.set_transient_for(transient)
|
||||||
|
self._list_view_scrolled_window = builder.get_object("yt_list_view_scrolled_window")
|
||||||
|
self._model = builder.get_object("yt_liststore")
|
||||||
|
self._progress_bar = builder.get_object("yt_progress_bar")
|
||||||
|
self._info_bar_box = builder.get_object("yt_info_bar_box")
|
||||||
|
self._message_label = builder.get_object("yt_info_bar_message_label")
|
||||||
|
self._info_bar = builder.get_object("yt_info_bar")
|
||||||
|
self._url_entry = builder.get_object("yt_url_entry")
|
||||||
|
self._receive_button = builder.get_object("yt_receive_button")
|
||||||
|
self._import_button = builder.get_object("yt_import_button")
|
||||||
|
# style
|
||||||
|
self._style_provider = Gtk.CssProvider()
|
||||||
|
self._style_provider.load_from_path(UI_RESOURCES_PATH + "style.css")
|
||||||
|
self._url_entry.get_style_context().add_provider_for_screen(Gdk.Screen.get_default(), self._style_provider,
|
||||||
|
Gtk.STYLE_PROVIDER_PRIORITY_USER)
|
||||||
|
|
||||||
|
self._bouquet = bouquet
|
||||||
|
self._fav_path, c = fav_view.get_cursor()
|
||||||
|
self._fav_model = fav_view.get_model()
|
||||||
|
self._profile = profile
|
||||||
|
self._download_task = False
|
||||||
|
self._yt_list_id = None
|
||||||
|
self._yt_list_title = None
|
||||||
|
|
||||||
|
def show(self):
|
||||||
|
self._dialog.show()
|
||||||
|
|
||||||
|
@run_task
|
||||||
|
def on_import(self, item):
|
||||||
|
self.update_active_elements(False)
|
||||||
|
self._download_task = True
|
||||||
|
|
||||||
|
try:
|
||||||
|
with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
|
||||||
|
done_links = []
|
||||||
|
futures = {executor.submit(YouTube.get_yt_link, r[1]): r for r in self._model if r[2]}
|
||||||
|
size = len(futures)
|
||||||
|
counter = 0
|
||||||
|
|
||||||
|
for future in concurrent.futures.as_completed(futures):
|
||||||
|
if not self._download_task:
|
||||||
|
executor.shutdown()
|
||||||
|
return
|
||||||
|
done_links.append(future.result())
|
||||||
|
counter += 1
|
||||||
|
self.update_progress_bar(counter / size)
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
else:
|
||||||
|
self.show_info_message(get_message("Done!"), Gtk.MessageType.INFO)
|
||||||
|
self.append_services(done_links)
|
||||||
|
finally:
|
||||||
|
self._download_task = False
|
||||||
|
self.update_active_elements(True)
|
||||||
|
|
||||||
|
def on_receive(self, item):
|
||||||
|
self.update_active_elements(False)
|
||||||
|
self._model.clear()
|
||||||
|
self.on_info_bar_close()
|
||||||
|
self.update_refs_list()
|
||||||
|
|
||||||
|
@run_task
|
||||||
|
def update_refs_list(self):
|
||||||
|
if self._yt_list_id:
|
||||||
|
try:
|
||||||
|
self._yt_list_title, links = PlayListParser.get_yt_playlist(self._yt_list_id)
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
gen = self.update_links(links)
|
||||||
|
GLib.idle_add(lambda: next(gen, False), priority=GLib.PRIORITY_LOW)
|
||||||
|
finally:
|
||||||
|
self.update_active_elements(True)
|
||||||
|
|
||||||
|
def update_links(self, links):
|
||||||
|
for l in links:
|
||||||
|
yield self._model.append((l[0], l[1], True, None))
|
||||||
|
|
||||||
|
@run_idle
|
||||||
|
def append_services(self, links):
|
||||||
|
aggr = [None] * 10
|
||||||
|
print("List title:", self._yt_list_title)
|
||||||
|
for l in links:
|
||||||
|
fav_id = get_fav_id(*l, self._profile)
|
||||||
|
srv = Service(None, None, IPTV_ICON, l[1], *aggr[0:3], BqServiceType.IPTV.name, *aggr, fav_id, None)
|
||||||
|
print(srv)
|
||||||
|
|
||||||
|
@run_idle
|
||||||
|
def update_active_elements(self, sensitive):
|
||||||
|
self._list_view_scrolled_window.set_visible(sensitive or not sensitive)
|
||||||
|
self._url_entry.set_sensitive(sensitive)
|
||||||
|
self._receive_button.set_sensitive(sensitive)
|
||||||
|
self._import_button.set_sensitive(sensitive)
|
||||||
|
|
||||||
|
def on_url_entry_changed(self, entry):
|
||||||
|
url_str = entry.get_text()
|
||||||
|
yt_id = YouTube.get_yt_list_id(url_str)
|
||||||
|
entry.set_name("GtkEntry" if yt_id else _DIGIT_ENTRY_NAME)
|
||||||
|
self._receive_button.set_sensitive(bool(yt_id))
|
||||||
|
self._yt_list_id = yt_id
|
||||||
|
|
||||||
|
if yt_id:
|
||||||
|
entry.set_icon_from_pixbuf(Gtk.EntryIconPosition.SECONDARY, get_yt_icon("youtube", 32))
|
||||||
|
else:
|
||||||
|
entry.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, None)
|
||||||
|
|
||||||
|
@run_idle
|
||||||
|
def on_info_bar_close(self, bar=None, resp=None):
|
||||||
|
self._info_bar.set_visible(False)
|
||||||
|
|
||||||
|
@run_idle
|
||||||
|
def update_progress_bar(self, value):
|
||||||
|
self._info_bar_box.set_visible(value < 1)
|
||||||
|
self._progress_bar.set_fraction(value)
|
||||||
|
|
||||||
|
@run_idle
|
||||||
|
def show_info_message(self, text, message_type):
|
||||||
|
self._info_bar.set_visible(True)
|
||||||
|
self._info_bar.set_message_type(message_type)
|
||||||
|
self._message_label.set_text(text)
|
||||||
|
|
||||||
|
def on_selected_toggled(self, toggle, path):
|
||||||
|
self._model.set_value(self._model.get_iter(path), 2, not toggle.get_active())
|
||||||
|
|
||||||
|
@run_idle
|
||||||
|
def on_close(self, window, event):
|
||||||
|
if self._download_task and show_dialog(DialogType.QUESTION, self._dialog) == Gtk.ResponseType.CANCEL:
|
||||||
|
return
|
||||||
|
self._download_task = False
|
||||||
|
self._dialog.destroy()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ from app.ui.epg_dialog import EpgDialog
|
|||||||
from .backup import BackupDialog, backup_data, clear_data_path
|
from .backup import BackupDialog, backup_data, clear_data_path
|
||||||
from .imports import ImportDialog, import_bouquet
|
from .imports import ImportDialog, import_bouquet
|
||||||
from .download_dialog import DownloadDialog
|
from .download_dialog import DownloadDialog
|
||||||
from .iptv import IptvDialog, SearchUnavailableDialog, IptvListConfigurationDialog
|
from .iptv import IptvDialog, SearchUnavailableDialog, IptvListConfigurationDialog, YtListImportDialog
|
||||||
from .search import SearchProvider
|
from .search import SearchProvider
|
||||||
from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, LOCKED_ICON, HIDE_ICON, IPTV_ICON, MOVE_KEYS, KeyboardKey, Column, \
|
from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, LOCKED_ICON, HIDE_ICON, IPTV_ICON, MOVE_KEYS, KeyboardKey, Column, \
|
||||||
EXTRA_COLOR, NEW_COLOR, FavClickMode
|
EXTRA_COLOR, NEW_COLOR, FavClickMode
|
||||||
@@ -110,6 +110,7 @@ class Application(Gtk.Application):
|
|||||||
"on_hide": self.on_hide,
|
"on_hide": self.on_hide,
|
||||||
"on_locked": self.on_locked,
|
"on_locked": self.on_locked,
|
||||||
"on_model_changed": self.on_model_changed,
|
"on_model_changed": self.on_model_changed,
|
||||||
|
"on_import_yt_list": self.on_import_yt_list,
|
||||||
"on_import_m3u": self.on_import_m3u,
|
"on_import_m3u": self.on_import_m3u,
|
||||||
"on_export_to_m3u": self.on_export_to_m3u,
|
"on_export_to_m3u": self.on_export_to_m3u,
|
||||||
"on_import_bouquet": self.on_import_bouquet,
|
"on_import_bouquet": self.on_import_bouquet,
|
||||||
@@ -1373,6 +1374,14 @@ class Application(Gtk.Application):
|
|||||||
|
|
||||||
# ***************** Import ********************#
|
# ***************** Import ********************#
|
||||||
|
|
||||||
|
def on_import_yt_list(self, item):
|
||||||
|
""" Import playlist from YouTube """
|
||||||
|
if not self._bq_selected:
|
||||||
|
return
|
||||||
|
|
||||||
|
bq = self._bouquets.get(self._bq_selected, [])
|
||||||
|
YtListImportDialog(self._main_window, bq, self._fav_view, Profile(self._profile)).show()
|
||||||
|
|
||||||
def on_import_m3u(self, item):
|
def on_import_m3u(self, item):
|
||||||
""" Imports iptv from m3u files. """
|
""" Imports iptv from m3u files. """
|
||||||
response = get_chooser_dialog(self._main_window, self._options.get(self._profile), "*.m3u", "m3u files")
|
response = get_chooser_dialog(self._main_window, self._options.get(self._profile), "*.m3u", "m3u files")
|
||||||
|
|||||||
@@ -582,343 +582,6 @@ Author: Dmitriy Yefremov
|
|||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="stock">gtk-remove</property>
|
<property name="stock">gtk-remove</property>
|
||||||
</object>
|
</object>
|
||||||
<object class="GtkMenu" id="fav_popup_menu">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_cut_popup_item">
|
|
||||||
<property name="label">gtk-cut</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="sensitive">False</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="use_stock">True</property>
|
|
||||||
<signal name="activate" handler="on_fav_cut" object="fav_tree_view" swapped="no"/>
|
|
||||||
<accelerator key="x" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_copy_popup_item">
|
|
||||||
<property name="label">gtk-copy</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="sensitive">False</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="use_stock">True</property>
|
|
||||||
<signal name="activate" handler="on_fav_copy" object="fav_tree_view" swapped="no"/>
|
|
||||||
<accelerator key="c" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_paste_popup_item">
|
|
||||||
<property name="label">gtk-paste</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="sensitive">False</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="use_stock">True</property>
|
|
||||||
<signal name="activate" handler="on_fav_paste" object="fav_tree_view" swapped="no"/>
|
|
||||||
<accelerator key="v" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparatorMenuItem" id="fav_popup_separator_1">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_edit_popup_item">
|
|
||||||
<property name="label">gtk-edit</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="use_stock">True</property>
|
|
||||||
<signal name="activate" handler="on_service_edit" object="fav_tree_view" swapped="no"/>
|
|
||||||
<accelerator key="e" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_edit_sub_menu_popup_item">
|
|
||||||
<property name="label" translatable="yes">Extra:</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">extra_edit_image</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<property name="always_show_image">True</property>
|
|
||||||
<child type="submenu">
|
|
||||||
<object class="GtkMenu" id="fav_edit_popoup_menu">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_rename_popup_item">
|
|
||||||
<property name="label" translatable="yes">Rename for this bouquet</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">edit_image_1</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_rename_for_bouquet" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_set_default_name_popup_item">
|
|
||||||
<property name="label" translatable="yes">Set default name</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">edit_image_2</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_set_default_name_for_bouquet" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparatorMenuItem" id="fav_popup_separator_2">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_locate_popup_item">
|
|
||||||
<property name="label" translatable="yes">Locate in services</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="sensitive">False</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">find_image</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_locate_in_services" object="fav_tree_view" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_3">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_insert_marker_popup_item">
|
|
||||||
<property name="label" translatable="yes">Insert marker</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="sensitive">False</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="image">insert_text_image</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_insert_marker" object="fav_tree_view" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparatorMenuItem" id="fav_popup_separator_4">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_iptv_popup_item">
|
|
||||||
<property name="label" translatable="yes">IPTV</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="sensitive">False</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">networktransmit_receive_image</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<child type="submenu">
|
|
||||||
<object class="GtkMenu" id="fav_iptv_popoup_menu">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_play_stream_popup_item">
|
|
||||||
<property name="label">gtk-media-play</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="use_stock">True</property>
|
|
||||||
<signal name="activate" handler="on_play_stream" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_5">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_add_iptv_popup_item">
|
|
||||||
<property name="label" translatable="yes">Add IPTV or stream service</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">network_transmit_receive_image</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_iptv" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_import_m3u_popup_item">
|
|
||||||
<property name="label" translatable="yes">Import m3u</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="image">downloads_image</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_import_m3u" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_export_m3u_popup_item">
|
|
||||||
<property name="label" translatable="yes">Export to m3u</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">export_to_m3u_image</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_export_to_m3u" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_6">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_epg_configuration_popup_item">
|
|
||||||
<property name="label" translatable="yes">EPG configuration</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">epg_configuration_image</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_epg_list_configuration" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_7">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_iptv_list_configuration_popup_item">
|
|
||||||
<property name="label" translatable="yes">List configuration</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">fav_iptv_list_config_image</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_iptv_list_configuration" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_8">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_remove_all_unavailable_popup_item">
|
|
||||||
<property name="label" translatable="yes">Remove all unavailable</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">remova_image</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_remove_all_unavailable" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparatorMenuItem" id="fav_popup_separator_9">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_picon_popup_item">
|
|
||||||
<property name="label" translatable="yes">Picon</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="sensitive">False</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">insert_image</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<child type="submenu">
|
|
||||||
<object class="GtkMenu" id="fav_picon_popoup_menu">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_assign_picon_popup_item">
|
|
||||||
<property name="label" translatable="yes">Assign</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">insert_link_image_2</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_assign_picon" object="fav_tree_view" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_remove_picon_popup_item">
|
|
||||||
<property name="label" translatable="yes">Remove</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">clear_image_2</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_remove_picon" object="fav_tree_view" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_10">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_reference_picon_popup_item">
|
|
||||||
<property name="label" translatable="yes">Copy reference</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">copy_image_2</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_reference_picon" object="fav_tree_view" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_11">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_remove_unused_picons_popup_item">
|
|
||||||
<property name="label" translatable="yes">Remove all unused</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="image">remove_all_image</property>
|
|
||||||
<property name="use_stock">False</property>
|
|
||||||
<signal name="activate" handler="on_remove_unused_picons" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkSeparatorMenuItem" id="fav_popup_separator_12">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImageMenuItem" id="fav_remove_popup_item">
|
|
||||||
<property name="label">gtk-remove</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="sensitive">False</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="use_stock">True</property>
|
|
||||||
<signal name="activate" handler="on_delete" object="fav_tree_view" swapped="no"/>
|
|
||||||
<accelerator key="Delete" signal="activate"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<object class="GtkImage" id="remove_all_image_2">
|
<object class="GtkImage" id="remove_all_image_2">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
@@ -3114,4 +2777,356 @@ Author: Dmitriy Yefremov
|
|||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="GtkImage" id="yt_image">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="stock">gtk-connect</property>
|
||||||
|
</object>
|
||||||
|
<object class="GtkMenu" id="fav_popup_menu">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_cut_popup_item">
|
||||||
|
<property name="label">gtk-cut</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
|
<signal name="activate" handler="on_fav_cut" object="fav_tree_view" swapped="no"/>
|
||||||
|
<accelerator key="x" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_copy_popup_item">
|
||||||
|
<property name="label">gtk-copy</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
|
<signal name="activate" handler="on_fav_copy" object="fav_tree_view" swapped="no"/>
|
||||||
|
<accelerator key="c" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_paste_popup_item">
|
||||||
|
<property name="label">gtk-paste</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
|
<signal name="activate" handler="on_fav_paste" object="fav_tree_view" swapped="no"/>
|
||||||
|
<accelerator key="v" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorMenuItem" id="fav_popup_separator_1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_edit_popup_item">
|
||||||
|
<property name="label">gtk-edit</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
|
<signal name="activate" handler="on_service_edit" object="fav_tree_view" swapped="no"/>
|
||||||
|
<accelerator key="e" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_edit_sub_menu_popup_item">
|
||||||
|
<property name="label" translatable="yes">Extra:</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">extra_edit_image</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<property name="always_show_image">True</property>
|
||||||
|
<child type="submenu">
|
||||||
|
<object class="GtkMenu" id="fav_edit_popoup_menu">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_rename_popup_item">
|
||||||
|
<property name="label" translatable="yes">Rename for this bouquet</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">edit_image_1</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_rename_for_bouquet" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_set_default_name_popup_item">
|
||||||
|
<property name="label" translatable="yes">Set default name</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">edit_image_2</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_set_default_name_for_bouquet" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorMenuItem" id="fav_popup_separator_2">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_locate_popup_item">
|
||||||
|
<property name="label" translatable="yes">Locate in services</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">find_image</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_locate_in_services" object="fav_tree_view" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_3">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_insert_marker_popup_item">
|
||||||
|
<property name="label" translatable="yes">Insert marker</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="image">insert_text_image</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_insert_marker" object="fav_tree_view" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorMenuItem" id="fav_popup_separator_4">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_iptv_popup_item">
|
||||||
|
<property name="label" translatable="yes">IPTV</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">networktransmit_receive_image</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<child type="submenu">
|
||||||
|
<object class="GtkMenu" id="fav_iptv_popoup_menu">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_play_stream_popup_item">
|
||||||
|
<property name="label">gtk-media-play</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
|
<signal name="activate" handler="on_play_stream" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_5">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_add_iptv_popup_item">
|
||||||
|
<property name="label" translatable="yes">Add IPTV or stream service</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">network_transmit_receive_image</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_iptv" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_import_yt_popup_item">
|
||||||
|
<property name="label" translatable="yes">Import YouTube playlist</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">yt_image</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_import_yt_list" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_import_m3u_popup_item">
|
||||||
|
<property name="label" translatable="yes">Import m3u</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="image">downloads_image</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_import_m3u" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_export_m3u_popup_item">
|
||||||
|
<property name="label" translatable="yes">Export to m3u</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">export_to_m3u_image</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_export_to_m3u" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_6">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_epg_configuration_popup_item">
|
||||||
|
<property name="label" translatable="yes">EPG configuration</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">epg_configuration_image</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_epg_list_configuration" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_7">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_iptv_list_configuration_popup_item">
|
||||||
|
<property name="label" translatable="yes">List configuration</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">fav_iptv_list_config_image</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_iptv_list_configuration" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_8">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_remove_all_unavailable_popup_item">
|
||||||
|
<property name="label" translatable="yes">Remove all unavailable</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">remova_image</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_remove_all_unavailable" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorMenuItem" id="fav_popup_separator_9">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_picon_popup_item">
|
||||||
|
<property name="label" translatable="yes">Picon</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">insert_image</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<child type="submenu">
|
||||||
|
<object class="GtkMenu" id="fav_picon_popoup_menu">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_assign_picon_popup_item">
|
||||||
|
<property name="label" translatable="yes">Assign</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">insert_link_image_2</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_assign_picon" object="fav_tree_view" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_remove_picon_popup_item">
|
||||||
|
<property name="label" translatable="yes">Remove</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">clear_image_2</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_remove_picon" object="fav_tree_view" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_10">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_reference_picon_popup_item">
|
||||||
|
<property name="label" translatable="yes">Copy reference</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">copy_image_2</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_reference_picon" object="fav_tree_view" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_11">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_remove_unused_picons_popup_item">
|
||||||
|
<property name="label" translatable="yes">Remove all unused</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="image">remove_all_image</property>
|
||||||
|
<property name="use_stock">False</property>
|
||||||
|
<signal name="activate" handler="on_remove_unused_picons" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorMenuItem" id="fav_popup_separator_12">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem" id="fav_remove_popup_item">
|
||||||
|
<property name="label">gtk-remove</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
|
<signal name="activate" handler="on_delete" object="fav_tree_view" swapped="no"/>
|
||||||
|
<accelerator key="Delete" signal="activate"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
</interface>
|
</interface>
|
||||||
|
|||||||
273
app/ui/yt_dialog.glade
Normal file
273
app/ui/yt_dialog.glade
Normal file
@@ -0,0 +1,273 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Generated with glade 3.22.1 -->
|
||||||
|
<interface>
|
||||||
|
<requires lib="gtk+" version="3.20"/>
|
||||||
|
<object class="GtkListStore" id="yt_liststore">
|
||||||
|
<columns>
|
||||||
|
<!-- column-name title -->
|
||||||
|
<column type="gchararray"/>
|
||||||
|
<!-- column-name id -->
|
||||||
|
<column type="gchararray"/>
|
||||||
|
<!-- column-name selected -->
|
||||||
|
<column type="gboolean"/>
|
||||||
|
<!-- column-name tooltip -->
|
||||||
|
<column type="gchararray"/>
|
||||||
|
</columns>
|
||||||
|
</object>
|
||||||
|
<object class="GtkWindow" id="yt_import_dialog_window">
|
||||||
|
<property name="width_request">480</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="modal">True</property>
|
||||||
|
<property name="window_position">center-on-parent</property>
|
||||||
|
<property name="destroy_with_parent">True</property>
|
||||||
|
<property name="skip_taskbar_hint">True</property>
|
||||||
|
<property name="skip_pager_hint">True</property>
|
||||||
|
<property name="gravity">center</property>
|
||||||
|
<signal name="delete-event" handler="on_close" swapped="no"/>
|
||||||
|
<child type="titlebar">
|
||||||
|
<object class="GtkHeaderBar" id="yt_header_bar">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">2</property>
|
||||||
|
<property name="show_close_button">True</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="yt_receive_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Receive</property>
|
||||||
|
<signal name="clicked" handler="on_receive" swapped="no"/>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage" id="yt_receive_button_image">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="stock">gtk-goto-bottom</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child type="title">
|
||||||
|
<object class="GtkEntry" id="yt_url_entry">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="margin_left">2</property>
|
||||||
|
<property name="margin_right">2</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="primary_icon_stock">gtk-edit</property>
|
||||||
|
<property name="placeholder_text" translatable="yes">YouTube playlist URL:</property>
|
||||||
|
<signal name="changed" handler="on_yt_url_entry_changed" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="yt_import_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Import</property>
|
||||||
|
<signal name="clicked" handler="on_import" swapped="no"/>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage" id="yt_import_button_image">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="icon_name">insert-link</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="pack_type">end</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="yt_box">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="spacing">2</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkScrolledWindow" id="yt_list_view_scrolled_window">
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="shadow_type">in</property>
|
||||||
|
<property name="min_content_height">120</property>
|
||||||
|
<property name="max_content_height">480</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkTreeView" id="yt_list_view">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="model">yt_liststore</property>
|
||||||
|
<property name="search_column">0</property>
|
||||||
|
<property name="enable_grid_lines">horizontal</property>
|
||||||
|
<property name="tooltip_column">3</property>
|
||||||
|
<child internal-child="selection">
|
||||||
|
<object class="GtkTreeSelection"/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkTreeViewColumn" id="yt_title_column">
|
||||||
|
<property name="resizable">True</property>
|
||||||
|
<property name="min_width">50</property>
|
||||||
|
<property name="title" translatable="yes">Title</property>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="clickable">True</property>
|
||||||
|
<property name="alignment">0.5</property>
|
||||||
|
<property name="reorderable">True</property>
|
||||||
|
<property name="sort_column_id">0</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCellRendererText" id="yt_title_renderer">
|
||||||
|
<property name="xpad">5</property>
|
||||||
|
</object>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="text">0</attribute>
|
||||||
|
</attributes>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkTreeViewColumn" id="yt_id_column">
|
||||||
|
<property name="visible">False</property>
|
||||||
|
<property name="title" translatable="yes">ID</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCellRendererText" id="yt_id_renderer"/>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="text">1</attribute>
|
||||||
|
</attributes>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkTreeViewColumn" id="yt_selected_column">
|
||||||
|
<property name="min_width">50</property>
|
||||||
|
<property name="max_width">100</property>
|
||||||
|
<property name="title" translatable="yes">Selected</property>
|
||||||
|
<property name="clickable">True</property>
|
||||||
|
<property name="alignment">0.5</property>
|
||||||
|
<property name="reorderable">True</property>
|
||||||
|
<property name="sort_column_id">2</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCellRendererToggle" id="yt_selected_renderer">
|
||||||
|
<property name="width">50</property>
|
||||||
|
<signal name="toggled" handler="on_selected_toggled" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="active">2</attribute>
|
||||||
|
</attributes>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkTreeViewColumn" id="yt_tooltip_column">
|
||||||
|
<property name="visible">False</property>
|
||||||
|
<property name="title" translatable="yes">Tooltip</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCellRendererText" id="yt_tooltip_renderer"/>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="text">3</attribute>
|
||||||
|
</attributes>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="yt_info_bar_box">
|
||||||
|
<property name="height_request">24</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">2</property>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkProgressBar" id="yt_progress_bar">
|
||||||
|
<property name="height_request">10</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="pulse_step">0.01</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">3</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkInfoBar" id="yt_info_bar">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="show_close_button">True</property>
|
||||||
|
<signal name="response" handler="on_yt_info_bar_close" swapped="no"/>
|
||||||
|
<child internal-child="action_area">
|
||||||
|
<object class="GtkButtonBox">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
|
<property name="layout_style">end</property>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child internal-child="content_area">
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">16</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="yt_info_bar_message_label">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="label" translatable="yes">info</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">4</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
||||||
Reference in New Issue
Block a user