• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

Kross

  • kross
  • modules
form.cpp
Go to the documentation of this file.
1/***************************************************************************
2 * form.cpp
3 * This file is part of the KDE project
4 * copyright (C)2006-2007 by Sebastian Sauer (mail@dipe.org)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public License
15 * along with this program; see the file COPYING. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
18 ***************************************************************************/
19
20#include "form.h"
21
22#include <QtCore/QByteRef>
23#include <QtCore/QBuffer>
24#include <QtCore/QRegExp>
25#include <QtCore/QFile>
26#include <QtCore/QArgument>
27#include <QtCore/QMetaEnum>
28#include <QtGui/QKeyEvent>
29#include <QtGui/QDialog>
30#include <QtGui/QBoxLayout>
31#include <QtGui/QStackedLayout>
32#include <QtGui/QSizePolicy>
33#include <QtGui/QApplication>
34#include <QtGui/QProgressBar>
35//#include <QtGui/QProgressDialog>
36#include <QtGui/QTextBrowser>
37#include <QUiLoader>
38#include <QTextCursor>
39#include <QTextBlock>
40
41#include <kdebug.h>
42#include <klocale.h>
43#include <kurl.h>
44#include <kpushbutton.h>
45//#include <kurlcombobox.h>
46//#include <kdiroperator.h>
47//#include <kshell.h>
48#include <kicon.h>
49#include <kaction.h>
50#include <kactioncollection.h>
51#include <kmessagebox.h>
52#include <kpluginloader.h>
53#include <kpluginfactory.h>
54#include <kparts/part.h>
55//#include <kio/netaccess.h>
56//#include <klocale.h>
57//#include <kmimetype.h>
58//#include <kstandarddirs.h>
59#include <kfilewidget.h>
60#include <kurlcombobox.h>
61#include <kshell.h>
62#include <widgets/ksqueezedtextlabel.h>
63
64extern "C"
65{
66 KDE_EXPORT QObject* krossmodule()
67 {
68 return new Kross::FormModule();
69 }
70}
71
72using namespace Kross;
73
74/*********************************************************************************
75 * FormList
76 */
77
78FormListView::FormListView(QWidget* parent) : QListWidget(parent) {}
79FormListView::~FormListView() {}
80void FormListView::clear() { QListWidget::clear(); }
81void FormListView::remove(int index) { delete QListWidget::item(index); }
82void FormListView::addItem(const QString& text) { QListWidget::addItem(text); }
83int FormListView::count() { return QListWidget::count(); }
84int FormListView::current() { return QListWidget::currentRow(); }
85void FormListView::setCurrent(int row) { QListWidget::setCurrentRow(row); }
86QString FormListView::text(int row) {
87 QListWidgetItem *item = QListWidget::item(row);
88 return item ? item->text() : QString();
89}
90
91/*********************************************************************************
92 * FormFileWidget
93 */
94
95namespace Kross {
96
98 class FormFileWidget::Private
99 {
100 public:
101 KFileWidget* filewidget;
102 QString filename;
103 };
104
105}
106
107FormFileWidget::FormFileWidget(QWidget* parent, const QString& startDirOrVariable)
108 : QWidget(parent), d(new Private())
109{
110 QVBoxLayout* layout = new QVBoxLayout(this);
111 layout->setSpacing(0);
112 layout->setMargin(0);
113 setLayout(layout);
114
115 d->filewidget = new KFileWidget(KUrl(startDirOrVariable), this);
116 layout->addWidget( d->filewidget );
117 //QMetaObject::invokeMethod(d->filewidget, "toggleSpeedbar", Q_ARG(bool,false));
118 //KFileDialog::setMode( KFile::File | KFile::LocalOnly );
119
120 // slotOk() emits accepted, accept() emits fileSelected()
121 QObject::connect(d->filewidget, SIGNAL(fileSelected(QString)), this, SLOT(slotFileSelected(QString)));
122
123 QObject::connect(d->filewidget, SIGNAL(fileSelected(QString)), this, SIGNAL(fileSelected(QString)));
124 QObject::connect(d->filewidget, SIGNAL(fileHighlighted(QString)), this, SIGNAL(fileHighlighted(QString)));
125 QObject::connect(d->filewidget, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged()));
126 QObject::connect(d->filewidget, SIGNAL(filterChanged(QString)), this, SIGNAL(filterChanged(QString)));
127
128// d->impl->setOperationMode(d->mode);
129// if( d->mimeFilter.count() > 0 )
130// d->impl->setMimeFilter(d->mimeFilter);
131// else if( ! d->filter.isEmpty() )
132// d->impl->setFilter(d->filter);
133
134 if( parent && parent->layout() )
135 parent->layout()->addWidget(this);
136 setMinimumSize( QSize(480,360) );
137}
138
139FormFileWidget::~FormFileWidget()
140{
141 delete d;
142}
143
144void FormFileWidget::setMode(const QString& mode)
145{
146 QMetaEnum e = metaObject()->enumerator( metaObject()->indexOfEnumerator("Mode") );
147 KFileWidget::OperationMode m = (KFileWidget::OperationMode) e.keysToValue( mode.toLatin1() );
148 d->filewidget->setOperationMode(m);
149}
150
151QString FormFileWidget::currentFilter() const
152{
153 return d->filewidget->currentFilter();
154}
155
156void FormFileWidget::setFilter(const QString &filter)
157{
158 QString f = filter;
159 f.replace(QRegExp("([^\\\\]{1,1})/"), "\\1\\/"); // escape '/' chars else KFileDialog assumes they are mimetypes :-/
160 d->filewidget->setFilter(f);
161}
162
163QString FormFileWidget::currentMimeFilter() const
164{
165 return d->filewidget->currentMimeFilter();
166}
167
168void FormFileWidget::setMimeFilter(const QStringList& filter)
169{
170 d->filewidget->setMimeFilter(filter);
171}
172
173void FormFileWidget::slotFileSelected( const QString & fn )
174{
175 //kDebug()<<fn;
176 d->filename = fn;
177}
178
179QString FormFileWidget::selectedFile() const
180{
181 if ( d->filewidget->operationMode() != KFileWidget::Saving ) {
182 d->filewidget->accept();
183 } else {
184 //kDebug()<<d->filename<<d->filewidget->operationMode();
185 if ( d->filename.isEmpty() ) {
186 // make KFileWidget create an url for us (including extension if necessary)
187 QObject::connect(d->filewidget, SIGNAL(accepted()), d->filewidget, SLOT(accept()));
188 d->filewidget->slotOk();
189 QObject::disconnect(d->filewidget, SIGNAL(accepted()), d->filewidget, SLOT(accept()));
190 }
191 }
192 //kDebug()<<d->filename;
193 KUrl url( d->filename );
194 return url.path(); // strip file:// at least python chokes on it
195}
196
197/*********************************************************************************
198 * FormProgressDialog
199 */
200
201namespace Kross {
203 class FormProgressDialog::Private
204 {
205 public:
206 QTextBrowser* browser;
207 QProgressBar* bar;
208 bool gotCanceled;
209 QTime time;
210 void update() {
211 if( time.elapsed() >= 1000 ) {
212 time.restart();
213 qApp->processEvents();
214 }
215 }
216 };
217}
218
219FormProgressDialog::FormProgressDialog(const QString& caption, const QString& labelText) : KPageDialog(), d(new Private)
220{
221 d->gotCanceled = false;
222 d->time.start();
223
224 setCaption(caption);
225 KDialog::setButtons(KDialog::Ok|KDialog::Cancel);
226 setFaceType(KPageDialog::Plain);
227 enableButton(KDialog::Ok, false);
228 //setWindowModality(Qt::WindowModal);
229 setModal(false); //true);
230 setMinimumWidth(540);
231 setMinimumHeight(400);
232
233 QWidget* widget = new QWidget( mainWidget() );
234 KPageWidgetItem* item = KPageDialog::addPage(widget, QString());
235 item->setHeader(labelText);
236 //item->setIcon( KIcon(iconname) );
237 widget = item->widget();
238 QVBoxLayout* layout = new QVBoxLayout(widget);
239 layout->setMargin(0);
240 widget->setLayout(layout);
241
242 d->browser = new QTextBrowser(this);
243 d->browser->setHtml(labelText);
244 layout->addWidget(d->browser);
245
246 d->bar = new QProgressBar(this);
247 //d->bar->setFormat("%v");
248 d->bar->setVisible(false);
249 layout->addWidget(d->bar);
250
251 setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding) );
252 show();
253 qApp->processEvents();
254}
255
256FormProgressDialog::~FormProgressDialog()
257{
258 delete d;
259}
260
261void FormProgressDialog::setValue(int progress)
262{
263 if( progress < 0 ) {
264 if( d->bar->isVisible() ) {
265 d->bar->setVisible(false);
266 d->bar->setValue(0);
267 qApp->processEvents();
268 }
269 return;
270 }
271 if( ! d->bar->isVisible() )
272 d->bar->setVisible(true);
273 d->bar->setValue(progress);
274 d->update();
275}
276
277void FormProgressDialog::setRange(int minimum, int maximum)
278{
279 d->bar->setRange(minimum, maximum);
280}
281
282void FormProgressDialog::setText(const QString& text)
283{
284 d->browser->setHtml(text);
285 d->update();
286}
287
288void FormProgressDialog::addText(const QString& text)
289{
290 QTextCursor cursor( d->browser->document()->end() );
291 cursor.movePosition(QTextCursor::End);
292 cursor.insertBlock();
293 cursor.insertHtml(text);
294 d->browser->moveCursor(QTextCursor::End);
295 d->browser->ensureCursorVisible();
296 d->update();
297}
298
299void FormProgressDialog::done(int r)
300{
301 if( r == Rejected && ! d->gotCanceled ) {
302 if( KMessageBox::messageBox(this, KMessageBox::WarningContinueCancel, i18n("Cancel?")) == KMessageBox::Continue ) {
303 d->gotCanceled = true;
304 enableButton(KDialog::Cancel, false);
305 emit canceled();
306 }
307 return;
308 }
309 KPageDialog::done(r);
310}
311
312int FormProgressDialog::exec()
313{
314 enableButton(KDialog::Ok, true);
315 enableButton(KDialog::Cancel, false);
316 if( d->bar->isVisible() )
317 d->bar->setValue( d->bar->maximum() );
318 return KDialog::exec();
319}
320
321bool FormProgressDialog::isCanceled()
322{
323 return d->gotCanceled;
324}
325
326/*********************************************************************************
327 * FormDialog
328 */
329
330namespace Kross {
331
333 class FormDialog::Private
334 {
335 public:
336 KDialog::ButtonCode buttoncode;
337 QHash<QString, KPageWidgetItem*> items;
338 };
339
340}
341
342FormDialog::FormDialog(const QString& caption)
343 : KPageDialog( /*0, Qt::WShowModal | Qt::WDestructiveClose*/ )
344 , d( new Private() )
345{
346 setCaption(caption);
347 KDialog::setButtons(KDialog::Ok);
348 setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding) );
349
350 connect(this, SIGNAL(currentPageChanged(KPageWidgetItem*,KPageWidgetItem*)),
351 this, SLOT(slotCurrentPageChanged(KPageWidgetItem*)));
352}
353
354FormDialog::~FormDialog()
355{
356 kWarning()<<"dtor";
357 delete d;
358}
359
360bool FormDialog::setButtons(const QString& buttons)
361{
362 int i = metaObject()->indexOfEnumerator("ButtonCode");
363 Q_ASSERT( i >= 0 );
364 QMetaEnum e = metaObject()->enumerator(i);
365 int v = e.keysToValue( buttons.toUtf8() );
366 if( v < 0 )
367 return false;
368 KDialog::setButtons( (KDialog::ButtonCode) v );
369 return true;
370}
371
372bool FormDialog::setButtonText(const QString& button, const QString& text)
373{
374 int i = metaObject()->indexOfEnumerator("ButtonCode");
375 Q_ASSERT( i >= 0 );
376 QMetaEnum e = metaObject()->enumerator(i);
377 int v = e.keysToValue( button.toUtf8() );
378 if( v < 0 )
379 return false;
380 KDialog::setButtonText( (KDialog::ButtonCode) v, text);
381 return true;
382}
383
384bool FormDialog::setFaceType(const QString& facetype)
385{
386 int i = KPageView::staticMetaObject.indexOfEnumerator("FaceType");
387 Q_ASSERT( i >= 0 );
388 QMetaEnum e = KPageView::staticMetaObject.enumerator(i);
389 int v = e.keysToValue( facetype.toUtf8() );
390 if( v < 0 )
391 return false;
392 KPageDialog::setFaceType( (KPageDialog::FaceType) v );
393 return true;
394}
395
396QString FormDialog::currentPage() const
397{
398 KPageWidgetItem* item = KPageDialog::currentPage();
399 return item ? item->name() : QString();
400}
401
402bool FormDialog::setCurrentPage(const QString& name)
403{
404 if( ! d->items.contains(name) )
405 return false;
406 KPageDialog::setCurrentPage( d->items[name] );
407 return true;
408}
409
410QWidget* FormDialog::page(const QString& name) const
411{
412 return d->items.contains(name) ? d->items[name]->widget() : 0;
413}
414
415//shared by FormDialog and FormAssistant
416static KPageWidgetItem* formAddPage(KPageDialog* dialog, const QString& name, const QString& header, const QString& iconname)
417{
418 QWidget* widget = new QWidget( dialog->mainWidget() );
419 QVBoxLayout* boxlayout = new QVBoxLayout(widget);
420 boxlayout->setSpacing(0);
421 boxlayout->setMargin(0);
422 widget->setLayout(boxlayout);
423
424 KPageWidgetItem* item = dialog->addPage(widget, name);
425 item->setHeader(header.isNull() ? name : header);
426 if( ! iconname.isEmpty() )
427 item->setIcon( KIcon(iconname) );
428 //d->items.insert(name, item);
429
430 return item;
431}
432
433QWidget* FormDialog::addPage(const QString& name, const QString& header, const QString& iconname)
434{
435 return d->items.insert(name, formAddPage((KPageDialog*)this,name,header,iconname)).value()->widget();
436}
437
438void FormDialog::setMainWidget(QWidget *newMainWidget)
439{
440 KDialog::setMainWidget(newMainWidget);
441}
442
443QString FormDialog::result()
444{
445 int i = metaObject()->indexOfEnumerator("ButtonCode");
446 if( i < 0 ) {
447 kWarning() << "Kross::FormDialog::setButtons No such enumerator \"ButtonCode\"";
448 return QString();
449 }
450 QMetaEnum e = metaObject()->enumerator(i);
451 return e.valueToKey(d->buttoncode);
452}
453
454void FormDialog::slotButtonClicked(int button)
455{
456 d->buttoncode = (KDialog::ButtonCode) button;
457 KDialog::slotButtonClicked(button);
458}
459
460void FormDialog::slotCurrentPageChanged(KPageWidgetItem* current)
461{
462 Q_UNUSED(current);
463 //kDebug() << "FormDialog::slotCurrentPageChanged current=" << current->name();
464 //foreach(QWidget* widget, current->widget()->findChildren< QWidget* >("")) widget->setFocus();
465}
466
467
468namespace Kross {
470 class FormAssistant::Private
471 {
472 public:
473 KDialog::ButtonCode buttoncode;
474 QHash<QString, KPageWidgetItem*> items;
475 };
476}
477FormAssistant::FormAssistant(const QString& caption)
478 : KAssistantDialog( /*0, Qt::WShowModal | Qt::WDestructiveClose*/ )
479 , d( new Private() )
480{
481 setCaption(caption);
482 setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding) );
483
484 connect(this, SIGNAL(currentPageChanged(KPageWidgetItem*,KPageWidgetItem*)),
485 this, SLOT(slotCurrentPageChanged(KPageWidgetItem*)));
486 /* unlike boost qt does not support defining of slot call order!
487 connect(this, SIGNAL(user2Clicked()), this, SIGNAL (nextClicked()));
488 connect(this, SIGNAL(user3Clicked()), this, SIGNAL (backClicked()));
489 */
490}
491
492FormAssistant::~FormAssistant()
493{
494 delete d;
495}
496
497void FormAssistant::showHelpButton(bool show)
498{
499 showButton(KDialog::Help, show);
500}
501
502void FormAssistant::back()
503{
504 emit backClicked();
505 KAssistantDialog::back();
506}
507void FormAssistant::next()
508{
509 emit nextClicked();
510 KAssistantDialog::next();
511}
512
513QString FormAssistant::currentPage() const
514{
515 KPageWidgetItem* item = KPageDialog::currentPage();
516 return item ? item->name() : QString();
517}
518
519bool FormAssistant::setCurrentPage(const QString& name)
520{
521 if( ! d->items.contains(name) )
522 return false;
523 KPageDialog::setCurrentPage( d->items[name] );
524 return true;
525}
526
527QWidget* FormAssistant::page(const QString& name) const
528{
529 return d->items.contains(name) ? d->items[name]->widget() : 0;
530}
531
532QWidget* FormAssistant::addPage(const QString& name, const QString& header, const QString& iconname)
533{
534 return d->items.insert(name, formAddPage((KPageDialog*)this,name,header,iconname)).value()->widget();
535}
536
537bool FormAssistant::isAppropriate (const QString& name) const
538{
539 return d->items.contains(name) && KAssistantDialog::isAppropriate(d->items[name]);
540}
541void FormAssistant::setAppropriate (const QString& name, bool appropriate)
542{
543 if (!d->items.contains(name))
544 return;
545
546 KAssistantDialog::setAppropriate(d->items[name],appropriate);
547}
548bool FormAssistant::isValid (const QString& name) const
549{
550 return d->items.contains(name) && KAssistantDialog::isValid(d->items[name]);
551}
552void FormAssistant::setValid (const QString& name, bool enable)
553{
554 if (!d->items.contains(name))
555 return;
556
557 KAssistantDialog::setValid(d->items[name],enable);
558}
559
560QString FormAssistant::result()
561{
562 int i = metaObject()->indexOfEnumerator("AssistantButtonCode");
563 if( i < 0 ) {
564 kWarning() << "Kross::FormAssistant::setButtons No such enumerator \"AssistantButtonCode\"";
565 return QString();
566 }
567 QMetaEnum e = metaObject()->enumerator(i);
568 return e.valueToKey(FormAssistant::AssistantButtonCode(int(d->buttoncode)));
569}
570
571void FormAssistant::slotButtonClicked(int button)
572{
573 d->buttoncode = (KDialog::ButtonCode) button;
574 KDialog::slotButtonClicked(button);
575}
576
577void FormAssistant::slotCurrentPageChanged(KPageWidgetItem* current)
578{
579 Q_UNUSED(current);
580 //kDebug() << "FormAssistant::slotCurrentPageChanged current=" << current->name();
581 //foreach(QWidget* widget, current->widget()->findChildren< QWidget* >("")) widget->setFocus();
582}
583
584/*********************************************************************************
585 * FormModule
586 */
587
588namespace Kross {
589
591 class UiLoader : public QUiLoader
592 {
593 public:
594 UiLoader() : QUiLoader() {}
595 virtual ~UiLoader() {}
596
597 /*
598 virtual QAction* createAction(QObject* parent = 0, const QString& name = QString())
599 {
600 }
601
602 virtual QActionGroup* createActionGroup(QObject* parent = 0, const QString& name = QString())
603 {
604 }
605
606 virtual QLayout* createLayout(const QString& className, QObject* parent = 0, const QString& name = QString())
607 {
608 }
609
610 virtual QWidget* createWidget(const QString& className, QWidget* parent = 0, const QString& name = QString())
611 {
612 }
613 */
614 };
615
617 class FormModule::Private
618 {
619 public:
620 };
621
622}
623
624FormModule::FormModule()
625 : QObject()
626 , d( new Private() )
627{
628}
629
630FormModule::~FormModule()
631{
632 delete d;
633}
634
635QWidget* FormModule::activeModalWidget()
636{
637 return QApplication::activeModalWidget();
638}
639
640QWidget* FormModule::activeWindow()
641{
642 return QApplication::activeWindow();
643}
644
645QString FormModule::showMessageBox(const QString& dialogtype, const QString& caption, const QString& message, const QString& details)
646{
647 KMessageBox::DialogType type;
648 if(dialogtype == "Error") {
649 if( ! details.isNull() ) {
650 KMessageBox::detailedError(0, message, details, caption);
651 return QString();
652 }
653 type = KMessageBox::Error;
654 }
655 else if(dialogtype == "Sorry") {
656 if( ! details.isNull() ) {
657 KMessageBox::detailedSorry(0, message, details, caption);
658 return QString();
659 }
660 type = KMessageBox::Sorry;
661 }
662 else if(dialogtype == "QuestionYesNo") type = KMessageBox::QuestionYesNo;
663 else if(dialogtype == "WarningYesNo") type = KMessageBox::WarningYesNo;
664 else if(dialogtype == "WarningContinueCancel") type = KMessageBox::WarningContinueCancel;
665 else if(dialogtype == "WarningYesNoCancel") type = KMessageBox::WarningYesNoCancel;
666 else if(dialogtype == "QuestionYesNoCancel") type = KMessageBox::QuestionYesNoCancel;
667 else /*if(dialogtype == "Information")*/ type = KMessageBox::Information;
668 switch( KMessageBox::messageBox(0, type, message, caption) ) {
669 case KMessageBox::Ok: return "Ok";
670 case KMessageBox::Cancel: return "Cancel";
671 case KMessageBox::Yes: return "Yes";
672 case KMessageBox::No: return "No";
673 case KMessageBox::Continue: return "Continue";
674 default: break;
675 }
676 return QString();
677}
678
679QWidget* FormModule::showProgressDialog(const QString& caption, const QString& labelText)
680{
681 return new FormProgressDialog(caption, labelText);
682}
683
684QWidget* FormModule::createDialog(const QString& caption)
685{
686 return new FormDialog(caption);
687}
688
689QWidget* FormModule::createAssistant(const QString& caption)
690{
691 return new FormAssistant(caption);
692}
693
694QObject* FormModule::createLayout(QWidget* parent, const QString& layout)
695{
696 QLayout* l = 0;
697 if( layout == "QVBoxLayout" )
698 l = new QVBoxLayout();
699 else if( layout == "QHBoxLayout" )
700 l = new QHBoxLayout();
701 else if( layout == "QStackedLayout" )
702 l = new QStackedLayout();
703 if( parent && l )
704 parent->setLayout(l);
705 return l;
706}
707
708QWidget* FormModule::createWidget(const QString& className)
709{
710 UiLoader loader;
711 QWidget* widget = loader.createWidget(className);
712 return widget;
713}
714
715QWidget* FormModule::createWidget(QWidget* parent, const QString& className, const QString& name)
716{
717 UiLoader loader;
718 QWidget* widget = loader.createWidget(className, parent, name);
719 if( parent && parent->layout() )
720 parent->layout()->addWidget(widget);
721 return widget;
722}
723
724
725QString FormModule::tr(const QString& str)
726{
727 return QObject::tr(str.toUtf8());
728}
729QString FormModule::tr(const QString& str, const QString& comment)
730{
731 return QObject::tr(str.toUtf8(),comment.toUtf8());
732}
733
734QWidget* FormModule::createWidgetFromUI(QWidget* parent, const QString& xml)
735{
736 QUiLoader loader;
737
738 QDomDocument doc("mydocument");
739 doc.setContent(xml.toUtf8());
740
741 QDomNodeList strings=doc.elementsByTagName("string");
742 int i=strings.size();
743 while(--i>=0)
744 {
745 QDomElement e=strings.at(i).toElement();
746 QString i18nd=e.attribute("comment").isEmpty()?QObject::tr(e.text().toUtf8()):QObject::tr(e.text().toUtf8(),e.attribute("comment").toUtf8());
747 if (i18nd==e.text())
748 continue;
749 QDomNode n = e.firstChild();
750 while (!n.isNull())
751 {
752 QDomNode nn=n.nextSibling();
753 if (n.isCharacterData())
754 e.removeChild(n);
755 n = nn;
756 }
757 e.appendChild(e.ownerDocument().createTextNode(i18nd));
758 }
759
760 QByteArray ba = doc.toByteArray();
761 QBuffer buffer(&ba);
762 buffer.open(QIODevice::ReadOnly);
763
764 QWidget* widget = loader.load(&buffer, parent);
765 if( widget && parent && parent->layout() )
766 parent->layout()->addWidget(widget);
767 return widget;
768}
769
770QWidget* FormModule::createWidgetFromUIFile(QWidget* parent, const QString& filename)
771{
772 QFile file(filename);
773 if( ! file.exists() ) {
774 kDebug() << QString("Kross::FormModule::createWidgetFromUIFile: There exists no such file \"%1\"").arg(filename);
775 return 0;
776 }
777 if( ! file.open(QFile::ReadOnly) ) {
778 kDebug() << QString("Kross::FormModule::createWidgetFromUIFile: Failed to open the file \"%1\"").arg(filename);
779 return 0;
780 }
781 const QString xml = file.readAll();
782 file.close();
783 return createWidgetFromUI(parent, xml);
784}
785
786QWidget* FormModule::createFileWidget(QWidget* parent, const QString& startDirOrVariable)
787{
788 FormFileWidget* widget = new FormFileWidget(parent, startDirOrVariable);
789 if( parent && parent->layout() )
790 parent->layout()->addWidget(widget);
791 return widget;
792}
793
794QWidget* FormModule::createListView(QWidget* parent)
795{
796 FormListView* widget = new FormListView(parent);
797 if( parent && parent->layout() )
798 parent->layout()->addWidget(widget);
799 return widget;
800}
801
802QAction* FormModule::createAction(QObject* parent)
803{
804 return new QAction(parent);
805}
806
807QObject* FormModule::loadPart(QWidget* parent, const QString& name, const QUrl& url)
808{
809 //name e.g. "libkghostview"
810 KPluginFactory* factory = KPluginLoader( name.toLatin1() ).factory();
811 if( ! factory ) {
812 kWarning() << QString("Kross::FormModule::loadPart: No such library \"%1\"").arg(name);
813 return 0;
814 }
815 KParts::ReadOnlyPart* part = factory->create< KParts::ReadOnlyPart >( parent );
816 if( ! part ) {
817 kWarning() << QString("Kross::FormModule::loadPart: Library \"%1\" is not a KPart").arg(name);
818 return 0;
819 }
820 if( url.isValid() )
821 part->openUrl(url);
822 if( parent && parent->layout() && part->widget() )
823 parent->layout()->addWidget( part->widget() );
824 return part;
825}
826
827#include "form.moc"
KAssistantDialog
KAssistantDialog::isValid
bool isValid(KPageWidgetItem *page) const
KAssistantDialog::back
virtual void back()
KAssistantDialog::next
virtual void next()
KAssistantDialog::isAppropriate
bool isAppropriate(KPageWidgetItem *page) const
KAssistantDialog::setAppropriate
void setAppropriate(KPageWidgetItem *page, bool appropriate)
KAssistantDialog::setValid
void setValid(KPageWidgetItem *page, bool enable)
KDialog::mainWidget
QWidget * mainWidget()
KDialog::setMainWidget
void setMainWidget(QWidget *widget)
KDialog::button
KPushButton * button(ButtonCode id) const
KDialog::slotButtonClicked
virtual void slotButtonClicked(int button)
KDialog::enableButton
void enableButton(ButtonCode id, bool state)
KDialog::setButtons
void setButtons(ButtonCodes buttonMask)
KDialog::showButton
void showButton(ButtonCode id, bool state)
KDialog::ButtonCode
ButtonCode
KDialog::Help
Help
KDialog::Ok
Ok
KDialog::Cancel
Cancel
KDialog::setButtonText
void setButtonText(ButtonCode id, const QString &text)
KDialog::setCaption
virtual void setCaption(const QString &caption)
KIcon
KMessageBox::detailedSorry
static void detailedSorry(QWidget *parent, const QString &text, const QString &details, const QString &caption=QString(), Options options=Notify)
KMessageBox::detailedError
static void detailedError(QWidget *parent, const QString &text, const QString &details, const QString &caption=QString(), Options options=Notify)
KMessageBox::Yes
Yes
KMessageBox::Continue
Continue
KMessageBox::No
No
KMessageBox::Cancel
Cancel
KMessageBox::Ok
Ok
KMessageBox::messageBox
static int messageBox(QWidget *parent, DialogType type, const QString &text, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontShowAskAgainName=QString(), Options options=Notify)
KMessageBox::DialogType
DialogType
KMessageBox::Error
Error
KMessageBox::QuestionYesNoCancel
QuestionYesNoCancel
KMessageBox::WarningContinueCancel
WarningContinueCancel
KMessageBox::WarningYesNoCancel
WarningYesNoCancel
KMessageBox::Sorry
Sorry
KMessageBox::QuestionYesNo
QuestionYesNo
KMessageBox::WarningYesNo
WarningYesNo
KMessageBox::Information
Information
KPageDialog
KPageDialog::FaceType
FaceType
KPageDialog::Plain
Plain
KPageDialog::currentPageChanged
void currentPageChanged(KPageWidgetItem *current, KPageWidgetItem *before)
KPageDialog::setCurrentPage
void setCurrentPage(KPageWidgetItem *item)
KPageDialog::currentPage
KPageWidgetItem * currentPage() const
KPageDialog::setFaceType
void setFaceType(FaceType faceType)
KPageDialog::addPage
void addPage(KPageWidgetItem *item)
KPageWidgetItem
KPageWidgetItem::name
QString name
KPageWidgetItem::widget
QWidget * widget() const
KPageWidgetItem::setIcon
void setIcon(const KIcon &icon)
KPageWidgetItem::setHeader
void setHeader(const QString &header)
KPluginFactory::create
T * create(const QString &keyword, QObject *parent=0, const QVariantList &args=QVariantList())
KPluginLoader
KPluginLoader::factory
KPluginFactory * factory()
KUrl
KUrl::path
QString path(AdjustPathOption trailing=LeaveTrailingSlash) const
Kross::FormAssistant
The FormAssistant class provides access to KAssistantDialog objects as top-level containers.
Definition: form.h:384
Kross::FormAssistant::isValid
bool isValid(const QString &name) const
Definition: form.cpp:548
Kross::FormAssistant::page
QWidget * page(const QString &name) const
Definition: form.cpp:527
Kross::FormAssistant::~FormAssistant
virtual ~FormAssistant()
Definition: form.cpp:492
Kross::FormAssistant::showHelpButton
void showHelpButton(bool)
Definition: form.cpp:497
Kross::FormAssistant::setAppropriate
void setAppropriate(const QString &name, bool appropriate)
Definition: form.cpp:541
Kross::FormAssistant::back
void back()
Force page switching.
Definition: form.cpp:502
Kross::FormAssistant::addPage
QWidget * addPage(const QString &name, const QString &header=QString(), const QString &iconname=QString())
Add and return a new page.
Definition: form.cpp:532
Kross::FormAssistant::backClicked
void backClicked()
Kross::FormAssistant::setValid
void setValid(const QString &name, bool enable)
Definition: form.cpp:552
Kross::FormAssistant::isAppropriate
bool isAppropriate(const QString &name) const
Definition: form.cpp:537
Kross::FormAssistant::currentPage
QString currentPage() const
Definition: form.cpp:513
Kross::FormAssistant::FormAssistant
FormAssistant(const QString &caption)
Definition: form.cpp:477
Kross::FormAssistant::setCurrentPage
bool setCurrentPage(const QString &name)
Set the current page to name .
Definition: form.cpp:519
Kross::FormAssistant::AssistantButtonCode
AssistantButtonCode
Definition: form.h:389
Kross::FormAssistant::result
QString result()
Definition: form.cpp:560
Kross::FormAssistant::next
void next()
Force page switching.
Definition: form.cpp:507
Kross::FormAssistant::nextClicked
void nextClicked()
use it to setAppropriate()
Kross::FormDialog
The FormDialog class provides access to KDialog objects as top-level containers.
Definition: form.h:233
Kross::FormDialog::setFaceType
bool setFaceType(const QString &facetype)
Set the face type of the dialog.
Definition: form.cpp:384
Kross::FormDialog::setMainWidget
void setMainWidget(QWidget *newMainWidget)
Set the newMainWidget QWidget as main widget.
Definition: form.cpp:438
Kross::FormDialog::page
QWidget * page(const QString &name) const
Definition: form.cpp:410
Kross::FormDialog::~FormDialog
virtual ~FormDialog()
Definition: form.cpp:354
Kross::FormDialog::setButtons
bool setButtons(const QString &buttons)
Set the buttons.
Definition: form.cpp:360
Kross::FormDialog::addPage
QWidget * addPage(const QString &name, const QString &header=QString(), const QString &iconname=QString())
Add and return a new page.
Definition: form.cpp:433
Kross::FormDialog::setCurrentPage
bool setCurrentPage(const QString &name)
Set the current page to name .
Definition: form.cpp:402
Kross::FormDialog::setButtonText
bool setButtonText(const QString &button, const QString &text)
Set the text of a button.
Definition: form.cpp:372
Kross::FormDialog::result
QString result()
Definition: form.cpp:443
Kross::FormDialog::FormDialog
FormDialog(const QString &caption)
Definition: form.cpp:342
Kross::FormDialog::currentPage
QString currentPage() const
Definition: form.cpp:396
Kross::FormFileWidget
The FormFileWidget class provides access to a KFileWidget.
Definition: form.h:56
Kross::FormFileWidget::currentMimeFilter
QString currentMimeFilter() const
Definition: form.cpp:163
Kross::FormFileWidget::selectedFile
QString selectedFile() const
Definition: form.cpp:179
Kross::FormFileWidget::~FormFileWidget
virtual ~FormFileWidget()
Definition: form.cpp:139
Kross::FormFileWidget::filterChanged
void filterChanged(const QString &filter)
Emitted when the filter changed, i.e.
Kross::FormFileWidget::selectionChanged
void selectionChanged()
Emitted when the user hilights one or more files in multiselection mode.
Kross::FormFileWidget::currentFilter
QString currentFilter() const
Definition: form.cpp:151
Kross::FormFileWidget::fileSelected
void fileSelected(const QString &file)
Emitted when the user selects a file.
Kross::FormFileWidget::setMode
void setMode(const QString &mode)
Set the Mode the FormFileWidget should have to mode .
Definition: form.cpp:144
Kross::FormFileWidget::setFilter
void setFilter(const QString &filter)
Set the filter to filter .
Definition: form.cpp:156
Kross::FormFileWidget::setMimeFilter
void setMimeFilter(const QStringList &filter)
Set the mimetype filter to filter .
Definition: form.cpp:168
Kross::FormFileWidget::FormFileWidget
FormFileWidget(QWidget *parent, const QString &startDirOrVariable)
Definition: form.cpp:107
Kross::FormFileWidget::fileHighlighted
void fileHighlighted(const QString &)
Emitted when the user highlights a file.
Kross::FormListView
The FormListView class provides access to a ListView.
Definition: form.h:37
Kross::FormListView::current
int current()
Definition: form.cpp:84
Kross::FormListView::clear
void clear()
Definition: form.cpp:80
Kross::FormListView::addItem
void addItem(const QString &text)
Definition: form.cpp:82
Kross::FormListView::~FormListView
virtual ~FormListView()
Definition: form.cpp:79
Kross::FormListView::text
QString text(int row)
Definition: form.cpp:86
Kross::FormListView::remove
void remove(int index)
Definition: form.cpp:81
Kross::FormListView::count
int count()
Definition: form.cpp:83
Kross::FormListView::setCurrent
void setCurrent(int row)
Definition: form.cpp:85
Kross::FormListView::FormListView
FormListView(QWidget *parent)
Definition: form.cpp:78
Kross::FormModule
The FormModule provides access to UI functionality like dialogs or widgets.
Definition: form.h:526
Kross::FormModule::FormModule
FormModule()
Definition: form.cpp:624
Kross::FormModule::showMessageBox
QString showMessageBox(const QString &dialogtype, const QString &caption, const QString &message, const QString &details=QString())
Show a messagebox.
Definition: form.cpp:645
Kross::FormModule::createAction
QAction * createAction(QObject *parent)
Create and return a new QAction instance.
Definition: form.cpp:802
Kross::FormModule::createLayout
QObject * createLayout(QWidget *parent, const QString &layout)
Create and return a new QWidget instance.
Definition: form.cpp:694
Kross::FormModule::tr
QString tr(const QString &str)
Definition: form.cpp:725
Kross::FormModule::createWidget
QWidget * createWidget(const QString &className)
Create and return a new QWidget instance.
Definition: form.cpp:708
Kross::FormModule::~FormModule
virtual ~FormModule()
Definition: form.cpp:630
Kross::FormModule::createFileWidget
QWidget * createFileWidget(QWidget *parent, const QString &startDirOrVariable=QString())
Create and return a new FormFileWidget instance.
Definition: form.cpp:786
Kross::FormModule::activeWindow
QWidget * activeWindow()
Definition: form.cpp:640
Kross::FormModule::createWidgetFromUI
QWidget * createWidgetFromUI(QWidget *parent, const QString &xml)
Create and return a new QWidget instance.
Definition: form.cpp:734
Kross::FormModule::createListView
QWidget * createListView(QWidget *parent)
Create and return a new FormListView instance.
Definition: form.cpp:794
Kross::FormModule::showProgressDialog
QWidget * showProgressDialog(const QString &caption, const QString &labelText)
Show a progressdialog to provide visible feedback on the progress of a slow operation.
Definition: form.cpp:679
Kross::FormModule::createWidgetFromUIFile
QWidget * createWidgetFromUIFile(QWidget *parent, const QString &filename)
Create and return a new QWidget instance.
Definition: form.cpp:770
Kross::FormModule::activeModalWidget
QWidget * activeModalWidget()
Definition: form.cpp:635
Kross::FormModule::createDialog
QWidget * createDialog(const QString &caption)
Create and return a new FormDialog instance.
Definition: form.cpp:684
Kross::FormModule::createAssistant
QWidget * createAssistant(const QString &caption)
Create and return a new FormAssistant instance.
Definition: form.cpp:689
Kross::FormModule::loadPart
QObject * loadPart(QWidget *parent, const QString &name, const QUrl &url=QUrl())
Load and return a KPart component.
Definition: form.cpp:807
Kross::FormProgressDialog
The FormProgressDialog class provides access to progressbar.
Definition: form.h:156
Kross::FormProgressDialog::FormProgressDialog
FormProgressDialog(const QString &caption, const QString &labelText)
Definition: form.cpp:219
Kross::FormProgressDialog::setText
void setText(const QString &text)
Set the HTML-text that is displayed as information to the text text .
Definition: form.cpp:282
Kross::FormProgressDialog::exec
int exec()
Shows the dialog as a modal dialog, blocking until the user closes it and returns the execution resul...
Definition: form.cpp:312
Kross::FormProgressDialog::addText
void addText(const QString &text)
Add to the HTML-text that is displayed as information the text text .
Definition: form.cpp:288
Kross::FormProgressDialog::done
virtual void done(int r)
Definition: form.cpp:299
Kross::FormProgressDialog::canceled
void canceled()
This signal got emitted if the user requests to cancel the operation.
Kross::FormProgressDialog::isCanceled
bool isCanceled()
Returns true if the user requested to cancel the operation.
Definition: form.cpp:321
Kross::FormProgressDialog::setValue
void setValue(int progress)
Set the value of the progressbar.
Definition: form.cpp:261
Kross::FormProgressDialog::~FormProgressDialog
virtual ~FormProgressDialog()
Definition: form.cpp:256
Kross::FormProgressDialog::setRange
void setRange(int minimum, int maximum)
Set the minimum and maximum range of the progressbar.
Definition: form.cpp:277
QAction
QHash
QListWidget
QObject
QTextBrowser
QUrl
QWidget
header
const char header[]
formAddPage
static KPageWidgetItem * formAddPage(KPageDialog *dialog, const QString &name, const QString &header, const QString &iconname)
Definition: form.cpp:416
krossmodule
QObject * krossmodule()
Definition: form.cpp:66
form.h
kDebug
#define kDebug
kWarning
#define kWarning
kaction.h
kactioncollection.h
kdebug.h
kicon.h
klocale.h
i18n
QString i18n(const char *text)
kmessagebox.h
kpluginfactory.h
kpluginloader.h
kpushbutton.h
kshell.h
ksqueezedtextlabel.h
kurl.h
caption
QString caption()
message
void message(KMessage::MessageType messageType, const QString &text, const QString &caption=QString())
name
const char * name(StandardAction id)
Kross
Definition: action.cpp:36
KPluginFactory
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

Kross

Skip menu "Kross"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal