Separation of service creation and editing

This commit is contained in:
DYefremov
2018-03-10 17:49:53 +03:00
parent 88e19e2fd1
commit f7f230f40e
4 changed files with 51 additions and 8 deletions

View File

@@ -21,7 +21,7 @@ from .main_helper import edit_marker, insert_marker, move_items, rename, ViewTar
from .picons_dialog import PiconsDialog
from .satellites_dialog import show_satellites_dialog
from .settings_dialog import show_settings_dialog
from .service_details_dialog import ServiceDetailsDialog
from .service_details_dialog import ServiceDetailsDialog, Action
class MainAppWindow:
@@ -63,7 +63,8 @@ class MainAppWindow:
"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", "fav_locate_popup_item",
"services_copy_popup_item", "services_picon_popup_item", "fav_picon_popup_item")
"services_copy_popup_item", "services_picon_popup_item", "fav_picon_popup_item",
"services_add_new_popup_item")
def __init__(self):
handlers = {"on_close_main_window": self.on_quit,
@@ -112,7 +113,8 @@ class MainAppWindow:
"on_search_down": self.on_search_down,
"on_search_up": self.on_search_up,
"on_search": self.on_search,
"on_service_edit": self.on_service_edit}
"on_service_edit": self.on_service_edit,
"on_services_add_new": self.on_services_add_new}
self.__options = get_config()
self.__profile = self.__options.get("profile")
@@ -785,6 +787,8 @@ class MainAppWindow:
for elem in self._COMMONS_ELEMENTS:
self.__tool_elements[elem].set_sensitive(not_empty)
self.__tool_elements["services_add_new_popup_item"].set_sensitive(len(self.__bouquets_model))
def on_hide(self, item):
self.set_service_flags(Flag.HIDE)
@@ -932,6 +936,15 @@ class MainAppWindow:
self.__bouquets)
dialog.show()
def on_services_add_new(self, item):
dialog = ServiceDetailsDialog(self.__main_window,
self.__options,
self.__services_view,
self.__services,
self.__bouquets,
action=Action.ADD)
dialog.show()
@run_idle
def update_picons(self):
update_picons(self.__options.get(self.__profile).get("picons_dir_path"), self.__picons, self.__services_model)

View File

@@ -355,6 +355,12 @@
<signal name="activate" handler="on_copy" object="services_tree_view" swapped="no"/>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="separatormenuitem7">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="services_edit_popup_item">
<property name="label">gtk-edit</property>
@@ -367,6 +373,16 @@
<signal name="activate" handler="on_service_edit" object="services_tree_view" swapped="no"/>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="services_add_new_popup_item">
<property name="label">gtk-new</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<signal name="activate" handler="on_services_add_new" swapped="no"/>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="separatormenuitem2">
<property name="visible">True</property>

View File

@@ -261,9 +261,8 @@
</packing>
</child>
<child>
<object class="GtkButton" id="save_as_button">
<object class="GtkButton" id="create_button">
<property name="label">gtk-new</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Create and save as new service</property>

View File

@@ -1,4 +1,5 @@
import re
from enum import Enum
from functools import lru_cache
from app.commons import run_idle
@@ -11,6 +12,11 @@ from app.ui.main_helper import get_base_model
from . import Gtk, Gdk, UI_RESOURCES_PATH, HIDE_ICON, TEXT_DOMAIN
class Action(Enum):
EDIT = 0
ADD = 1
class ServiceDetailsDialog:
_DATA_ID = "{:04x}:{:08x}:{:04x}:{:04x}:{}:{}"
@@ -24,7 +30,7 @@ class ServiceDetailsDialog:
"rate_entry", "pls_code_entry", "stream_id_entry", "tr_flag_entry", "namespace_entry",
"srv_type_entry")
def __init__(self, transient, options, view, services, bouquets):
def __init__(self, transient, options, view, services, bouquets, action=Action.EDIT):
handlers = {"on_system_changed": self.on_system_changed,
"on_save": self.on_save,
"on_create_new": self.on_create_new,
@@ -41,6 +47,7 @@ class ServiceDetailsDialog:
self._profile = Profile(options["profile"])
self._satellites_xml_path = options.get(self._profile.value)["data_dir_path"] + "satellites.xml"
self._services_view = view
self._action = action
self._old_service = None
self._services = services
self._bouquets = bouquets
@@ -48,6 +55,8 @@ class ServiceDetailsDialog:
self._current_model = None
self._current_itr = None
self._pattern = re.compile("\D")
self._apply_button = builder.get_object("apply_button")
self._create_button = builder.get_object("create_button")
# style
self._style_provider = Gtk.CssProvider()
self._style_provider.load_from_path(UI_RESOURCES_PATH + "style.css")
@@ -106,7 +115,13 @@ class ServiceDetailsDialog:
self._network_id_entry, self._namespace_entry, self._fec_combo_box,
self._rate_entry)
self.update_data_elements()
if self._action is Action.EDIT:
self.update_data_elements()
elif self._action is Action.ADD:
self._apply_button.set_visible(False)
self._create_button.set_visible(True)
self._tr_edit_switch.set_sensitive(False)
self.on_tr_edit_toggled(self._tr_edit_switch.set_active(True), True)
def show(self):
response = self._dialog.run()
@@ -453,7 +468,7 @@ class ServiceDetailsDialog:
@run_idle
def on_tr_edit_toggled(self, switch: Gtk.Switch, active):
if active:
if active and self._action is Action.EDIT:
self._transponder_services_iters = []
response = TransponderServicesDialog(self._dialog,
self._current_model,