diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py index 31fbfb39..2a73f1cd 100644 --- a/app/ui/main_app_window.py +++ b/app/ui/main_app_window.py @@ -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)): diff --git a/app/ui/main_helper.py b/app/ui/main_helper.py index 27cd5616..85d62ba3 100644 --- a/app/ui/main_helper.py +++ b/app/ui/main_helper.py @@ -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 diff --git a/app/ui/satellites_dialog.glade b/app/ui/satellites_dialog.glade index 64d1ab5c..811ab949 100644 --- a/app/ui/satellites_dialog.glade +++ b/app/ui/satellites_dialog.glade @@ -446,6 +446,44 @@ False + + + True + False + Up + True + gtk-go-up + + + + False + True + + + + + True + False + Down + True + gtk-go-down + + + + False + True + + + + + True + False + + + False + False + + True diff --git a/app/ui/satellites_dialog.py b/app/ui/satellites_dialog.py index e3245483..1615173e 100644 --- a/app/ui/satellites_dialog.py +++ b/app/ui/satellites_dialog.py @@ -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):