added power mode option

This commit is contained in:
DYefremov
2022-11-09 21:23:14 +03:00
parent 69c3b4a6c1
commit 84adeb994e
5 changed files with 93 additions and 51 deletions

View File

@@ -391,9 +391,10 @@ def download_data(*, settings, download_type=DownloadType.ALL, callback=log, fil
callback("*** Done. ***")
def upload_data(*, settings, download_type=DownloadType.ALL, remove_unused=False,
callback=log, done_callback=None, use_http=False, files_filter=None, ext_host=None):
def upload_data(*, settings, download_type=DownloadType.ALL, callback=log, done_callback=None,
files_filter=None, ext_host=None):
s_type = settings.setting_type
use_http = s_type is SettingsType.ENIGMA_2 and settings.use_http
data_path = settings.profile_data_path
host, port, use_ssl = ext_host or settings.host, settings.http_port, settings.http_use_ssl
user, password = settings.user, settings.password
@@ -412,15 +413,7 @@ def upload_data(*, settings, download_type=DownloadType.ALL, remove_unused=False
if use_http:
ht = http(user, password, base_url, callback, use_ssl, s_type)
next(ht)
message = ""
if download_type is DownloadType.BOUQUETS:
message = "User bouquets will be updated!"
elif download_type is DownloadType.ALL:
message = "All user data will be reloaded!"
elif download_type is DownloadType.SATELLITES:
message = "Satellites.xml file will be updated!"
elif download_type is DownloadType.PICONS:
message = "Picons will be updated!"
message = get_upload_info_message(download_type)
if s_type is SettingsType.ENIGMA_2:
params = urlencode({"text": message, "type": 2, "timeout": 5})
@@ -431,7 +424,8 @@ def upload_data(*, settings, download_type=DownloadType.ALL, remove_unused=False
if s_type is SettingsType.ENIGMA_2 and download_type is DownloadType.ALL:
time.sleep(5)
ht.send((f"{url}powerstate?newstate=0", "Toggle Standby "))
if not settings.keep_power_mode:
ht.send((f"{url}powerstate?newstate=0", "Toggle Standby "))
time.sleep(2)
else:
if download_type is not DownloadType.PICONS:
@@ -457,7 +451,7 @@ def upload_data(*, settings, download_type=DownloadType.ALL, remove_unused=False
if download_type is DownloadType.BOUQUETS:
ftp.cwd(services_path)
ftp.upload_bouquets(data_path, remove_unused, callback)
ftp.upload_bouquets(data_path, settings.remove_unused_bouquets, callback)
if download_type is DownloadType.ALL:
ftp.upload_xml(data_path, sat_xml_path, STC_XML_FILE, callback)
@@ -465,7 +459,7 @@ def upload_data(*, settings, download_type=DownloadType.ALL, remove_unused=False
ftp.upload_xml(data_path, sat_xml_path, WEB_TV_XML_FILE, callback)
ftp.cwd(services_path)
ftp.upload_bouquets(data_path, remove_unused, callback)
ftp.upload_bouquets(data_path, settings.remove_unused_bouquets, callback)
ftp.upload_files(data_path, DATA_FILES_LIST, callback)
if download_type is DownloadType.PICONS:
@@ -522,7 +516,8 @@ def upload_data(*, settings, download_type=DownloadType.ALL, remove_unused=False
ht.send((f"{url}servicelistreload?mode=2", "Reloading Userbouquets."))
elif download_type is DownloadType.ALL:
ht.send((f"{url}servicelistreload?mode=0", "Reloading lamedb and Userbouquets."))
ht.send((f"{url}powerstate?newstate=4", "Wakeup from Standby."))
if not settings.keep_power_mode:
ht.send((f"{url}powerstate?newstate=4", "Wakeup from Standby."))
else:
ht.send((f"{url}reloadchannels", "Reloading channels..."))
@@ -535,6 +530,18 @@ def upload_data(*, settings, download_type=DownloadType.ALL, remove_unused=False
ht.close()
def get_upload_info_message(download_type):
if download_type is DownloadType.BOUQUETS:
return "User bouquets will be updated!"
elif download_type is DownloadType.ALL:
return "All user data will be reloaded!"
elif download_type is DownloadType.SATELLITES:
return "Satellites.xml file will be updated!"
elif download_type is DownloadType.PICONS:
return "Picons will be updated!"
return ""
# ***************** Picons *******************#
def remove_picons(*, settings, callback=log, done_callback=None, files_filter=None):

View File

@@ -283,7 +283,7 @@ class Settings:
@property
def hosts(self):
return self._cp_settings.get("hosts", [self.host,])
return self._cp_settings.get("hosts", [self.host, ])
@hosts.setter
def hosts(self, value):
@@ -833,6 +833,14 @@ class Settings:
def remove_unused_bouquets(self, value):
self._settings["remove_unused_bouquets"] = value
@property
def keep_power_mode(self):
return self._settings.get("keep_power_mode", False)
@keep_power_mode.setter
def keep_power_mode(self, value):
self._settings["keep_power_mode"] = value
@property
def compress_picons(self):
return self._settings.get("compress_picons", False)

View File

@@ -2052,16 +2052,13 @@ class Application(Gtk.Application):
if multiple:
log(f"##### Uploading data on [{host}] #####")
try:
upload_data(settings=opts,
download_type=download_type,
remove_unused=True,
use_http=use_http,
ext_host=host)
upload_data(settings=opts, download_type=download_type, ext_host=host)
except Exception as e:
msg = "Uploading data error: {}"
log(msg.format(e), debug=self._settings.debug_mode, fmt_message=msg)
if host == self._settings.host:
self.show_error_message(str(e))
log(f"##### Done! #####")
def on_data_open(self, action=None, value=None):
""" Opening data via "File/Open". """

View File

@@ -2733,7 +2733,7 @@ Author: Dmitriy Yefremov
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child>
<!-- n-columns=2 n-rows=4 -->
<!-- n-columns=2 n-rows=5 -->
<object class="GtkGrid" id="bq_naming_grid">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -2743,33 +2743,6 @@ Author: Dmitriy Yefremov
<property name="margin-bottom">5</property>
<property name="row-spacing">5</property>
<property name="column-spacing">5</property>
<child>
<object class="GtkLabel" id="bq_naming_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="tooltip-text" translatable="yes">Allows you to name bouquet files using their names.</property>
<property name="halign">start</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Enable alternate bouquet file naming</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="force_bq_name_switch">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="tooltip-text" translatable="yes">Allows you to name bouquet files using their names.</property>
<property name="halign">end</property>
<signal name="state-set" handler="on_force_bq_name" swapped="no"/>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="use_http_switch">
<property name="visible">True</property>
@@ -2818,6 +2791,33 @@ Author: Dmitriy Yefremov
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="bq_naming_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="tooltip-text" translatable="yes">Allows you to name bouquet files using their names.</property>
<property name="halign">start</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Enable alternate bouquet file naming</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">4</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="force_bq_name_switch">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="tooltip-text" translatable="yes">Allows you to name bouquet files using their names.</property>
<property name="halign">end</property>
<signal name="state-set" handler="on_force_bq_name" swapped="no"/>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">4</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="compress_picons_label">
<property name="visible">True</property>
@@ -2829,7 +2829,7 @@ Author: Dmitriy Yefremov
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
@@ -2838,6 +2838,33 @@ Author: Dmitriy Yefremov
<property name="can-focus">True</property>
<property name="tooltip-text" translatable="yes">Enables upload as an archive if a large number of picon (&gt; 1000) is selected.
Recommended only if you have external storage.</property>
<property name="halign">end</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="keep_power_mode_label">
<property name="visible">True</property>
<property name="sensitive" bind-source="use_http_switch" bind-property="active">True</property>
<property name="can-focus">False</property>
<property name="tooltip-text" translatable="yes">Don't toggle standby mode when updating bouquets and services.</property>
<property name="label" translatable="yes">Don't change power state</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="keep_power_mode_switch">
<property name="visible">True</property>
<property name="sensitive" bind-source="use_http_switch" bind-property="active">True</property>
<property name="can-focus">True</property>
<property name="tooltip-text" translatable="yes">Don't toggle standby mode when updating bouquets and services.</property>
</object>
<packing>
<property name="left-attach">1</property>
@@ -3207,7 +3234,7 @@ Author: Dmitriy Yefremov
<action-widget response="-3">save_button</action-widget>
</action-widgets>
</object>
<!-- n-columns=2 n-rows=14 -->
<!-- n-columns=2 n-rows=14 -->
<object class="GtkGrid" id="network_grid">
<property name="visible">True</property>
<property name="can-focus">False</property>

View File

@@ -176,6 +176,7 @@ class SettingsDialog:
# Extra.
self._use_http_switch = builder.get_object("use_http_switch")
self._remove_unused_bq_switch = builder.get_object("remove_unused_bq_switch")
self._keep_power_mode_switch = builder.get_object("keep_power_mode_switch")
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")
@@ -348,6 +349,7 @@ class SettingsDialog:
self._support_ver5_switch.set_active(self._settings.v5_support)
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)
self._compress_picons_switch.set_active(self._settings.compress_picons)
self._force_bq_name_switch.set_active(self._settings.force_bq_names)
self._enable_yt_dl_switch.set_active(self._settings.enable_yt_dl)
@@ -430,6 +432,7 @@ class SettingsDialog:
self._ext_settings.v5_support = self._support_ver5_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()
self._ext_settings.compress_picons = self._compress_picons_switch.get_active()
self._ext_settings.force_bq_names = self._force_bq_name_switch.get_active()
self._ext_settings.enable_yt_dl = self._enable_yt_dl_switch.get_active()