Ewl_Widget *ewl_io_manager_convert(Ewl_Widget *w, const char *from_mime, const char *to_mime); unsigned int ewl_io_manager_can_convert(const char *from_mime, const char *to_mime); void ewl_io_manager_plugin_mime_register(const char *mime, Ewl_IO_Manager_Plugin *plugin); void ewl_io_manager_plugin_convert_register(const char *from_type, const char *to_mime, Ewl_IO_Manager_Plugin *plugin); The _mime_register is used to specify mime types that we load/save. So: _mime_register("application/pdf", pdf_plugin) _mime_register("image", image_plugin), _mime_register("text", text_plain_plugin) _mime_register("text/html", html_plugin) the _convert_register calls are used to register what we can convert. They take the widget type name and the mime we convert too. so: _convert_register("widget/text", "application/pdf", pdf_plugin); _convert_regiseter("application/pdf", "widget/pdf", pdf_plugin); _convert_register("widget/pdf", "image/jpeg", pdf_plugin,); _convert_register("widget/pdf", "image/png", pdf_plugin); _convert_register("widget/text", "text/html", html_plugin); _convert_type("widget/image", "image/png", image_plugin);