Saltar al contenido
TURNKEYGNU / LINUX
AplicacionesDocumentaciónBlogCapturas de pantallaGitHubTurnKey Hub
文Español
EnglishEspañol中文日本語PortuguêsDeutsch
Home/Confconsole - Sistema de Plugins (para devs)

Documentación

Confconsole - Sistema de Plugins (para devs)

Las opciones de menú ConfConsole se pueden agregar fácilmente a través de plugins.

Los plugins son ficheros fuente de python que se colocan dentro del directorio ConfConsole. ConfConsole cargará cualquier archivo aplicable y los proporcionará al usuario como opciones de menú.

¿Cómo se cargan los plugins?

Primero se genera un árbol de "plugins.d". Cada directorio es un menú o submenú y cada script ejecutable .py es una entrada del menú del directorio padre. plugins.d no tiene una descripción ya que no es elegido en un menú.

Para cada plugin en el árbol, el cuerpo principal (nivel superior) del plugin se ejecuta. Debido a esto no debe poner nada más que configurar código relacionado aquí {¿Dónde?} y definitivamente no debe confiar en otros plugins ya se están estableciendo. Tenga en cuenta que las variables y funciones adicionales avaliables a plugins son NOT avaliable en este punto.

El plugin .py file(s) docstring proporciona la descripción para la entrada menú- en confconsole. Para configurar una descripción de menús de entrada para un directorio, coloque un archivo de texto "descripción" dentro del directorio.

Siguiente, el doOnce función (opcional) se ejecutará una vez después de que cada plugin esté cargado. Tenga en cuenta que mientras todos los plugins serán cargados, no todos los plugins estarán listos en este punto. Sin embargo, usted tiene la capacidad de trabajar con ellos si usted así lo elige. ¿Cómo?

Por último, run función se ejecutará cuando la entrada del menú del plugin se haga clic en confconsole. Si el run función no está presente en un plugin, entonces no se creará la entrada del menú.

¿Cómo interactúo con el usuario?

El console variable es un caso de la Console objeto en confconsole.py. Es una interfaz sencilla usando pythondialog-wrapper para permitir la funcionalidad básica de la consola de gui. Esto, como con todos los demás globales, será avaliable tan pronto como doOnce función se ejecuta. Tenga en cuenta que debe NEVER fuerza cualquier interacción hasta que confconsole se inicie completamente. Esto podría causar problemas en los sin cabeza construye, por ejemplo, que espera ser capaz de alcanzar usage (primera pantalla de confconsole) antes de cualquier interacción.

