1 <!-- If you want to validate or edit this document separately, uncomment
5 <!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.1-Based Variant V1.0//EN" "dtd/kdex.dtd">
9 <chapter id="prog-guide">
20 >cloudtemple@mksat.net </email
32 >phil@river-bank.demon.co.uk </email
36 <othercredit role="translator"
44 >olegbatalov@mail.ru</email
48 >Перевод на русский язык</contrib
54 >Руководство программиста</title>
56 <sect1 id="how-to-use-in-progs">
58 >Как использовать &kugar; в ваших программах для создания отчётов</title>
62 >Существуют несколько способов использования &kugar;</title>
65 >Создать временный файл и заполнить его данными, организованными согласно <link linkend="kugardata-dtd"
66 >Определению типа документа (DTD) KugarData</link
67 >. Затем вызвать в командной оболочке <command
75 >файл данных Kugar</replaceable
81 >Файл шаблона Kugar </replaceable
85 >) для предварительного просмотра и распечатки отчёта. Подробноt описание смотрите в разделе <link linkend="prog-using-for-preview"
86 >Использование оболочки &kugar; для предварительного просмотра отчётов</link
91 >Использовать &kugar; непосредственно в коде приложения. Смотрите подробности в разделе <link linkend="prog-using-widget"
92 >Использование классов &kugar; в отчётах</link
97 >Создать модуль дизайнера &Qt;, и использовать его для создания приложений &GUI; в дизайнере и подключать его к программе динамически. Подробности смотрите в разделе <link linkend="prog-designer-plugin"
98 >Создание модулей дизайнера &Qt;</link
104 >Два последних метода приемлемы для разработчиков &Qt; и &kde;, но &kugar; спроектирован генератором отчётов, независящим от языка программирования и/или <acronym
106 >. Он использует формат &XML; для описания шаблона отчёта и фала данных. Так что любая программа может произвести вывод в в формат файла данных &kugar;, как описано в <link linkend="kugardata-dtd"
110 > или даже в формат файла шаблона отчёта (см. <link linkend="template-dtd"
111 >KugarTemplate <acronym
114 >). Оболочка &kugar; (программа просмотра отчётов) может использоваться для предварительного просмотра и печати созданных отчётов. </para>
118 <sect1 id="prog-using-for-preview">
120 >Использование оболочки &kugar; для предварительного просмотра отчётов</title>
124 >Способ создания и предварительного просмотра (печати) отчёта состоит из:</title>
127 >Создания с помощью &kudesigner; шаблона отчёта. </para>
131 >Создания файла данных со значениями столбцов для секций в отчёте. Используя <link linkend="kugardata-dtd"
135 > для производства корректных файлов данных. </para>
139 >Выполнения оболочки &kugar; для предварительного просмотра и печати отчёта. Например, для этого в языке C или C++ вызовите:</para>
144 >"kugar -r <replaceable
145 >template_file.kut</replaceable
147 >data_file.kud</replaceable
154 >Не забудьте включить файл <filename class="headerfile"
161 <sect1 id="prog-using-widget">
163 >Использования в отчётах классов &kugar;</title>
165 >Библиотека &kugar; включает два класса визуальных элементов для использования. </para>
168 >KReportViewer</classname
169 > предназначен для разработчиков &kde;. Он поддерживает систему печати &kde; и локализацию &UNIX; через вызовы функции <function
174 >MReportViewer</classname
175 > предназначен для разработчиков &Qt; и предоставляет реальную кросс+платформенность. Он может использоваться не только на платформах &UNIX;, но также и на &Windows; и &MacOS;. </para>
177 >Чтобы создать программу, использующую библиотеку &kugar;, она должна быть связана с разделяемой библиотекой <filename
178 >libkugar.so</filename
179 >, которая обеспечивает работу &kugar; на всех платформах &UNIX;. </para>
181 >Включить файлы <filename
185 > для программ &Qt; и &kde; соответственно. </para>
187 >Для подробных примеров использования классов &kugar;, смотрите каталог <filename class="directory"
189 > в исходных текстах &kugar;. </para>
192 >MReportViewer</classname
193 > (а также <classname
194 >KReportViewer</classname
195 >) содержат несколько открытых методов, которые можно использовать. </para>
200 >renderReport</function
205 >Вывести отчёт на экран.</funcsynopsisinfo>
212 >printReport</function
217 >Вызвать диалог печати для распечатки отчёта.</funcsynopsisinfo>
224 >clearReport</function
229 >Очистить отчёт на экране и удалить его данные. Вызывайте его перед открытием нового отчёта.</funcsynopsisinfo>
236 >setReportData</function
239 >const QString &<parameter
240 >data_file_name</parameter
244 >Установить данные отчёте из файла <replaceable
245 >data_file_name</replaceable
246 >.</funcsynopsisinfo>
253 >setReportData</function
256 >const QIODevice &<parameter
257 >data_io_device</parameter
261 >Установить данные отчёта из файла <replaceable
262 >data_io_device</replaceable
263 >. Устройство IO может быть любым преемником класса <classname
264 >QIODevice</classname
265 >. Например, для получения записей непосредственно из базы данных, создайте преемника <classname
266 >QIODevice</classname
267 > и переопределите у него необходимую функциональность. </funcsynopsisinfo>
274 >setReportTemplate</function
277 >const QString &<parameter
278 >template_file_name</parameter
282 >Установить шаблон отчёта из файла <replaceable
283 >template_file_name</replaceable
291 >setReportTemplate</function
294 >const QIODevice &<parameter
295 >template_io_device</parameter
299 >Установить шаблон отчёта из файла <replaceable
300 >template_io_device</replaceable
301 >. Устройство IO может быть любым преемником класса <classname
302 >QIODevice</classname
303 >. Например, для получения шаблона отчёта из сети или базы данных, создайте преемника <classname
304 >QIODevice</classname
305 > и переопределите у него необходимую функциональность. </funcsynopsisinfo>
310 <sect1 id="prog-designer-plugin">
312 >Создание модуля дизайнера &Qt;</title>
315 >Этот код примера создан как дополнение к модулю дизайнера. Код ниже создаёт модуль для графического элемента &kde; <classname
316 >KReportViewer</classname
320 >Если желателен графический элемент &Qt;, замените <classname
321 >KReportViewer</classname
323 >MReportViewer</classname
328 > в коде модуля. </para>
330 <sect2 id="plugin-usage">
332 >Использование модуля</title>
334 >Модули дизайнера позволят использовать Дизайнер &Qt; для помещения графического элемента <classname
335 >KReportViewer</classname
336 > в окно, и корректно просматривать его. </para>
339 >Программы, которые используют этот модуль, должны быть динамически с ним связаны. Соответствующая библиотека называется <filename
340 >libkugar_plugin.so</filename
341 >. Графические элементы или диалоги, которые включают графический элемент <classname
342 >KReportViewer</classname
343 > должны включать <kugar.h> в реализацию и иметь предварительно описание класса <classname
344 >class KReportViewer</classname
345 >. Включения могут быть сделаны с помощью Исследователь объектов дизайнера &Qt; (вкладка источник). </para>
348 >Для создание модуля выполните: <cmdsynopsis
352 >kugar_plugin.pro</arg
362 <sect2 id="plugin-code">
368 >Код модуля находится в трёх файлах:</title>
370 ><link linkend="plugin-h-source"
371 >kugar_plugin.h</link
374 ><link linkend="plugin-cpp-source"
375 >kugar_plugin.cpp</link
378 ><link linkend="plugin-pro-source"
379 >kugar_plugin.pro</link
383 >Заголовочный файл для <classname
384 >KugarWidgetPlugin</classname
385 >, производного класса от <classname
386 >QWidgetPlugin</classname
389 >Исходный файл для <classname
390 >KugarWidgetPlugin</classname
391 >, производного класса от <classname
392 >QWidgetPlugin</classname
395 >Файл проекта <application
401 <sect3 id="plugin-h-source">
403 >kugar_plugin.h</title>
406 >#include <qwidgetplugin.h
409 class KugarWidgetPlugin:public QWidgetPlugin
412 KugarWidgetPlugin ();
414 QStringList keys () const;
415 QWidget *create (const QString & classname, QWidget * parent =
416 0, const char *name = 0);
417 QString group (const QString &) const;
418 QIconSet iconSet (const QString &) const;
419 QString includeFile (const QString &) const;
420 QString toolTip (const QString &) const;
421 QString whatsThis (const QString &) const;
422 bool isContainer (const QString &) const;
428 <sect3 id="plugin-cpp-source">
430 >kugar_plugin.cpp</title>
433 >#include "kugar_plugin.h"
434 #include <kugar.h>
436 static const char *kugar_pixmap[] = {
565 "QtQtQtQtQtQt.#.a.a.a.b.b.b.c.c.d.d.dQtQtQtQt",
566 "QtQtQtQtQtQt.e.f.g.g.f.g.g.h.i.j.d.k.dQtQtQt",
567 "QtQtQtQtQtQt.a.gQtQtQtQtQtQt.l.f.c.m.k.dQtQt",
568 "QtQtQtQtQt.n.n.n.n.n.o.g.pQtQt.l.bQt.m.k.dQt",
569 "QtQtQt.q.q.r.q.s.t.r.q.u.u.g.pQt.a.fQt.m.k.d",
570 "QtQt.s.s.v.w.x.y.y.t.z.A.t.B.i.p.#.a.b.c.d.d",
571 "Qt.C.C.D.E.F.G.A.H.F.I.J.K.L.M.i.p.l.N.O.P.d",
572 "Qt.s.v.Q.q.R.S.T.A.R.U.V.L.W.W.X.g.Y.f.Z.k.d",
573 ".0.s.t.Q.1.U.R.2.3.S.U.4.5.6.6.7.j.8.9#..O.d",
574 ".G##.V#a#b.1#c#c#d#e#f#g#h#i#j.W#k#l.9#.#m.d",
575 ".G.4.F#n#c#c#c#d#d#o#p#g.x.w#i.L#q#r#.#.#s.d",
576 ".e.J.J.I.3#d.H#j.6#f#p#t#n.w.E.L#q#u#.#v#w.d",
577 ".G.A#x.z#y#z#A#B#B#C#D#E.4.4.6#h#F#m#v#G#H.d",
578 ".o.s.A#j#E#t#I#I#I#C#A#J#p#p#K#t#F#m#v#G#H.d",
579 "Qt##.A.6.7#I#I#A.E#L#M.W#N#J#K.a.U#O#G.Q#P.d",
580 "Qt#a.M.L.J#A#I.4.E#Q.x#R#D#J#g.#.C#S.Q#T#U.d",
581 "QtQt#V.K.z#Q.s.S.x.S#B#M#W#E.a.U#X.Q#T#Y#U.d",
582 "QtQtQt.M#i#B.r#Q#Q.r#Q.z#Z.a#q#0#1#T#Y#2#3.d",
583 "QtQtQtQtQt#j.L.L.W.5#t.a.#.U#0#1#T#Y#2#4#3.d",
584 "QtQtQtQtQtQt.d#F#q#q#q.P.C#O#S.Q#T#Y#2#4#3.d",
585 "QtQtQtQtQtQt.d#5#5#6#6#0#7#w#H#P#U#U#3#3#8.d",
586 "QtQtQtQtQtQt.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d"
589 KugarWidgetPlugin::KugarWidgetPlugin ()
593 QStringList KugarWidgetPlugin::keys () const
596 list << "KReportViewer";
600 QWidget* KugarWidgetPlugin::create (const QString & key, QWidget * parent,
603 if (key == "KReportViewer")
604 return new KReportViewer (parent, name);
608 QString KugarWidgetPlugin::group (const QString & feature) const
610 if (feature == "KReportViewer")
612 return QString::null;
615 QIconSet KugarWidgetPlugin::iconSet (const QString &) const
617 return QIconSet (QPixmap (kugar_pixmap));
620 QString KugarWidgetPlugin::includeFile (const QString & feature) const
622 if (feature == "KReportViewer")
624 return QString::null;
627 QString KugarWidgetPlugin::toolTip (const QString & feature) const
629 if (feature == "KReportViewer")
630 return "Kugar report viewer widget";
631 return QString::null;
634 QString KugarWidgetPlugin::whatsThis (const QString & feature) const
636 if (feature == "KReportViewer")
637 return "A widget to view xml reports";
638 return QString::null;
641 bool KugarWidgetPlugin::isContainer (const QString &) const
646 Q_EXPORT_PLUGIN( KugarWidgetPlugin )
650 <sect3 id="plugin-pro-source">
652 >kugar_plugin.pro</title>
655 >SOURCES += kugar_plugin.cpp
656 HEADERS += kugar_plugin.h
658 DESTDIR = $(QTDIR)/plugins/designer
659 TARGET = kugar_plugin
661 target.path=$$plugins.path
662 isEmpty(target.path):target.path=$$QT_PREFIX/plugins
663 PROJECTNAME = KugarPlugin
665 CONFIG += qt warn_on release plugin