Alexander Dymo
cloudtemple@mksat.net
Phil Thompson
phil@river-bank.demon.co.uk
MarekLaane
bald@starman.ee
Tõlge eesti keelde
Juhiseid programmeerijatele Kuidas kasutada &kugar;it aruannete loomiseks oma rakendustes &kugar;it saab kasutada mitmel viisil Luues ajutise faili, milles olevad andmed on organiseeritud vastavalt Kugari andmete dokumenditüübi definitsioonile. Seejärel käivita käsk kugar ( kugar ) aruande eelvaatluseks. Täpsemat infot vaata osast &kugar;i kasutamine aruannete eelvaatluseks. Kasutades &kugar;it vahetult rakenduse koodis. Täpsemat infot vaata osast &kugar;i klasside kasutamine aruannete loomisel. Luues &TQt; disaineri plugina ja kasutades seda disaineris rakenduse &GUI; loomiseks ning selle dünaamiliseks linkimiseks rakendusega. Täpsemat infot vaata osast &TQt; disaineri plugina loomine. Viimased kaks võimalust meeldivad loodetavasti hästi &TQt; ja &tde; arendajatele. Kuid &kugar; on mõeldud aruannete generaatoriks sõltumata kasutatavast programeerimiskeelest ja/või IDE-st. Kugar kasutab aruande mallide ja andmefailide kirjeldamisel &XML;-vormingut, nii et põhimõtteliselt võib suvaline rakendus leida väljundi &kugar;i andmefailis, mida kirjeldab KugarData DTD või isegi aruande mallis (vaata KugarTemplate DTD). Genereeritud aruannete eelvaatluseks saab kasutada &kugar;i shelli (aruannete näitajat). &kugar;i kasutamine aruannete eelvaatluseks Aruande loomise ja eelvaatluse meetod on järgmine: Loo aruande malli fail &kudesigner;i abil Loo korrektne andmefail. Kuidas see välja peab nägema, saab teada osast KugarData DTD. Käivita &kugar;i shell aruande eelvaatluseks. Näiteks C või C++ keeles: system(). Ära unusta kaasamast faili stdlib.h. &kugar;i klasside kasutamise aruannete loomisel &kugar;i teegis on kaks kasutuskõlbulikku vidinat. Klass KReportViewer on mõeldud &kde; arendajatele. See toetab &kde; trükkimissüsteemi ja &UNIX; lokaliseerimist väljakutsetega i18n(). Klass MReportViewer on mõeldud &TQt; arendajatele ning pakub tõelist vabadust platvormist. Seda saab kasutada mitte ainult &UNIX; platvormil, vaid ka &Windows; ja &MacOS; puhul. &kugar;i teegi kasutamiseks rakenduse loomisel tuleb see linkida jagatud teegiga libkugar.so, mida pakub &kugar;i pakett kõigile &UNIX; platvormidele. Kaasatud failid on kugarqt.h ja kugar.h (vastavalt &TQt; ja &tde; rakendustele). Üksikasjalikku näidet, kuidas kasutada &kugar;i klasse, vaata &kugar;i lähtekoodi kataloogis /shell. MReportViewer (aga ka KReportViewer) sisaldab mitu kasutatavat avalikku meetodit. void renderReport Teisendab aruande ekraanile. void printReport Kutsub välja dialoogi aruande trükkimiseks. void clearReport Puhastab aruande ekraanil ja vabastab aruande andmed. Seda tasub välja kutsuda enne uue aruande avamist. bool setReportData const TQString &andmefaili_nimi Määrab võtmega andmefaili_nimi, millisest failist aruanne andmeid võtab. bool setReportData const TQIODevice &andmete_IO_seade Määrab võtmega andmete_IO_seade, millisest failist aruanne andmeid võtab. IO-seade võib olla suvaline klassi TQIODevice järglane. Näiteks andmete tõmbamiseks vahetult andmebaasist loo TQIODevice järglane ning defineeri vajalikud funktsioonid ümber. bool setReportTemplate const TQString &mallifaili_nimi Määrab võtmega mallifaili_nimi aruande malli. bool setReportTemplate const TQIODevice &malli_IO_seade Määrab võtmega malli_IO_seade aruande malli. IO-seade võib olla suvaline klassi TQIODevice järglane. Näiteks aruande malli hankimiseks võrgust või andmebaasist loo TQIODevice järglane ja defineeri kõik vajalikud funktsioonid ümber. &TQt; disaineri plugina loomine Siin on toodud näide disaineri plugina loomise kohta. Allpool esitatud kood loob plugina &kde; elemendile KReportViewer. Kui soovid luua &TQt; elementi, asenda plugina koodis KReportViewer klassiga MReportViewer ning kugar.h failiga kugarqt.h'ga. Plugina kasutamine Disaineri plugin võimaldab kasutada &TQt; disainerit KReportViewer'i aknasse saatmiseks ja selle korrektseks näitamiseks. Seda pluginat kasutavad rakendused tuleb sellega dünaamiliselt linkida. Vastav teek kannab nime libkugar_plugin.so. Elemendid või dialoogid, mis kaasavad elemendi KReportViewer, peavad kaasama väljakutsesse <kugar.h> ning neil peab olema class KReportViewer'i edasideklaratsioon. Kaasata saab &TQt; disaineri objektivaatleja (kaart Allikas) abil. Plugina loomiseks anna käsk: qmake kugar_plugin.pro make Plugina kood Plugina kood koosneb kolmest failist: kugar_plugin.h kugar_plugin.cpp kugar_plugin.pro Klassi KugarWidgetPlugin päisefail, klassi QWidgetPlugin pärija; Klassi KugarWidgetPlugin lähtefail, klassi QWidgetPlugin pärija; QMake utiliidi projektifail. kugar_plugin.h #include <qwidgetplugin.h> class KugarWidgetPlugin:public QWidgetPlugin { public: KugarWidgetPlugin (); QStringList keys () const; TQWidget *create (const TQString & classname, TQWidget * parent = 0, const char *name = 0); TQString group (const TQString &) const; QIconSet iconSet (const TQString &) const; TQString includeFile (const TQString &) const; TQString toolTip (const TQString &) const; TQString whatsThis (const TQString &) const; bool isContainer (const TQString &) 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; } TQWidget* KugarWidgetPlugin::create (const TQString & key, TQWidget * parent, const char *name) { if (key == "KReportViewer") return new KReportViewer (parent, name); return 0; } TQString KugarWidgetPlugin::group (const TQString & feature) const { if (feature == "KReportViewer") return "Display"; return TQString::null; } QIconSet KugarWidgetPlugin::iconSet (const TQString &) const { return QIconSet (QPixmap (kugar_pixmap)); } TQString KugarWidgetPlugin::includeFile (const TQString & feature) const { if (feature == "KReportViewer") return "kugar.h"; return TQString::null; } TQString KugarWidgetPlugin::toolTip (const TQString & feature) const { if (feature == "KReportViewer") return "Kugar report viewer widget"; return TQString::null; } TQString KugarWidgetPlugin::whatsThis (const TQString & feature) const { if (feature == "KReportViewer") return "A widget to view xml reports"; return TQString::null; } bool KugarWidgetPlugin::isContainer (const TQString &) const { return FALSE; } TQ_EXPORT_PLUGIN( KugarWidgetPlugin ) kugar_plugin.pro 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++