KXSLDbg plugin for Quanta
Keith Isdale <[email protected]> Wed, 9 Apr 2008 10:35:38 +1000
| Newsgroups | gmane.comp.kde.devel.quanta |
|---|---|
| Message-ID | <[email protected]> |
Hi, I have done a first pass of a KXSLDbg plugin for Quanta as shown by the attached patch. I do not intend to submit the patch it as it and will have another go at writing this plugin this in the comming weeks. This patch causes KXSLDbg* sources to built into KDevelop plugin and does not make use of : * the standard KDevelop controlled document view * the default Output view widget * the KDevelop style configure system For this change to work I want to build libxsldbg as a static library as I would not wish to build the same libxsldbg sources three times :ie * for the xsldhg application * for the KXSLDbg application * for the KDevelop plugin Help on what changes are required to build kxsldbg/kxsldbgpart/libxsldbg as a not installed static library and still have xsldbg and kxsldbg link successfully would be appreciated. I tried the STATIC keyword when declaring the how to build libxsldbg but could not get linking to complete. Regards, Keith _______________________________________________ quanta-devel mailing list [email protected] https://mail.kde.org/mailman/listinfo/quanta-devel
patch.diff
(text/x-diff, 44.5 KB)
Index: plugins/CMakeLists.txt =================================================================== --- plugins/CMakeLists.txt (revision 794937) +++ plugins/CMakeLists.txt (working copy) @@ -8,4 +8,5 @@ add_subdirectory( preview ) add_subdirectory( usertoolbars ) add_subdirectory( upload ) +add_subdirectory( kxsldbg ) Property changes on: plugins/kxsldbg ___________________________________________________________________ Name: svn:ignore + *.moc moc_* *_automoc* ui_* Makefile Makefile.in Index: plugins/kxsldbg/kdevkxsldbg.desktop =================================================================== --- plugins/kxsldbg/kdevkxsldbg.desktop (revision 0) +++ plugins/kxsldbg/kdevkxsldbg.desktop (revision 0) @@ -0,0 +1,36 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Service +Name=KDevKXSLDbg +Name[x-test]=xxKDevKXSLDbgxx +GenericName=KXSLDbg Plugin +GenericName[fr]= +GenericName[ga]= +GenericName[pt]= +GenericName[pt_BR]= +GenericName[tr]= +GenericName[uk]= +GenericName[zh_TW]= +GenericName[x-test]=xxKXSLDbg Pluginxx +Comment=Debug XSLT scripts using KXSLDbg +Comment[fr]= +Comment[ga]= +Comment[pt]= +Comment[pt_BR]= +Comment[tr]= +Comment[uk]= +Comment[x-test]=xxDebug XSLT scripts using KXSLDbgxx +Comment[zh_TW]= +Icon=xsldbg-source +X-KDE-PluginInfo-Name=KDevKXSLDbg +X-KDevelop-Plugin-Version=1 +X-KDevelop-Plugin-Homepage=http://kdewebdev.org [email protected] +X-KDevelop-Plugin-Copyright=(C) by Keith Isdale +X-KDevelop-Plugin-License=GPL +X-KDE-Library=libkdevkxsldbg +X-KDevelop-Version=4 +X-KDevelop-Category=Global +X-KDevelop-Properties=Quanta-KXSLDbg +X-KDevelop-Args= +X-KDE-ServiceTypes=KDevelop/Plugin Index: plugins/kxsldbg/kdevkxsldbgconfigimpl.cpp =================================================================== --- plugins/kxsldbg/kdevkxsldbgconfigimpl.cpp (revision 0) +++ plugins/kxsldbg/kdevkxsldbgconfigimpl.cpp (revision 0) @@ -0,0 +1,38 @@ +/** + * + * This file is part of the kxsldbg package + * Copyright (c) 2008 Keith Isdale <[email protected]> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License version 2 as published by the Free Software Foundation. + * + * This library 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 library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + **/ + +#include "kdevkxsldbgconfigimpl.h" +#include <kgenericfactory.h> + +K_PLUGIN_FACTORY(KDevKXsldbgConfigFactory, registerPlugin<KDevKXsldbgConfigImpl>();) +K_EXPORT_PLUGIN(KDevKXsldbgConfigFactory("kcm_kdev_kxsldbg")) + +KDevKXsldbgConfigImpl::KDevKXsldbgConfigImpl(QWidget *parent, const QVariantList &args) + : KCModule( KDevKXsldbgConfigFactory::componentData(), parent, args ) +{ + setupUi(this); + load(); +} + +KDevKXsldbgConfigImpl::~KDevKXsldbgConfigImpl() +{ +} + +#include "kdevkxsldbgconfigimpl.moc" Index: plugins/kxsldbg/kdevkxsldbgplugin.cpp =================================================================== --- plugins/kxsldbg/kdevkxsldbgplugin.cpp (revision 0) +++ plugins/kxsldbg/kdevkxsldbgplugin.cpp (revision 0) @@ -0,0 +1,905 @@ +/** + * + * This file is part of the kxsldbg package + * Copyright (c) 2008 Keith Isdale <[email protected]> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License version 2 as published by the Free Software Foundation. + * + * This library 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 library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + **/ + +#include <icore.h> +#include <idocumentcontroller.h> +#include <iuicontroller.h> +#include "kdevkxsldbgplugin.h" +#include <klibloader.h> +#include <kparts/mainwindow.h> +#include <kmessagebox.h> +#include <kactionmenu.h> +#include <kpluginfactory.h> +#include <kpluginloader.h> +#include <kapplication.h> +#include <kaction.h> +#include <kactioncollection.h> +#include <kaboutdata.h> +#include <kmainwindow.h> +#include <kxmlguiwindow.h> + +#include <libxsldbg/files.h> +#include <libxsldbg/xsldbg.h> + +#include <kcomponentdata.h> +#include <kaction.h> +#include <kstandardaction.h> +#include <kfiledialog.h> +#include <kparts/genericfactory.h> +#include <ktexteditor/markinterface.h> +#include <ktexteditor/editor.h> + +#include <QFile> +#include <QTextStream> + +//#include "../kxsldbg.h" +#include <kcmdlineargs.h> +#include <kiconloader.h> +#include <QMessageBox> +#include <klocale.h> +#include <kdeversion.h> +#include <kinputdialog.h> + +// Qxsldbg specific includes +#include "qxsldbgdoc.h" +#include <QVariant> +#include <QStatusBar> +#include <QSplitter> + +#include <QLayout> +#include <QToolTip> +#include <QAction> +#include <QMenuBar> +#include <QToolBar> +#include <QImage> +#include <QPixmap> +#include <QTextBrowser> +#include <QLineEdit> +#include <QPushButton> +#include <QInputDialog> +#include <QObject> +#include <QStackedWidget> +#include "xsldbgoutputview.h" +#include "xsldbgconfigimpl.h" +#include <kdebug.h> +#include <kvbox.h> +#include <kactioncollection.h> + +#include <QPushButton> +K_PLUGIN_FACTORY(KDevKXSLDbgFactory, registerPlugin<KDevKXSLDbgPlugin>(); ) +K_EXPORT_PLUGIN(KDevKXSLDbgFactory("kdevkxsldbg")) + +class KDevKXSLDbgPlugin; + + +class KDevKXSLDbgViewFactory : public KDevelop::IToolViewFactory +{ + public: + KDevKXSLDbgViewFactory(KDevKXSLDbgPlugin *thePart) + : KDevelop::IToolViewFactory(), myplugin(thePart) + { + + } + /** + Return the main widget for our tool + */ + QWidget *create(QWidget * parent = 0 ); + + /** + Return a hint as to where to put our tool + */ + Qt::DockWidgetArea defaultPosition(const QString &areaName); + + KDevKXSLDbgPlugin * myplugin; +}; + + +QWidget* KDevKXSLDbgViewFactory::create(QWidget * parent) +{ + QWidget *w; + + if (myplugin) + w = myplugin->topWidget(parent); + else + w = new QPushButton("Hello", parent); + return w; +} + +Qt::DockWidgetArea KDevKXSLDbgViewFactory::defaultPosition(const QString &areaName) +{ + Q_UNUSED(areaName); + return Qt::TopDockWidgetArea; +} + + + KDevKXSLDbgPlugin::KDevKXSLDbgPlugin(QObject *parent, const QVariantList &args) +: KDevelop::IPlugin(KDevKXSLDbgFactory::componentData(),parent) +{ + Q_UNUSED(args) + setXMLFile( "kdevkxsldbg.rc"); + m_widgetFactory = new KDevKXSLDbgViewFactory(this); + currentLineNo = 0; + currentColumnNo = 0; + inspector = 0L; + debugger = 0L; + configWidget = 0L; + currentDoc = 0L; + + frame = new KVBox(0); + frame->setMinimumHeight(400); //## TODO don't use a magic number + KHBox *h = new KHBox(frame); + newXPath = new QLineEdit(h); + xPathBtn = new QPushButton(i18n("Goto XPath"), h); +/* Disable searching as searching documentation is not ready + h = new QHBox(frame); + newSearch = new QLineEdit(h); + searchBtn = new QPushButton(i18n("Search"), h); +*/ + h = new KHBox(frame); + newEvaluate = new QLineEdit(h); + evaluateBtn = new QPushButton(i18n("Evaluate"), h); + + QSplitter *splitter = new QSplitter(Qt::Vertical, frame); + mainView = new QStackedWidget(splitter); + mainView->setMinimumHeight(300); //## TODO don't use a magic number + outputview = new XsldbgOutputView(splitter); + + setupActions(); + core()->uiController()->addToolView("KXSLDbg", m_widgetFactory ); + +/* We must have a valid debugger and inspector */ + createInspector(); + if (checkDebugger()){ + configWidget = new XsldbgConfigImpl( debugger, 0L ); + Q_CHECK_PTR( configWidget ); + debugger->start(); + }else{ + openUrl(KUrl()); + } +} + +KDevKXSLDbgPlugin::~KDevKXSLDbgPlugin() +{ + delete m_widgetFactory; + docDictionary.clear(); +} + +QWidget *KDevKXSLDbgPlugin::topWidget(QWidget *parent) +{ + if (frame) + frame->setParent(parent); + return frame; +} + +void KDevKXSLDbgPlugin::setupActions() +{ + KActionCollection* ac = actionCollection(); + m_projectKXSLDbgActionMenu = new KActionMenu(i18n("&Run Project via KXSLDbg"), this); + m_projectKXSLDbgActionMenu->setIcon(KIcon("xsldbg-source")); + m_projectKXSLDbgActionMenu->setToolTip(i18n("Run project")); + //m_projectKXSLDbgActionMenu->setVisible(false); //make it visible when there are upload profiles + ac->addAction("project_kxsldbg_run", m_projectKXSLDbgActionMenu); + // create our actions + KStandardAction::open(this, SLOT(fileOpen()), actionCollection()); + + QAction *action ; + action = ac->addAction( "configureEditorCmd" ); + action->setText( i18n("Configure Editor...") ); + action->setIcon( KIcon("configure") ); + connect(action, SIGNAL(triggered(bool)), SLOT(configureEditorCmd_activated())); + action = ac->addAction( "configureCmd" ); + action->setText( i18n("Configure...") ); + action->setIcon( KIcon("configure") ); + connect(action, SIGNAL(triggered(bool)), SLOT(configureCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_C)); + + action = ac->addAction( "inspectCmd" ); + action->setText( i18n("Inspect...") ); + action->setIcon( KIcon("edit-find") ); + connect(action, SIGNAL(triggered(bool)), SLOT(inspectorCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_I)); + + + // Motions commands + action = ac->addAction( "runCmd" ); + action->setText( i18n("Run") ); + action->setIcon( KIcon("system-run") ); + + connect(action, SIGNAL(triggered(bool)), SLOT(runCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_F5)); + + action = ac->addAction( "continueCmd" ); + action->setText( i18n("Continue") ); + action->setIcon( KIcon("media-playback-start") ); + + connect(action, SIGNAL(triggered(bool)), SLOT(continueCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_F4)); + + action = ac->addAction( "stepCmd" ); + action->setText( i18n("Step") ); + action->setIcon( KIcon("step") ); + + connect(action, SIGNAL(triggered(bool)), SLOT(stepCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_F8)); + + action = new KAction(KIcon("go-down-search"), i18n("Next"), this); + ac->addAction("nextCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(nextCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_F10)); + + action = new KAction(KIcon("xsldbg_stepup"), i18n("Step Up"), this); + ac->addAction("stepupCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(stepupCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_F6)); + + action = new KAction(KIcon("xsldbg_stepdown"), i18n("Step Down"), this); + ac->addAction("stepdownCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(stepCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_F7)); + + // Breakpoint commands + action = new KAction(KIcon("xsldbg_break"), i18n("Break"), this); + ac->addAction("breakCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(breakCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_F2)); + + action = new KAction(KIcon("xsldbg_enable"), i18n("Enable/Disable"), this); + ac->addAction("enableCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(enableCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_F3)); + + action = new KAction(KIcon("xsldbg_delete"), i18n("Delete"), this); + ac->addAction("deleteCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(deleteCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_Delete)); + + action = new KAction(KIcon("xsldbg_source"), i18n("&Source"), this); + ac->addAction("sourceCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(sourceCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_S)); + + action = new KAction(KIcon("xsldbg_data"), i18n("&Data"), this); + ac->addAction("dataCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(dataCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_D)); + + action = new KAction(KIcon("xsldbg_output"), i18n("&Output"), this); + ac->addAction("outputCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(outputCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_O)); + + action = new KAction(KIcon("xsldbg_refresh"), i18n("Reload Current File From Disk"), this); + ac->addAction("refreshCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(refreshCmd_activated())); + action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_F5)); + + /* tracing and walking */ + action = new KAction(i18n("Walk Through Stylesheet..."), this); + ac->addAction("walkCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(walkCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_W)); + action = new KAction(i18n("Stop Wal&king Through Stylesheet"), this); + ac->addAction("walkStopCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(walkStopCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_K)); + action = new KAction(i18n("Tr&ace Execution of Stylesheet"), this); + ac->addAction("traceCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(traceCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_A)); + action = new KAction(i18n("Stop Tracing of Stylesheet"), this); + ac->addAction("traceStopCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(traceStopCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_K)); + + action = new KAction(i18n("&Evaluate Expression..."), this); + ac->addAction("evaluateCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(evaluateCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_E)); + + action = new KAction(i18n("Goto &XPath..."), this); + ac->addAction("gotoXPathCmd", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(gotoXPathCmd_activated())); + action->setShortcut(QKeySequence(Qt::Key_X)); + + action = new KAction(i18n("Lookup SystemID..."), this); + ac->addAction("lookupSystemID", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(slotLookupSystemID())); + + action = new KAction(i18n("Lookup PublicID..."), this); + ac->addAction("lookupPublicID", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(slotLookupPublicID())); + + action = new KAction(i18n("Quit"), this); + ac->addAction("file_quit", action ); + connect(action, SIGNAL(triggered(bool)), SLOT(quit())); + action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q)); + + /* + action = new KAction( i18n("Exit KXsldbg"), + "xsldbg_output", actionCollection(), "exitCmd" ); + connect(action, SIGNAL(triggered(bool)), SLOT(exitCmd_activated())); + action->setShortcut(QKeySequence(CTRL + Key_Q)); + */ + connect( xPathBtn, SIGNAL( clicked() ), + this, SLOT( slotGotoXPath() ) ); + connect( evaluateBtn, SIGNAL( clicked() ), + this, SLOT( slotEvaluate() ) ); +/* + + connect( searchBtn, SIGNAL( clicked() ), + this, SLOT( slotSearch() ) ); +*/ +} + + +void KDevKXSLDbgPlugin::quit() +{ + qWarning("Custom void KDevKXSLDbgPlugin::quit()"); + closeUrl(); +} + + +bool KDevKXSLDbgPlugin::openUrl(const KUrl &url) +{ + bool result = fetchURL(url); + if (result){ + QXsldbgDoc *docPtr = docDictionary[url.prettyUrl()]; + if (docPtr && docPtr->kateView()){ + if (docPtr != currentDoc){ + currentDoc = docPtr; + currentFileName = url.prettyUrl(); + mainView->setCurrentWidget(currentDoc->kateView()); + //emit setWindowCaption(currentDoc->url().prettyUrl()); + } + } else{ + result = false; + } + } + + if (!result) + qWarning() << "Open URL failed" << __FILE__ << ":" << __LINE__; + + return result; +} + + +/* Don't show the content of URL just loaded it into our data structures */ +bool KDevKXSLDbgPlugin::fetchURL(const KUrl &url) +{ + QString docID = url.prettyUrl(); + QXsldbgDoc *docPtr = docDictionary[docID]; + if (!docPtr){ + docPtr = new QXsldbgDoc(mainView, url); + docDictionary.insert(docID, docPtr); + QHash<QString, QXsldbgDoc*>::const_iterator it; + if (docPtr->kateView()){ + mainView->addWidget(docPtr->kateView()); + KTextEditor::View *v = docPtr->kateView(); + connect(v, SIGNAL(cursorPositionChanged(KTextEditor::View *, const KTextEditor::Cursor &)) + , this, SLOT(cursorPositionChanged())); + } + } + + return true; +} + +bool KDevKXSLDbgPlugin::openFile() +{ + qWarning("bool KDevKXSLDbgPlugin::openFile() called"); + return false; +} + +bool KDevKXSLDbgPlugin::closeUrl() +{ + docDictionary.clear(); + return true; +} + +void KDevKXSLDbgPlugin::fileOpen() +{ + // this slot is called whenever the File->Open menu is selected, + // the Open shortcut is pressed (usually CTRL+O) or the Open toolbar + // button is clicked + QString file_name = KFileDialog::getOpenFileName(); + + if (file_name.isEmpty() == false) + openUrl(KUrl( file_name )); +} + +void KDevKXSLDbgPlugin::configureEditorCmd_activated() +{ + if (currentDoc){ + currentDoc->kateDoc()->editor()->configDialog(mainView); + } +} + +bool KDevKXSLDbgPlugin::checkDebugger() +{ + bool result = debugger != 0L; + if (!result){ + QMessageBox::information(0L, i18n("Debugger Not Ready"), + i18n("Configure and start the debugger first."), + QMessageBox::Ok); + } + + return result; +} + + +void KDevKXSLDbgPlugin::lookupSystemID( QString systemID) +{ + bool ok = false; + if (!checkDebugger()) + return; + + if (systemID.isEmpty()){ + systemID = KInputDialog::getText( + i18n( "Lookup SystemID" ), + i18n( "Please enter SystemID to find:" ), + QString(), &ok, + mainView); + }else{ + ok = true; + } + if ( ok && !systemID.isEmpty() ){ + // user entered something and pressed ok + QString msg(QString("system %1").arg(systemID)); // noTr + debugger->fakeInput(msg, true); + } + +} + + +void KDevKXSLDbgPlugin::lookupPublicID(QString publicID) +{ + bool ok = false; + if (!checkDebugger()) + return; + + if (publicID.isEmpty()){ + publicID = KInputDialog::getText( + i18n( "Lookup PublicID" ), + i18n( "Please enter PublicID to find:" ), + QString(), &ok, mainView ); + }else{ + ok = true; + } + if ( ok && !publicID.isEmpty()){ + // user entered something and pressed ok + QString msg(QString("public %1").arg(publicID)); // noTr + debugger->fakeInput(msg, true); + } +} + + +void KDevKXSLDbgPlugin::slotLookupSystemID() +{ + lookupSystemID(""); +} + +void KDevKXSLDbgPlugin::slotLookupPublicID() +{ + lookupPublicID(""); +} + +void KDevKXSLDbgPlugin::configureCmd_activated() +{ + if (!checkDebugger()) + return; + + if (configWidget != 0L){ + configWidget->refresh(); + configWidget->show(); + } +} + +void +KDevKXSLDbgPlugin::runCmd_activated() +{ + if ( checkDebugger() ) + debugger->slotRunCmd(); +} + +void KDevKXSLDbgPlugin::inspectorCmd_activated() +{ + if (inspector == 0L) + createInspector(); + + if (checkDebugger() && (inspector != 0L)){ + inspector->show(); + } +} + + +void KDevKXSLDbgPlugin::createInspector() +{ + if ( inspector == 0L ) { + debugger = new XsldbgDebugger(); + Q_CHECK_PTR( debugger ); + if ( debugger != 0L ) { + connect(debugger, SIGNAL( debuggerReady()), + this, SLOT(debuggerStarted())); + if (outputview){ + connect(debugger, + SIGNAL( showMessage(QString /* msg*/)), + outputview, + SLOT(slotProcShowMessage(QString /* msg*/))); + } + inspector = new XsldbgInspector( debugger ); + Q_CHECK_PTR( inspector ); + debugger->setInspector( inspector ); + if (inspector != 0L){ + /*process line number and/or file name changed */ + connect(debugger, + SIGNAL(lineNoChanged + (QString /* fileName */ , + int /* lineNumber */ , + bool /* breakpoint */ ) ), + this, + SLOT(lineNoChanged + ( QString /* fileName */ , + int /* lineNumber */ , + bool /* breakpoint */ ) ) ); + connect(debugger, + SIGNAL(breakpointItem(QString /* fileName*/, + int /* lineNumber */, + QString /*templateName*/, + QString /* modeName */, + bool /* enabled */, + int /* id */)), + this, + SLOT( breakpointItem(QString /* fileName*/, + int /* lineNumber */, + QString /*templateName*/, + QString /* modeName */, + bool /* enabled */, + int /* id */))); + connect(debugger, SIGNAL(resolveItem(QString /*URI*/)), + this, SLOT(slotProcResolveItem(QString /*URI*/))); + } + } + } +} + +void KDevKXSLDbgPlugin::emitOpenFile(QString file, int line, int row) +{ + Q_UNUSED(file) + Q_UNUSED(line) + Q_UNUSED(row) + qWarning("%s %s", __PRETTY_FUNCTION__, "called but not supported"); +} + +void KDevKXSLDbgPlugin::continueCmd_activated() +{ + if ( checkDebugger() ) + debugger->slotContinueCmd(); + +} + +void KDevKXSLDbgPlugin::stepCmd_activated() +{ + if ( checkDebugger() ) + debugger->slotStepCmd(); +} + +void KDevKXSLDbgPlugin::nextCmd_activated() +{ + if ( checkDebugger() ) + debugger->fakeInput("next", true); // noTr +} + + +void KDevKXSLDbgPlugin::stepupCmd_activated() +{ + if ( checkDebugger() ) + debugger->fakeInput("stepup", true); // noTr +} + + +void KDevKXSLDbgPlugin::stepdownCmd_activated() +{ + if ( checkDebugger() ) + debugger->fakeInput("stepdown", true); // noTr +} + + +void KDevKXSLDbgPlugin::dataCmd_activated() +{ + if ( checkDebugger() ) + debugger->slotDataCmd(); +} + +void +KDevKXSLDbgPlugin::sourceCmd_activated() +{ + if ( checkDebugger() ) + debugger->slotSourceCmd(); +} + +void +KDevKXSLDbgPlugin::outputCmd_activated() +{ + if ( ( inspector != 0L ) && checkDebugger() && ( configWidget != 0L ) ){ + debugger->setOutputFileActive(true); + lineNoChanged( configWidget->getOutputFile(), 1, false ); + refreshCmd_activated(); + } +} + +void KDevKXSLDbgPlugin::refreshCmd_activated() +{ + + if ( !currentFileName.isEmpty() ){ + QXsldbgDoc *docPtr; + QHash<QString, QXsldbgDoc*>::const_iterator it; + for (it = docDictionary.constBegin(); it != docDictionary.constEnd(); ++it){ + docPtr = it.value(); + if(docPtr) + docPtr->refresh(); + } + if ( checkDebugger() ){ + debugger->fakeInput("showbreak", true); // noTr + } + } +} + +void KDevKXSLDbgPlugin::enableCmd_activated() +{ + if ( checkDebugger() ){ + debugger->slotEnableCmd( currentFileName, currentLineNo); + } +} + +void KDevKXSLDbgPlugin::deleteCmd_activated() +{ + if ( checkDebugger() ){ + debugger->slotDeleteCmd( currentFileName, currentLineNo); + } +} + +void KDevKXSLDbgPlugin::breakCmd_activated() +{ + if ( checkDebugger() ){ + debugger->slotBreakCmd( currentFileName, currentLineNo); + } +} + +void KDevKXSLDbgPlugin::evaluateCmd_activated() +{ + QString expression = KInputDialog::getText(i18n("Evaluate Expression"), i18n("XPath:")); + if (checkDebugger() && (expression.length() > 0)){ + debugger->slotCatCmd( expression); + } +} + +void KDevKXSLDbgPlugin::gotoXPathCmd_activated() +{ + QString xpath = KInputDialog::getText(i18n("Goto XPath"), i18n("XPath:")); + if (checkDebugger() && xpath.length() > 0){ + debugger->slotCdCmd( xpath ); + } +} + +void +KDevKXSLDbgPlugin::lineNoChanged(QString fileName, int lineNumber, bool breakpoint) +{ + if ( fileName.isEmpty() ) { + return; + } + + openUrl(fileName); + + /* Did we stop at a breakpoint if so move the marker */ + if (breakpoint && currentDoc) { + currentDoc->selectBreakPoint(lineNumber); + emit newDebuggerPosition(currentFileName, lineNumber); + } + + /* Move cursor and update status bar */ + if (currentDoc && currentDoc->kateView()){ + currentDoc->kateView()->setCursorPosition(KTextEditor::Cursor(lineNumber - 1, 0)); + currentLineNo = lineNumber; + } +} + +void KDevKXSLDbgPlugin::cursorPositionChanged() +{ + if (currentDoc && currentDoc->kateView()){ + KTextEditor::Cursor c = currentDoc->kateView()->cursorPosition(); + currentLineNo = c.line(); + currentColumnNo = c.column(); + currentLineNo++; + currentColumnNo++; + emit newCursorPosition(currentFileName, currentLineNo,0); + } +} + +void KDevKXSLDbgPlugin::docChanged() +{ + if (!currentDoc || currentDoc->kateDoc() || currentDoc->kateView()) + return; +} + +void KDevKXSLDbgPlugin::debuggerStarted() +{ + if (configWidget != 0L){ + KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); + if (args){ + int i=0, result=1, noFilesFound = 0; + QString expandedName; /* contains file name with path expansion if any */ + + for (i = 0; i < args->count(); i++) { + if (!result) + break; + + if (args->arg(i)[0] != '-') { + expandedName = QString::fromUtf8((const char*)filesExpandName((const xmlChar*)args->arg(i).toUtf8().data())); + if (expandedName.isEmpty()) { + result = 0; + break; + } + switch (noFilesFound) { + case 0: + configWidget->slotSourceFile(expandedName); + noFilesFound++; + break; + case 1: + configWidget->slotDataFile(expandedName); + noFilesFound++; + break; + case 2: + configWidget->slotOutputFile(expandedName); + noFilesFound++; + break; + + default: + xsldbgGenericErrorFunc(i18n("Error: Too many file names supplied via command line.\n")); + result = 0; + } + continue; + } + } + configWidget->refresh(); + } + } +} + +void KDevKXSLDbgPlugin::addBreakPoint(int lineNumber) +{ + if ( checkDebugger() ){ + debugger->slotBreakCmd( currentFileName, lineNumber); + } +} + +void KDevKXSLDbgPlugin::enableBreakPoint(int lineNumber) +{ + if ( checkDebugger() ){ + debugger->slotEnableCmd( currentFileName, lineNumber); + } +} + + +void KDevKXSLDbgPlugin::deleteBreakPoint(int lineNumber) +{ + if ( checkDebugger() ){ + debugger->slotDeleteCmd( currentFileName, lineNumber); + } +} + + + +void KDevKXSLDbgPlugin::slotSearch() +{ + if ((newSearch != 0L) && checkDebugger() ) { + QString msg(QString("search \"%1\"").arg(newSearch->text())); // noTr + debugger->fakeInput(msg, false); + } +} + + +void KDevKXSLDbgPlugin::slotEvaluate() +{ + if ((newEvaluate != 0L) && checkDebugger() ){ + debugger->slotCatCmd( newEvaluate->text() ); + } +} + +void KDevKXSLDbgPlugin::slotGotoXPath() +{ + if ((newXPath != 0L) && checkDebugger() ){ + debugger->slotCdCmd( newXPath->text() ); + } +} + + + +void KDevKXSLDbgPlugin::slotProcResolveItem(QString URI) +{ + if (!URI.isEmpty()){ + QMessageBox::information(mainView, i18n("SystemID or PublicID Resolution Result"), + i18n("SystemID or PublicID has been resolved to\n.%1", URI), + QMessageBox::Ok); + } +} + +void KDevKXSLDbgPlugin::breakpointItem(QString fileName, int lineNumber , + QString /*templateName*/, QString /* modeName */, + bool enabled , int /* id */) +{ + + if (fileName == 0L){ + /* Go through all documents and remove all breakpoints */ + QXsldbgDoc *docPtr=0; + KTextEditor::MarkInterface *markIf = 0L; + QHash<QString, QXsldbgDoc*>::iterator it; + for (it = docDictionary.begin(); it != docDictionary.end(); ++it){ + docPtr = it.value(); + if (docPtr){ + markIf = qobject_cast<KTextEditor::MarkInterface*>( docPtr->kateDoc() ); + if (markIf) + markIf->clearMarks(); + } + } + }else{ + /* + if (!fileName.contains("://")){ + // relative path ? must handle this special case + KUrl url; + url.setFileName(fileName); + fetchURL(url); + }else{ + fetchURL(fileName); + } + */ + fetchURL(fileName); + QXsldbgDoc *docPtr = docDictionary[fileName] ; + if (docPtr) + docPtr->enableBreakPoint(--lineNumber, enabled); + } +} + + + +void KDevKXSLDbgPlugin::walkCmd_activated() +{ + if (checkDebugger()){ + debugger->slotWalkCmd(); + } +} + +void KDevKXSLDbgPlugin::walkStopCmd_activated() +{ + if (checkDebugger()){ + debugger->slotWalkStopCmd(); + } +} + +void KDevKXSLDbgPlugin::traceCmd_activated() +{ + if (checkDebugger()){ + debugger->slotTraceCmd(); + } +} + +void KDevKXSLDbgPlugin::traceStopCmd_activated() +{ + walkStopCmd_activated(); +} + Index: plugins/kxsldbg/kcm_kdev_kxsldbg.desktop =================================================================== --- plugins/kxsldbg/kcm_kdev_kxsldbg.desktop (revision 0) +++ plugins/kxsldbg/kcm_kdev_kxsldbg.desktop (revision 0) @@ -0,0 +1,42 @@ +[Desktop Entry] +Encoding=UTF-8 +Icon=kxsldbg +Type=Service +ServiceTypes=KCModule +Name=KXSLDbg Settings +Name[x-test]=xxKXSLDbg Settingsxx +GenericName=KXSLDbg Plugin +GenericName[fr]= +GenericName[ga]= +GenericName[pt]= +GenericName[pt_BR]= +GenericName[tr]= +GenericName[uk]= +GenericName[x-test]=xxKXSLDbg Settingsxx +GenericName[zh_TW]= +Comment=Configure KXSLDbg Settings +Comment[fr]= +Comment[ga]= +Comment[pt]= +Comment[pt_BR]= +Comment[tr]= +Comment[uk]= +Comment[x-test]=xxConfigure KXSLDbg Settingsxx +Comment[zh_TW]= + +X-KDevelop-Plugin-Version=1 [email protected] +X-KDevelop-Plugin-Copyright=(C) by Keith Isdale +X-KDevelop-Plugin-License=GPL + + +X-KDevelop-Args= + +X-KDE-PluginInfo-Name=KCmKDevKXSLDbg +X-KDE-ModuleType=Library +X-KDE-Library=kcm_kdev_kxsldbg +X-KDE-ParentApp=kdevplatformproject +X-KDE-ParentComponents=kdevplatformproject +X-KDE-CfgDlgHierarchy=GENERAL +X-KDevelop-Category=Global +X-KDevelop-Version=4 Index: plugins/kxsldbg/kdevkxsldbg.rc =================================================================== --- plugins/kxsldbg/kdevkxsldbg.rc (revision 0) +++ plugins/kxsldbg/kdevkxsldbg.rc (revision 0) @@ -0,0 +1,81 @@ +<!DOCTYPE kpartgui> +<kpartplugin name="kdevkxsldbg" library="libkdevkxsldbg" version="1"> +<MenuBar> + <Menu name="project"> + <Action name="project_kxsldbg_run"/> + </Menu> + <Menu noMerge="1" name="file"><text>&File</text> + <Merge/> + <Separator/> + <Action name="file_quit"/> + </Menu> + <Menu name="debug"><text>Debug</text> + <Action name="configureCmd"/> + <Action name="inspectCmd"/> + <Action name="runCmd"/> + <Action name="continueCmd"/> + <Action name="stepCmd"/> + <Action name="nextCmd"/> + <Separator/> + <Action name="stepupCmd"/> + <Action name="stepdownCmd"/> + <Separator/> + <Action name="breakCmd"/> + <Action name="deleteCmd"/> + <Action name="enableCmd"/> + <Separator/> + <Action name="sourceCmd"/> + <Action name="dataCmd"/> + <Action name="outputCmd"/> + <Action name="refreshCmd"/> + <Separator/> + <Action name="walkCmd"/> + <Action name="walkStopCmd"/> + <Action name="traceCmd"/> + <Action name="traceStopCmd"/> + <Separator/> + <Action name="evaluateCmd"/> + <Action name="gotoXPathCmd"/> + <Action name="lookupSystemID"/> + <Action name="lookupPublicID"/> + </Menu> + <Menu noMerge="1" name="settings"><text>&Settings</text> + <Action name="options_show_toolbar"/> + <Action name="options_show_statusbar"/> + <Merge name="show_merge"/> + <Separator/> + <Action name="options_configure_keybinding"/> + <Action name="options_configure_toolbars"/> + <Action name="options_configure"/> + <Action name="configureEditorCmd"/> + <Merge name="configure_merge"/> + <Separator/> + <Merge/> + </Menu> +</MenuBar> +<ToolBar noMerge="1" name="mainToolBar"><text>Main Toolbar</text> + <Merge/> + <Action name="help"/> +</ToolBar> +<ToolBar name="debugToolBar"> + <Action name="configureCmd"/> + <Action name="inspectCmd"/> + <Action name="runCmd"/> + <Action name="continueCmd"/> + <Action name="stepCmd"/> + <Action name="nextCmd"/> + <Separator/> + <Action name="stepupCmd"/> + <Action name="stepdownCmd"/> + <Separator/> + <Action name="breakCmd"/> + <Action name="deleteCmd"/> + <Action name="enableCmd"/> + <Separator/> + <Action name="sourceCmd"/> + <Action name="dataCmd"/> + <Action name="outputCmd"/> + <Action name="refreshCmd"/> + <Separator/> + </ToolBar> +</kpartplugin> Index: plugins/kxsldbg/kdevkxsldbgplugin.h =================================================================== --- plugins/kxsldbg/kdevkxsldbgplugin.h (revision 0) +++ plugins/kxsldbg/kdevkxsldbgplugin.h (revision 0) @@ -0,0 +1,181 @@ +/** + * + * This file is part of the kxsldbg package + * Copyright (c) 2008 Keith Isdale <[email protected]> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License version 2 as published by the Free Software Foundation. + * + * This library 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 library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + **/ + +#ifndef KDEVKXSLDBGPLUGIN_H +#define KDEVKXSLDBGPLUGIN_H +#include <iplugin.h> +#include <QVariant> +#include <QMainWindow> +#include <QActionGroup> +#include <QHash> +#include <QMenu> +#include <xsldbgdebugger.h> +#include <xsldbginspector.h> +#include <ktexteditor/document.h> +#include <ktexteditor/view.h> +#include <QDBusConnection> +class KxsldbgAdaptor; + +class QGridLayout; +class QAction; +class QLineEdit; +class QDockWindow; +class QStackedWidget; + +class XsldbgBrkStatusView; +class QXsldbgDoc; +class XsldbgOutputView; +class XsldbgConfigImpl; + +class QWidget; +class QPainter; +class KUrl; +class KVBox; +class KFrame; +class KAboutData; + +typedef QHash<QString, QXsldbgDoc*> XsldbgDocDict; +class KActionMenu; + +class KDevKXSLDbgViewFactory; + +class KDevKXSLDbgPlugin: public KDevelop::IPlugin +{ +Q_OBJECT +public: + KDevKXSLDbgPlugin(QObject *parent, const QVariantList & = QVariantList()); + virtual ~KDevKXSLDbgPlugin(); + + void setupActions(); + + + /** Checks the debugger, if it is not ready then + * display a error in a message box + * + * @returns TRUE if debugger is ready, otherwise FALSE + */ + bool checkDebugger(); + void lookupSystemID(QString systemID); + void lookupPublicID(QString publicID); + void createInspector(); + +Q_SIGNALS: + Q_SCRIPTABLE void newCursorPosition(const QString &file, int lineNumber, int columnNumber); + Q_SCRIPTABLE void newDebuggerPosition(const QString &file, int lineNumber); + + public slots: + virtual bool openUrl(const KUrl &url); + virtual bool closeUrl(); + void quit(); + void emitOpenFile(QString file, int line, int row); + void slotLookupSystemID(); + void slotLookupPublicID(); + void walkCmd_activated(); + void walkStopCmd_activated(); + void traceCmd_activated(); + void traceStopCmd_activated(); + void configureEditorCmd_activated(); + + //Tool bar commands + void configureCmd_activated(); + void inspectorCmd_activated(); + void runCmd_activated(); + void stepCmd_activated(); + void nextCmd_activated(); + void continueCmd_activated(); + void stepupCmd_activated(); + void stepdownCmd_activated(); + void sourceCmd_activated(); + void dataCmd_activated(); + void outputCmd_activated(); + void refreshCmd_activated(); + void enableCmd_activated(); + void breakCmd_activated(); + void deleteCmd_activated(); + + /** Evaluate expression entered */ + void evaluateCmd_activated(); + + /** Goto/display file XPath entered */ + void gotoXPathCmd_activated(); + + virtual void lineNoChanged( QString fileName, int lineNumber, + bool breakpoint ); + + void addBreakPoint(int lineNumber); + void enableBreakPoint(int lineNumber); + void deleteBreakPoint(int lineNumber); + + /** Evaluate expression entered in expressionEdit */ + void slotEvaluate(); + + /** Goto/display file that matches XPath specified in xPathEdit */ + void slotGotoXPath(); + + /** Run search on data base , see search.dtd for DTD of search database */ + void slotSearch(); + + /* Process the the URI for SystemID or PublicID requested */ + void slotProcResolveItem(QString URI); + + /* used to get breakpoint list notfication */ + void breakpointItem(QString fileName, int lineNumber , + QString /*templateName*/, QString /* modeName */, + bool enabled , int /* id */); + + void cursorPositionChanged(); + void docChanged(); + + void debuggerStarted(); + QWidget * topWidget(QWidget *parent); + +protected: + /** + * This must be implemented by each part + */ + virtual bool openFile(); + bool fetchURL(const KUrl &url); + + protected slots: + void fileOpen(); + +private: + KDevKXSLDbgViewFactory *m_widgetFactory; + KActionMenu* m_projectKXSLDbgActionMenu; ///< KXSLDbg ActionMenu, displayed in the Project-Menu + KVBox * frame; + QXsldbgDoc *currentDoc; + QStackedWidget *mainView; + QDBusInterface *dbusIface; + + QPushButton *xPathBtn, *searchBtn, *evaluateBtn; + QLineEdit *newXPath, *newSearch, *newEvaluate; + QGridLayout* qxsldbgLayout; + + uint currentLineNo, currentColumnNo; + XsldbgDocDict docDictionary; + XsldbgInspector *inspector; + XsldbgDebugger *debugger; + XsldbgConfigImpl *configWidget; + QString currentFileName; + + XsldbgOutputView *outputview; +}; + +#endif Index: plugins/kxsldbg/CMakeLists.txt =================================================================== --- plugins/kxsldbg/CMakeLists.txt (revision 0) +++ plugins/kxsldbg/CMakeLists.txt (revision 0) @@ -0,0 +1,133 @@ +include_directories( + ${KDEVPLATFORM_INCLUDE_DIR} + ${KDEVPLATFORM_INCLUDE_DIR}/interfaces + ${KDEVPLATFORM_INCLUDE_DIR}/outputview + ${CMAKE_SOURCE_DIR}/kxsldbg/ + ${CMAKE_BINARY_DIR}/kxsldbg/ + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/ + ${LIBXSLT_INCLUDE_DIR} + ${LIBXML2_INCLUDE_DIR} +) + +########### next target ############### + +#setings +set(kcm_kdev_kxsldbg_PART_SRCS + kdevkxsldbgconfigimpl.cpp + # ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgconfigimpl.cpp +) + +set(kcm_kdev_kxsldbg_PART_UI + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgconfig.ui +) + +kde4_add_ui_files(kcm_kdev_kxsldbg_PART_SRCS ${kcm_kdev_kxsldbg_PART_UI}) +#kde4_add_kcfg_files( kcm_kdev_kxsldbg_PART_SRCS kxsldbg.kcfgc ) +kde4_add_plugin(kcm_kdev_kxsldbg ${kcm_kdev_kxsldbg_PART_SRCS}) + +target_link_libraries(kcm_kdev_kxsldbg + ${KDE4_KUTILS_LIBS} +) + +install(TARGETS kcm_kdev_kxsldbg DESTINATION ${PLUGIN_INSTALL_DIR}) +install(FILES kcm_kdev_kxsldbg.desktop DESTINATION ${SERVICES_INSTALL_DIR}) + + +########### next target ############### + + +set(libqtnotfier_SRCS + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libqtnotfier/xsldbgthread.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libqtnotfier/xsldbgnotifier.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libqtnotfier/xsldbgevent.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libqtnotfier/xsldbgdebuggerbase.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libqtnotfier/qtnotifier2.cpp + ) + +set(libxsldbg_SRCS + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/allmoc.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/xsldbgthread.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/xsldbg.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/xsldbgmsg.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/variable_cmds.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/utils.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/trace_cmds.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/template_cmds.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/search_cmds.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/search.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/param_cmds.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/os_cmds.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/options_unix.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/options.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/option_cmds.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/nodeview_cmds.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/help_unix.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/files_unix.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/files.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/file_cmds.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/debugXSL.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/debug.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/callstack.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/breakpoint_cmds.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/breakpoint.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/arraylist.cpp + ) + +set(libkxsldbgcommon_SRCS + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgwalkspeedimpl.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgtemplatesimpl.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgsourcesimpl.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgoutputview.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgvariablesimpl.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbginspector.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgentitiesimpl.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgdoc.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgdialogbase.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgdebugger.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgconfigimpl.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgcallstackimpl.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgbreakpointsimpl.cpp + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/qxsldbgdoc.cpp + ) + + +kde4_add_ui_files(kxsldbgpart_PART_SRCS + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgbreakpoints.ui + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgcallstack.ui + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgconfig.ui + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgentities.ui + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgmsgdialog.ui + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgvariables.ui + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgsources.ui + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgtemplates.ui + ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgwalkspeed.ui) + +#plugin +set(kdevkxsldbg_PART_SRCS + kdevkxsldbgplugin.cpp + ${libqtnotfier_SRCS} + ${libxsldbg_SRCS} + ${libkxsldbgcommon_SRCS} +) + +qt4_add_dbus_adaptor(kdevkxsldbg_SRCS org.kde.kxsldbg.kxsldbg.xml kxsldbg_part.h KXsldbgPart) +set(network_xml ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/org.kde.kxsldbg.kxsldbg.xml) +qt4_add_dbus_interface(kdevkxsldbg_SRCS ${network_xml} kxsldbgpartinterface) +kde4_add_plugin(kdevkxsldbg WITH_PREFIX ${kdevkxsldbg_PART_SRCS}) + +target_link_libraries(kdevkxsldbg + kdevquanta + kdevplatforminterfaces + kdevplatformproject + ${KDE4_KTEXTEDITOR_LIBS} + exslt + ${LIBXML2_LIBRARIES} + ${LIBXSLT_LIBRARIES} + ${QT_QT3SUPPORT_LIBRARY} +) + +########### install files ############### +install(TARGETS kdevkxsldbg DESTINATION ${PLUGIN_INSTALL_DIR}) +install(FILES kdevkxsldbg.desktop DESTINATION ${SERVICES_INSTALL_DIR}) +install(FILES kdevkxsldbg.rc DESTINATION ${DATA_INSTALL_DIR}/kdevkxsldbg) + Index: src/profile.config =================================================================== --- src/profile.config (revision 794937) +++ src/profile.config (working copy) @@ -9,5 +9,4 @@ GenericName=quanta [Properties] -List=QuantaCore,Quanta-CreateProject,Quanta-FilesTree,Quanta-Preview,Quanta-ProjectTree,Quanta-StructureTree,Quanta-TagDialogs,Quanta-TemplatesTree,UserToolbars,Console,Subversion,Quanta-Upload - +List=QuantaCore,Quanta-CreateProject,Quanta-FilesTree,Quanta-Preview,Quanta-ProjectTree,Quanta-StructureTree,Quanta-TagDialogs,Quanta-TemplatesTree,UserToolbars,Console,Subversion,Quanta-Upload,Quanta-KXSLDbg
signature.asc
(application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iD8DBQBH/A9i6GIxm21XV1gRAvfBAKCOQdat5yGdKZSQrRtzCNe1ygi6ZwCfVXh9 HniHg90B9CyrfSH/x1O5mZk= =ETMX -----END PGP SIGNATURE-----