diff --git a/app/settings.py b/app/settings.py index 17afcea6..8f7a08e7 100644 --- a/app/settings.py +++ b/app/settings.py @@ -2,7 +2,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 @@ -81,6 +81,7 @@ class Defaults(Enum): BACKUP_BEFORE_DOWNLOADING = True BACKUP_BEFORE_SAVE = True V5_SUPPORT = False + UNLIMITED_COPY_BUFFER = False FORCE_BQ_NAMES = False HTTP_API_SUPPORT = True ENABLE_YT_DL = False @@ -606,6 +607,14 @@ class Settings: def v5_support(self, value): self._settings["v5_support"] = value + @property + def unlimited_copy_buffer(self): + return self._settings.get("unlimited_copy_buffer", Defaults.UNLIMITED_COPY_BUFFER.value) + + @unlimited_copy_buffer.setter + def unlimited_copy_buffer(self, value): + self._settings["unlimited_copy_buffer"] = value + @property def force_bq_names(self): return self._settings.get("force_bq_names", Defaults.FORCE_BQ_NAMES.value) diff --git a/app/ui/main.py b/app/ui/main.py index 38d8d7ac..c947623c 100644 --- a/app/ui/main.py +++ b/app/ui/main.py @@ -1184,6 +1184,9 @@ class Application(Gtk.Application): self.on_copy(view, target=ViewTarget.BOUQUET) def on_copy(self, view, target): + if not self._settings.unlimited_copy_buffer: + self._bouquets_buffer.clear() if target is ViewTarget.BOUQUET else self._rows_buffer.clear() + model, paths = view.get_selection().get_selected_rows() if target is ViewTarget.FAV: @@ -1212,6 +1215,9 @@ class Application(Gtk.Application): self.on_cut(view, ViewTarget.BOUQUET) def on_cut(self, view, target=None): + if not self._settings.unlimited_copy_buffer: + self._bouquets_buffer.clear() if target is ViewTarget.BOUQUET else self._rows_buffer.clear() + if target is ViewTarget.FAV: for row in tuple(self.on_delete(view)): self._rows_buffer.append(row) diff --git a/app/ui/settings_dialog.glade b/app/ui/settings_dialog.glade index 0202c50b..3f3d9f56 100644 --- a/app/ui/settings_dialog.glade +++ b/app/ui/settings_dialog.glade @@ -2737,10 +2737,7 @@ Author: Dmitriy Yefremov True False - 5 - 5 - 5 - 5 + 5 5 5 @@ -2950,16 +2947,13 @@ Author: Dmitriy Yefremov True False - 5 - 5 - 5 - 5 + 5 vertical 5 True - False + False False @@ -2989,6 +2983,46 @@ Author: Dmitriy Yefremov + + False + True + 0 + + + + + True + False + False + Enables unlimited copy buffer for the services tab. + + + True + False + start + True + Enable unlimited copy buffer + + + False + True + 0 + + + + + True + True + end + + + False + True + end + 1 + + + False True @@ -2998,7 +3032,7 @@ Author: Dmitriy Yefremov True - False + False False 10 10 @@ -3064,7 +3098,7 @@ Author: Dmitriy Yefremov True - False + False False @@ -3110,7 +3144,7 @@ Author: Dmitriy Yefremov True - False + False False Enables direct sending and playback of media links on the receiver diff --git a/app/ui/settings_dialog.py b/app/ui/settings_dialog.py index 5f7258b9..840e9885 100644 --- a/app/ui/settings_dialog.py +++ b/app/ui/settings_dialog.py @@ -2,7 +2,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 @@ -180,16 +180,12 @@ class SettingsDialog: self._compress_picons_switch = builder.get_object("compress_picons_switch") self._force_bq_name_switch = builder.get_object("force_bq_name_switch") self._support_ver5_switch = builder.get_object("support_ver5_switch") + self._unlimited_buffer_switch = builder.get_object("unlimited_buffer_switch") self._support_http_api_switch = builder.get_object("support_http_api_switch") self._enable_yt_dl_switch = builder.get_object("enable_yt_dl_switch") self._enable_update_yt_dl_switch = builder.get_object("enable_update_yt_dl_switch") self._enable_send_to_switch = builder.get_object("enable_send_to_switch") - # EXPERIMENTAL. self._enable_exp_switch = builder.get_object("enable_experimental_switch") - self._enable_exp_switch.bind_property("active", builder.get_object("yt_dl_box"), "sensitive") - self._enable_yt_dl_switch.bind_property("active", builder.get_object("yt_dl_update_box"), "sensitive") - self._enable_exp_switch.bind_property("active", builder.get_object("v5_support_box"), "sensitive") - self._enable_exp_switch.bind_property("active", builder.get_object("enable_direct_playback_box"), "sensitive") # Enigma2 only. self._enigma_radio_button.bind_property("active", builder.get_object("bq_naming_grid"), "sensitive") self._enigma_radio_button.bind_property("active", builder.get_object("program_frame"), "sensitive") @@ -347,6 +343,7 @@ class SettingsDialog: if self._s_type is SettingsType.ENIGMA_2: self._enable_exp_switch.set_active(self._settings.is_enable_experimental) self._support_ver5_switch.set_active(self._settings.v5_support) + self._unlimited_buffer_switch.set_active(self._settings.unlimited_copy_buffer) self._use_http_switch.set_active(self._settings.use_http) self._remove_unused_bq_switch.set_active(self._settings.remove_unused_bouquets) self._keep_power_mode_switch.set_active(self._settings.keep_power_mode) @@ -430,6 +427,7 @@ class SettingsDialog: self._ext_settings.new_color = self._new_color_button.get_rgba().to_string() self._ext_settings.extra_color = self._extra_color_button.get_rgba().to_string() self._ext_settings.v5_support = self._support_ver5_switch.get_active() + self._ext_settings.unlimited_copy_buffer = self._unlimited_buffer_switch.get_active() self._ext_settings.use_http = self._use_http_switch.get_active() self._ext_settings.remove_unused_bouquets = self._remove_unused_bq_switch.get_active() self._ext_settings.keep_power_mode = self._keep_power_mode_switch.get_active() @@ -516,6 +514,7 @@ class SettingsDialog: def on_experimental_switch(self, switch, state): if not state: self._support_ver5_switch.set_active(state) + self._unlimited_buffer_switch.set_active(state) self._enable_send_to_switch.set_active(state) self._enable_yt_dl_switch.set_active(state)