values update in Num column

This commit is contained in:
Dmitriy Yefremov
2017-10-18 21:03:14 +03:00
parent c0f4a3b7dc
commit ac0f715fa6
2 changed files with 21 additions and 17 deletions

View File

@@ -8,6 +8,9 @@ from . import Gtk, Gdk
from .satellites_dialog import show_satellites_dialog
from .settings_dialog import show_settings_dialog
SERVICE_LIST_NAME = "services_list_store"
FAV_LIST_NAME = "fav_list_store"
__main_window = None
__status_bar = None
__options = get_config()
@@ -52,8 +55,7 @@ def get_handlers():
"on_services_tree_view_drag_data_get": on_services_tree_view_drag_data_get,
"on_fav_tree_view_drag_data_get": on_fav_tree_view_drag_data_get,
"on_fav_tree_view_drag_data_received": on_fav_tree_view_drag_data_received,
"on_view_popup_menu": on_view_popup_menu,
"on_fav_list_changed": on_fav_list_changed
"on_view_popup_menu": on_view_popup_menu
}
@@ -121,14 +123,13 @@ def receive_selection(*, view, drop_info, data):
dest_index = 0
if drop_info:
path, position = drop_info
print(path, position)
dest_iter = model.get_iter(path)
if dest_iter:
dest_index = model.get_value(dest_iter, 0)
itr_str, sep, source = data.partition(":")
itrs = itr_str.split(",")
try:
if source == "services_list_store":
if source == SERVICE_LIST_NAME:
ext_model = __services_view.get_model()
ext_itrs = [ext_model.get_iter_from_string(itr) for itr in itrs]
ext_rows = [ext_model.get(ext_itr, *[x for x in range(__services_view.get_n_columns())]) for ext_itr in
@@ -137,13 +138,15 @@ def receive_selection(*, view, drop_info, data):
fav_id = ext_row[11]
channel = __channels[fav_id]
model.insert(dest_index, (0, channel.service, channel.service_type, channel.pos))
elif source == "fav_list_store":
elif source == FAV_LIST_NAME:
in_itrs = [model.get_iter_from_string(itr) for itr in itrs]
in_rows = [model.get(in_itr, *[x for x in range(view.get_n_columns())]) for in_itr in in_itrs]
for row in in_rows:
model.insert(dest_index, row)
for in_itr in in_itrs:
model.remove(in_itr)
# Iterate through model and updates values for Num column
model.foreach(lambda store, pth, itr: store.set_value(itr, 0, int(pth[0]) + 1)) # iter , column, value
except ValueError as e:
__status_bar.push(1, getattr(e, "message", repr(e)))
@@ -163,11 +166,6 @@ def on_fav_tree_view_drag_data_received(view, drag_context, x, y, data, info, ti
receive_selection(view=view, drop_info=view.get_dest_row_at_pos(x, y), data=data.get_text())
def on_fav_list_changed(*args):
""" """
print("Changed")
def on_view_popup_menu(menu, event):
""" Shows popup menu for any view """
if event.get_event_type() == Gdk.EventType.BUTTON_PRESS and event.button == Gdk.BUTTON_SECONDARY:
@@ -237,16 +235,19 @@ def on_preferences(item):
show_settings_dialog(__main_window, __options)
def on_tree_view_key_release(widget, event):
def on_tree_view_key_release(view, event):
""" Handling keystrokes """
key = event.keyval
if key == Gdk.KEY_Tab:
print("Tab")
# print(event.state)
if key == Gdk.KEY_Delete:
on_delete(widget)
on_delete(view)
if key == Gdk.KEY_Up:
print("Up")
if key == Gdk.KEY_Down:
print("Down")
if key == Gdk.KEY_Insert and view.get_model().get_name() == SERVICE_LIST_NAME:
# Move items from main to fav list
on_to_fav_move(view)
def on_upload(item):

View File

@@ -42,7 +42,6 @@
<!-- column-name pos -->
<column type="gchararray"/>
</columns>
<signal name="rows-reordered" handler="on_fav_list_changed" swapped="no"/>
</object>
<object class="GtkMenu" id="fav_popup_menu">
<property name="visible">True</property>
@@ -629,11 +628,13 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">services_list_store</property>
<property name="search_column">0</property>
<property name="hover_selection">True</property>
<property name="enable_grid_lines">both</property>
<property name="activate_on_single_click">True</property>
<signal name="button-press-event" handler="on_view_popup_menu" object="services_popup_menu" swapped="no"/>
<signal name="drag-data-get" handler="on_services_tree_view_drag_data_get" swapped="no"/>
<signal name="key-release-event" handler="on_tree_view_key_release" object="services_list_store" swapped="no"/>
<signal name="key-release-event" handler="on_tree_view_key_release" swapped="no"/>
<signal name="row-activated" handler="on_services_selection" object="services_list_store" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection" id="services_selection">
@@ -846,12 +847,13 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">fav_list_store</property>
<property name="search_column">1</property>
<property name="enable_grid_lines">both</property>
<property name="activate_on_single_click">True</property>
<signal name="button-press-event" handler="on_view_popup_menu" object="fav_popup_menu" swapped="no"/>
<signal name="drag-data-get" handler="on_fav_tree_view_drag_data_get" swapped="no"/>
<signal name="drag-data-received" handler="on_fav_tree_view_drag_data_received" swapped="no"/>
<signal name="key-release-event" handler="on_tree_view_key_release" object="fav_list_store" swapped="no"/>
<signal name="key-release-event" handler="on_tree_view_key_release" swapped="no"/>
<signal name="row-activated" handler="on_fav_selection" object="fav_list_store" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection" id="fav_selection">
@@ -925,6 +927,7 @@
<property name="can_focus">True</property>
<property name="model">bouquets_tree_store</property>
<property name="headers_clickable">False</property>
<property name="enable_search">False</property>
<property name="activate_on_single_click">True</property>
<signal name="button-press-event" handler="on_view_popup_menu" object="bouquets_popup_menu" swapped="no"/>
<signal name="row-activated" handler="on_bouquets_selection" object="bouquets_tree_store" swapped="no"/>