From 5db027c1cf790d9a58e3eec268d9c23a76330c79 Mon Sep 17 00:00:00 2001 From: DYefremov Date: Fri, 29 Dec 2023 15:16:58 +0300 Subject: [PATCH] add settings popover for EPG tab --- app/ui/epg/epg.py | 30 ++++++++++++++++++++++++++++++ app/ui/epg/settings.glade | 9 +++++---- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/app/ui/epg/epg.py b/app/ui/epg/epg.py index f02089f4..01917597 100644 --- a/app/ui/epg/epg.py +++ b/app/ui/epg/epg.py @@ -251,6 +251,7 @@ class EpgSettingsPopover(Gtk.Popover): builder = get_builder(f"{UI_RESOURCES_PATH}epg{SEP}settings.glade", handlers) self.add(builder.get_object("main_box")) + self._src_selection_box = builder.get_object("source_selection_box") self._http_src_button = builder.get_object("http_src_button") self._xml_src_button = builder.get_object("xml_src_button") self._dat_src_button = builder.get_object("dat_src_button") @@ -341,6 +342,33 @@ class EpgSettingsPopover(Gtk.Popover): self.init() +class TabEpgSettingsPopover(EpgSettingsPopover): + + def init(self): + self._xml_src_button.set_active(True) + self._http_src_button.set_visible(False) + self._src_selection_box.set_visible(False) + + settings = self._app.app_settings + self._interval_button.set_value(settings.epg_update_interval) + self._url_combo_box.get_model().clear() + [self._url_combo_box.append(i, i) for i in settings.epg_xml_sources if i] + self._url_combo_box.set_active_id(settings.epg_xml_source) + + def on_apply(self, button): + settings = self._app.app_settings + xml_src = self._url_combo_box.get_active_id() + update_interval = self._interval_button.get_value() + + if xml_src != settings.epg_xml_source or update_interval != settings.epg_update_interval: + self._app.emit("epg-settings-changed", settings) + + settings.epg_update_interval = update_interval + settings.epg_xml_source = xml_src + settings.epg_xml_sources = [r[0] for r in self._url_combo_box.get_model()] + self.popdown() + + class EpgTool(Gtk.Box): def __init__(self, app, **kwargs): super().__init__(**kwargs) @@ -372,6 +400,8 @@ class EpgTool(Gtk.Box): self._filter_button = builder.get_object("epg_filter_button") self._filter_entry = builder.get_object("epg_filter_entry") self._multi_epg_button = builder.get_object("multi_epg_button") + self._epg_options_button = builder.get_object("epg_options_button") + self._epg_options_button.connect("realize", lambda b: b.set_popover(TabEpgSettingsPopover(self._app))) self._event_count_label = builder.get_object("event_count_label") self.pack_start(builder.get_object("epg_frame"), True, True, 0) # Custom data functions. diff --git a/app/ui/epg/settings.glade b/app/ui/epg/settings.glade index 0dbc1a02..209eb914 100644 --- a/app/ui/epg/settings.glade +++ b/app/ui/epg/settings.glade @@ -3,7 +3,7 @@ The MIT License (MIT) -Copyright (c) 2018-2022 Dmitriy Yefremov +Copyright (c) 2018-2023 Dmitriy Yefremov Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -26,7 +26,7 @@ THE SOFTWARE. Author: Dmitriy Yefremov --> - + @@ -50,8 +50,8 @@ Author: Dmitriy Yefremov vertical 2 - - True + + True False center Source: @@ -132,6 +132,7 @@ Author: Dmitriy Yefremov True False + 5 5