<!-- If you want to validate or edit this document separately, uncomment
this prolog
<?xml version="1.0" ?>
<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.1-Based Variant V1.0//EN" "dtd/kdex.dtd">
-->
<chapter id="prog-guide">
<chapterinfo>
<authorgroup>
<author
><firstname
>Alexander</firstname
> <surname
>Dymo</surname
> <affiliation
> <address
><email
>cloudtemple@mksat.net</email
></address>
</affiliation>
</author>
<author
><firstname
>Phil</firstname
> <surname
>Thompson</surname
> <affiliation
> <address
><email
>phil@river-bank.demon.co.uk</email
></address>
</affiliation>
</author>
&traducteurGerardDelafond;
</authorgroup>
</chapterinfo>
<title
>Guide du programmeur</title>
<sect1 id="how-to-use-in-progs">
<title
>Comment utiliser &kugar; pour la génération de rapports dans vos propres programmes</title>
<itemizedlist>
<title
>Il y a plusieurs manières d'utiliser &kugar;</title>
<listitem>
<para
>Créez un fichier temporaire et remplissez-le de données organisées selon le <link linkend="kugardata-dtd"
>document de définition de type de KugarData</link
>. Puis, appelez la commande de shell <command
>kugar</command
> ( <cmdsynopsis
> <command
>kugar</command
> <group
> <option
>-d <replaceable
>fichier de données Kugar</replaceable
></option
> </group
> <group
> <option
>-r <replaceable
>fichier modèle Kugar</replaceable
></option
> </group
> </cmdsynopsis
> ) pour visualiser et afficher le rapport. Voyez <link linkend="prog-using-for-preview"
>Utilisation du shell de &kugar; pour visualiser les rapports</link
> pour une description détaillée. </para>
</listitem>
<listitem>
<para
>Utilisez &kugar; directement dans le code de l'application. Voyez <link linkend="prog-using-widget"
>Utilisation des classes de &kugar; pour les rapports</link
> pour une description détaillée. </para>
</listitem>
<listitem>
<para
>Créez un module externe &Qt; designer, utilisez-le pour construire l'interface graphique de l'application dans le concepteur et liez-le au programme dynamiquement. Consultez <link linkend="prog-designer-plugin"
>Création d'un module externe &Qt; designer</link
> pour une description détaillée. </para>
</listitem>
</itemizedlist>
<para
>Les deux dernières manières sont acceptables pour les développeurs &Qt; et &kde;, mais &kugar; est conçu pour être un générateur de rapports indépendant d'un langage de programmation et/ou d'un <acronym
>IDE</acronym
>. Il utilise le format &XML; pour décrire les modèles de rapports et les fichiers de données. Ainsi, n'importe quel programme peut produire des données dans le format de fichier de &kugar; comme décrit dans la <acronym
>DTD</acronym
> <link linkend="kugardata-dtd"
>KugarData</link
> ou même un format de fichier de modèle de rapports (voyez la <acronym
>DTD</acronym
><link linkend="template-dtd"
>KugarTemplate</link
>). Un shell &kugar; (visualisateur de rapports) peut être utilisé pour visualiser et imprimer les rapports générés. </para>
</sect1>
<sect1 id="prog-using-for-preview">
<title
>Utilisation de &kugar; pour visualiser les rapports</title>
<orderedlist>
<title
>La manière de procéder pour créer et afficher (imprimer) un rapport est:</title>
<listitem>
<para
>Créez un fichier de modèle de rapport avec &kudesigner; </para>
</listitem>
<listitem>
<para
>Créez un fichier de données avec des valeurs en colonnes pour les bandes détaillées du rapport. Utilisez la <acronym
>DTD</acronym
> <link linkend="kugardata-dtd"
>KugarData</link
> pour produire des fichiers corrects. </para>
</listitem>
<listitem>
<para
>Lancez le shell &kugar; pour prévisualiser et imprimer le rapport. Par exemple, pour ce faire, pour les langages C ou C++, appelez:</para>
<programlisting
><function
>system(<option
>"kugar -r <replaceable
>fichier_modèle.ktf</replaceable
>-d <replaceable
>fichier_de_données.kdf</replaceable
>"</option
>)</function
>.
</programlisting>
<para
>N'oubliez pas d'inclure <filename class="headerfile"
>stdlib.h</filename
>. </para>
</listitem>
</orderedlist>
</sect1>
<sect1 id="prog-using-widget">
<title
>Utilisation des classes de &kugar; pour la génération de rapports</title>
<para
>La bibliothèque &kugar; inclut deux composants à utiliser. </para>
<para
>La classe <classname
>KReportViewer</classname
> est conçue pour les développeurs &kde;. Elle gère le système d'impression &kde; et la localisation &UNIX; via les appels <function
>i18n()</function
>. </para>
<para
>La classe <classname
>MReportViewer</classname
> est conçue pour les développeurs &Qt; et permet vraiment de faire du multiplate-forme. Elle peut être utilisée non seulement sur les plates-formes &UNIX;, mais aussi sur &Windows; et &MacOS;. </para>
<para
>Dans le but de compiler un programme qui utilise la bibliothèque &kugar;, il devrait être lié avec la bibliothèque partagée <filename
>libkugar.so</filename
>, qui est fournie avec la distribution de &kugar; sur toutes les plates-formes &UNIX;. </para>
<para
>Les fichiers inclus sont <filename
>kugarqt.h</filename
> et <filename
>kugar.h</filename
> pour les programmes &Qt; et &kde; respectivement. </para>
<para
>Pour un exemple détaillé sur le manière dont les classes &kugar; peuvent être utilisées, voyez le dossier <filename class="directory"
>/shell</filename
> dans les sources de &kugar;. </para>
<para
><classname
>MReportViewer</classname
> (et <classname
>KReportViewer</classname
>) contiennent plusieurs méthodes publiques qui peuvent être utilisées. </para>
<funcsynopsis>
<funcprototype>
<funcdef
>void <function
>renderReport</function
></funcdef>
<void/>
</funcprototype>
<funcsynopsisinfo
>Affiche le rapport sur un écran.</funcsynopsisinfo>
</funcsynopsis>
<funcsynopsis>
<funcprototype>
<funcdef
>void <function
>printReport</function
></funcdef>
<void/>
</funcprototype>
<funcsynopsisinfo
>Appelle le dialogue d'impression pour imprimer le rapport.</funcsynopsisinfo>
</funcsynopsis>
<funcsynopsis>
<funcprototype>
<funcdef
>void <function
>clearReport</function
></funcdef>
<void/>
</funcprototype>
<funcsynopsisinfo
>Efface le rapport de l'écran et libère les données du rapport. Appelez cela avant d'ouvrir le nouveau rapport.</funcsynopsisinfo>
>. Par exemple, pour obtenir un modèle de rapport pour le stockage réseau ou les bases de données, créez un successeur TQIODevice et redéfinissez toutes les fonctionnalités nécessaires. </funcsynopsisinfo>
>Voici un exemple de code sur la manière dont est conçu un module externe. Le code ci-dessous crée un module externe pour un composant &kde; <classname
>KReportViewer</classname
>. </para>
<para
>Si un composant &Qt; est désiré, remplacez <classname
>KReportViewer</classname
> par <classname
>MReportViewer</classname
> et <filename
>kugar.h</filename
> par <filename
>kugarqt.h</filename
> dans le code du module externe. </para>
<sect2 id="plugin-usage">
<title
>Utilisation du module externe</title>
<para
>Le module externe de dessin permettra l'utilisation de &Qt; Designer pour placer le composant <classname
>KReportViewer</classname
> dans une fenêtre et l'afficher correctement. </para>
<para
>Les programmes qui font usage de ce module externe doivent y être liés dynamiquement. La bibliothèque correspondante est nommée <filename
>libkugar_plugin.so</filename
>. Les composants ou dialogues qui incluent <classname
>KReportViewer</classname
> doivent inclure <kugar.h> dans l'implémentation et avoir une déclaration préalable de <classname
>class KReportViewer</classname
>. Les includes peuvent être faits avec l'Explorateur d'objets de &Qt; Designer (onglet source). </para>
<para
>Pour compiler le module externe, lancez: <cmdsynopsis
><command
>qmake</command
> <arg
>kugar_plugin.pro</arg
> </cmdsynopsis>
<cmdsynopsis>
<command
>make</command>
</cmdsynopsis>
</para>
</sect2>
<sect2 id="plugin-code">
<title
>Code du module externe</title>
<segmentedlist>
<title
>Le code du module externe consite en trois fichiers:</title>
<segtitle
><link linkend="plugin-h-source"
>kugar_plugin.h</link
></segtitle>
<segtitle
><link linkend="plugin-cpp-source"
>kugar_plugin.cpp</link
></segtitle>
<segtitle
><link linkend="plugin-pro-source"
>kugar_plugin.pro</link
></segtitle>
<seglistitem>
<seg
>Un fichier d'en-tête pour <classname
>KugarWidgetPlugin</classname
>, le successeur de <classname
>QWidgetPlugin</classname
>;</seg>
<seg
>Un fichier source pour <classname
>KugarWidgetPlugin</classname
>, le successeur de <classname
>QWidgetPlugin</classname
>;</seg>
<seg
>Un fichier de projet pour l'utilitaire <application