prototype of edit

This commit is contained in:
Dmitriy Yefremov
2017-12-24 01:40:30 +03:00
parent 3f226e0090
commit 5aade90d96
3 changed files with 113 additions and 11 deletions

View File

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

View File

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

View File

@@ -116,6 +116,17 @@
<signal name="activate" handler="on_paste" object="fav_tree_view" swapped="no"/>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="fav_edit_popup_item">
<property name="label">gtk-edit</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<signal name="activate" handler="on_edit" object="fav_tree_view" swapped="no"/>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="fav_pupup_separator_1">
<property name="visible">True</property>
@@ -1666,6 +1677,24 @@
<signal name="activate" handler="on_to_fav_move" object="services_tree_view" swapped="no"/>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="services_edit_popup_item">
<property name="label">gtk-edit</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">False</property>
<property name="resize_mode">immediate</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<signal name="activate" handler="on_edit" object="services_tree_view" swapped="no"/>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="separatormenuitem2">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="services_remove_popup_item">
<property name="label">gtk-remove</property>