mirror of
https://github.com/DYefremov/DemonEditor.git
synced 2026-02-28 09:31:35 +01:00
enable support for creating a new channel
This commit is contained in:
@@ -1551,6 +1551,7 @@ Author: Dmitriy Yefremov
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="services_add_new_popup_item">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">New</property>
|
||||
<signal name="activate" handler="on_services_add_new" swapped="no"/>
|
||||
|
||||
@@ -102,7 +102,9 @@ class Application(Gtk.Application):
|
||||
# Dynamically active elements depending on the selected view
|
||||
_SERVICE_ELEMENTS = ("services_to_fav_end_move_popup_item", "services_to_fav_move_popup_item",
|
||||
"services_create_bouquet_popup_item", "services_copy_popup_item", "services_edit_popup_item",
|
||||
"services_add_new_popup_item", "services_picon_popup_item", "services_remove_popup_item")
|
||||
"services_mark_not_in_bq_popup_item", "services_clear_not_in_bq_popup_item",
|
||||
"services_clear_new_flag_item", "services_picon_popup_item", "services_remove_popup_item",
|
||||
"services_reference_popup_item")
|
||||
|
||||
_FAV_ELEMENTS = ("fav_cut_popup_item", "fav_paste_popup_item", "fav_locate_popup_item", "fav_iptv_popup_item",
|
||||
"fav_insert_marker_popup_item", "fav_insert_space_popup_item", "fav_edit_sub_menu_popup_item",
|
||||
@@ -3069,18 +3071,15 @@ class Application(Gtk.Application):
|
||||
self._tool_elements[elem].set_sensitive(self._bq_selected and not is_service)
|
||||
else:
|
||||
self._tool_elements[elem].set_sensitive(not_empty and not is_service)
|
||||
for elem in self._SERVICE_ELEMENTS:
|
||||
self._tool_elements[elem].set_sensitive(not_empty and is_service)
|
||||
for elem in self._BOUQUET_ELEMENTS:
|
||||
self._tool_elements[elem].set_sensitive(False)
|
||||
|
||||
[self._tool_elements[elem].set_sensitive(not_empty and is_service) for elem in self._SERVICE_ELEMENTS]
|
||||
[self._tool_elements[elem].set_sensitive(False) for elem in self._BOUQUET_ELEMENTS]
|
||||
for elem in self._FAV_IPTV_ELEMENTS:
|
||||
is_iptv = self._bq_selected and not is_service
|
||||
if self._s_type is SettingsType.NEUTRINO_MP:
|
||||
is_iptv = is_iptv and BqType(self._bq_selected.split(":")[1]) is BqType.WEBTV
|
||||
self._tool_elements[elem].set_sensitive(is_iptv)
|
||||
for elem in self._COMMONS_ELEMENTS:
|
||||
self._tool_elements[elem].set_sensitive(not_empty)
|
||||
|
||||
[self._tool_elements[elem].set_sensitive(not_empty) for elem in self._COMMONS_ELEMENTS]
|
||||
|
||||
if self._s_type is not SettingsType.ENIGMA_2:
|
||||
for elem in self._FAV_ENIGMA_ELEMENTS:
|
||||
@@ -4041,9 +4040,13 @@ class Application(Gtk.Application):
|
||||
if model_name == self.IPTV_MODEL:
|
||||
self.on_iptv_service_edit(model[paths][Column.IPTV_FAV_ID], view)
|
||||
else:
|
||||
ServiceDetailsDialog(self, self._NEW_COLOR).show()
|
||||
ServiceDetailsDialog(self).show()
|
||||
|
||||
def on_services_add_new(self, item):
|
||||
if self._s_type is SettingsType.NEUTRINO_MP:
|
||||
self.show_error_message("Neutrino at the moment not supported!")
|
||||
return
|
||||
|
||||
ServiceDetailsDialog(self, action=Action.ADD).show()
|
||||
|
||||
def on_bouquets_edit(self, view):
|
||||
|
||||
@@ -298,12 +298,13 @@ Author: Dmitriy Yefremov
|
||||
</child>
|
||||
<child type="action">
|
||||
<object class="GtkButton" id="create_button">
|
||||
<property name="label" translatable="yes">Create</property>
|
||||
<property name="label" translatable="yes">Add</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>
|
||||
<property name="valign">center</property>
|
||||
<signal name="clicked" handler="on_create_new" swapped="no"/>
|
||||
<signal name="clicked" handler="on_save" swapped="no"/>
|
||||
<accelerator key="Return" signal="activate"/>
|
||||
</object>
|
||||
</child>
|
||||
<child internal-child="vbox">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# The MIT License (MIT)
|
||||
#
|
||||
# Copyright (c) 2018-2024 Dmitriy Yefremov
|
||||
# Copyright (c) 2018-2025 Dmitriy Yefremov
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -62,10 +62,9 @@ class ServiceDetailsDialog:
|
||||
|
||||
_DIGIT_ENTRY_NAME = "digit-entry"
|
||||
|
||||
def __init__(self, app, new_color, action=Action.EDIT):
|
||||
def __init__(self, app, action=Action.EDIT):
|
||||
handlers = {"on_system_changed": self.on_system_changed,
|
||||
"on_save": self.on_save,
|
||||
"on_create_new": self.on_create_new,
|
||||
"on_tr_edit_toggled": self.on_tr_edit_toggled,
|
||||
"update_reference": self.update_reference,
|
||||
"on_cas_entry_changed": self.on_cas_entry_changed,
|
||||
@@ -89,7 +88,7 @@ class ServiceDetailsDialog:
|
||||
self._old_service = None
|
||||
self._services = app.current_services
|
||||
self._bouquets = app.current_bouquets
|
||||
self._new_color = new_color
|
||||
self._new_color = app._NEW_COLOR
|
||||
self._transponder_services_iters = None
|
||||
self._current_model = None
|
||||
self._current_itr = None
|
||||
@@ -177,20 +176,30 @@ class ServiceDetailsDialog:
|
||||
|
||||
@run_idle
|
||||
def init_default_data_elements(self):
|
||||
srv = Service(None, "s", None, "New", None, None, "New", "TV", None,
|
||||
"1_0_1_0_0_0_000000_0_0_0.png", "0", "10700", "27500", "H", "3/4", "DVB-S", "0.0E",
|
||||
"0:00000000:0:0000:0:0:0:0:0:0", "1:0:1:0:0:0:000000:0:0:0::0:0:0:0",
|
||||
"s 10720000:27500000:0:1:0:0:0:0:0")
|
||||
|
||||
self._old_service = srv
|
||||
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)
|
||||
for elem in self._non_empty_elements.values():
|
||||
elem.set_text(" ")
|
||||
elem.set_text("")
|
||||
[elem.set_text("0") for elem in self._non_empty_elements.values()]
|
||||
|
||||
self._new_check_button.set_active(True)
|
||||
self._name_entry.set_text(srv.service)
|
||||
self._package_entry.set_text(srv.package)
|
||||
self._freq_entry.set_text(srv.freq)
|
||||
self._service_type_combo_box.set_active(0)
|
||||
self._pol_combo_box.set_active(0)
|
||||
self._fec_combo_box.set_active(0)
|
||||
self._sys_combo_box.set_active(0)
|
||||
self._invertion_combo_box.set_active(2)
|
||||
|
||||
self._current_model = get_base_model(self._services_view.get_model())
|
||||
|
||||
def update_data_elements(self):
|
||||
model, paths = self._services_view.get_selection().get_selected_rows()
|
||||
# Unpacking to search for an iterator for the base model
|
||||
@@ -403,9 +412,6 @@ class ServiceDetailsDialog:
|
||||
def on_save(self, item):
|
||||
self.save_data()
|
||||
|
||||
def on_create_new(self, item):
|
||||
self.save_data()
|
||||
|
||||
def save_data(self):
|
||||
if self._s_type is SettingsType.NEUTRINO_MP and self._tr_type is not TrType.Satellite:
|
||||
show_dialog(DialogType.ERROR, transient=self._dialog, text="Not implemented yet!")
|
||||
@@ -423,12 +429,21 @@ class ServiceDetailsDialog:
|
||||
|
||||
def on_new(self):
|
||||
""" Create new service. """
|
||||
service = self.get_service(*self.get_srv_data(), self.get_satellite_transponder_data())
|
||||
show_dialog(DialogType.ERROR, transient=self._dialog, text="Not implemented yet!")
|
||||
srv_data = self.update_service_data()
|
||||
if srv_data:
|
||||
service, data = srv_data
|
||||
self._current_model.append(service + (None, data.get(Column.SRV_BACKGROUND, None)))
|
||||
return True
|
||||
|
||||
def on_edit(self):
|
||||
""" Edit current service. """
|
||||
service, extra_data = self.update_service_data()
|
||||
self._current_model.set(self._current_itr, extra_data)
|
||||
self._current_model.set(self._current_itr, {i: v for i, v in enumerate(service)})
|
||||
self.update_fav_view(self._old_service, service)
|
||||
return True
|
||||
|
||||
def update_service_data(self):
|
||||
fav_id, data_id = self.get_srv_data()
|
||||
# Transponder
|
||||
transponder = self._old_service.transponder
|
||||
@@ -443,7 +458,7 @@ class ServiceDetailsDialog:
|
||||
elif self._tr_type is TrType.ATSC:
|
||||
transponder = self.get_atsc_transponder_data()
|
||||
except Exception as e:
|
||||
log("Edit service error: {}".format(e))
|
||||
log(f"Edit service error: {e}")
|
||||
show_dialog(DialogType.ERROR, transient=self._dialog, text="Error getting transponder parameters!")
|
||||
else:
|
||||
if self._transponder_services_iters:
|
||||
@@ -470,11 +485,9 @@ class ServiceDetailsDialog:
|
||||
if f_flags and Flag.is_new(Flag.parse(f_flags[0])):
|
||||
extra_data[Column.SRV_BACKGROUND] = self._new_color
|
||||
|
||||
self._current_model.set(self._current_itr, extra_data)
|
||||
self._current_model.set(self._current_itr, {i: v for i, v in enumerate(service)})
|
||||
self.update_fav_view(self._old_service, service)
|
||||
self._old_service = service
|
||||
return True
|
||||
|
||||
return service, extra_data
|
||||
|
||||
def update_bouquets(self, fav_id, old_fav_id):
|
||||
self._services.pop(old_fav_id, None)
|
||||
|
||||
Reference in New Issue
Block a user