Los siguientes métodos son avalables de console:

  • infobox(text)

    muestra texto en la pantalla, este es NOT bloqueo si desea que la caja bloquee momentáneamente uso time.sleep(seconds) Después. De lo contrario, esto se utiliza generalmente para mostrar información durante una operación de larga duración.

    devuelve 0.

    ejemplo: console.infobox("some text")

  • yesno(texto)

    muestra texto en la pantalla con un sí/no prompt. devuelve 0 si sí, 1 si no.

    ejemplo: console.yesno("Are you sure?")

  • msgbox(título, texto, botón_label="ok")

    por defecto, muestra texto en la pantalla con un aviso de ok. el ok se puede cambiar a cualquier cosa a través de la etiqueta de botón. devuelve 0

    ejemplo: console.msgbox("Warning", "You may need to restart for changes to take effect")

  • cuadro de entrada (título, texto, init='', ok_label="OK", cancel_label="Cancel")

    muestra texto en la pantalla en el título recuadro con una caja de entrada (comenzando con el valor init) y un aviso de ok/cancel que se puede cambiar a través de la ok_label y cancel_label argumentos.

    devuelve un tuple de (0 si está bien o 1 si cancela, human_input)

    ejemplo: console.inputbox("Email", "Please enter you're email address", "user@example.com")

  • menu(título, texto, opciones, no_cancel=False)

    muestra texto en la pantalla en la caja titulada junto con una lista de opciones seleccionables (elección), y opcionalmente un botón de cancelación.

    Las opciones deben ser una lista o un tuple de longitud 2, cada elemento de cada tuple siendo una lista de cadenas. La primera colección de cuerdas son los nombres de los elementos, la segunda son las descripciones de los elementos.

    devuelve un tuple de (0 si está bien o 1 si cancela, opción)

    ejemplo:
    consola.menu("Número de favorito", "elegir un número",
    [

    [1', "dummy description for 1" ], [ '2', "dummy description for 2" ], [ '3', "dummy description for 3" ]

    ]

    )

  • formulario(título, texto, campos, ok_label="Apply", cancel_label="Cancel")

    muestra texto en la pantalla en la caja de título junto con una serie de cajas de entrada etiquetadas y un aviso de aplicación/cancel (las etiquetas de botón se pueden cambiar a través de argumentos de etiquetas)

    campos deben ser una colección de

    (label, item, field_length, input_length)

    Donde label es una cadena que se mostrará antes de la caja de entrada y item es el texto predeterminado escrito en la entrada del campo.

    field_length y input_length son números enteros que especifican respectivamente el número de caracteres utilizados para mostrar el campo y el número máximo de caracteres que pueden ser Estos valores también determinan la writabilidad de los campos.

    si field_length es 0 no puede ser modificado y su contenido determina el tamaño.

    si field_length es negativo el campo no puede ser alterado y lo opuesto de field_length determina su tamaño. {huh?}

    si la longitud de entrada es 0, se establece en field_length

    el valor de retorno es un tuple de (estatus, campos) donde el estado es (0 si está bien o 1 si cancela). Y los campos son el valor introducido para cada campo en orden.

Consola es esencialmente un envoltorio para python dialog. Aunque no todos los métodos están expuestos y no todos los argumentos a dichos métodos están expuestos, la documentación para el diálogo de pitón sigue siendo aplicable.

http://pythondialog.sourceforge.net/doc/

¿Cómo interactúo con otros plugins?

Para la comunicación entre plugin hay algunas opciones, primero hay imp* funciones, que manejan plugins de importación. Es importante que utilice esto para plugins y no una normalidad import como el imp* función devolverá una versión con el conjunto de globales adicionales. import lo cargará como un archivo de pitón normal.

Las funciones de imp son las siguientes:

  • impByName
    hace exactamente lo que implica, devuelve una lista de todos los plugins que coinciden con el nombre dado
  • impByDir
    devuelve una lista de todos los plugins dentro del nombre del directorio dado (es decir, un subdirectorio de plugins.d)
  • impByPath
    devuelve un solo plugin que coincide con el camino relativo exacto de plugins.d

Además de estas funciones imp hay un evento compartidoManager entre todos los plugins que también se pueden utilizar para la comunicación entre plugins. Este gestor de eventos está expuesto como la variable eventManager

El gestor de eventos es bastante simple. Los eventos pueden ser cualquier objeto problemático, aunque generalmente tiene más sentido usar algo obvio como una cadena. Asimismo, un manipulador de eventos es cualquier objeto callable pero generalmente una función.

Hay 3 funciones expuestas del administrador del evento

  • add_event(name)
    Esto añade un evento a la lista de eventos propiedad del administrador del evento y devuelve una función de conveniencia que disparará el evento. Tenga en cuenta que esta función de conveniencia es exactamente eso y no es necesario.
  • add_handler(nombre, handler)
    Esto añade un manejador para el evento de la corrosponding. Si el evento no existe, se crea silenciosamente. Esta función no devuelve Ninguno
  • fire_event(name)
    esto llama a cada manejador en el orden que fueron registrados para el evento dado.

Otras informaciones

Por ejemplo de un plugin mínimo válido, ver plugins.d/example.py, para verlo en acción sólo chmod +x plugins.d/example.py y ejecutar confconsole.

Para ver ejemplos de otras funcionalidades, consulte el código fuente de los otros plugins proporcionados.

TURNKEYGNU / LINUX

Controla tu infraestructura sin empezar desde cero.

Explorar TurnKey
Acerca deDocumentaciónPreguntas frecuentesBlogGitHub
Libre y de código abiertoSeguro de forma predeterminadaListo para desplegar