diff --git a/app/ui/satellites_dialog.glade b/app/ui/satellites_dialog.glade index 16f42bd4..c4cfb61c 100644 --- a/app/ui/satellites_dialog.glade +++ b/app/ui/satellites_dialog.glade @@ -2,6 +2,34 @@ + + True + False + gtk-add + 3 + + + True + False + + + True + False + Satellite + True + + + + + + True + False + Transponder + True + + + + @@ -372,6 +400,7 @@ True False + Open Load True gtk-open @@ -396,6 +425,7 @@ True False + Save Save True gtk-floppy @@ -417,33 +447,19 @@ - + True False - Add - True - gtk-add - - + + True - False + True + True + Add + add_popup_menu + none - - True - False - Satellite - True - - - - - - True - False - Transponder - True - - + @@ -457,6 +473,7 @@ True False + Edit Edit True gtk-edit @@ -471,6 +488,8 @@ True False + Remove + immediate Remove True gtk-remove diff --git a/app/ui/satellites_dialog.py b/app/ui/satellites_dialog.py index 20db69e9..43213df4 100644 --- a/app/ui/satellites_dialog.py +++ b/app/ui/satellites_dialog.py @@ -36,8 +36,12 @@ class SatellitesDialog: builder = Gtk.Builder() builder.add_objects_from_file("app/ui/satellites_dialog.glade", - ("satellites_editor_dialog", "satellites_tree_store", "popup_menu")) + ("satellites_editor_dialog", "satellites_tree_store", + "popup_menu", "add_popup_menu", "add_menu_icon")) builder.connect_signals(handlers) + # Adding custom image for add_menu_tool_button + add_menu_tool_button = builder.get_object("add_menu_tool_button") + add_menu_tool_button.set_image(builder.get_object("add_menu_icon")) self._dialog = builder.get_object("satellites_editor_dialog") self._dialog.set_transient_for(transient) @@ -321,10 +325,11 @@ class TransponderDialog: self.init_transponder(transponder) def run(self): - if self._dialog.run() == Gtk.ResponseType.CANCEL: - return - - return self.to_transponder() + while self._dialog.run() != Gtk.ResponseType.CANCEL: + tr = self.to_transponder() + if self.is_accept(tr): + return tr + show_dialog("error_dialog", self._dialog, "Please check your parameters and try again.") def destroy(self): self._dialog.destroy() @@ -354,6 +359,18 @@ class TransponderDialog: def on_entry_changed(self, entry): entry.set_name("digit-entry" if self._pattern.search(entry.get_text()) else "GtkEntry") + def is_accept(self, tr): + if self._pattern.search(tr.frequency) or not tr.frequency: + return False + elif self._pattern.search(tr.symbol_rate) or not tr.symbol_rate: + return False + elif None in (tr.polarization, tr.fec_inner, tr.system, tr.modulation): + return False + elif self._pattern.search(tr.pls_code) or self._pattern.search(tr.is_id): + return False + + return True + class SatelliteDialog: """ Shows dialog for adding or edit satellite """