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 @@
+
+
+
+
+
+
+
+
+