Manual de Calibre | Page 192

Manual de usuario de calibre, Publicación 2.73.0 Un complemento de interfaz de usuario Este complemento ocupará unos pocos archivos (para mantener el código más limpio). Le mostrará cómo obtener recursos (imágenes o archivos de datos) desde el archivo zip del complemento, cómo permitir a los usuarios configurar el complemento, cómo crear elementos en la interfaz de usuario de calibre y cómo acceder y consultar la base de datos de libros de calibre. Puede descargar este complemento desde interface_demo_plugin.zip81 Lo primero que hay que tener en cuenta es que este archivo zip tiene muchos más archivos en su interior, explicados a continuación, preste especial atención a plugin-import-name-interface_demo.txt. plugin-import-name-interface_demo.txt Un archivo de texto vacío utilizado para activar la gestión de múltiples archivos en el complemento. Este archivo debe estar presente en todos los complementos que utilicen más de un archivo .py. Debe quedar vacío y su nombre debe ser de la forma: pluginimport-name-some_name.txt. La presencia de este archivo le permite importar código de los archivos .py presentes dentro del archivo zip, usando una sentencia como ésta: from calibre_plugins.some_name.some_module import some_object El prefijo calibre_plugins siempre debe estar presente. some_name proviene del nombre del archivo de texto vacío. some_module se refiere al archivo some_module.py dentro del archivo zip. Tenga en cuenta que esta importación es tan potente como las importaciones normales en python. Puede crear paquetes y subpaquetes de módulos .py dentro del archivo zip, igual que lo haría normalmente (definiendo __init__.py en cada subdirectorio), y todo debería funcionar. El nombre que utilice para some_name entra en un espacio global de nombres compartido por todos los complementos, así que hágalo tan único como sea posible. Pero recuerde que debe ser un identificador python válido (sólo letras, números y guión bajo). __init__.py Como antes, el archivo que define la clase del complemento main.py Este archivo contiene el código real que realiza alguna operación útil ui.py Este archivo define la interfaz del complemento images/icon.png El icono para este complemento about.txt Un archivo de texto con información acerca de este complemento translations Una carpeta que contiene archivos .mo con las traducciones de la interfaz de usuario del complemento a diferentes idiomas. Ver más adelante para más detalles. Ahora veamos el código. __init__.py Primero, el __init__.py obligatorio para definir los metadatos del complemento: # The class that all Interface Action plugin wrappers must inherit from from calibre.customize import InterfaceActionBase class InterfacePluginDemo(InterfaceActionBase): ''' This class is a simple wrapper that provides information about the actual plugin class. The actual interface plugin class is called InterfacePlugin and is defined in the ui.py file, as specified in the actual_plugin field below. 81 https://calibre-ebook.com/downloads/interface_demo_plugin.zip 188 Capítulo 1. Secciones