checking frequency and rate in transponder dialog

This commit is contained in:
Dmitriy Yefremov
2017-11-15 17:54:16 +03:00
parent 6c1f1ffed3
commit 022be154b4
5 changed files with 57 additions and 8 deletions

View File

@@ -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()

View File

@@ -180,8 +180,7 @@
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<signal name="activate" handler="on_data_open" object="bouquets_tree_store" swapped="no"/>
<signal name="activate" handler="on_data_open" object="services_list_store" swapped="no"/>
<signal name="activate" handler="on_data_open" swapped="no"/>
</object>
</child>
<child>

View File

@@ -417,16 +417,40 @@
</packing>
</child>
<child>
<object class="GtkToolButton" id="add_tool_button">
<object class="GtkMenuToolButton" id="add_tool_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-add</property>
<child type="menu">
<object class="GtkMenu" id="menu4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkMenuItem" id="add_sat_menui_tem">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Satellite</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_satellite_add" swapped="no"/>
</object>
</child>
<child>
<object class="GtkMenuItem" id="add_tr_menui_tem">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Transponder</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_transponder_add" swapped="no"/>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
<property name="homogeneous">False</property>
</packing>
</child>
<child>
@@ -1053,6 +1077,7 @@
<property name="secondary_icon_sensitive">False</property>
<property name="placeholder_text" translatable="yes">11700000</property>
<property name="input_purpose">digits</property>
<signal name="changed" handler="on_entry_changed" swapped="no"/>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1068,6 +1093,7 @@
<property name="primary_icon_stock">gtk-edit</property>
<property name="placeholder_text" translatable="yes">27500000</property>
<property name="input_purpose">digits</property>
<signal name="changed" handler="on_entry_changed" swapped="no"/>
</object>
<packing>
<property name="left_attach">1</property>

View File

@@ -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 """

3
app/ui/style.css Normal file
View File

@@ -0,0 +1,3 @@
#digit-entry {
border-color: Red;
}