mirror of
https://github.com/DYefremov/DemonEditor.git
synced 2025-12-22 08:29:41 +01:00
addition of transponder impl
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user