addition of transponder impl

This commit is contained in:
Dmitriy Yefremov
2017-11-11 00:08:40 +03:00
parent fc84e25298
commit 893ad1b509
2 changed files with 98 additions and 25 deletions

View File

@@ -111,7 +111,30 @@
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<signal name="activate" handler="on_add" object="satellites_editor_tree_view" swapped="no"/> <child type="submenu">
<object class="GtkMenu" id="add_menu">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkMenuItem" id="add_sat_popup_menu_item">
<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_popup_menu_item">
<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> </object>
</child> </child>
<child> <child>
@@ -227,16 +250,6 @@
<object class="GtkMenu" id="menu1"> <object class="GtkMenu" id="menu1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem" id="new_menu_item">
<property name="label">gtk-new</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<signal name="activate" handler="on_add" object="satellites_editor_tree_view" swapped="no"/>
</object>
</child>
<child> <child>
<object class="GtkImageMenuItem" id="open_menu_item"> <object class="GtkImageMenuItem" id="open_menu_item">
<property name="label">gtk-open</property> <property name="label">gtk-open</property>
@@ -303,7 +316,30 @@
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<signal name="activate" handler="on_add" object="satellites_editor_tree_view" swapped="no"/> <child type="submenu">
<object class="GtkMenu" id="menu3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkMenuItem" id="add_sat_menu_item">
<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_menu_item">
<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> </object>
</child> </child>
<child> <child>
@@ -396,7 +432,6 @@
<property name="label" translatable="yes">Add</property> <property name="label" translatable="yes">Add</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="stock_id">gtk-add</property> <property name="stock_id">gtk-add</property>
<signal name="clicked" handler="on_add" object="satellites_editor_tree_view" swapped="no"/>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>

View File

@@ -25,7 +25,8 @@ class SatellitesDialog:
"on_remove": self.on_remove, "on_remove": self.on_remove,
"on_save": self.on_save, "on_save": self.on_save,
"on_popup_menu": self.on_popup_menu, "on_popup_menu": self.on_popup_menu,
"on_add": self.on_add, "on_satellite_add": self.on_satellite_add,
"on_transponder_add": self.on_transponder_add,
"on_edit": self.on_edit, "on_edit": self.on_edit,
"on_key_release": self.on_key_release, "on_key_release": self.on_key_release,
"on_row_activated": self.on_row_activated, "on_row_activated": self.on_row_activated,
@@ -94,7 +95,8 @@ class SatellitesDialog:
if key == Gdk.KEY_Delete: if key == Gdk.KEY_Delete:
self.on_remove(view) self.on_remove(view)
elif key == Gdk.KEY_Insert: elif key == Gdk.KEY_Insert:
self.on_add(view) pass
# self.on_add(view)
elif ctrl and key == Gdk.KEY_E or key == Gdk.KEY_e: elif ctrl and key == Gdk.KEY_E or key == Gdk.KEY_e:
self.on_edit(view) self.on_edit(view)
elif ctrl and key == Gdk.KEY_s or key == Gdk.KEY_S: elif ctrl and key == Gdk.KEY_s or key == Gdk.KEY_S:
@@ -123,16 +125,22 @@ class SatellitesDialog:
""" Common adding """ """ Common adding """
self.on_edit(view, force=True) self.on_edit(view, force=True)
def on_satellite_add(self, item):
self.on_satellite(None)
def on_transponder_add(self, item):
self.on_transponder(None)
def on_edit(self, view, force=False): def on_edit(self, view, force=False):
""" Common edit """ """ Common edit """
paths = self.check_selection(view) paths = self.check_selection(view, "Please, select only one item!")
if not paths: if not paths:
return return
model = view.get_model() model = view.get_model()
itr = model.get_iter(paths[0]) itr = model.get_iter(paths[0])
row = model.get(itr, *[x for x in range(view.get_n_columns())]) row = model.get(itr, *[x for x in range(view.get_n_columns())])
# maybe temporary!
if row[-1]: # satellite if row[-1]: # satellite
self.on_satellite(None if force else Satellite(row[0], None, row[-1], None), itr) self.on_satellite(None if force else Satellite(row[0], None, row[-1], None), itr)
else: else:
@@ -152,13 +160,13 @@ class SatellitesDialog:
else: else:
index = self.get_sat_position_index(sat.position, model) index = self.get_sat_position_index(sat.position, model)
model.insert(None, index, [sat.name, *self._aggr, sat.flags, sat.position]) model.insert(None, index, [sat.name, *self._aggr, sat.flags, sat.position])
view.scroll_to_cell(index, None) self.scroll_to(index, view)
selection = view.get_selection()
selection.unselect_all()
selection.select_path(index)
def on_transponder(self, transponder=None, edited_itr=None): def on_transponder(self, transponder=None, edited_itr=None):
""" Create or edit transponder """ """ Create or edit transponder """
if not self.check_selection(self._sat_view, "Please, select only one satellite!"):
return
dialog = TransponderDialog(self._dialog, transponder) dialog = TransponderDialog(self._dialog, transponder)
tr = dialog.run() tr = dialog.run()
dialog.destroy() dialog.destroy()
@@ -171,8 +179,38 @@ class SatellitesDialog:
4: tr.fec_inner, 5: tr.system, 6: tr.modulation, 4: tr.fec_inner, 5: tr.system, 6: tr.modulation,
7: tr.pls_mode, 8: tr.pls_code, 9: tr.is_id}) 7: tr.pls_mode, 8: tr.pls_code, 9: tr.is_id})
else: else:
# model.insert(model.iter_parent(itr), int(paths[0][0] + 1), ["Transponder:", *tr, None, None]) row = ["Transponder:", *tr, None, None]
pass model, paths = view.get_selection().get_selected_rows()
itr = model.get_iter(paths[0])
view.expand_row(paths[0], 0)
# Get parent iter if selected transponder
parent_itr = model.iter_parent(itr)
if parent_itr:
itr = parent_itr
freq = int(tr.frequency)
tr_itr = model.iter_children(itr)
# Inserting according to frequency value.
while tr_itr:
cur_freq = int(model.get_value(tr_itr, 1))
if freq <= cur_freq:
path = model.get_path(tr_itr)
index = path.get_indices()[1]
model.insert(model.iter_parent(tr_itr), index, row)
self.scroll_to(path, view)
break
else:
tr_itr = model.iter_next(tr_itr)
else:
itr = model.append(itr, row)
self.scroll_to(model.get_path(itr), view)
def scroll_to(self, index, view):
""" Scrolling to and selecting given index(path) """
view.scroll_to_cell(index, None)
selection = view.get_selection()
selection.unselect_all()
selection.select_path(index)
def get_sat_position_index(self, pos, model): def get_sat_position_index(self, pos, model):
""" Search and returns index after given position """ """ Search and returns index after given position """
@@ -181,7 +219,7 @@ class SatellitesDialog:
return row.path[0] if row else len(model) return row.path[0] if row else len(model)
def check_selection(self, view): def check_selection(self, view, message):
""" Checks if any row is selected. Shows error dialog if selected more than one. """ Checks if any row is selected. Shows error dialog if selected more than one.
returns selected path or None returns selected path or None
@@ -190,7 +228,7 @@ class SatellitesDialog:
paths_count = len(paths) paths_count = len(paths)
if paths_count > 1: if paths_count > 1:
show_dialog("error_dialog", self._dialog, "Please, select only one item!") show_dialog("error_dialog", self._dialog, message)
return return
return paths return paths