summaryrefslogtreecommitdiffstats
path: root/kommander/widgets/wizard.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kommander/widgets/wizard.cpp')
-rw-r--r--kommander/widgets/wizard.cpp194
1 files changed, 194 insertions, 0 deletions
diff --git a/kommander/widgets/wizard.cpp b/kommander/widgets/wizard.cpp
new file mode 100644
index 00000000..7e6a07b4
--- /dev/null
+++ b/kommander/widgets/wizard.cpp
@@ -0,0 +1,194 @@
+/***************************************************************************
+ wizard.cpp - Widget providing a wizard
+ -------------------
+ copyright : (C) 2002 by Marc Britton
+ email : consume@optusnet.com.au
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+/* KDE INCLUDES */
+#include <kprocess.h>
+
+/* QT INCLUDES */
+#include <qstring.h>
+#include <qwidget.h>
+#include <qstringlist.h>
+#include <qevent.h>
+#include <qwizard.h>
+#include <qdialog.h>
+
+/* OTHER INCLUDES */
+#include <myprocess.h>
+#include <kommanderfactory.h>
+#include <specials.h>
+#include "wizard.h"
+
+
+Wizard::Wizard(QWidget *a_parent, const char *a_name, bool a_modal, int a_flags)
+ : QWizard(a_parent, a_name, a_modal, a_flags), KommanderWidget(this)
+{
+ QStringList states;
+ states << "default";
+ states << "initialization";
+ states << "destroy";
+ setStates(states);
+ setDisplayStates(states);
+
+ connect(this, SIGNAL(helpClicked()), SLOT(runHelp()));
+}
+
+Wizard::~Wizard()
+{
+ if (!inEditor)
+ destroy();
+}
+
+QString Wizard::currentState() const
+{
+ return QString("default");
+}
+
+bool Wizard::isKommanderWidget() const
+{
+ return true;
+}
+
+QStringList Wizard::associatedText() const
+{
+ return KommanderWidget::associatedText();
+}
+
+void Wizard::setAssociatedText(const QStringList& a_at)
+{
+ KommanderWidget::setAssociatedText(a_at);
+}
+
+void Wizard::setPopulationText(const QString& a_text)
+{
+ KommanderWidget::setPopulationText(a_text);
+}
+
+QString Wizard::populationText() const
+{
+ return KommanderWidget::populationText();
+}
+
+void Wizard::populate()
+{
+ QString txt = KommanderWidget::evalAssociatedText(populationText());
+//FIXME: implement me
+}
+
+void Wizard::setWidgetText(const QString &a_text)
+{
+ setCaption(a_text);
+ emit widgetTextChanged(a_text);
+}
+
+void Wizard::initialize()
+{
+ setFinishEnabled(page(pageCount() - 1), true);
+ const QStringList assoc = associatedText();
+ if (assoc.count() > 1 && !assoc[1].isEmpty())
+ {
+ MyProcess proc(this);
+ proc.run( KommanderWidget::evalAssociatedText(assoc[1]) );
+ }
+}
+
+void Wizard::destroy()
+{
+ const QStringList assoc = associatedText();
+ if (assoc.count() > 2 && !assoc[2].isEmpty())
+ {
+ MyProcess proc(this);
+ proc.run(KommanderWidget::evalAssociatedText(assoc[2]));
+ }
+}
+
+void Wizard::exec()
+{
+ QWizard::exec();
+ emit finished();
+}
+
+void Wizard::show()
+{
+ QWizard::show();
+ if (!inEditor)
+ initialize();
+}
+
+void Wizard::runHelp()
+{
+ if (helpAction() == Command)
+ {
+ KProcess proc;
+ proc << helpActionText();
+ proc.start(KProcess::DontCare, KProcess::NoCommunication);
+ }
+ else if (helpAction() == Dialog)
+ {
+ KommanderFactory::loadPlugins();
+ QDialog *dialog = (QDialog *)KommanderFactory::create(helpActionText());
+ dialog->exec();
+ delete dialog;
+ }
+}
+
+Wizard::HelpAction Wizard::helpAction() const
+{
+ return m_helpAction;
+}
+
+void Wizard::setHelpAction(HelpAction a_helpAction)
+{
+ m_helpAction = a_helpAction;
+}
+
+QString Wizard::helpActionText() const
+{
+ return m_helpActionText;
+}
+
+void Wizard::setHelpActionText(const QString& a_helpActionText)
+{
+ m_helpActionText = a_helpActionText;
+}
+
+
+void Wizard::showEvent(QShowEvent *e)
+{
+ QWizard::showEvent(e);
+ emit widgetOpened();
+}
+
+void Wizard::contextMenuEvent( QContextMenuEvent * e )
+{
+ e->accept();
+ QPoint p = e->globalPos();
+ emit contextMenuRequested(p.x(), p.y());
+}
+
+QString Wizard::handleDCOP(int function, const QStringList& args)
+{
+ switch (function) {
+ case DCOP::setEnabled:
+ setFinishEnabled(page(pageCount() - 1), args[0] != "false");
+ break;
+ default:
+ return KommanderWidget::handleDCOP(function, args);
+ }
+ return QString();
+}
+
+
+
+#include "wizard.moc"