added up, down for satellites tool

This commit is contained in:
Dmitriy Yefremov
2017-12-23 22:25:29 +03:00
parent 86131b2a66
commit 3f226e0090
4 changed files with 89 additions and 30 deletions

View File

@@ -8,7 +8,7 @@ from app.eparser import get_channels, get_bouquets, write_bouquets, write_channe
from app.eparser.__constants import CAS, FLAG
from app.eparser.bouquets import BqServiceType
from app.properties import get_config, write_config
from .main_helper import edit_marker, insert_marker
from .main_helper import edit_marker, insert_marker, move_items
from . import Gtk, Gdk, LOCKED_ICON, HIDE_ICON
from .dialogs import show_dialog, DialogType
from .download_dialog import show_download_dialog
@@ -144,32 +144,7 @@ class MainAppWindow:
def move_items(self, key):
""" Move items in fav tree view """
selection = self.__fav_view.get_selection()
model, paths = selection.get_selected_rows()
if paths:
# for correct down move!
if key in (Gdk.KEY_Down, Gdk.KEY_Page_Down, Gdk.KEY_KP_Page_Down):
paths = reversed(paths)
for path in paths:
itr = model.get_iter(path)
if key == Gdk.KEY_Down:
next_itr = model.iter_next(itr)
if next_itr:
model.move_after(itr, next_itr)
elif key == Gdk.KEY_Up:
prev_itr = model.iter_previous(itr)
if prev_itr:
model.move_before(itr, prev_itr)
elif key == Gdk.KEY_Page_Up or key == Gdk.KEY_KP_Page_Up:
up_itr = model.get_iter(self.__fav_view.get_cursor()[0])
if up_itr:
model.move_before(itr, up_itr)
elif key == Gdk.KEY_Page_Down or key == Gdk.KEY_KP_Page_Down:
down_itr = model.get_iter(self.__fav_view.get_cursor()[0])
if down_itr:
model.move_after(itr, down_itr)
move_items(key, self.__fav_view)
def on_cut(self, view):
for row in tuple(self.on_delete(view)):

View File

@@ -1,10 +1,12 @@
""" This is helper module for main_app_window """
from app.eparser import Channel
from app.eparser.bouquets import BqServiceType
from . import Gtk, Gdk
from .dialogs import show_dialog, DialogType
from . import Gtk
# ***************** Markers section *******************#
def insert_marker(view, bouquets, selected_bouquet, channels, parent_window):
"""" Inserts marker into bouquet services list. """
response = show_dialog(DialogType.INPUT, parent_window)
@@ -27,7 +29,7 @@ def insert_marker(view, bouquets, selected_bouquet, channels, parent_window):
bouquets[selected_bouquet].insert(model.get_path(itr)[0], fav_id)
def edit_marker(view, bouquets, selected_bouquet, channels, parent_window):
def edit_marker(view, bouquets, selected_bouquet, channels, parent_window):
""" Edits marker text """
model, paths = view.get_selection().get_selected_rows()
itr = model.get_iter(paths[0])
@@ -46,5 +48,37 @@ def edit_marker(view, bouquets, selected_bouquet, channels, parent_window):
bq_services.insert(index, new_fav_id)
# ***************** Movement section *******************#
def move_items(key, view):
""" Move items in tree view """
selection = view.get_selection()
model, paths = selection.get_selected_rows()
if paths:
# for correct down move!
if key in (Gdk.KEY_Down, Gdk.KEY_Page_Down, Gdk.KEY_KP_Page_Down):
paths = reversed(paths)
for path in paths:
itr = model.get_iter(path)
if key == Gdk.KEY_Down:
next_itr = model.iter_next(itr)
if next_itr:
model.move_after(itr, next_itr)
elif key == Gdk.KEY_Up:
prev_itr = model.iter_previous(itr)
if prev_itr:
model.move_before(itr, prev_itr)
elif key == Gdk.KEY_Page_Up or key == Gdk.KEY_KP_Page_Up:
up_itr = model.get_iter(view.get_cursor()[0])
if up_itr:
model.move_before(itr, up_itr)
elif key == Gdk.KEY_Page_Down or key == Gdk.KEY_KP_Page_Down:
down_itr = model.get_iter(view.get_cursor()[0])
if down_itr:
model.move_after(itr, down_itr)
if __name__ == "__main__":
pass

View File

@@ -446,6 +446,44 @@
<property name="homogeneous">False</property>
</packing>
</child>
<child>
<object class="GtkToolButton" id="up_tool_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Up</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-go-up</property>
<signal name="clicked" handler="on_up" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkToolButton" id="down_tool_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Down</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-go-down</property>
<signal name="clicked" handler="on_down" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkSeparatorToolItem" id="separatortoolitem1">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">False</property>
</packing>
</child>
<child>
<object class="GtkToolItem" id="toolitem1">
<property name="visible">True</property>

View File

@@ -3,6 +3,7 @@ from math import fabs
from app.commons import run_idle
from app.eparser import get_satellites, write_satellites, Satellite, Transponder
from app.ui.main_helper import move_items
from . import Gtk, Gdk
from .dialogs import show_dialog, DialogType
@@ -25,6 +26,8 @@ class SatellitesDialog:
handlers = {"on_open": self.on_open,
"on_remove": self.on_remove,
"on_save": self.on_save,
"on_up": self.on_up,
"on_down": self.on_down,
"on_popup_menu": self.on_popup_menu,
"on_satellite_add": self.on_satellite_add,
"on_transponder_add": self.on_transponder_add,
@@ -97,6 +100,12 @@ class SatellitesDialog:
else:
view.expand_row(path, column)
def on_up(self, item):
move_items(Gdk.KEY_Up, self._sat_view)
def on_down(self, item):
move_items(Gdk.KEY_Down, self._sat_view)
def on_key_release(self, view, event):
""" Handling keystrokes """
key = event.keyval
@@ -106,7 +115,6 @@ class SatellitesDialog:
self.on_remove(view)
elif key == Gdk.KEY_Insert:
pass
# self.on_add(view)
elif ctrl and key == Gdk.KEY_E or key == Gdk.KEY_e:
self.on_edit(view)
elif ctrl and key == Gdk.KEY_s or key == Gdk.KEY_S:
@@ -115,6 +123,10 @@ class SatellitesDialog:
self.on_transponder()
elif key == Gdk.KEY_space:
pass
elif ctrl and key in (Gdk.KEY_Up, Gdk.KEY_Page_Up, Gdk.KEY_KP_Page_Up): # KEY_KP_Page_Up for laptop!
move_items(key, self._sat_view)
elif ctrl and key in (Gdk.KEY_Down, Gdk.KEY_Page_Down, Gdk.KEY_KP_Page_Down):
move_items(key, self._sat_view)
@run_idle
def on_satellites_list_load(self, model):