# &kommander; básico

Tamara
King

     tik@acm.org

Eric
Laffoon

     sequitur@kde.org

Juan Manuel
García Molina

    juanma@superiodico.net

Traductor

# &kommander; básico

## Conceptos

&kommander; se diseñó orignariamente con un concepto muy simple que ha demostrado ser revolucionario entre las herramientas visuales de diseño. Típicamente, estas herramientas permitían crear cuadros de diálogo y, posiblemente, interfaces con ventana principal. Por supuesto, un interfaz de ventana principal es la ventana principal del programa que típicamente tiene menús, barra de herramientas, barra de estado y el área de la aplicación. Los cuadros de diálogo son ventanas hija que no suelen tener menús y se llaman así porque su propósito es establecer un diálogo o intercambiar información entre usted y la aplicación principal. Los elementos de un cuadro de diálogo se llaman widgets, y sirven de enlace para su programa. &kommander; es diferente porque es inherente a lo no programático. Usa el concepto de asociación de texto con los widgets del cuadro de diálogo. Inicialmente, a esto se le llamó Texto asociado, pero ahora se le llama Texto de &kommander;. Los widgets de los cuadros de diálogo de &kommander; pueden incluir el contenido de otros widgets como referencia y un widget puede referenciar su propio contenido de una forma especial que es algo así: @widgetText. Los especiales son comandos que no tienen ningún significado especial en &kommander;. Por tanto, si creó un cuadro de diálogo con dos widgets de edición de línea y llamó al primero Nombre y al segundo Apellido, podría crear un botón y definir el texto de &kommander; como Mi nombre es @Nombre y mis apellidos son @Apellidos. Tendría que definir @widgetText en los widgets del nombre y los apellidos. ¿Recuerda? Necesitamos decirle a &kommander; que haga referencia al texto que hay en ellos. Podría hacerlo desde Konsole, y la salida sería la cadena. Así podría hacer referncia al nombre como: @Nombre -> obtiene el contenido del elementoobtiene el elemento denominado Nombre(@Nombre). En este caso, @Nombre devolvería Eric: @Nombre -> @widgetText -> Eric.

Así de simple es el núcleo de &kommander;. Lo que pueda hacer con esto es lo verdaderamente interesante. En primer lugar, esto no es nada en comparación a la aproximación de la herramienta basada en un lenguaje, &kommander; no necesita sentencias de programación para definir estas operaciones. Esto hace que los desarrolladores de &kommander; avancen más rápido. Para los usuarios finales, es mucho más sencillo que aprender que las construcciones de un lenguaje. Esto significa que se puede centrar en la tarea en lugar de hacer a mano eternamente la referencia material. Al principio, cuando a la gente se le presenta una herramienta como &kommander;, la primera pregunta es ¿Dónde puede usar una herramienta tan interesante como esta? Como resulta evidente, la manipulación de cadenas se usa en casi cualquier sitio que pueda imaginar.

Entonces, ¿qué puede hacer &kommander;? Aquí tiene una lista detallada de las operaciones básicas. &kommander; puede:

1. Pasar cadenas al programa llamante por medio de la salida estándar.

2. Hacer llamadas a programas ejecutables.

3. Usar &DCOP; para interactuar con programas de &kde;.

Si no es un programadorlo que debe saber es lo siguiente. En primer lugar, si lanza &kommander; desde una consola, la consola es el programa llamante. Aquí hay una relación padre-hijo. El envío de un mensaje a la consola se hace con la salida estándar (stdout, llamada así porque también hay una salida de error) del programa hijo. Es interesante porque algunos programas como &quantaplus; usan la salida estándar para recibir información de los programas que lanzan. Así que los cuadros de diálogo de &kommander; pueden producir directamente una salida de cadenas de texto en el editor de &quantaplus; si lo llama &quantaplus;. Esto significa que los cuadros de diálogo de &kommander; pueden ser extensiones útiles para los programas.

