AlexanderDymocloudtemple@mksat.netPhilThompsonphil@river-bank.demon.co.ukFedericoZenithzenith@chemeng.ntnu.noTraduzione della documentazione in italianoGuida del programmatoreCome usare &kugar; per fare rapporti nei tuoi programmiCi sono diversi modi di usare &kugar;Crea un file temporaneo e riempilo di dati, organizzati secondo la Definizione del tipo di dati KugarData. Quindi chiama il comando di shell kugar (kugar) per fare un'anteprima e stampare il rapporto. Vedi Uso della shell &kugar; per fare anteprime dei rapporti per una descrizione dettagliata. Usa &kugar; direttamente nel codice dell'applicazione. Vedi Usare le classi di &kugar; per fare rapporti per una descrizione dettagliata. Crea un plugin di &Qt; Designer, usalo per costruire la &GUI; dell'applicazione nel Designer e collegalo dinamicamente al programma. Vedi Creare un plugin di &Qt; Designer per una descrizione dettagliata. Gli ultimi due modi sono accettabili per gli sviluppatori di &Qt; e &kde;; ma &kugar; è progettato per essere un generatore di rapporti, indipendente da ogni linguaggio di programmazione ovvero IDE. Usa il formato &XML; per descrivere i modelli di rapporto e i file dati. Quindi ogni programma può produrre output nel formato file di &kugar; come descritto in DTD di KugarData o anche un formato file di modello di rapporto (vedi DTD di KugarTemplate). Una shell di &kugar; (visualizzatore di rapporti) può essere usata per fare anteprime e stampare il rapporto generato. Uso della shell &kugar; per fare anteprime dei rapportiIl modo di creare e fare un'anteprima (o stampare) un rapporto è:Crea un file modello di rapporto con &kudesigner; Crea un file dati con valori di colonna per le righe di dettaglio del rapporto. Usa la DTD KugarData per produrre file dati corretti. Esegui la shell &kugar; per fare un'anteprima e stampare un rapporto. Per esempio, per farlo, nei linguaggi C o C++ chiama:system().
Non dimenticarti di includere stdlib.h. Usare le classi di &kugar; per fare rapportiLa libreria di &kugar; include due oggetti utilizzabili. La classe KReportViewer è progettata per gli sviluppatori di &kde;. Supporta un sistema di stampa &kde; e la localizzazione &UNIX; attraverso le chiamate a i18n(). La classe MReportViewer è progettata per gli sviluppatori &Qt; e fornisce un autentico supporto multipiattaforma. Si può usare non solo su piattaforme &UNIX;, ma anche su &Windows; e &MacOS;. Per costruire un programma che usi la libreria &kugar;, esso dovrebbe essere collegato alla libreria condivisa libkugar.so, che è fornita con la distribuzione di &kugar; su tutte le piattaforme &UNIX;. I file da includere sono rispettivamente kugarqt.h e kugar.h per i programmi &Qt; e &kde;. Per un esempio dettagliato di come si usano le classi di &kugar;, guarda nella cartella /shell nel sorgente di &kugar;. MReportViewer (e anche il KReportViewer) contiene più metodi pubblici che possono essere usati. void renderReportVisualizza il rapporto su schermo.void printReportChiama la finestra di dialogo di stampa per stampare il rapporto.void clearReportPulisce il rapporto su schermo e libera i dati del rapporto. Chiamalo prima di aprire un nuovo rapporto.bool setReportDataconst QString &name_file_datiImposta i dati del rapporto dal file nome_file_dati.bool setReportDataconst QIODevice &dispositivo_io_datiImposta i dati di rapporto dal file dispositivo_io_dati. Il dispositivo IO può essere qualsiasi discendente della classe QIODevice. Per esempio, per prendere dati direttamente dalla banca dati, crea un discendente diQIODevice e ridefiniscine tutte le funzionalità necessarie. bool setReportTemplateconst QString &nome_file_modelloImposta il modello di rapporto dal file nome_file_modello.bool setReportTemplateconst QIODevice &dispositivo_io_modelloImposta il modello di rapporto dal file dispositivo_io_modello. Il dispositivo IO può essere qualsiasi discendente della classe QIODevice. Per esempio, per ottenere un modello di rapporto dalla rete o da una banca dati, crea un discendente diQIODevice e ridefiniscine tutte le funzionalità necessarie. Creare un plugin di &Qt; DesignerQuesto è il codice esemplificativo di come si crea un plugin per Designer. Il codice sotto crea un plugin per l'oggetto KReportViewer di &kde;. Se si desidera un oggetto &Qt;, sostituisci KReportViewer con MReportViewer e kugar.h con kugarqt.h nel codice del plugin. Uso del pluginIl plugin di Designer permetterà l'uso di &Qt; Designer per posizionare un oggetto KReportViewer su una finestra e farne correttamente l'anteprima. I programmi che usano questo plugin devono esserci collegati dinamicamente. La libreria corrispondente è chiamata libkugar_plugin.so. Gli oggetti o le finestre di dialogo che includono l'oggetto KReportViewer devono includere <kugar.h> nell'implementazione e avere una dichiarazione anticipata di class KReportViewer. Le inclusioni possono essere fatte con l'esploratore di oggetti di &Qt; Designer (scheda Sorgente). Per costruire il plugin esegui: qmakekugar_plugin.promakeCodice del pluginIl codice del plugin consiste di tre file:kugar_plugin.hkugar_plugin.cppkugar_plugin.proUn file d'intestazione per KugarWidgetPlugin, successore di QWidgetPlugin;Un file sorgente per KugarWidgetPlugin, successore di QWidgetPlugin;Un file di progetto per l'applicazione QMake.kugar_plugin.h#include <qwidgetplugin.h>
class KugarWidgetPlugin:public QWidgetPlugin
{
public:
KugarWidgetPlugin ();
QStringList keys () const;
QWidget *create (const QString & classname, QWidget * parent =
0, const char *name = 0);
QString group (const QString &) const;
QIconSet iconSet (const QString &) const;
QString includeFile (const QString &) const;
QString toolTip (const QString &) const;
QString whatsThis (const QString &) const;
bool isContainer (const QString &) const;
};
kugar_plugin.cpp#include "kugar_plugin.h"
#include <kugar.h>
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 << "KReportViewer";
return list;
}
QWidget* KugarWidgetPlugin::create (const QString & key, QWidget * parent,
const char *name)
{
if (key == "KReportViewer")
return new KReportViewer (parent, name);
return 0;
}
QString KugarWidgetPlugin::group (const QString & feature) const
{
if (feature == "KReportViewer")
return "Display";
return QString::null;
}
QIconSet KugarWidgetPlugin::iconSet (const QString &) const
{
return QIconSet (QPixmap (kugar_pixmap));
}
QString KugarWidgetPlugin::includeFile (const QString & feature) const
{
if (feature == "KReportViewer")
return "kugar.h";
return QString::null;
}
QString KugarWidgetPlugin::toolTip (const QString & feature) const
{
if (feature == "KReportViewer")
return "Kugar report viewer widget";
return QString::null;
}
QString KugarWidgetPlugin::whatsThis (const QString & feature) const
{
if (feature == "KReportViewer")
return "A widget to view xml reports";
return QString::null;
}
bool KugarWidgetPlugin::isContainer (const QString &) const
{
return FALSE;
}
Q_EXPORT_PLUGIN( KugarWidgetPlugin )
kugar_plugin.proSOURCES += kugar_plugin.cpp
HEADERS += kugar_plugin.h
DESTDIR = $(QTDIR)/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++