summaryrefslogtreecommitdiffstats
path: root/kexi/plugins/macros/kexipart/keximacroerror.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
commit8362bf63dea22bbf6736609b0f49c152f975eb63 (patch)
tree0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kexi/plugins/macros/kexipart/keximacroerror.cpp
downloadkoffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz
koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kexi/plugins/macros/kexipart/keximacroerror.cpp')
-rw-r--r--kexi/plugins/macros/kexipart/keximacroerror.cpp130
1 files changed, 130 insertions, 0 deletions
diff --git a/kexi/plugins/macros/kexipart/keximacroerror.cpp b/kexi/plugins/macros/kexipart/keximacroerror.cpp
new file mode 100644
index 00000000..15f4df3f
--- /dev/null
+++ b/kexi/plugins/macros/kexipart/keximacroerror.cpp
@@ -0,0 +1,130 @@
+/***************************************************************************
+ * This file is part of the KDE project
+ * copyright (C) 2006 by Tobi Krebs ([email protected])
+ * copyright (C) 2006 by Bernd Steindorff ([email protected])
+ * copyright (C) 2006 by Sascha Kupper ([email protected])
+ * copyright (C) 2006 by Sebastian Sauer ([email protected])
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ * You should have received a copy of the GNU Library General Public License
+ * along with this program; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ ***************************************************************************/
+
+#include "keximacroerror.h"
+
+#include <core/kexiproject.h>
+#include <core/keximainwindow.h>
+
+#include <qtimer.h>
+
+/**
+* \internal d-pointer class to be more flexible on future extension of the
+* functionality without to much risk to break the binary compatibility.
+*/
+class KexiMacroError::Private
+{
+ public:
+ KexiMainWindow* const mainwin;
+ KSharedPtr<KoMacro::Context> context;
+
+ Private(KexiMainWindow* const m, KoMacro::Context* const c)
+ : mainwin(m)
+ , context(c)
+ {
+ }
+};
+
+KexiMacroError::KexiMacroError(KexiMainWindow* mainwin, KSharedPtr<KoMacro::Context> context)
+ : KexiMacroErrorBase(mainwin, "KexiMacroError" , /*WFlags*/ Qt::WDestructiveClose)
+ , d(new Private(mainwin, context))
+{
+ //setText(i18n("Execution failed")); //caption
+ //errortext, errorlist, continuebtn,cancelbtn, designerbtn
+
+ KoMacro::Exception* exception = context->exception();
+
+ iconlbl->setPixmap(KGlobal::instance()->iconLoader()->loadIcon("messagebox_critical", KIcon::Small, 32));
+ errorlbl->setText(i18n("<qt>Failed to execute the macro \"%1\".<br>%2</qt>").arg( context->macro()->name() ).arg( exception->errorMessage() ));
+
+ int i = 1;
+ KoMacro::MacroItem::List items = context->macro()->items();
+ for (KoMacro::MacroItem::List::ConstIterator mit = items.begin(); mit != items.end(); mit++)
+ {
+ KListViewItem* listviewitem = new KListViewItem(errorlist);
+ listviewitem->setText(0,QString("%1").arg(i++));
+ listviewitem->setText(1,i18n("Action"));
+ KSharedPtr<KoMacro::MacroItem> macroitem = *mit;
+
+ if (macroitem != 0 && macroitem->action() != 0)
+ {
+ listviewitem->setText(2,macroitem->action()->name());
+ }
+
+ if(macroitem == context->macroItem())
+ {
+ listviewitem->setOpen(true);
+ listviewitem->setSelected(true);
+ errorlist->setSelected(listviewitem, true);
+ errorlist->ensureItemVisible(listviewitem);
+ }
+
+ KoMacro::Variable::Map variables = macroitem->variables();
+ KoMacro::Variable::Map::ConstIterator vit;
+ for ( vit = variables.begin(); vit != variables.end(); ++vit ) {
+ KListViewItem* child = new KListViewItem(listviewitem);
+ child->setText(1,vit.key());
+ child->setText(2,vit.data()->toString());
+ }
+ }
+
+ connect(designerbtn, SIGNAL(clicked()), this, SLOT(designbtnClicked()));
+ connect(continuebtn, SIGNAL(clicked()), this, SLOT(continuebtnClicked()));
+}
+
+KexiMacroError::~KexiMacroError()
+{
+ delete d;
+}
+
+void KexiMacroError::designbtnClicked()
+{
+ if(! d->mainwin->project()) {
+ kdWarning() << QString("KexiMacroError::designbtnClicked(): No project open.") << endl;
+ return;
+ }
+
+ // We need to determinate the KexiPart::Item which should be opened.
+ KSharedPtr<KoMacro::Macro> macro = d->context->macro();
+ const QString name = macro->name();
+ KexiPart::Item* item = d->mainwin->project()->itemForMimeType("kexi/macro", name);
+ if(! item) {
+ kdWarning() << QString("KexiMacroError::designbtnClicked(): No such macro \"%1\"").arg(name) << endl;
+ return;
+ }
+
+ // Try to open the KexiPart::Item now.
+ bool openingCancelled;
+ if(! d->mainwin->openObject(item, Kexi::DesignViewMode, openingCancelled)) {
+ if(! openingCancelled) {
+ kdWarning() << QString("KexiMacroError::designbtnClicked(): Open macro \"%1\" in designview failed.").arg(name) << endl;
+ return;
+ }
+ }
+
+ close();
+}
+
+void KexiMacroError::continuebtnClicked()
+{
+ QTimer::singleShot(200, d->context, SLOT(activateNext()));
+ close();
+}