2019-02-05 16:58:54 +03:00
|
|
|
from app.commons import run_idle
|
2019-02-06 00:19:04 +03:00
|
|
|
from app.eparser import get_bouquets, get_services
|
|
|
|
|
from app.properties import Profile
|
2019-02-05 16:58:54 +03:00
|
|
|
from app.ui.dialogs import get_message
|
|
|
|
|
from .uicommons import Gtk, UI_RESOURCES_PATH
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ImportDialog:
|
|
|
|
|
def __init__(self, transient, path, profile):
|
2019-02-06 00:19:04 +03:00
|
|
|
handlers = {"on_cursor_changed": self.on_cursor_changed,
|
|
|
|
|
"on_info_button_toggled": self.on_info_button_toggled,
|
|
|
|
|
"on_selected_toggled": self.on_selected_toggled,
|
|
|
|
|
"on_info_bar_close": self.on_info_bar_close}
|
2019-02-05 16:58:54 +03:00
|
|
|
|
|
|
|
|
builder = Gtk.Builder()
|
|
|
|
|
builder.set_translation_domain("demon-editor")
|
|
|
|
|
builder.add_from_file(UI_RESOURCES_PATH + "import_dialog.glade")
|
|
|
|
|
builder.connect_signals(handlers)
|
|
|
|
|
|
2019-02-06 00:19:04 +03:00
|
|
|
self._bouquets = {}
|
|
|
|
|
self._services = {}
|
|
|
|
|
|
2019-02-05 16:58:54 +03:00
|
|
|
self._dialog_window = builder.get_object("dialog_window")
|
|
|
|
|
self._dialog_window.set_transient_for(transient)
|
2019-02-06 00:19:04 +03:00
|
|
|
self._main_model = builder.get_object("main_list_store")
|
2019-02-05 16:58:54 +03:00
|
|
|
self._main_view = builder.get_object("main_view")
|
2019-02-06 00:19:04 +03:00
|
|
|
self._services_view = builder.get_object("services_view")
|
|
|
|
|
self._services_model = builder.get_object("services_list_store")
|
|
|
|
|
self._services_box = builder.get_object("services_box")
|
|
|
|
|
self._info_check_button = builder.get_object("info_check_button")
|
2019-02-05 16:58:54 +03:00
|
|
|
self._info_bar = builder.get_object("info_bar")
|
|
|
|
|
self._message_label = builder.get_object("message_label")
|
|
|
|
|
|
|
|
|
|
self.init_data(path, profile)
|
|
|
|
|
|
|
|
|
|
def show(self):
|
|
|
|
|
self._dialog_window.show()
|
|
|
|
|
|
|
|
|
|
def init_data(self, path, profile):
|
|
|
|
|
try:
|
|
|
|
|
bouquets = get_bouquets(path, profile)
|
|
|
|
|
for bqs in bouquets:
|
|
|
|
|
for bq in bqs.bouquets:
|
2019-02-06 00:19:04 +03:00
|
|
|
self._main_model.append((bq.name, bq.type, True))
|
|
|
|
|
self._bouquets[(bq.name, bq.type)] = bq.services
|
|
|
|
|
# Note! Getting default format ver. 4
|
|
|
|
|
services = get_services(path, profile, 4 if profile is Profile.ENIGMA_2 else 0)
|
|
|
|
|
for srv in services:
|
|
|
|
|
self._services[srv.fav_id] = srv
|
2019-02-05 16:58:54 +03:00
|
|
|
self.show_info_message(get_message("Not implemented yet!"), Gtk.MessageType.WARNING)
|
|
|
|
|
except FileNotFoundError as e:
|
|
|
|
|
self.show_info_message(str(e), Gtk.MessageType.ERROR)
|
|
|
|
|
|
2019-02-06 00:19:04 +03:00
|
|
|
@run_idle
|
|
|
|
|
def on_cursor_changed(self, view):
|
|
|
|
|
if not self._info_check_button.get_active():
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
self._services_model.clear()
|
|
|
|
|
model, paths = view.get_selection().get_selected_rows()
|
|
|
|
|
bq_services = self._bouquets.get(model.get(model.get_iter(paths[0]), 0, 1))
|
|
|
|
|
for bq_srv in bq_services:
|
|
|
|
|
srv = self._services.get(bq_srv.data, None)
|
|
|
|
|
if srv:
|
|
|
|
|
self._services_model.append((srv.service, srv.service_type))
|
|
|
|
|
|
|
|
|
|
def on_info_button_toggled(self, button):
|
|
|
|
|
active = button.get_active()
|
|
|
|
|
self._services_box.set_visible(active)
|
|
|
|
|
|
|
|
|
|
def on_selected_toggled(self, toggle, path):
|
|
|
|
|
self._main_model.set_value(self._main_model.get_iter(path), 2, not toggle.get_active())
|
|
|
|
|
|
2019-02-05 16:58:54 +03:00
|
|
|
@run_idle
|
|
|
|
|
def show_info_message(self, text, message_type):
|
|
|
|
|
self._info_bar.set_visible(True)
|
|
|
|
|
self._info_bar.set_message_type(message_type)
|
|
|
|
|
self._message_label.set_text(text)
|
|
|
|
|
|
2019-02-06 00:19:04 +03:00
|
|
|
@run_idle
|
|
|
|
|
def on_info_bar_close(self, bar=None, resp=None):
|
|
|
|
|
self._info_bar.set_visible(False)
|
|
|
|
|
|
2019-02-05 16:58:54 +03:00
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
pass
|