You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice-i18n/koffice-i18n-fr/docs/koffice/kugar/progguide.docbook

659 lines
16 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

<!-- 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 &TQt; 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 &TQt; designer</link
> pour une description détaillée. </para>
</listitem>
</itemizedlist>
<para
>Les deux dernières manières sont acceptables pour les développeurs &TQt; et &tde;, 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 &TQt; 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 &TQt; et &tde; 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>
</funcsynopsis>
<funcsynopsis>
<funcprototype
><funcdef
>bool <function
>setReportData</function
></funcdef
> <paramdef
>const TQString &amp;<parameter
>nom_du_fichier_de_données</parameter
></paramdef
> </funcprototype>
<funcsynopsisinfo
>Détermine les données du rapport depuis le fichier <replaceable
>nom_du_fichier_de_données</replaceable
>.</funcsynopsisinfo>
</funcsynopsis>
<funcsynopsis>
<funcprototype
><funcdef
>bool <function
>setReportData</function
></funcdef
> <paramdef
>const TQIODevice &amp;<parameter
>data_io_device</parameter
></paramdef
> </funcprototype>
<funcsynopsisinfo
>Détermine les données du rapport depuis le fichier <replaceable
>data_io_device</replaceable
>. Le périphérique d'entrées-sorties peut être un successeur d'une classe <classname
>TQIODevice</classname
>. Par exemple, pour chercher des enregistrements directement depuis la base de données, créez un successeur <classname
>TQIODevice</classname
> et redéfinissez toutes les fonctionnalités nécessaires. </funcsynopsisinfo>
</funcsynopsis>
<funcsynopsis>
<funcprototype
><funcdef
>bool <function
>setReportTemplate</function
></funcdef
> <paramdef
>const TQString &amp;<parameter
>nom_du_fichier_modèle</parameter
></paramdef
> </funcprototype>
<funcsynopsisinfo
>Détermine le modèle de rapport depuis le fichier <replaceable
>nom_du_fichier_modèle</replaceable
>.</funcsynopsisinfo>
</funcsynopsis>
<funcsynopsis>
<funcprototype
><funcdef
>bool <function
>setReportTemplate</function
></funcdef
> <paramdef
>const TQIODevice &amp;<parameter
>template_io_device</parameter
></paramdef
> </funcprototype>
<funcsynopsisinfo
>Détermine le modèle de rapport depuis le fichier <replaceable
>template_io_device</replaceable
>. Le périphérique d'entrées-sorties peut être un successeur d'une classe <classname
>TQIODevice</classname
>. 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>
</funcsynopsis>
</sect1>
<sect1 id="prog-designer-plugin">
<title
>Création d'un module externe &TQt;</title>
<para
>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 &TQt; 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 &TQt; 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 &lt;kugar.h&gt; 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 &TQt; 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
>QMake</application
>.</seg>
</seglistitem>
</segmentedlist>
<sect3 id="plugin-h-source">
<title
>kugar_plugin.h</title>
<programlisting
>#include &lt;qwidgetplugin.h
>&gt;
class KugarWidgetPlugin:public QWidgetPlugin
{
public:
KugarWidgetPlugin ();
QStringList keys () const;
TQWidget *create (const TQString &amp; classname, TQWidget * parent =
0, const char *name = 0);
TQString group (const TQString &amp;) const;
QIconSet iconSet (const TQString &amp;) const;
TQString includeFile (const TQString &amp;) const;
TQString toolTip (const TQString &amp;) const;
TQString whatsThis (const TQString &amp;) const;
bool isContainer (const TQString &amp;) const;
};
</programlisting>
</sect3>
<sect3 id="plugin-cpp-source">
<title
>kugar_plugin.cpp</title>
<programlisting
>#include "kugar_plugin.h"
#include &lt;kugar.h&gt;
static const char *kugar_pixmap[] = {
"22 22 127 2",
".d c #000000",
".c c #131313",
".b c #282828",
".a c #434241",
".e c #4e463a",
".# c #595551",
".G c #66553b",
"#F c #68635f",
"#R c #6b4f23",
"#q c #6e6862",
"#M c #6f5229",
".n c #6f6146",
".w c #735310",
".V c #755c2a",
".I c #775f34",
".0 c #77694a",
"#n c #7e6434",
".o c #806f50",
"#C c #835d2d",
".P c #837c75",
"#B c #85653a",
"#k c #85827e",
".x c #866d46",
".U c #877967",
".X c #888888",
".F c #89724d",
"#x c #8b6d2a",
".S c #8d7759",
".z c #8e733b",
"#L c #906e49",
"#Q c #947b56",
".r c #948058",
".J c #957844",
".4 c #987736",
".q c #998969",
".k c #999897",
".R c #9a8a75",
"#i c #9f8348",
"#I c #a37c4b",
".u c #a38d66",
".E c #a58558",
"#A c #a8834b",
".s c #a9967a",
".t c #aa9467",
".C c #ae9f8d",
"#6 c #afa49d",
"#5 c #afa9a4",
"#W c #b18e4d",
".K c #b1935a",
".B c #b39660",
"#V c #b49866",
"#a c #b49d6c",
"## c #b49d72",
".j c #b5b4b4",
"#0 c #b7a597",
".O c #b9b1a9",
".L c #bb9c61",
".M c #bb9e6b",
".A c #bca778",
"#j c #bea46b",
".T c #bfb37d",
".v c #c0b391",
".W c #c3a262",
".i c #c4c4c4",
"#m c #c5b7aa",
"#8 c #c69f80",
".D c #c6b79b",
"#3 c #c7a589",
".7 c #c7a76c",
"#u c #c7bbaf",
".6 c #c8ad74",
"#7 c #c8b7a9",
"#r c #c8beb5",
".m c #c8c8c8",
"#U c #cbad96",
"#f c #ccb681",
"#h c #cdac6c",
"#P c #cdb49f",
"#X c #cdb8a6",
"#H c #ceb7a4",
".y c #ceb892",
".N c #cecac3",
"#Z c #cfb16f",
"#O c #cfbdad",
".Z c #cfc7c0",
"#w c #d0bcab",
".5 c #d1ad6b",
"#s c #d1bfb1",
".h c #d5d5d5",
"#l c #d6cdc6",
"#D c #d8b36e",
".H c #dac592",
"#t c #dbb977",
".g c #dcdcdc",
".1 c #e0dcc1",
".f c #e0e0df",
"#1 c #e3c8b1",
"#S c #e4cdb9",
".3 c #e4d9a3",
"#4 c #e6c1a1",
"#2 c #e7c4a5",
"#K c #e9c179",
"#g c #e9c47e",
"#Y c #e9c8ac",
".2 c #eae6c0",
"#T c #ebcdb3",
".Q c #ebd4b9",
"#E c #ecca87",
"#z c #ecd799",
".l c #ececeb",
"#G c #efd7c2",
"#e c #efe3ab",
".8 c #efe8e3",
"#v c #f1dcca",
"#. c #f2e2d4",
".p c #f4f4f4",
"#y c #f5daa0",
"#J c #f6cf7f",
".9 c #f7ede4",
"#p c #f9d995",
".Y c #fcf9f6",
"#d c #fefcc5",
"#c c #fefdda",
"#b c #fefee1",
"#N c #ffd685",
"#o c #fff0a9",
"Qt c #ffffff",
"QtQtQtQtQtQt.#.a.a.a.b.b.b.c.c.d.d.dQtQtQtQt",
"QtQtQtQtQtQt.e.f.g.g.f.g.g.h.i.j.d.k.dQtQtQt",
"QtQtQtQtQtQt.a.gQtQtQtQtQtQt.l.f.c.m.k.dQtQt",
"QtQtQtQtQt.n.n.n.n.n.o.g.pQtQt.l.bQt.m.k.dQt",
"QtQtQt.q.q.r.q.s.t.r.q.u.u.g.pQt.a.fQt.m.k.d",
"QtQt.s.s.v.w.x.y.y.t.z.A.t.B.i.p.#.a.b.c.d.d",
"Qt.C.C.D.E.F.G.A.H.F.I.J.K.L.M.i.p.l.N.O.P.d",
"Qt.s.v.Q.q.R.S.T.A.R.U.V.L.W.W.X.g.Y.f.Z.k.d",
".0.s.t.Q.1.U.R.2.3.S.U.4.5.6.6.7.j.8.9#..O.d",
".G##.V#a#b.1#c#c#d#e#f#g#h#i#j.W#k#l.9#.#m.d",
".G.4.F#n#c#c#c#d#d#o#p#g.x.w#i.L#q#r#.#.#s.d",
".e.J.J.I.3#d.H#j.6#f#p#t#n.w.E.L#q#u#.#v#w.d",
".G.A#x.z#y#z#A#B#B#C#D#E.4.4.6#h#F#m#v#G#H.d",
".o.s.A#j#E#t#I#I#I#C#A#J#p#p#K#t#F#m#v#G#H.d",
"Qt##.A.6.7#I#I#A.E#L#M.W#N#J#K.a.U#O#G.Q#P.d",
"Qt#a.M.L.J#A#I.4.E#Q.x#R#D#J#g.#.C#S.Q#T#U.d",
"QtQt#V.K.z#Q.s.S.x.S#B#M#W#E.a.U#X.Q#T#Y#U.d",
"QtQtQt.M#i#B.r#Q#Q.r#Q.z#Z.a#q#0#1#T#Y#2#3.d",
"QtQtQtQtQt#j.L.L.W.5#t.a.#.U#0#1#T#Y#2#4#3.d",
"QtQtQtQtQtQt.d#F#q#q#q.P.C#O#S.Q#T#Y#2#4#3.d",
"QtQtQtQtQtQt.d#5#5#6#6#0#7#w#H#P#U#U#3#3#8.d",
"QtQtQtQtQtQt.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d"
};
KugarWidgetPlugin::KugarWidgetPlugin ()
{
}
QStringList KugarWidgetPlugin::keys () const
{
QStringList list;
list &lt;&lt; "KReportViewer";
return list;
}
TQWidget* KugarWidgetPlugin::create (const TQString &amp; key, TQWidget * parent,
const char *name)
{
if (key == "KReportViewer")
return new KReportViewer (parent, name);
return 0;
}
TQString KugarWidgetPlugin::group (const TQString &amp; feature) const
{
if (feature == "KReportViewer")
return "Display";
return TQString::null;
}
QIconSet KugarWidgetPlugin::iconSet (const TQString &amp;) const
{
return QIconSet (QPixmap (kugar_pixmap));
}
TQString KugarWidgetPlugin::includeFile (const TQString &amp; feature) const
{
if (feature == "KReportViewer")
return "kugar.h";
return TQString::null;
}
TQString KugarWidgetPlugin::toolTip (const TQString &amp; feature) const
{
if (feature == "KReportViewer")
return "Kugar report viewer widget";
return TQString::null;
}
TQString KugarWidgetPlugin::whatsThis (const TQString &amp; feature) const
{
if (feature == "KReportViewer")
return "A widget to view xml reports";
return TQString::null;
}
bool KugarWidgetPlugin::isContainer (const TQString &amp;) const
{
return FALSE;
}
TQ_EXPORT_PLUGIN( KugarWidgetPlugin )
</programlisting>
</sect3>
<sect3 id="plugin-pro-source">
<title
>kugar_plugin.pro</title>
<programlisting
>SOURCES += kugar_plugin.cpp
HEADERS += kugar_plugin.h
DESTDIR = $(TQTDIR)/plugins/designer
TARGET = kugar_plugin
target.path=$$plugins.path
isEmpty(target.path):target.path=$$QT_PREFIX/plugins
PROJECTNAME = KugarPlugin
TEMPLATE = lib
CONFIG += qt warn_on release plugin
unix:LIBS += -lkugar
LANGUAGE = C++
</programlisting>
</sect3>
</sect2>
</sect1>
</chapter>