writing satellites.xml impl

This commit is contained in:
DYefremov
2017-10-20 14:45:51 +03:00
parent a74793a1b9
commit 2e64fc20f2
8 changed files with 179 additions and 45 deletions

View File

@@ -127,7 +127,10 @@ def on_to_fav_move(view):
""" Move items from main to fav list """
selection = get_selection(view)
if selection:
receive_selection(view=__fav_view, drop_info=None, data=selection)
if is_bouquet_selected():
receive_selection(view=__fav_view, drop_info=None, data=selection)
else:
show_message_dialog("Error. No bouquet is selected!")
def get_selection(view):
@@ -189,7 +192,10 @@ def on_fav_tree_view_drag_data_get(view, drag_context, data, info, time):
def on_fav_tree_view_drag_data_received(view, drag_context, x, y, data, info, time):
""" DnD """
receive_selection(view=view, drop_info=view.get_dest_row_at_pos(x, y), data=data.get_text())
if is_bouquet_selected():
receive_selection(view=view, drop_info=view.get_dest_row_at_pos(x, y), data=data.get_text())
else:
show_message_dialog("Error. No bouquet is selected!")
def on_view_popup_menu(menu, event):
@@ -231,26 +237,44 @@ def on_data_open(model):
def on_services_selection(model, path, column):
delete_selection(__fav_view, __bouquets_view)
delete_selection(__fav_view)
def on_fav_selection(model, path, column):
delete_selection(__services_view, __bouquets_view)
delete_selection(__services_view)
def on_bouquets_selection(model, path, column):
__fav_model.clear()
if len(path) > 1:
delete_selection(__services_view)
tree_iter = model.get_iter(path)
name = model.get_value(tree_iter, 0)
# 'tv' Temporary! It is necessary to implement a row type attribute.
bq = get_bouquet(__options["data_dir_path"], name, SERVICE_TYPE[1].lower())
__fav_model.clear()
for num, ch_id in enumerate(bq):
channel = __channels.get(ch_id, None)
__fav_model.append((num + 1, channel[0], channel[2], channel[9]))
def is_bouquet_selected():
""" Checks whether the bouquet is selected """
selection = __bouquets_view.get_selection()
model, path = selection.get_selected_rows()
if len(path) < 1:
return False
return not model.iter_has_child(model.get_iter(path))
def show_message_dialog(text):
builder = Gtk.Builder()
builder.add_from_file("ui/main_window.glade")
dialog = builder.get_object("message_dialog")
dialog.set_markup(text)
dialog.run()
dialog.destroy()
def delete_selection(view, *args):
""" Used for clear selection on given view(s) """
for v in [view, *args]:

View File

@@ -1022,8 +1022,11 @@
<property name="transient_for">main_window</property>
<property name="program_name">DemonEditor</property>
<property name="version">0.1 Pre-alpha</property>
<property name="copyright" translatable="yes">2017 Dmitriy Yefremov
</property>
<property name="comments" translatable="yes">Enigma2 channel list editor for GNU/Linux</property>
<property name="authors">Dmitriy Yefremov</property>
<property name="authors">Dmitriy Yefremov
</property>
<property name="logo_icon_name">accessories-text-editor</property>
<property name="license_type">mit-x11</property>
<child internal-child="vbox">
@@ -1048,12 +1051,15 @@
</object>
</child>
</object>
<object class="GtkMessageDialog" id="messagedialog1">
<object class="GtkMessageDialog" id="message_dialog">
<property name="can_focus">False</property>
<property name="default_width">320</property>
<property name="default_height">240</property>
<property name="icon_name">accessories-text-editor</property>
<property name="type_hint">dialog</property>
<property name="transient_for">main_window</property>
<property name="message_type">question</property>
<property name="buttons">ok-cancel</property>
<property name="message_type">error</property>
<property name="buttons">ok</property>
<child internal-child="vbox">
<object class="GtkBox" id="messagedialog-vbox">
<property name="can_focus">False</property>

View File

@@ -2,6 +2,39 @@
<!-- Generated with glade 3.18.3 -->
<interface>
<requires lib="gtk+" version="3.12"/>
<object class="GtkMenu" id="popup_menu">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="reserve_toggle_size">False</property>
<child>
<object class="GtkImageMenuItem" id="add_popoup_menu_item">
<property name="label">gtk-add</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="edit_popoup_menu_item">
<property name="label">gtk-edit</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="remove_popup_menu_item">
<property name="label">gtk-remove</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_remove" object="satellites_editor_tree_view" swapped="no"/>
</object>
</child>
</object>
<object class="GtkTreeStore" id="satellites_tree_store">
<columns>
<!-- column-name satelitte -->
@@ -299,6 +332,7 @@
<property name="can_focus">True</property>
<property name="model">satellites_tree_store</property>
<property name="search_column">0</property>
<signal name="button-press-event" handler="on_popup_menu" object="popup_menu" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection" id="tree_view_selection">
<property name="mode">multiple</property>
@@ -390,6 +424,7 @@
</child>
<child>
<object class="GtkTreeViewColumn" id="pls_mode_column">
<property name="visible">False</property>
<property name="title" translatable="yes">Pls mode</property>
<property name="expand">True</property>
<child>
@@ -402,6 +437,7 @@
</child>
<child>
<object class="GtkTreeViewColumn" id="pls_code_column">
<property name="visible">False</property>
<property name="title" translatable="yes">Pls code</property>
<property name="expand">True</property>
<child>
@@ -414,6 +450,7 @@
</child>
<child>
<object class="GtkTreeViewColumn" id="is_id_column">
<property name="visible">False</property>
<property name="resizable">True</property>
<property name="title" translatable="yes">Is ID</property>
<property name="expand">True</property>

View File

@@ -1,6 +1,5 @@
from main.eparser import get_satellites
from main.eparser.satxml import Satellite, Transponder
from . import Gtk
from main.eparser import get_satellites, write_satellites, Satellite, Transponder
from . import Gtk, Gdk
__data_path = None
@@ -8,7 +7,9 @@ __data_path = None
def show_satellites_dialog(transient, data_path):
global __data_path
__data_path = data_path
handlers = {"on_satellites_list_load": on_satellites_list_load, "on_remove": on_remove, "on_save": on_save}
handlers = {"on_satellites_list_load": on_satellites_list_load,
"on_remove": on_remove, "on_save": on_save,
"on_popup_menu": on_popup_menu}
builder = Gtk.Builder()
builder.add_from_file("./ui/satellites_dialog.glade")
builder.connect_signals(handlers)
@@ -41,8 +42,7 @@ def on_save(view):
model = view.get_model()
satellites = []
model.foreach(parse_data, satellites)
for sat in satellites:
print(sat)
write_satellites(satellites, __data_path)
def parse_data(model, path, itr, sats):
@@ -58,5 +58,10 @@ def parse_data(model, path, itr, sats):
sats.append(satellite)
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)
if __name__ == "__main__":
pass