<?xml version="1.0"  encoding="UTF-8" ?>

<chapter id="kmdr-basics">
<chapterinfo>
<title
>&kommander; básico</title>
<authorgroup>
<author
><firstname
>Tamara</firstname
> <surname
>King</surname
> <affiliation
><address
> <email
>tik@acm.org</email>
</address
></affiliation>
</author>
<author
><firstname
>Eric</firstname
> <surname
>Laffoon</surname
> <affiliation
><address
> <email
>sequitur@kde.org</email>
</address
></affiliation>
</author>

<othercredit role="translator"
><firstname
>Juan Manuel</firstname
> <surname
>García Molina</surname
> <affiliation
><address
><email
>juanma@superiodico.net</email
></address
></affiliation
><contrib
>Traductor</contrib
></othercredit
> 

</authorgroup>
</chapterinfo>

<title
>&kommander; básico</title>

<!-- This chapter should tell the user how to use your app. You should use as
many sections (Chapter, Sect1, Sect3, etc...) as is necessary to fully document
your application. -->

<sect1 id="concepts">
<title
>Conceptos</title>


<para
>&kommander; se diseñó originalmente con un concepto muy simple que ha demostrado ser revolucionario entre las herramientas visuales de diseño. Estas herramientas suelen permitir crear cuadros de diálogo y, posiblemente, interfaces con ventana principal. Por supuesto, un interfaz de ventana principal es la ventana del programa que suele tener menús, barra de herramientas y de estado y el área de la aplicación. Los cuadros de diálogo son ventanas hijas que no suelen tener menús y se llaman así porque su propósito es <quote
>establecer un diálogo</quote
> o intercambiar información entre usted y la aplicación principal. Los elementos de un cuadro de diálogo se llaman <quote
>widgets</quote
> y sirven de enlace para su programa. &kommander; es diferente porque es inherente a lo no-programático, usando el concepto de asociación de texto con los widgets del cuadro de diálogo. Inicialmente, esto se conoció como <quote
>Texto asociado</quote
>, pero ahora se denomina <quote
>Texto de &kommander;</quote
>. 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  <quote
>especial</quote
> como @widgetText. Los especiales son órdenes con significado especial en &kommander;. Por tanto, si usted creó un cuadro de diálogo con dos widgets de edición de línea y llamó al primero <quote
>Nombre</quote
> y al segundo <quote
>Apellido</quote
>, podría crear un botón y definir el texto de &kommander; como <quote
>Me llamo @Nombre @Apellido</quote
>. Tendría que definir @widgetText en los widgets del nombre y los apellidos. ¿Lo recuerda? Necesitamos decirle a &kommander; que haga referencia al texto que hay en ellos. Podría hacerlo desde <application
>Konsole</application
>, y la salida sería la cadena. Así podría hacer referencia al nombre como: @Nombre -> obtiene el widget llamado Nombre(@Nombre) -> @widgetText -> obtiene el contenido del widget LineEdit. En este caso, @Nombre devolvería <quote
>Eric</quote
>: @Nombre -> @widgetText -> <quote
>Eric</quote
>. </para>

<para
>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 <quote
>¿Dónde puede usar una herramienta tan interesante como esta?</quote
> Como resulta evidente, la manipulación de cadenas se usa en casi cualquier sitio que pueda imaginar. </para>

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

<orderedlist>
<listitem
><para
>Pasar cadenas al programa llamante por medio de la salida estándar.</para
></listitem>
<listitem
><para
>Hacer llamadas a programas ejecutables.</para
></listitem>
<listitem
><para
>Usar &DCOP; para interactuar con programas de &kde;.</para
></listitem>
</orderedlist>

<para
>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. </para>

<para
>El segundo caso es llamar a un ejecutable. Cualquier programa que funcione en el sistema es un ejecutable. Incluso un guion 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 <quote
>gimp</quote
> y ponerle algún especial como: @exec(gimp). Solo con eso, se abrirá &GIMP; cada vez que lo use. También puede ejecutar <quote
>ls -l</quote
>, pero solo vería la salida si lo hubiera lanzado desde una consola. </para>

<para
>El tercer caso también es muy interesante. &DCOP; es la abreviatura de <emphasis
>D</emphasis
>esktop <emphasis
>CO</emphasis
>mmunication <emphasis
>P</emphasis
>rotocol (n.t. Protocolo de Comunicación con el Escritorio) de &kde;, y es verdaderamente potente. Vaya y haga funcionar el programa <application
>kdcop</application
> 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. </para>

<para
>¿Son estos 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 <quote
>ha ocurrido algo</quote
>, como que se ha creado un widget o que ha cambiado su texto. Estos cambios <quote
>emiten señales</quote
> 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, <quote
>Population Text</quote
>. Population Text poblará un widget cuando se llame. Igual que &kommander; Text, Population Text puede tener cadenas de texto o guiones. </para>

<para
>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;. </para>
</sect1>
&editor; <sect1 id="executor">
<title
>El ejecutor</title>

<para
>El ejecutor, llamado <application
>kmdr-executor</application
>, hace funcionar los guiones de &kommander;. Carga los archivos <literal role="extension"
>.kmdr</literal
> y produce dinámicamente un cuadro de diálogo plenamente operativo. </para>

<sect2 id="executor-for-programmers">
<title
>Ejecutor para programadores</title>

<para
>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. </para>
</sect2>

</sect1>

<sect1 id="create-dialog">
<title
>Crear un cuadro de diálogo</title>

<para
></para>
</sect1>

</chapter>
