From df4e8a2520c6270a109d7823b1bf6984f52f14dc Mon Sep 17 00:00:00 2001 From: DYefremov Date: Wed, 28 Apr 2021 14:43:52 +0300 Subject: [PATCH] builder creation refactoring --- app/settings.py | 11 ++++++---- app/ui/backup.py | 7 ++----- app/ui/control.py | 9 +++----- app/ui/dialogs.py | 21 +++++++++++++++++++ app/ui/download_dialog.py | 6 ++---- app/ui/epg_dialog.py | 10 ++++----- app/ui/ftp.py | 6 ++---- app/ui/imports.py | 9 +++----- app/ui/iptv.py | 36 +++++++++++--------------------- app/ui/main_app_window.py | 6 ++---- app/ui/picons_manager.py | 8 +++---- app/ui/satellites_dialog.py | 36 ++++++++++---------------------- app/ui/service_details_dialog.py | 14 ++++--------- app/ui/settings_dialog.py | 6 ++---- app/ui/transmitter.py | 7 +++---- 15 files changed, 81 insertions(+), 111 deletions(-) diff --git a/app/settings.py b/app/settings.py index a1975e95..56b1532f 100644 --- a/app/settings.py +++ b/app/settings.py @@ -619,11 +619,14 @@ class Settings: @property @lru_cache(1) def dark_mode(self): - import subprocess + if IS_DARWIN: + import subprocess - cmd = ["defaults", "read", "-g", "AppleInterfaceStyle"] - p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() - return "Dark" in str(p[0]) + cmd = ["defaults", "read", "-g", "AppleInterfaceStyle"] + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() + return "Dark" in str(p[0]) + + return self._settings.get("dark_mode", False) @dark_mode.setter def dark_mode(self, value): diff --git a/app/ui/backup.py b/app/ui/backup.py index e6de461c..7a92c575 100644 --- a/app/ui/backup.py +++ b/app/ui/backup.py @@ -8,7 +8,7 @@ from enum import Enum from app.commons import run_idle from app.settings import SettingsType -from app.ui.dialogs import show_dialog, DialogType +from app.ui.dialogs import show_dialog, DialogType, get_builder from app.ui.main_helper import append_text_to_tview from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, KeyboardKey, MOD_MASK @@ -30,10 +30,7 @@ class BackupDialog: "on_resize": self.on_resize, "on_key_release": self.on_key_release} - builder = Gtk.Builder() - builder.set_translation_domain("demon-editor") - builder.add_from_file(UI_RESOURCES_PATH + "backup_dialog.glade") - builder.connect_signals(handlers) + builder = get_builder(UI_RESOURCES_PATH + "backup_dialog.glade", handlers) self._settings = settings self._s_type = settings.setting_type diff --git a/app/ui/control.py b/app/ui/control.py index 264f1b52..83bccc64 100644 --- a/app/ui/control.py +++ b/app/ui/control.py @@ -6,7 +6,7 @@ from urllib.parse import quote from gi.repository import GLib -from .dialogs import get_dialogs_string, show_dialog, DialogType, get_message +from .dialogs import show_dialog, DialogType, get_message, get_builder from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, Column from ..commons import run_task, run_with_delay, log, run_idle from ..connections import HttpAPI @@ -84,8 +84,7 @@ class ControlBox(Gtk.HBox): self._timer = timer - builder = Gtk.Builder() - builder.add_from_string(get_dialogs_string(self._UI_PATH)) + builder = get_builder(self._UI_PATH, None, use_str=True) row_box = builder.get_object("timer_row_box") name_label = builder.get_object("timer_name_label") description_label = builder.get_object("timer_description_label") @@ -130,9 +129,7 @@ class ControlBox(Gtk.HBox): "on_timers_press": self.on_timers_press, "on_timers_drag_data_received": self.on_timers_drag_data_received} - builder = Gtk.Builder() - builder.add_from_file(UI_RESOURCES_PATH + "control.glade") - builder.connect_signals(handlers) + builder = get_builder(UI_RESOURCES_PATH + "control.glade", handlers) self.add(builder.get_object("main_box_frame")) self._stack = builder.get_object("stack") diff --git a/app/ui/dialogs.py b/app/ui/dialogs.py index f14eacab..f65d89b7 100644 --- a/app/ui/dialogs.py +++ b/app/ui/dialogs.py @@ -183,5 +183,26 @@ def get_dialogs_string(path): return "".join(f) +def get_builder(path, handlers=None, use_str=False, objects=None): + """ Creates and returns a Gtk.Builder instance. """ + builder = Gtk.Builder() + builder.set_translation_domain(TEXT_DOMAIN) + + if use_str: + if objects: + builder.add_objects_from_string(get_dialogs_string(path).format(use_header=IS_GNOME_SESSION), objects) + else: + builder.add_from_string(get_dialogs_string(path).format(use_header=IS_GNOME_SESSION)) + else: + if objects: + builder.add_objects_from_file(path, objects) + else: + builder.add_from_file(path) + + builder.connect_signals(handlers or {}) + + return builder + + if __name__ == "__main__": pass diff --git a/app/ui/download_dialog.py b/app/ui/download_dialog.py index ac1dadc1..bf8cae66 100644 --- a/app/ui/download_dialog.py +++ b/app/ui/download_dialog.py @@ -8,7 +8,7 @@ from app.settings import SettingsType from app.ui.backup import backup_data, restore_data from app.ui.main_helper import append_text_to_tview from app.ui.settings_dialog import show_settings_dialog -from .dialogs import show_dialog, DialogType, get_message +from .dialogs import show_dialog, DialogType, get_message, get_builder from .uicommons import Gtk, UI_RESOURCES_PATH @@ -27,9 +27,7 @@ class DownloadDialog: "on_remove_unused_bouquets_toggled": self.on_remove_unused_bouquets_toggled, "on_info_bar_close": self.on_info_bar_close} - builder = Gtk.Builder() - builder.add_from_file(UI_RESOURCES_PATH + "download_dialog.glade") - builder.connect_signals(handlers) + builder = get_builder(UI_RESOURCES_PATH + "download_dialog.glade", handlers) self._dialog_window = builder.get_object("download_dialog_window") self._dialog_window.set_transient_for(transient) diff --git a/app/ui/epg_dialog.py b/app/ui/epg_dialog.py index 3faa2518..5dc559dc 100644 --- a/app/ui/epg_dialog.py +++ b/app/ui/epg_dialog.py @@ -8,13 +8,14 @@ from enum import Enum from urllib.error import HTTPError, URLError from gi.repository import GLib + from app.commons import run_idle, run_task from app.connections import download_data, DownloadType from app.eparser.ecommons import BouquetService, BqServiceType from app.tools.epg import EPG, ChannelsParser -from app.ui.dialogs import get_message, show_dialog, DialogType +from app.ui.dialogs import get_message, show_dialog, DialogType, get_builder from .main_helper import on_popup_menu, update_entry_data -from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, TEXT_DOMAIN, Column, EPG_ICON, KeyboardKey, MOD_MASK +from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, Column, EPG_ICON, KeyboardKey, MOD_MASK class RefsSource(Enum): @@ -66,10 +67,7 @@ class EpgDialog: self._show_tooltips = True self._download_xml_is_active = False - builder = Gtk.Builder() - builder.set_translation_domain(TEXT_DOMAIN) - builder.add_from_file(UI_RESOURCES_PATH + "epg_dialog.glade") - builder.connect_signals(handlers) + builder = get_builder(UI_RESOURCES_PATH + "epg_dialog.glade", handlers) self._dialog = builder.get_object("epg_dialog_window") self._dialog.set_transient_for(transient) diff --git a/app/ui/ftp.py b/app/ui/ftp.py index cba301e1..13194c66 100644 --- a/app/ui/ftp.py +++ b/app/ui/ftp.py @@ -12,7 +12,7 @@ from gi.repository import GLib from app.commons import log, run_task, run_idle from app.connections import UtfFTP -from app.ui.dialogs import show_dialog, DialogType +from app.ui.dialogs import show_dialog, DialogType, get_builder from app.ui.main_helper import on_popup_menu from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, KeyboardKey, MOD_MASK @@ -68,9 +68,7 @@ class FtpClientBox(Gtk.HBox): "on_view_press": self.on_view_press, "on_view_release": self.on_view_release} - builder = Gtk.Builder() - builder.add_from_file(UI_RESOURCES_PATH + "ftp.glade") - builder.connect_signals(handlers) + builder = get_builder(UI_RESOURCES_PATH + "ftp.glade", handlers) self.add(builder.get_object("main_frame")) self._ftp_info_label = builder.get_object("ftp_info_label") diff --git a/app/ui/imports.py b/app/ui/imports.py index 3d380199..f39f047a 100644 --- a/app/ui/imports.py +++ b/app/ui/imports.py @@ -6,7 +6,7 @@ from app.eparser import get_bouquets, get_services, BouquetsReader from app.eparser.ecommons import BqType, BqServiceType, Bouquet from app.eparser.neutrino.bouquets import parse_webtv, parse_bouquets as get_neutrino_bouquets from app.settings import SettingsType -from app.ui.dialogs import show_dialog, DialogType, get_chooser_dialog, get_message +from app.ui.dialogs import show_dialog, DialogType, get_chooser_dialog, get_message, get_builder from app.ui.main_helper import on_popup_menu from .uicommons import Gtk, UI_RESOURCES_PATH, KeyboardKey, Column @@ -84,10 +84,7 @@ class ImportDialog: "on_resize": self.on_resize, "on_key_press": self.on_key_press} - builder = Gtk.Builder() - builder.set_translation_domain("demon-editor") - builder.add_from_file(UI_RESOURCES_PATH + "import_dialog.glade") - builder.connect_signals(handlers) + builder = get_builder(UI_RESOURCES_PATH + "import_dialog.glade", handlers) self._bq_services = {} self._services = {} @@ -128,7 +125,7 @@ class ImportDialog: for bq in bqs.bouquets: self._main_model.append((bq.name, bq.type, True)) self._bq_services[(bq.name, bq.type)] = bq.services - + if self._profile is SettingsType.ENIGMA_2: services = get_services(path, self._profile, 5 if self._settings.v5_support else 4) elif self._profile is SettingsType.NEUTRINO_MP: diff --git a/app/ui/iptv.py b/app/ui/iptv.py index 5952bc85..b2a7c9dc 100644 --- a/app/ui/iptv.py +++ b/app/ui/iptv.py @@ -15,10 +15,9 @@ from app.eparser.iptv import (NEUTRINO_FAV_ID_FORMAT, StreamType, ENIGMA2_FAV_ID parse_m3u) from app.settings import SettingsType from app.tools.yt import YouTubeException, YouTube -from app.ui.dialogs import Action, show_dialog, DialogType, get_dialogs_string, get_message +from app.ui.dialogs import Action, show_dialog, DialogType, get_message, get_builder from app.ui.main_helper import get_base_model, get_iptv_url, on_popup_menu, get_picon_pixbuf -from app.ui.uicommons import (Gtk, Gdk, TEXT_DOMAIN, UI_RESOURCES_PATH, IPTV_ICON, Column, IS_GNOME_SESSION, - KeyboardKey, get_yt_icon) +from app.ui.uicommons import (Gtk, Gdk, UI_RESOURCES_PATH, IPTV_ICON, Column, KeyboardKey, get_yt_icon) _DIGIT_ENTRY_NAME = "digit-entry" _ENIGMA2_REFERENCE = "{}:0:{}:{:X}:{:X}:{:X}:{:X}:0:0:0" @@ -67,11 +66,8 @@ class IptvDialog: self._yt_links = None self._yt_dl = None - builder = Gtk.Builder() - builder.set_translation_domain(TEXT_DOMAIN) - builder.add_objects_from_string(get_dialogs_string(_UI_PATH).format(use_header=IS_GNOME_SESSION), - ("iptv_dialog", "stream_type_liststore", "yt_quality_liststore")) - builder.connect_signals(handlers) + builder = get_builder(_UI_PATH, handlers, use_str=True, + objects=("iptv_dialog", "stream_type_liststore", "yt_quality_liststore")) self._dialog = builder.get_object("iptv_dialog") self._dialog.set_transient_for(transient) @@ -323,10 +319,8 @@ class SearchUnavailableDialog: def __init__(self, transient, model, fav_bouquet, iptv_rows, s_type): handlers = {"on_response": self.on_response} - builder = Gtk.Builder() - builder.set_translation_domain(TEXT_DOMAIN) - builder.add_objects_from_file(UI_RESOURCES_PATH + "iptv.glade", ("search_unavailable_streams_dialog",)) - builder.connect_signals(handlers) + builder = get_builder(UI_RESOURCES_PATH + "iptv.glade", handlers, + objects=("search_unavailable_streams_dialog",)) self._dialog = builder.get_object("search_unavailable_streams_dialog") self._dialog.set_transient_for(transient) @@ -421,11 +415,8 @@ class IptvListDialog: self._s_type = s_type - builder = Gtk.Builder() - builder.set_translation_domain(TEXT_DOMAIN) - builder.add_objects_from_string(get_dialogs_string(_UI_PATH).format(use_header=IS_GNOME_SESSION), - ("iptv_list_configuration_dialog", "stream_type_liststore")) - builder.connect_signals(handlers) + builder = get_builder(_UI_PATH, handlers, use_str=True, + objects=("iptv_list_configuration_dialog", "stream_type_liststore")) self._dialog = builder.get_object("iptv_list_configuration_dialog") self._dialog.set_transient_for(transient) @@ -813,13 +804,10 @@ class YtListImportDialog: self._settings = settings self._yt = None - builder = Gtk.Builder() - builder.set_translation_domain(TEXT_DOMAIN) - builder.add_objects_from_string(get_dialogs_string(_UI_PATH).format(use_header=IS_GNOME_SESSION), - ("yt_import_dialog_window", "yt_liststore", "yt_quality_liststore", - "yt_popup_menu", "remove_selection_image", "yt_receive_image", - "yt_import_image")) - builder.connect_signals(handlers) + builder = get_builder(_UI_PATH, handlers, use_str=True, + objects=("yt_import_dialog_window", "yt_liststore", "yt_quality_liststore", + "yt_popup_menu", "remove_selection_image", "yt_receive_image", + "yt_import_image")) self._dialog = builder.get_object("yt_import_dialog_window") self._dialog.set_transient_for(transient) diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py index fdb8820a..34c41a3a 100644 --- a/app/ui/main_app_window.py +++ b/app/ui/main_app_window.py @@ -22,7 +22,7 @@ from app.tools.media import Player, Recorder from app.ui.epg_dialog import EpgDialog from app.ui.transmitter import LinksTransmitter from .backup import BackupDialog, backup_data, clear_data_path -from .dialogs import show_dialog, DialogType, get_chooser_dialog, WaitDialog, get_message +from .dialogs import show_dialog, DialogType, get_chooser_dialog, WaitDialog, get_message, get_builder from .download_dialog import DownloadDialog from .imports import ImportDialog, import_bouquet from .iptv import IptvDialog, SearchUnavailableDialog, IptvListConfigurationDialog, YtListImportDialog, M3uImportDialog @@ -218,9 +218,7 @@ class Application(Gtk.Application): self._NEW_COLOR = None # Color for new services in the main list self._EXTRA_COLOR = None # Color for services with a extra name for the bouquet - builder = Gtk.Builder() - builder.add_from_file(UI_RESOURCES_PATH + "main_window.glade") - builder.connect_signals(self._handlers) + builder = get_builder(UI_RESOURCES_PATH + "main_window.glade", self._handlers) self._main_window = builder.get_object("main_window") main_window_size = self._settings.get("window_size") # Setting the last size of the window if it was saved diff --git a/app/ui/picons_manager.py b/app/ui/picons_manager.py index ed46edad..97fdcab1 100644 --- a/app/ui/picons_manager.py +++ b/app/ui/picons_manager.py @@ -12,10 +12,10 @@ from app.connections import upload_data, DownloadType, download_data, remove_pic from app.settings import SettingsType, Settings from app.tools.picons import PiconsParser, parse_providers, Provider, convert_to, download_picon from app.tools.satellites import SatellitesParser, SatelliteSource -from .dialogs import show_dialog, DialogType, get_message +from .dialogs import show_dialog, DialogType, get_message, get_builder from .main_helper import update_entry_data, append_text_to_tview, scroll_to, on_popup_menu, get_base_model, set_picon, \ get_picon_pixbuf -from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, TV_ICON, Column, GTK_PATH, KeyboardKey +from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, TV_ICON, Column, KeyboardKey class PiconsDialog: @@ -76,9 +76,7 @@ class PiconsDialog: "on_tree_view_key_press": self.on_tree_view_key_press, "on_popup_menu": on_popup_menu} - builder = Gtk.Builder() - builder.add_from_file(UI_RESOURCES_PATH + "picons_manager.glade") - builder.connect_signals(handlers) + builder = get_builder(UI_RESOURCES_PATH + "picons_manager.glade", handlers) self._dialog = builder.get_object("picons_dialog") self._dialog.set_transient_for(transient) diff --git a/app/ui/satellites_dialog.py b/app/ui/satellites_dialog.py index 965907af..c37bd88b 100644 --- a/app/ui/satellites_dialog.py +++ b/app/ui/satellites_dialog.py @@ -9,10 +9,10 @@ from app.commons import run_idle, run_task, log from app.eparser import get_satellites, write_satellites, Satellite, Transponder from app.eparser.ecommons import PLS_MODE, get_key_by_value from app.tools.satellites import SatellitesParser, SatelliteSource, ServicesParser -from .dialogs import show_dialog, DialogType, get_dialogs_string, get_chooser_dialog, get_message +from .dialogs import show_dialog, DialogType, get_chooser_dialog, get_message, get_builder from .main_helper import move_items, scroll_to, append_text_to_tview, get_base_model, on_popup_menu from .search import SearchProvider -from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, TEXT_DOMAIN, MOVE_KEYS, KeyboardKey, IS_GNOME_SESSION, MOD_MASK +from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, MOVE_KEYS, KeyboardKey, MOD_MASK _UI_PATH = UI_RESOURCES_PATH + "satellites_dialog.glade" @@ -44,13 +44,10 @@ class SatellitesDialog: "on_resize": self.on_resize, "on_quit": self.on_quit} - builder = Gtk.Builder() - builder.set_translation_domain(TEXT_DOMAIN) - builder.add_objects_from_string(get_dialogs_string(_UI_PATH), - ("satellites_editor_window", "satellites_tree_store", "popup_menu", - "left_header_menu", "popup_menu_add_image", "popup_menu_add_image_2", - "sat_editor_save_image", "sat_editor_update_image")) - builder.connect_signals(handlers) + builder = get_builder(_UI_PATH, handlers, use_str=True, + objects=("satellites_editor_window", "satellites_tree_store", "popup_menu", + "left_header_menu", "popup_menu_add_image", "popup_menu_add_image_2", + "sat_editor_save_image", "sat_editor_update_image")) self._window = builder.get_object("satellites_editor_window") self._window.set_transient_for(transient) @@ -316,13 +313,8 @@ class TransponderDialog: def __init__(self, transient, transponder: Transponder = None): handlers = {"on_entry_changed": self.on_entry_changed} - - builder = Gtk.Builder() - builder.set_translation_domain(TEXT_DOMAIN) - builder.add_objects_from_string(get_dialogs_string(_UI_PATH).format(use_header=IS_GNOME_SESSION), - ("transponder_dialog", "pol_store", "fec_store", "mod_store", "system_store", - "pls_mode_store")) - builder.connect_signals(handlers) + objects = ("transponder_dialog", "pol_store", "fec_store", "mod_store", "system_store", "pls_mode_store") + builder = get_builder(_UI_PATH, handlers, use_str=True, objects=objects) self._dialog = builder.get_object("transponder_dialog") self._dialog.set_transient_for(transient) @@ -401,10 +393,7 @@ class SatelliteDialog: """ Shows dialog for adding or edit satellite """ def __init__(self, transient, satellite: Satellite = None): - builder = Gtk.Builder() - builder.set_translation_domain(TEXT_DOMAIN) - builder.add_objects_from_string(get_dialogs_string(_UI_PATH).format(use_header=IS_GNOME_SESSION), - ("satellite_dialog", "side_store", "pos_adjustment")) + builder = get_builder(_UI_PATH, use_str=True, objects=("satellite_dialog", "side_store", "pos_adjustment")) self._dialog = builder.get_object("satellite_dialog") self._dialog.set_transient_for(transient) @@ -466,16 +455,13 @@ class UpdateDialog: self._parser = None self._size_name = "{}_window_size".format("_".join(re.findall("[A-Z][^A-Z]*", self.__class__.__name__))).lower() - builder = Gtk.Builder() - builder.set_translation_domain(TEXT_DOMAIN) - builder.add_objects_from_file(UI_RESOURCES_PATH + "satellites_dialog.glade", - ("satellites_update_window", "update_source_store", "update_sat_list_store", + builder = get_builder(UI_RESOURCES_PATH + "satellites_dialog.glade", handlers, + objects=("satellites_update_window", "update_source_store", "update_sat_list_store", "update_sat_list_model_filter", "update_sat_list_model_sort", "side_store", "pos_adjustment", "pos_adjustment2", "satellites_update_popup_menu", "remove_selection_image", "sat_update_cancel_image", "sat_receive_image", "sat_update_filter_image", "sat_update_search_image", "sat_update_image", "update_transponder_store", "update_service_store")) - builder.connect_signals(handlers) self._window = builder.get_object("satellites_update_window") self._window.set_transient_for(transient) diff --git a/app/ui/service_details_dialog.py b/app/ui/service_details_dialog.py index 23ff6c5f..1be8e4a0 100644 --- a/app/ui/service_details_dialog.py +++ b/app/ui/service_details_dialog.py @@ -8,9 +8,9 @@ from app.eparser.ecommons import (MODULATION, Inversion, ROLL_OFF, Pilot, Flag, TrType, SystemCable, T_SYSTEM, BANDWIDTH, TRANSMISSION_MODE, GUARD_INTERVAL, T_FEC, HIERARCHY, A_MODULATION) from app.settings import SettingsType -from .dialogs import show_dialog, DialogType, Action, get_dialogs_string +from .dialogs import show_dialog, DialogType, Action, get_builder from .main_helper import get_base_model -from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, HIDE_ICON, TEXT_DOMAIN, CODED_ICON, Column, IS_GNOME_SESSION +from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, HIDE_ICON, CODED_ICON, Column _UI_PATH = UI_RESOURCES_PATH + "service_details_dialog.glade" @@ -46,10 +46,7 @@ class ServiceDetailsDialog: "on_non_empty_entry_changed": self.on_non_empty_entry_changed, "on_cancel": lambda item: self._dialog.destroy()} - builder = Gtk.Builder() - builder.set_translation_domain(TEXT_DOMAIN) - builder.add_from_string(get_dialogs_string(_UI_PATH).format(use_header=IS_GNOME_SESSION)) - builder.connect_signals(handlers) + builder = get_builder(_UI_PATH, handlers, use_str=True) self._builder = builder self._dialog = builder.get_object("service_details_dialog") @@ -875,10 +872,7 @@ class ServiceDetailsDialog: class TransponderServicesDialog: def __init__(self, transient, services_view, transponder, tr_iters): - builder = Gtk.Builder() - builder.set_translation_domain(TEXT_DOMAIN) - builder.add_objects_from_string(get_dialogs_string(_UI_PATH).format(use_header=IS_GNOME_SESSION), - ("tr_services_dialog", "transponder_services_liststore")) + builder = get_builder(_UI_PATH, use_str=True, objects=("tr_services_dialog", "transponder_services_liststore")) self._dialog = builder.get_object("tr_services_dialog") self._dialog.set_transient_for(transient) self._srv_model = builder.get_object("transponder_services_liststore") diff --git a/app/ui/settings_dialog.py b/app/ui/settings_dialog.py index ac50c804..7eaf0a40 100644 --- a/app/ui/settings_dialog.py +++ b/app/ui/settings_dialog.py @@ -4,7 +4,7 @@ import re from app.commons import run_task, run_idle, log from app.connections import test_telnet, test_ftp, TestException, test_http, HttpApiException from app.settings import SettingsType, Settings, PlayStreamsMode -from app.ui.dialogs import show_dialog, DialogType, get_message, get_chooser_dialog +from app.ui.dialogs import show_dialog, DialogType, get_message, get_chooser_dialog, get_builder from .main_helper import update_entry_data, scroll_to, get_picon_pixbuf from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, FavClickMode, DEFAULT_ICON, APP_FONT @@ -64,9 +64,7 @@ class SettingsDialog: self._profiles = self._settings.profiles self._s_type = self._settings.setting_type - builder = Gtk.Builder() - builder.add_from_file(UI_RESOURCES_PATH + "settings_dialog.glade") - builder.connect_signals(handlers) + builder = get_builder(UI_RESOURCES_PATH + "settings_dialog.glade", handlers) self._dialog = builder.get_object("settings_dialog") self._dialog.set_transient_for(transient) diff --git a/app/ui/transmitter.py b/app/ui/transmitter.py index 611dd777..3127dee4 100644 --- a/app/ui/transmitter.py +++ b/app/ui/transmitter.py @@ -5,9 +5,10 @@ import gi from gi.repository import GLib from app.commons import log -from app.settings import IS_DARWIN from app.connections import HttpAPI +from app.settings import IS_DARWIN from app.tools.yt import YouTube +from app.ui.dialogs import get_builder from app.ui.iptv import get_yt_icon from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH @@ -35,9 +36,7 @@ class LinksTransmitter: self._app_window = app_window self._is_status_icon = True - builder = Gtk.Builder() - builder.add_from_file(UI_RESOURCES_PATH + "transmitter.glade") - builder.connect_signals(handlers) + builder = get_builder(UI_RESOURCES_PATH + "transmitter.glade", handlers) self._main_window = builder.get_object("main_window") self._url_entry = builder.get_object("url_entry")