<para>&ksplash; es una bonita pantalla que muestra el progreso de una aplicación que se esté cargando. Por favor, informe de cualquier problema o petición de característica a través de las listas de correo de &kde;. Las características principales de &ksplash; son: </para>
<para>Este manual le mostrará cómo crear temas para utilizar con los complementos que estén disponibles. Si ninguno de los complementos disponibles satisface sus gustos, puede aprender a personalizar por completo el aspecto de &ksplash; escribiendo un complemento en C++. </para>
<para>Para utilizar los temas de <ulink url="http://www.kde-look.org">KDE-Look</ulink>, extraígalos a <filename>~/.trinity/share/apps/ksplash/Themes/</filename> para un usuario concreto, o a <filename>$<envar>TDEDIR</envar>/share/apps/ksplash/Themes/</filename> para que estén disponibles para todos los usuarios de su sistema.</para>
<para>También puede utilizar el módulo <guilabel>Pantalla anunciadora</guilabel> en <guilabel>Aspecto</guilabel> en el centro de control de &kde; para hacer esto automáticamente.</para>
<para>Este módulo le permite instalar, comprobar y eliminar temas de &ksplash;.Este módulo le permite instalar, comprobar y eliminar temas de &ksplash;.</para>
<para>En la parte inferior de este módulo hay una lista con los temas disponibles para &ksplash;. Una vez que haya seleccionado una, se mostrará una previsualización en la parte principal de la ventana. Una vez que haya seleccionado la que desea utilizar, pulse <guibutton>Aceptar</guibutton> o <guibutton>Aplicar</guibutton>. Pulse <guibutton>Cancelar</guibutton> para salir del módulo sin hacer cambios, y <guibutton>Predeterminados</guibutton> para restaurar los valores predeterminados de la pantalla.</para>
<para>Para instalar nuevos módulos, pulse <guibutton>Añadir...</guibutton>, y encuentre el tema en su ordenador. No necesita desempaquetar el archivo con el tema, solo tiene que seleccionar el archivo comprimido. El hecho de instalar un tema no hace de él el tema en uso, deberá seleccionarlo de la lista y pulsar <guibutton>Aceptar</guibutton> o <guibutton>Aplicar</guibutton>.</para>
<para>Aunque pueda ver una vista previa de la pantalla anunciadora, puede que quiera ver cómo aparece realmente, por ejemplo, para ver cómo es la animación. Podrá verificar los temas seleccionables pulsando el botón <guibutton>Test</guibutton>.</para>
<para>También podrá eliminar temas que no vaya a volver a utilizar, seleccionándolos y pulsando el botón <guibutton>Eliminar</guibutton>. Tenga en cuenta que su cuenta de usuario puede no tener permisos para eliminar los temas instalados para todo el sistema. También es recomendable no desinstalar la pantalla anunciadora <guilabel>predeterminada</guilabel>.</para>
<para>Hacer sus propios temas para &ksplash; es sencillo. Una vez que haya terminado su tema podrá enviarlo a <ulink url="http://www.kde-look.org">KDE-Look</ulink> para que otros puedan utilizarlo.</para>
<para>Permítanos crear un tema llamado <literal>MiBonitoTema</literal>. Para que el tema sea reconocido por &ksplash;, debería guardarse en una carpeta llamada <filename class="directory">MiBonitoTema</filename> en <filename class="directory">~/.trinity/apps/ksplash/Themes/</filename>. Debería tener un archivo llamado <filename>Theme.rc</filename>, conteniendo las configuraciones del tema. Puede especificar numerosas cosas en el tema, cambiar el complemento del motor de uso, etc. No necesita utilizar todas las configuraciones disponibles. Normalmente los valores predeterminados suelen ser correctos. La sintaxis básica para las entradas del archivo <filename>Theme.rc</filename> es <literal>[opción] = [valor]</literal>. Podrá encontrar las definiciones de varias opciones en las siguientes secciones.</para>
<para>Después de especificar el nombre, la descripción y el autor del tema, debe seleccionar el motor del tema (es un complemento). A continuación podrá personalizar varias características del motor del tema asignando pares clave-valor como en el ejemplo anterior.</para>
<para>Es importante que el nombre del directorio bajo el que se hayan guardado los archivos del tema (<filename class="directory">~/.trinity/apps/ksplash/Themes/MiBonitoTema</filename> en nuestro caso) y el identificador (<literal>[KSplash Theme: MiBonitoTema]</literal> en nuestro caso) en el archivo <filename>Theme.rc</filename> sean idénticos. Sino &ksplash; no reconocerá el tema.</para>
<para>Cuando se inicia &ksplash;, intenta encontrar una imagen de fondo para su resolución de pantalla actual, si es que el motor del tema utiliza una. El archivo de imagen del fondo debería tener un nombre que siga el formato <filename>Background-<replaceable>WWWxHHH</replaceable>.png</filename>.</para>
<para>Por ejemplo, podría utilizar un archivo llamado <filename>Background-1024x768</filename>. Sino puede encontrar una imagen de fondo para su resolución de pantalla, intenta redimensionar el <filename>Background.png</filename> original o el archivo especificado en <filename>Theme.rc</filename> para adaptarlo a la resolución actual. Redimensionar la imagen sobre la marcha llevará cierto tiempo, por tanto, debería proporcionar imágenes de fondo, al menos para los siguientes tamaños: 1280x1024, 1024x768 y 800x600.</para>
<entry>Indica si se debe mostrar la barra de estado. El valor predeterminado es true (verdadero).Indica si se debe mostrar la barra de estado. El valor predeterminado es true (verdadero).</entry>
<entry>El tipo de letra utilizado en la barra de estado. El valor predeterminado es Helvetica.El tipo de letra utilizado en la barra de estado. El valor predeterminado es Helvetica.</entry>
<entry>El tamaño de la letra para la barra de estado. El valor predeterminado es 16.El tamaño de la letra para la barra de estado. El valor predeterminado es 16.</entry>
<entry>Indica si la letra de la barra de estado debe estar en negrita. El valor predeterminado es true (verdadero).Indica si la letra de la barra de estado debe estar en negrita. El valor predeterminado es true (verdadero).</entry>
<entry>Indica si la letra de la barra de estado debe estar en cursiva. El valor predeterminado es false (falso).Indica si la letra de la barra de estado debe estar en cursiva. El valor predeterminado es false (falso).</entry>
<entry>El color del primer plano de la barra de estado. El valor predeterminado es white (blanco).El color del primer plano de la barra de estado. El valor predeterminado es white (blanco).</entry>
<entry>El color del fondo de la barra de estado. El valor predeterminado es black (negro).El color del fondo de la barra de estado. El valor predeterminado es black (negro).</entry>
<entry>Indica si los iconos serán visibles. El valor predeterminado es true (verdadero).Indica si los iconos serán visibles. El valor predeterminado es true (verdadero).</entry>
<entry>Indica si los iconos saltarán. El valor predeterminado es true (verdadero).Indica si los iconos saltarán. El valor predeterminado es true (verdadero).</entry>
<entry>Indica la posición en la que se muestran los iconos. El valor predeterminado es abajo a la izquierda.Indica la posición en la que se muestran los iconos. El valor predeterminado es abajo a la izquierda.</entry>
<entry>Texto que se muestra en la pantalla de inicio. El valor predeterminado es «Bienvenido».Texto que se muestra en la pantalla de inicio. El valor predeterminado es «Bienvenido».</entry>
<entry>Posición de la pantalla en la que se mostrará la acción que se está realizando.Posición de la pantalla en la que se mostrará la acción que se está realizando.</entry>
<entry>Indica si se mostrará el texto de bienvenida. El valor predeterminado es true (verdadero).Indica si se mostrará el texto de bienvenida. El valor predeterminado es true (verdadero).</entry>
<entry>Indica si se sombreará el texto de bienvenida. El valor predeterminado es true (verdadero).Indica si se sombreará el texto de bienvenida. El valor predeterminado es true (verdadero).</entry>
<entry>Indica si se mostrará el nombre de usuario. El valor predeterminado es true (verdadero).Indica si se mostrará el nombre de usuario. El valor predeterminado es true (verdadero).</entry>
<entry>Indica si se mostrará la acción que se está llevando a cabo. El valor predeterminado es true (verdadero).Indica si se mostrará la acción que se está llevando a cabo. El valor predeterminado es true (verdadero).</entry>
<entry>Indica si se mostrará el icono. El valor predeterminado es true (verdadero).Indica si se mostrará el icono. El valor predeterminado es true (verdadero).</entry>
<entry>Indica si se mostrará el icono de acceso del usuario. El valor predeterminado es true (verdadero).Indica si se mostrará el icono de acceso del usuario. El valor predeterminado es true (verdadero).</entry>
<entry>Establece el tamaño mínimo de los iconos. El valor predeterminado es 16.Establece el tamaño mínimo de los iconos. El valor predeterminado es 16.</entry>
<entry>Establece el tamaño máximo de los iconos. El valor predeterminado es 64.Establece el tamaño máximo de los iconos. El valor predeterminado es 64.</entry>
<entry>Indica si se optimizará la presentación del icono. El valor predeterminado es true (verdadero).Indica si se optimizará la presentación del icono. El valor predeterminado es true (verdadero).</entry>
<entry>Indica si la barra de progreso estará visible. El valor predeterminado es true (verdadero).Indica si la barra de progreso estará visible. El valor predeterminado es true (verdadero).</entry>
<entry>Indica si los iconos saltarán. El valor predeterminado es false (falso).Indica si los iconos saltarán. El valor predeterminado es false (falso).</entry>
<entry>Posición de los iconos en la pantalla. El valor predeterminado es abajo a la izquierda.Posición de los iconos en la pantalla. El valor predeterminado es abajo a la izquierda.</entry>
<entry>Indica si los iconos saltarán. El valor predeterminado es false (falso).Indica si los iconos saltarán. El valor predeterminado es false (falso).</entry>
<entry>Indica si los iconos serán visibles. El valor predeterminado es true (verdadero).Indica si los iconos serán visibles. El valor predeterminado es true (verdadero).</entry>
<entry>Color del fondo del título. El valor predeterminado es dark blue (azul oscuro).Color del fondo del título. El valor predeterminado es dark blue (azul oscuro).</entry>
<entry>Color del primer plano del título. El valor predeterminado es white (blanco).Color del primer plano del título. El valor predeterminado es white (blanco).</entry>
<entry>Color del texto de estado. De forma predeterminada será el mismo que el del fondo.Color del texto de estado. De forma predeterminada será el mismo que el del fondo.</entry>
<entry>Define el color del rotador 1. El valor predeterminado es dark blue (azul oscuro).Define el color del rotador 1. El valor predeterminado es dark blue (azul oscuro).</entry>
<entry>Define el color del rotador 2. El valor predeterminado es cyan (azul cian).Define el color del rotador 2. El valor predeterminado es cyan (azul cian).</entry>
<para>En este capítulo describiremos un método sencillo para utilizar &ksplash; como la pantalla de inicio de su aplicación &kde;. Sino desarrolla aplicaciones para &kde; puede saltarse este capítulo.</para>
<para>Sus aplicaciones &kde;, deberían ser capaces de utilizar &DCOP;. &DCOP; es la tecnología de &kde; utilizada para la comunicación entre aplicaciones. Si utiliza la <ulink url="http://developer.kde.org">estructura de aplicación &kde;</ulink> estándar, se incluirá automáticamente. Para obtener información sobre &DCOP; y las tecnologías relacionadas con &kde;, vea la <ulink url="http://developer.kde.org">página de los desarrolladores de &kde;</ulink>.</para>
<para>Antes de que su aplicación se inicie comience a trabajar, o antes de que comience a cargar complementos, &etc;, llame a &ksplash; de la siguiente forma:</para>
<para>Asumiremos que solo hay una instancia de &ksplash; en ejecución. El resto de los casos son algo más complejos. Por favor, vea la documentación de &DCOP; para obtener detalles más amplios.</para>
<para>Antes de mostrar cualquier mensaje, necesitará definir el número de pasos que se mostrarán. Por ejemplo, el procedimiento de inicio de &kde; utiliza 7 pasos.</para>
<para>Cada vez que llame a <constant>programStarted</constant>, se incrementarán los pasos completados. Cuando su programa haya terminado de iniciarse, haga lo siguiente para hacer que la pantalla de inicio desaparezca:</para>
<para>¡Ya está! si es que no necesita nada más de todas las posibilidades que le ofrece &ksplash;.¡Ya está! si es que no necesita nada más de todas las posibilidades que le ofrece &ksplash;.</para>
<para>Escribir complementos nuevos para &ksplash; no es difícil. En este capítulo, escribiremos un complemento sencillo que emulará la pantalla de inicio de un sistema operativo bien conocido. Este tutorial asume que tiene conocimientos básicos de C++ y un poco de programación KDE/Qt.</para>
<para>Crearemos un complemento llamado <literal>2k</literal>. El nombre del complemento se utiliza en varios lugares, y es importante que lo utilice consistentemente para que el complemento sea reconocido por &ksplash;. Los complementos de &ksplash; son bibliotecas que se pueden cargar dinámicamente y que siguen la siguiente convención para los nombres: </para>
<member>La biblioteca debería llamarse <filename>ksplash+nombretemaenminusculas</filename>. En nuestro caso será <filename>ksplash2k</filename>.</member>
<member>Debería tener su correspondiente archivo desktop llamado <filename>ksplash+nombretemaenminusculas.desktop</filename>. En nuestro caso será <filename>ksplash2k.desktop</filename>. </member>
<member>Finalmente, el objeto devuelto por la biblioteca debería ser una clase llamada <literal>Theme+nombretema</literal>. En nuestro caso, será <literal>Theme2k</literal>.</member>
<para>No se preocupe sino entiende todo lo anterior. Veremos cada uno de estos puntos con más detalle posteriormente. Otro detalle importante es que la clase del complemento debería derivar de <literal>ThemeEngine</literal>. </para>
<title>Construir la estructura del esqueleto</title>
<para>Utilizaremos la estructura de una aplicación &kde; para construir el complemento de forma que sea independiente de la plataforma, y ello, sin ningún trabajo por nuestra parte. Para hacer esto asegúrese de que tiene instalado el paquete <filename>tdesdk</filename>. Ejecute la orden <literal>kapptemplate</literal> para crear una aplicación llamada «2k». Esto creará una estructura de carpetas que contendrán archivos genéricos tales como AUTHORS, &etc;. Estamos más interesados en la subcarpeta llamada <filename class="directory">2k</filename>. Vaya a la subcarpeta y borre todos sus archivos. Ahora ya tenemos el esqueleto que necesitamos. </para>
<para>El siguiente paso es crear un archivo <filename>.desktop</filename> que, cuando se instale, le diga a &ksplash; que nuestro complemento está disponible. De acuerdo con la convención de nombre tratada en la <link linkend="basic-requirements">sección anterior</link>, crearemos un archivo llamado <filename>ksplash2k.desktop</filename> en esta carpeta. Debería contener las siguientes líneas: </para>
<para><literal>Encoding</literal>, <literal>Type</literal>, <literal>Comment</literal> y <literal>ServiceTypes</literal> son iguales para todas los complementos. El nombre del complemento y de la biblioteca siguen las convenciones tratadas antes. La entrada <literal>X-KSplash-Default</literal> es un valor lógico que determina si se mostrará en el módulo de configuración del panel de control de forma predeterminada. Excepto para casos muy raros debería ser <constant>true</constant> (verdadero). </para>
<title>Declaración de la clase del complemento</title>
<para>Ya tenemos el trabajo previo hecho, déjenos introducirle en la parte más divertida, crear una clase que proporcionará el comportamiento deseado. A pesar de que somos libres para que esta clase haga lo que queramos, existen algunas restricciones.</para>
<listitem><para>Las clases de los complementos deben heredarse de la clase <constant>ThemeEngine</constant>.</para></listitem>
<listitem><para>Las clases de los complementos deben nombrarse de acuerdo con la regla: <classname>Tema+NombreExtension</classname>.</para></listitem>
<listitem><para>Las clases de los complementos deberían proporcionar una función <literal>static</literal> llamada <function>names</function> que devuelva una lista de nombres que puedan ser llamados.</para></listitem>
<listitem><para>Si el complemento puede configurarse en el módulo del centro de control, debería proporcionar una clase basada en <literal>ThemeEngineConfig</literal> para la configuración.</para></listitem>
<listitem><para>Las clases de los complementos pueden sobreescribir, al menos, las funciones virtuales <function>slotSetText</function>, <function>slotSetPixmap</function>, <function>slotUpdateProgress</function> y <function>slotUpdateSteps</function> para hacerlo utilizable.</para></listitem>
<listitem><para>El constructor debería tener la forma <literal>ThemeEngine( TQWidget *parent, const char *name, const QStringList &args )</literal>, y por tanto, puede ser utilizado con <classname>KGenericFactory</classname>.</para></listitem>
<para>El último requisito puede parecer complicado, pero, como se verá posteriormente bastará con añadir una línea a sus archivos fuente, y que generalmente podrá ignorar.</para>
<para>Analicemos el listado anterior. La clase <classname>Theme2k</classname> cumple con la convención de nombres, y está heredada de <classname>ThemeEngine</classname>. Proporciona <methodname>Theme2k::names()</methodname>, y tiene un constructor que toma los parámetros requeridos: <function>Theme2k( TQWidget *, const char *, const QStringList& );</function> y también proporciona un método simple <methodname>Theme2k::slotSetText()</methodname>. Por el momento no se preocupe de la clase <classname>RotWidget</classname>. Es un pequeño componente que proporcionará algo que le gustará al usuario. Nuestro complemento es muy simple y no muestra iconos en la barra de progreso. Si desea mostrar iconos, sobreescriba la función <function>slotSetPixmap</function>. Existen funciones similares para configurar los pasos de la barra de progreso (<function>slotUpdateSteps</function>) e incrementan el paso actual (<function>slotUpdateProgress</function>). </para>
<para>Sólo examinaremos las partes relevantes de la implementación. Para obtener la impletación completa, véa el apéndice. Lo primero que haremos es cargar la librería:</para>
<para>La macro <constant>K_EXPORT_COMPONENT_FACTORY</constant> está declarada en <filename>kgenericfactory.h</filename>. ¡Ahora vamos con el constructor! Como esta es un complemento muy sencillo, el constructor es muy sencillo.</para>
<para>El método <function>readSettings()</function> ilustra la forma de obtener la configuración de su tema (Desea que la gente utilice sus complementos ¿no es cierto?).</para>
<para>Cómo deseamos que nuestros usuarios sean razonables proporcionaremos valores predeterminados adecuados a los parámetros que no existan en el archivo del tema. Tenga en cuenta que siempre debería configurar nuestro grupo con «KSplash Theme: nombretema» para hacerlo compatible con futuras especificaciones del tema. El método <function>initUI</function> no es muy interesante, y simplemente construye el componente. Por favor, véa el apéndice para obtener más detalles. </para>
<para>Puesto que hemos decidido utilizar una estructura &kde; para compilar el complemento, necesitaremos crear un <filename>Makefile.am</filename>. Debería ser algo similar a:</para>
<para>Para obtener más información de cómo escribir archivos <filename>Makefile.am</filename> para &kde;, por favor vea el <ulink url="http://developer.kde.org/documentation/other/makefile_am_howto.html">sitio web de los desarrolladores de &kde;</ulink>. Lo único que debe tener en cuenta es proporcionar un tema predeterminado basado en este complemento y proporcionar una imagen para ella. Como muestra de cortesía hacia nuestros usuarios, debería proporcionar un archivo <filename>Theme.rc</filename> de ejemplo ilustrando el uso de las diferentes opciones.</para>
<para>Probablemente no tenga los complementos correctos para el tema. Los complementos se encuentran en el paquete <literal>kde-artwork</literal>. Descárguelo, instálelo e inténtelo de nuevo.</para>
<para>¿Qué es el archivo <filename>Theme.rc</filename> y cómo puedo hacer uno?¿Qué es el archivo <filename>Theme.rc</filename> y cómo puedo hacer uno?</para>
<para><filename>Theme.rc</filename> es el archivo en el que puede especificar una configuración del tema. Para obtener más información, eche un vistazo a <link linkend="themes">Cómo hacer temas para &ksplash;</link>. </para>
<para>Para utilizar &ksplash;, necesita &kde; 3.2 o superior. Algunos temas puede requerir también complementos adicionales. Si un tema no funciona, contacte con su autor para pedirle información.</para>