2017-10-20 14:45:51 +03:00
|
|
|
from main.eparser import get_satellites, write_satellites, Satellite, Transponder
|
|
|
|
|
from . import Gtk, Gdk
|
2017-10-14 13:23:34 +03:00
|
|
|
|
|
|
|
|
__data_path = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def show_satellites_dialog(transient, data_path):
|
|
|
|
|
global __data_path
|
|
|
|
|
__data_path = data_path
|
2017-10-20 14:45:51 +03:00
|
|
|
handlers = {"on_satellites_list_load": on_satellites_list_load,
|
|
|
|
|
"on_remove": on_remove, "on_save": on_save,
|
|
|
|
|
"on_popup_menu": on_popup_menu}
|
2017-10-14 13:23:34 +03:00
|
|
|
builder = Gtk.Builder()
|
|
|
|
|
builder.add_from_file("./ui/satellites_dialog.glade")
|
|
|
|
|
builder.connect_signals(handlers)
|
|
|
|
|
dialog = builder.get_object("satellites_editor_dialog")
|
|
|
|
|
dialog.set_transient_for(transient)
|
|
|
|
|
dialog.run()
|
|
|
|
|
dialog.destroy()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def on_satellites_list_load(model):
|
|
|
|
|
""" Load satellites data into model """
|
|
|
|
|
satellites = get_satellites(__data_path)
|
|
|
|
|
model.clear()
|
|
|
|
|
aggr = [None for x in range(9)]
|
|
|
|
|
for name, flags, pos, transponders in satellites:
|
2017-10-19 23:21:40 +03:00
|
|
|
parent = model.append(None, [name, *aggr, flags, pos])
|
2017-10-14 13:23:34 +03:00
|
|
|
for transponder in transponders:
|
2017-10-19 23:21:40 +03:00
|
|
|
model.append(parent, ["Transponder:", *transponder, None, None])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def on_remove(view):
|
|
|
|
|
selection = view.get_selection()
|
|
|
|
|
model, paths = selection.get_selected_rows()
|
|
|
|
|
itrs = [model.get_iter(path) for path in paths]
|
|
|
|
|
for itr in itrs:
|
|
|
|
|
model.remove(itr)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def on_save(view):
|
|
|
|
|
model = view.get_model()
|
|
|
|
|
satellites = []
|
|
|
|
|
model.foreach(parse_data, satellites)
|
2017-10-20 14:45:51 +03:00
|
|
|
write_satellites(satellites, __data_path)
|
2017-10-19 23:21:40 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def parse_data(model, path, itr, sats):
|
|
|
|
|
if model.iter_has_child(itr):
|
|
|
|
|
num_of_children = model.iter_n_children(itr)
|
|
|
|
|
transponders = []
|
|
|
|
|
for num in range(num_of_children):
|
|
|
|
|
transponder_itr = model.iter_nth_child(itr, num)
|
|
|
|
|
transponder = model.get(transponder_itr, *[item for item in range(model.get_n_columns())])
|
|
|
|
|
transponders.append(Transponder(*transponder[1:-2]))
|
|
|
|
|
sat = model.get(itr, *[item for item in range(model.get_n_columns())])
|
|
|
|
|
satellite = Satellite(sat[0], sat[-2], sat[-1], transponders)
|
|
|
|
|
sats.append(satellite)
|
2017-10-14 12:24:59 +03:00
|
|
|
|
|
|
|
|
|
2017-10-20 14:45:51 +03:00
|
|
|
def on_popup_menu(menu, event):
|
|
|
|
|
if event.get_event_type() == Gdk.EventType.BUTTON_PRESS and event.button == Gdk.BUTTON_SECONDARY:
|
|
|
|
|
menu.popup(None, None, None, None, event.button, event.time)
|
|
|
|
|
|
|
|
|
|
|
2017-10-14 12:24:59 +03:00
|
|
|
if __name__ == "__main__":
|
|
|
|
|
pass
|