Пример #1
0
def dispatch(_plugin, _handle, _params):
    params = _log_params(_plugin, int(_handle), _params)
    category = "AutoWidget"
    is_dir = False
    is_type = "files"

    utils.ensure_addon_data()

    mode = params.get("mode", "")
    action = params.get("action", "")
    group = params.get("group", "")
    path = params.get("path", "")
    path_id = params.get("path_id", "")
    target = params.get("target", "")
    widget_id = params.get("id", "")

    if not mode:
        is_dir, category, is_type = menu.root_menu()
    elif mode == "manage":
        if action == "add_group":
            add.add_group(target)
        elif action == "add_path" and group and target:
            add.add_path(group, target)
        elif action == "shift_path" and group and path_id and target:
            edit.shift_path(group, path_id, target)
        elif action == "edit":
            edit.edit_dialog(group, type="group")
        elif action == "edit_path":
            edit.edit_dialog(group, path_id)
        elif action == "edit_widget":
            edit.edit_widget_dialog(widget_id)
        elif action == "copy":
            if group and target:
                add.copy_group(group, target)
    elif mode == "group":
        if not group:
            is_dir, category, is_type = menu.my_groups_menu()
        else:
            is_dir, category, is_type = menu.group_menu(group)
    elif mode == "path":
        try:
            if path_id:
                menu.call_path(path_id)
            elif action in ["static", "cycling"] and group:
                is_dir, category, is_type = menu.path_menu(group, action, widget_id)
            elif action == "merged" and group:
                is_dir, category, is_type = menu.merged_path(group, widget_id)
            elif action == "update" and target:
                refresh.update_path(widget_id, target, path)
        except Exception as e:
            utils.log(traceback.format_exc(), "error")
            is_dir, category, is_type = menu.show_error(
                widget_id if widget_id else path_id
            )
    elif mode == "widget":
        is_dir, category, is_type = menu.active_widgets_menu()
    elif mode == "refresh":
        if not widget_id:
            refresh.refresh_paths()
        else:
            refresh.refresh(widget_id, force=True, single=True)
    elif mode == "tools":
        is_dir, category, is_type = menu.tools_menu()
    elif mode == "force":
        refresh.refresh_paths(notify=True, force=True)
    elif mode == "skindebug":
        utils.call_builtin("Skin.ToggleDebug")
    elif mode == "wipe":
        utils.wipe()
    elif mode == "clean":
        if not widget_id:
            manage.clean(notify=True, all=True)
        else:
            edit.remove_widget(widget_id, over=True)
            utils.update_container(True)
    elif mode == "clear_cache":
        if not target:
            utils.clear_cache()
        else:
            utils.clear_cache(target)
    elif mode == "set_color":
        utils.set_color(setting=True)
    elif mode == "backup" and action:
        if action == "location":
            backup.location()
        elif action == "backup":
            backup.backup()
        elif action == "restore":
            backup.restore()

    if is_dir:
        directory.add_sort_methods(_handle)
        directory.finish_directory(
            _handle, category, is_type if is_type not in [None, "none"] else ""
        )
def dispatch(_plugin, _handle, _params):
    params = _log_params(_plugin, int(_handle), _params)
    category = 'AutoWidget'
    is_dir = False
    is_type = 'files'

    utils.ensure_addon_data()

    mode = params.get('mode', '')
    action = params.get('action', '')
    group = params.get('group', '')
    path = params.get('path', '')
    path_id = params.get('path_id', '')
    target = params.get('target', '')
    widget_id = params.get('id', '')

    if not mode:
        is_dir, category = menu.root_menu()
    elif mode == 'manage':
        if action == 'add_group':
            manage.add_group(target)
        elif action == 'add_path' and group and target:
            manage.add_path(group, target)
        elif action == 'shift_path' and group and path_id and target:
            edit.shift_path(group, path_id, target)
        elif action == 'edit':
            edit.edit_dialog(group, type='group')
        elif action == 'edit_path':
            edit.edit_dialog(group, path_id)
        elif action == 'edit_widget':
            edit.edit_widget_dialog(widget_id)
    elif mode == 'group':
        if not group:
            is_dir, category = menu.my_groups_menu()
        else:
            is_dir, category = menu.group_menu(group)
    elif mode == 'path':
        if path_id:
            menu.call_path(path_id)
        elif action in ['static', 'cycling'] and group:
            is_dir, category = menu.path_menu(group, action, widget_id)
        elif action == 'merged' and group:
            is_dir, category = menu.merged_path(group, widget_id)
        elif action == 'update' and target:
            refresh.update_path(widget_id, target, path)
        is_type = 'videos'
    elif mode == 'widget':
        is_dir, is_category = menu.active_widgets_menu()
    elif mode == 'refresh':
        if not widget_id:
            refresh.refresh_paths()
        else:
            refresh.refresh(widget_id, force=True, single=True)
    elif mode == 'tools':
        is_dir, category = menu.tools_menu()
    elif mode == 'force':
        refresh.refresh_paths(notify=True, force=True)
    elif mode == 'skindebug':
        utils.call_builtin('Skin.ToggleDebug')
    elif mode == 'wipe':
        utils.wipe()
    elif mode == 'clean':
        if not widget_id:
            manage.clean(notify=True, all=True)
        else:
            edit.remove_widget(widget_id, over=True)
            utils.update_container(True)
    elif mode == 'clear_cache':
        utils.clear_cache()
    elif mode == 'set_color':
        utils.set_color(setting=True)
    elif mode == 'backup' and action:
        if action == 'location':
            backup.location()
        elif action == 'backup':
            backup.backup()
        elif action == 'restore':
            backup.restore()

    if is_dir:
        directory.add_sort_methods(_handle)
        directory.finish_directory(_handle, category, is_type)