diff --git a/app/ui/settings_dialog.glade b/app/ui/settings_dialog.glade
index 0d536194..c96d0a63 100644
--- a/app/ui/settings_dialog.glade
+++ b/app/ui/settings_dialog.glade
@@ -839,6 +839,7 @@ Author: Dmitriy Yefremov
6
21
network-workgroup-symbolic
+
1
@@ -861,6 +862,7 @@ Author: Dmitriy Yefremov
6
80
network-workgroup-symbolic
+
False
@@ -906,6 +908,7 @@ Author: Dmitriy Yefremov
6
23
network-workgroup-symbolic
+
False
diff --git a/app/ui/settings_dialog.py b/app/ui/settings_dialog.py
index 6a699492..f18ff04c 100644
--- a/app/ui/settings_dialog.py
+++ b/app/ui/settings_dialog.py
@@ -269,7 +269,13 @@ class SettingsDialog:
def on_response(self, dialog, resp):
if resp == Gtk.ResponseType.ACCEPT:
self._updated = self.on_save_settings()
- dialog.destroy()
+ if not self._updated:
+ return True
+
+ if resp == Gtk.ResponseType.DELETE_EVENT or resp == Gtk.ResponseType.ACCEPT:
+ dialog.destroy()
+
+ return False
def on_field_button_press(self, entry):
update_entry_data(entry, self._dialog, self._settings)
@@ -291,12 +297,12 @@ class SettingsDialog:
self._hosts_box.remove_all()
self._remove_host_button.set_sensitive(len([self._hosts_box.append(h, h) for h in self._settings.hosts]) > 1)
self._hosts_box.set_active_id(self._settings.host)
- self._port_field.set_text(self._settings.port)
+ self._port_field.set_text(str(self._settings.port))
self._login_field.set_text(self._settings.user)
self._password_field.set_text(self._settings.password)
- self._http_port_field.set_text(self._settings.http_port)
+ self._http_port_field.set_text(str(self._settings.http_port))
self._http_use_ssl_check_button.set_active(self._settings.http_use_ssl)
- self._telnet_port_field.set_text(self._settings.telnet_port)
+ self._telnet_port_field.set_text(str(self._settings.telnet_port))
self._telnet_timeout_spin_button.set_value(self._settings.telnet_timeout)
self._services_field.set_text(self._settings.services_path)
self._user_bouquet_field.set_text(self._settings.user_bouquet_path)
@@ -353,18 +359,18 @@ class SettingsDialog:
def on_apply_profile_settings(self, item=None):
if not self.is_data_correct(self._digit_elems):
show_dialog(DialogType.ERROR, self._dialog, "Error. Verify the data!")
- return
+ return False
self._s_type = SettingsType(int(self._settings_type_box.get_active_id()))
self._settings.setting_type = self._s_type
self._settings.host = self._host_field.get_text()
self._settings.hosts = [h[1] for h in self._hosts_box.get_model()]
- self._settings.port = self._port_field.get_text()
+ self._settings.port = int(self._port_field.get_text())
self._settings.user = self._login_field.get_text()
self._settings.password = self._password_field.get_text()
- self._settings.http_port = self._http_port_field.get_text()
+ self._settings.http_port = int(self._http_port_field.get_text())
self._settings.http_use_ssl = self._http_use_ssl_check_button.get_active()
- self._settings.telnet_port = self._telnet_port_field.get_text()
+ self._settings.telnet_port = int(self._telnet_port_field.get_text())
self._settings.telnet_timeout = int(self._telnet_timeout_spin_button.get_value())
self._settings.services_path = self._services_field.get_text()
self._settings.satellites_xml_path = self._satellites_xml_field.get_text()
@@ -372,11 +378,15 @@ class SettingsDialog:
self._settings.epg_dat_path = self._epg_dat_box.get_active_id()
self._settings.picons_path = self._picons_paths_box.get_active_id()
+ return True
+
def on_save_settings(self, item=None):
if show_dialog(DialogType.QUESTION, self._dialog) != Gtk.ResponseType.OK:
return False
- self.on_apply_profile_settings()
+ if not self.on_apply_profile_settings():
+ return False
+
self._ext_settings.profiles = self._settings.profiles
self._ext_settings.backup_before_save = self._before_save_switch.get_active()
self._ext_settings.backup_before_downloading = self._before_downloading_switch.get_active()