From 022be154b46c0caf99f8d09e8e9328d6777b59c7 Mon Sep 17 00:00:00 2001 From: Dmitriy Yefremov Date: Wed, 15 Nov 2017 17:54:16 +0300 Subject: [PATCH] checking frequency and rate in transponder dialog --- app/ui/main_app_window.py | 3 +-- app/ui/main_window.glade | 3 +-- app/ui/satellites_dialog.glade | 30 ++++++++++++++++++++++++++++-- app/ui/satellites_dialog.py | 26 ++++++++++++++++++++++++-- app/ui/style.css | 3 +++ 5 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 app/ui/style.css diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py index 810541bf..2e6f900d 100644 --- a/app/ui/main_app_window.py +++ b/app/ui/main_app_window.py @@ -388,13 +388,12 @@ class MainAppWindow: """ Shows satellites editor dialog """ show_satellites_dialog(self.__main_window, self.__options) - @run_idle def on_data_open(self, model): if show_dialog("path_chooser_dialog", self.__main_window, options=self.__options) == Gtk.ResponseType.CANCEL: return - self.open_data() + @run_idle def open_data(self): """ Opening data and fill views. """ self.__bouquets_model.clear() diff --git a/app/ui/main_window.glade b/app/ui/main_window.glade index 7dc233a2..378899a5 100644 --- a/app/ui/main_window.glade +++ b/app/ui/main_window.glade @@ -180,8 +180,7 @@ False True True - - + diff --git a/app/ui/satellites_dialog.glade b/app/ui/satellites_dialog.glade index 0c29f5a9..cf74644a 100644 --- a/app/ui/satellites_dialog.glade +++ b/app/ui/satellites_dialog.glade @@ -417,16 +417,40 @@ - + True False Add True gtk-add + + + True + False + + + True + False + Satellite + True + + + + + + True + False + Transponder + True + + + + + False - True + False @@ -1053,6 +1077,7 @@ False 11700000 digits + 0 @@ -1068,6 +1093,7 @@ gtk-edit 27500000 digits + 1 diff --git a/app/ui/satellites_dialog.py b/app/ui/satellites_dialog.py index 4f346308..ee8fcabb 100644 --- a/app/ui/satellites_dialog.py +++ b/app/ui/satellites_dialog.py @@ -1,3 +1,4 @@ +import re from math import fabs from app.commons import run_idle @@ -106,6 +107,7 @@ class SatellitesDialog: elif key == Gdk.KEY_space: pass + @run_idle def on_satellites_list_load(self, model): """ Load satellites data into model """ try: @@ -167,7 +169,12 @@ class SatellitesDialog: def on_transponder(self, transponder=None, edited_itr=None): """ Create or edit transponder """ - if not self.check_selection(self._sat_view, "Please, select only one satellite!"): + + paths = self.check_selection(self._sat_view, "Please, select only one satellite!") + if paths is None: + return + elif len(paths) == 0: + show_dialog("error_dialog", self._dialog, "No satellite is selected!") return dialog = TransponderDialog(self._dialog, transponder) @@ -280,12 +287,16 @@ class TransponderDialog: """ Shows dialog for adding or edit transponder """ def __init__(self, transient, transponder: Transponder = None): + + handlers = {"on_entry_changed": self.on_entry_changed} + builder = Gtk.Builder() builder.add_objects_from_file("app/ui/satellites_dialog.glade", ("transponder_dialog", "pol_store", "fec_store", "mod_store", "system_store", "pls_mode_store")) + builder.connect_signals(handlers) self._dialog = builder.get_object("transponder_dialog") self._dialog.set_transient_for(transient) @@ -298,7 +309,15 @@ class TransponderDialog: self._pls_mode_box = builder.get_object("pls_mode_box") self._pls_code_entry = builder.get_object("pls_code_entry") self._is_id_entry = builder.get_object("is_id_entry") - + # pattern for frequency and rate entries (only digits) + self._pattern = re.compile("\D") + # style + self._style_provider = Gtk.CssProvider() + self._style_provider.load_from_path("app/ui/style.css") + self._freq_entry.get_style_context().add_provider_for_screen(Gdk.Screen.get_default(), self._style_provider, + Gtk.STYLE_PROVIDER_PRIORITY_USER) + self._rate_entry.get_style_context().add_provider_for_screen(Gdk.Screen.get_default(), self._style_provider, + Gtk.STYLE_PROVIDER_PRIORITY_USER) if transponder: self.init_transponder(transponder) @@ -333,6 +352,9 @@ class TransponderDialog: pls_code=self._pls_code_entry.get_text(), is_id=self._is_id_entry.get_text()) + def on_entry_changed(self, entry): + entry.set_name("digit-entry" if self._pattern.search(entry.get_text()) else "GtkEntry") + class SatelliteDialog: """ Shows dialog for adding or edit satellite """ diff --git a/app/ui/style.css b/app/ui/style.css new file mode 100644 index 00000000..f160699b --- /dev/null +++ b/app/ui/style.css @@ -0,0 +1,3 @@ +#digit-entry { + border-color: Red; +} \ No newline at end of file