From 5aade90d968b048b37df3cd313bc2b88286dce96 Mon Sep 17 00:00:00 2001 From: Dmitriy Yefremov Date: Sun, 24 Dec 2017 01:40:30 +0300 Subject: [PATCH] prototype of edit --- app/ui/main_app_window.py | 31 ++++++++++++++----- app/ui/main_helper.py | 64 +++++++++++++++++++++++++++++++++++++-- app/ui/main_window.glade | 29 ++++++++++++++++++ 3 files changed, 113 insertions(+), 11 deletions(-) diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py index 2a73f1cd..96ac5402 100644 --- a/app/ui/main_app_window.py +++ b/app/ui/main_app_window.py @@ -8,10 +8,10 @@ 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, move_items from . import Gtk, Gdk, LOCKED_ICON, HIDE_ICON from .dialogs import show_dialog, DialogType from .download_dialog import show_download_dialog +from .main_helper import edit_marker, insert_marker, move_items, edit, ViewTarget from .satellites_dialog import show_satellites_dialog from .settings_dialog import show_settings_dialog @@ -21,22 +21,24 @@ class MainAppWindow: _FAV_LIST_NAME = "fav_list_store" _BOUQUETS_LIST_NAME = "bouquets_tree_store" # dynamically active elements depending on the selected view - _SERVICE_ELEMENTS = ("copy_tool_button", "to_fav_tool_button", "copy_menu_item", "services_to_fav_move_popup_item") + _SERVICE_ELEMENTS = ("copy_tool_button", "to_fav_tool_button", "copy_menu_item", "services_to_fav_move_popup_item", + "services_edit_popup_item") _BOUQUET_ELEMENTS = ("edit_tool_button", "new_tool_button", "bouquets_new_popup_item", "bouguets_edit_popup_item") _REMOVE_ELEMENTS = ("remove_tool_button", "delete_menu_item", "services_remove_popup_item", "bouquets_remove_popup_item", "fav_remove_popup_item") _FAV_ELEMENTS = ("up_tool_button", "down_tool_button", "cut_tool_button", "paste_tool_button", "cut_menu_item", "paste_menu_item", "fav_cut_popup_item", "fav_paste_popup_item", "import_m3u_tool_button", - "fav_import_m3u_popup_item", "fav_insert_marker_popup_item") + "fav_import_m3u_popup_item", "fav_insert_marker_popup_item", "fav_edit_popup_item") _LOCK_HIDE_ELEMENTS = ("locked_tool_button", "hide_tool_button") __DYNAMIC_ELEMENTS = ("up_tool_button", "down_tool_button", "cut_tool_button", "copy_tool_button", "paste_tool_button", "to_fav_tool_button", "new_tool_button", "remove_tool_button", "cut_menu_item", "copy_menu_item", "paste_menu_item", "delete_menu_item", "edit_tool_button", - "services_to_fav_move_popup_item", "services_remove_popup_item", "fav_cut_popup_item", - "fav_paste_popup_item", "bouquets_new_popup_item", "bouguets_edit_popup_item", - "services_remove_popup_item", "bouquets_remove_popup_item", "fav_remove_popup_item", - "locked_tool_button", "hide_tool_button", "import_m3u_tool_button", - "fav_import_m3u_popup_item", "fav_insert_marker_popup_item", "fav_edit_marker_popup_item") + "services_to_fav_move_popup_item", "services_edit_popup_item", "locked_tool_button", + "services_remove_popup_item", "fav_cut_popup_item", "fav_paste_popup_item", + "bouquets_new_popup_item", "bouguets_edit_popup_item", "services_remove_popup_item", + "bouquets_remove_popup_item", "fav_remove_popup_item", "hide_tool_button", + "import_m3u_tool_button", "fav_import_m3u_popup_item", "fav_insert_marker_popup_item", + "fav_edit_marker_popup_item", "fav_edit_popup_item") def __init__(self): handlers = {"on_close_main_window": self.on_quit, @@ -56,6 +58,7 @@ class MainAppWindow: "on_cut": self.on_cut, "on_copy": self.on_copy, "on_paste": self.on_paste, + "on_edit": self.on_edit, "on_delete": self.on_delete, "on_new_bouquet": self.on_new_bouquet, "on_bouquets_edit": self.on_bouquets_edit, @@ -182,6 +185,16 @@ class MainAppWindow: self.__rows_buffer.clear() self.on_view_focus(view, None) + def on_edit(self, view): + name = view.get_model().get_name() + if name == self._BOUQUETS_LIST_NAME: + self.on_bouquets_edit(view) + # edit(view, self.__main_window, ViewTarget.BOUQUET) + elif name == self._FAV_LIST_NAME: + edit(view, self.__main_window, ViewTarget.FAV, service_view=self.__services_view, channels=self.__channels) + elif name == self._SERVICE_LIST_NAME: + edit(view, self.__main_window, ViewTarget.SERVICES, fav_view=self.__fav_view, channels=self.__channels) + def on_delete(self, item): """ Delete selected items from views @@ -599,6 +612,8 @@ class MainAppWindow: self.on_locked(None) elif ctrl and key == Gdk.KEY_h or key == Gdk.KEY_H: self.on_hide(None) + elif ctrl and key == Gdk.KEY_E or key == Gdk.KEY_e: + self.on_edit(view) elif key == Gdk.KEY_space and model_name == self._FAV_LIST_NAME: pass diff --git a/app/ui/main_helper.py b/app/ui/main_helper.py index 85d62ba3..66111b88 100644 --- a/app/ui/main_helper.py +++ b/app/ui/main_helper.py @@ -1,11 +1,20 @@ -""" This is helper module for main_app_window """ +""" This is helper module for ui """ +from enum import Enum + from app.eparser import Channel from app.eparser.bouquets import BqServiceType from . import Gtk, Gdk from .dialogs import show_dialog, DialogType -# ***************** Markers section *******************# +class ViewTarget(Enum): + """ Used for set target view """ + BOUQUET = 0 + FAV = 1 + SERVICES = 2 + + +# ***************** Markers *******************# def insert_marker(view, bouquets, selected_bouquet, channels, parent_window): """" Inserts marker into bouquet services list. """ @@ -48,7 +57,7 @@ def edit_marker(view, bouquets, selected_bouquet, channels, parent_window): bq_services.insert(index, new_fav_id) -# ***************** Movement section *******************# +# ***************** Movement *******************# def move_items(key, view): """ Move items in tree view """ @@ -80,5 +89,54 @@ def move_items(key, view): model.move_after(itr, down_itr) +# ***************** Edit *******************# + +def edit(view, parent_window, target, fav_view=None, service_view=None, channels=None): + model, paths = view.get_selection().get_selected_rows() + + if not paths: + return + elif len(paths) > 1: + show_dialog(DialogType.ERROR, parent_window, "Please, select only one item!") + return + + itr = model.get_iter(paths) + f_id = None + channel_name = None + + if target is ViewTarget.SERVICES: + name, fav_id = model.get(itr, 3, 16) + f_id = fav_id + response = show_dialog(DialogType.INPUT, parent_window, name) + if response == Gtk.ResponseType.CANCEL: + return + channel_name = response + model.set_value(itr, 3, response) + if fav_view is not None: + for row in fav_view.get_model(): + if row[7] == fav_id: + row[2] = response + break + elif target is ViewTarget.FAV: + name, fav_id = model.get(itr, 2, 7) + f_id = fav_id + response = show_dialog(DialogType.INPUT, parent_window, name) + if response == Gtk.ResponseType.CANCEL: + return + + channel_name = response + model.set_value(itr, 2, response) + + if service_view is not None: + for row in service_view.get_model(): + if row[16] == fav_id: + row[3] = response + break + + old_ch = channels.get(f_id, None) + if old_ch: + channels[f_id] = Channel(*old_ch[0:3], channel_name, *old_ch[4:]) + + if __name__ == "__main__": pass diff --git a/app/ui/main_window.glade b/app/ui/main_window.glade index 19d30e59..752d403b 100644 --- a/app/ui/main_window.glade +++ b/app/ui/main_window.glade @@ -116,6 +116,17 @@ + + + gtk-edit + True + False + False + True + True + + + True @@ -1666,6 +1677,24 @@ + + + gtk-edit + True + False + False + immediate + True + True + + + + + + True + False + + gtk-remove