📄 st-handlers.c
字号:
/* * Copyright (c) 2002, 2003, 2004 Jean-Yves Lefort * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Jean-Yves Lefort nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */#include "config.h"#include <string.h>#include <glib/gi18n.h>#include "sg-util.h"#include "st-plugin.h"#include "st-dialog-api.h"#include "st-handler.h"#include "st-handlers.h"#include "st-bookmarks.h"#include "st-preselections.h"/*** variable declarations ***************************************************/GSList *st_handlers_list = NULL;GSList *st_handlers_full_list = NULL;/*** API implementation ******************************************************//** * st_handlers_add: * @handler: a handler to add. * * Adds @handler to streamtuner. The reference count of @handler will * not be incremented. **/voidst_handlers_add (STHandler *handler){ GError *err = NULL; if (st_handler_validate(handler, &err)) { st_handler_complete(handler); st_handlers_list = g_slist_append(st_handlers_list, handler); st_handlers_full_list = g_slist_append(st_handlers_full_list, handler); } else { if (st_plugin_current) st_error_dialog(_("A plugin error has occurred"), _("In %s, handler %s is malformed and cannot be registered (%s).\n" "\n" "You should report this problem to the plugin maintainer."), st_plugin_get_filename(st_plugin_current), st_handler_get_name(handler), err->message); else st_error_dialog(_("A handler error has occurred"), _("Handler %s is malformed and cannot be registered (%s).\n" "\n" "You should report this problem to the streamtuner maintainer."), st_handler_get_name(handler), err->message); g_error_free(err); }}/*** private implementation **************************************************/voidst_handlers_load_static (void){ st_bookmarks_init(); st_preselections_init();}STHandler *st_handlers_find_by_name (const char *name){ GSList *l; g_return_val_if_fail(name != NULL, NULL); SG_LIST_FOREACH(l, st_handlers_list) if (! strcmp(st_handler_get_name(l->data), name)) return l->data; return NULL;}voidst_handlers_reorder (GSList *ordered_list){ GSList *l; SG_LIST_FOREACH(l, st_handlers_list) if (! g_slist_find(ordered_list, l->data)) ordered_list = g_slist_append(ordered_list, l->data); g_slist_free(st_handlers_full_list); st_handlers_full_list = ordered_list; g_slist_free(st_handlers_list); st_handlers_list = NULL; SG_LIST_FOREACH(l, st_handlers_full_list) if (! st_handler_is_dummy(l->data)) st_handlers_list = g_slist_append(st_handlers_list, l->data);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -