📄 pst-handler.c
字号:
{ return pst_handler_set_string(self, value, st_handler_set_label);}static intpst_handler_set_description (PSTHandler *self, PyObject *value, void *closure){ return pst_handler_set_string(self, value, st_handler_set_description);}static intpst_handler_set_home (PSTHandler *self, PyObject *value, void *closure){ return pst_handler_set_string(self, value, st_handler_set_home);}static intpst_handler_set_icon (PSTHandler *self, PyObject *value, void *closure){ GObject *pixbuf; if (! value) { PyErr_SetString(PyExc_TypeError, _("cannot unset icon")); return -1; } pixbuf = pst_pygobject_get(value, GDK_TYPE_PIXBUF); if (! pixbuf) return -1; st_handler_set_icon_from_pixbuf(self->handler, GDK_PIXBUF(pixbuf)); return 0;}static intpst_handler_set_stock_categories (PSTHandler *self, PyObject *value, void *closure){ if (value) { GNode *categories; if (! pst_categories_sequence_as_gnode(value, &categories)) return -1; st_handler_set_stock_categories(self->handler, categories); } else st_handler_set_stock_categories(self->handler, NULL); return 0;}static intpst_handler_set_flags (PSTHandler *self, PyObject *value, void *closure){ if (value) { int flags; flags = PyInt_AsLong(value); if (flags == -1) return -1; st_handler_set_flags(self->handler, flags); } else st_handler_set_flags(self->handler, 0); return 0;}static intpst_handler_set_stream_version (PSTHandler *self, PyObject *value, void *closure){ if (value) { int version; version = PyInt_AsLong(value); if (version == -1) return -1; st_handler_set_stream_version(self->handler, version); } else st_handler_set_stream_version(self->handler, 0); return 0;}/*** object methods **********************************************************/static PyObject *pst_handler_add_field (PSTHandler *self, PyObject *args){ PSTHandlerField *pfield; if (! PyArg_ParseTuple(args, "O!", &PSTHandlerField_Type, &pfield)) return NULL; st_handler_add_field(self->handler, pfield->field); return pst_none();}static PyObject *pst_handler_notice (PSTHandler *self, PyObject *args){ const char *message; if (! PyArg_ParseTuple(args, "s", &message)) return NULL; st_handler_notice(self->handler, "%s", message); return pst_none();}/*** streamtuner callbacks ***************************************************/static gbooleanpst_handler_reload_cb (PythonCategory *category, GNode **categories, GList **streams, PSTCallbackInfo *info, GError **err){ PyObject *result; gboolean status; PST_THREADS_ENTER result = PyObject_CallMethod(info->object, info->method, "O", category->p); status = pst_handler_reload_parse_result(result, (Converter) pst_categories_sequence_as_gnode, categories, (Converter) pst_streams_sequence_as_glist, streams); if (! status) pst_set_error(err); Py_XDECREF(result); PST_THREADS_LEAVE return status;}static gbooleanpst_handler_reload_multiple_cb (GNode **categories, GHashTable **streams, PSTCallbackInfo *info, GError **err){ PyObject *result; gboolean status; PST_THREADS_ENTER result = PyObject_CallMethod(info->object, info->method, NULL); status = pst_handler_reload_parse_result(result, (Converter) pst_categories_sequence_as_gnode, categories, (Converter) pst_streams_mapping_as_ghashtable, streams); if (! status) pst_set_error(err); Py_XDECREF(result); PST_THREADS_LEAVE return status;}static gbooleanpst_handler_reload_parse_result (PyObject *result, Converter converter1, gpointer ptr1, Converter converter2, gpointer ptr2){ int len; g_return_val_if_fail(converter1 != NULL, FALSE); g_return_val_if_fail(ptr1 != NULL, FALSE); g_return_val_if_fail(converter2 != NULL, FALSE); g_return_val_if_fail(ptr2 != NULL, FALSE); if (! result) return FALSE; len = PySequence_Length(result); if (len == -1) return FALSE; if (len != 2) { PyErr_SetString(PyExc_TypeError, _("sequence length must be 2")); return FALSE; } if (! pst_handler_reload_convert(result, 0, converter1, ptr1)) return FALSE; if (! pst_handler_reload_convert(result, 1, converter2, ptr2)) return FALSE; return TRUE;}static gbooleanpst_handler_reload_convert (PyObject *sequence, int n, Converter converter, gpointer ptr){ PyObject *object; gboolean status; g_return_val_if_fail(sequence != NULL, FALSE); g_return_val_if_fail(converter != NULL, FALSE); g_return_val_if_fail(ptr != NULL, FALSE); object = PySequence_ITEM(sequence, n); if (! object) return FALSE; status = converter(object, ptr); Py_DECREF(object); return status;}static GtkWidget *pst_handler_preferences_widget_new_cb (PSTCallbackInfo *info){ PyObject *result; GtkWidget *widget = NULL; PST_THREADS_ENTER result = PyObject_CallMethod(info->object, info->method, NULL); if (result) { widget = (GtkWidget *) pst_pygobject_get(result, GTK_TYPE_WIDGET); if (! widget) PyErr_Print(); Py_DECREF(result); } else PyErr_Print(); PST_THREADS_LEAVE return widget;}/*** C API *******************************************************************/gbooleanpst_handler_register (PyObject *module){ PyTypeObject *ptr = &PSTHandler_Type; g_return_val_if_fail(module != NULL, FALSE); if (PyType_Ready(&PSTHandler_Type) < 0) return FALSE; Py_INCREF(&PSTHandler_Type); PyModule_AddObject(module, "Handler", (PyObject *) ptr); PyModule_AddIntConstant(module, "HANDLER_NO_CATEGORIES", ST_HANDLER_NO_CATEGORIES); PyModule_AddIntConstant(module, "HANDLER_CONFIRM_DELETION", ST_HANDLER_CONFIRM_DELETION); PyModule_AddIntConstant(module, "HANDLER_STOCK_FIELD_NAME", ST_HANDLER_STOCK_FIELD_NAME); PyModule_AddIntConstant(module, "HANDLER_STOCK_FIELD_GENRE", ST_HANDLER_STOCK_FIELD_GENRE); PyModule_AddIntConstant(module, "HANDLER_STOCK_FIELD_DESCRIPTION", ST_HANDLER_STOCK_FIELD_DESCRIPTION); PyModule_AddIntConstant(module, "HANDLER_STOCK_FIELD_HOMEPAGE", ST_HANDLER_STOCK_FIELD_HOMEPAGE); PyModule_AddIntConstant(module, "HANDLER_STOCK_FIELD_URI_LIST", ST_HANDLER_STOCK_FIELD_URI_LIST); return TRUE;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -