Files
DemonEditor/main/ui/satellites_dialog.py

68 lines
2.2 KiB
Python
Raw Normal View History

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:
parent = model.append(None, [name, *aggr, flags, pos])
2017-10-14 13:23:34 +03:00
for transponder in transponders:
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)
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