El segundo caso es llamar a un ejecutable. Cualquier programa que funcione en el sistema es un ejecutable. Incluso un guión que corre con un intérprete técnicamente también se ejecuta. &kommander; puede hacer correr comandos como en la consola aunque lo haga desde el menú. Por tanto, si quiere abrir &GIMP;, debería tener un botón que tuviera la cadena gimp y ponerle algún especial como: @exec(gimp). Sólo con eso, se abrirá &GIMP; cada vez que lo use. También puede ejecutar ls -l, pero sólo vería la salida si lo hubiera lanzado desde una consola.

El tercer caso también es muy interesante. &DCOP; es la abreviatura de Desktop COmmunication Protocol (n.t. Protocolo de Comunicación con el Escritorio) de &kde;, y es verdaderamente potente. Vaya y haga funcionar el programa kdcop y échele un vistazo. Rápidamente se dará cuenta de que casi cualquier aplicación de &kde; que se haya construido conforme a los estándares tiene cosas que suceden con &DCOP; y las que además están bien diseñadas tienen muchos sucesos de este tipo. Con &DCOP; puede consultar información de todos los tipos así como definir valores de widgets y más. Hay una sección sobre cómo usar &DCOP; en este manual. &kommander; puede enviar &DCOP; a cualquier programa de &kde;, así como ser controlado por &DCOP;. De hecho, puede enviar &DCOP; desde la línea de órdenes a cualquier programa de &kde;. Entonces, ¿qué es lo bueno de todo esto? Pues que, si quiere hacer un elevado número de comandos, se dará cuenta de que la línea de órdenes de &DCOP; está bien para comandos cortos, pero puede provocar retrasos si, por ejemplo, se llama varios cientos de veces desde un bucle. Por ello, &kommander; tiene un especial @dcop, porque es aproximadamente 1000 veces más rápido. Debido a que &kommander; puede enviar y recibir &DCOP;,puede usar &DCOP; para hacer los guiones con &kommander;. Y por eso además tenemos un especial para &DCOP; local, @ldcop, que le permite teclear mucho menos para emitir un comando.

¿Son éstos todos los conceptos fundamentales de &kommander;? No, pero le deberían ayudar a hacerse una idea de cómo funciona y para que no interprete lo que le rodea como un idioma extranjero. Hay algunos más. Señales y slots son los gestores de eventos de &kommander;. Un evento de un programa significa básicamente que ha ocurrido algo, como que se ha creado un widget o que ha cambiado su texto. Estos cambios emiten señales y puede conectar esas señales a un slot de recepción que haga algo cuando suceda el evento. Uno de los usos en &kommander; es similar a &kommander; Text, Population Text. Population Text poblará un widget cuando se llame. Igual que &kommander; Text, Population Text puede tener cadenas de texto o guiones.

Con este debería tener claros los conceptos básicos para comenzar a usar &kommander;. Intentamos mantener bajo el número de especiales y usamos mucho &DCOP;. La ida es que queremos mantener la potencia de &kommander;, pero de forma consistente y fluida como sea posible. Descubrirá que puede incorporar cualquier lenguaje de guiones que necesite a &kommander;, e incluso varios lenguajes de guiones en un cuadro de diálogo. La restante información del documento asumen que ya está familiarizado con los conceptos y términos que se han presentado aquí. Los ejemplos y tutoriales también son muy útiles para comprender qué se puede hacer con &kommander;.

&editor;

## El ejecutor

El ejecutor, llamado kmdr-executor, hace funcionar los guiones de &kommander;. Carga los archivos `.kmdr` y produce dinámicamente un cuadro de diálogo plenamente operativo.

### Ejecutor para programadores

Los desarrolladores de C++ pueden usar de forma sencilla la clase KmdrDialogInstance en sus programas en C++, de tal forma que la funcionalidad de ejecución se puede incrustar en cualquier aplicación, haciendo obsoleta la invocación al programa externo executor. Para la creación del cuadro de diálogo estándar, la sobrecarga es mínima, pero la creación de la aplicación de &kde; puede retrasar el cuadro de diálogo sobre un segundo.

## Crear un cuadro de diálogo