diff options
Diffstat (limited to 'kjsembed/plugin')
-rw-r--r-- | kjsembed/plugin/Makefile.am | 20 | ||||
-rw-r--r-- | kjsembed/plugin/jsconsoleplugin.cpp | 99 | ||||
-rw-r--r-- | kjsembed/plugin/jsconsoleplugin.h | 61 | ||||
-rw-r--r-- | kjsembed/plugin/plugin_jsconsole.rc | 11 |
4 files changed, 191 insertions, 0 deletions
diff --git a/kjsembed/plugin/Makefile.am b/kjsembed/plugin/Makefile.am new file mode 100644 index 00000000..9ec99770 --- /dev/null +++ b/kjsembed/plugin/Makefile.am @@ -0,0 +1,20 @@ +# -*- makefile -*- + +# Make sure the include path includes Qt's uilib +INCLUDES= -I$(QTDIR)/tools/designer/uilib -I$(srcdir)/.. -I.. -I$(top_srcdir) $(all_includes) + +INCLUDES += -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST + +kde_module_LTLIBRARIES = libjsconsoleplugin.la + +METASOURCES = AUTO + +libjsconsoleplugin_la_SOURCES = jsconsoleplugin.cpp +libjsconsoleplugin_la_LIBADD = $(LIB_KPARTS) ../libkjsembed.la +libjsconsoleplugin_la_LDFLAGS = -module $(KDE_PLUGIN) $(all_libraries) $(KDE_RPATH) + +#pluginsdir = $(kde_datadir)/konqueror/kpartplugins +#plugins_DATA = plugin_jsconsole.rc + + + diff --git a/kjsembed/plugin/jsconsoleplugin.cpp b/kjsembed/plugin/jsconsoleplugin.cpp new file mode 100644 index 00000000..132eead5 --- /dev/null +++ b/kjsembed/plugin/jsconsoleplugin.cpp @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2001-2003, Richard J. Moore <rich@kde.org> + * + * This library 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 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 <kaction.h> +#include <kapplication.h> +#include <kdebug.h> +#include <kgenericfactory.h> +#include <kinstance.h> +#include <klocale.h> +#include <kparts/part.h> + +#include <jsfactory.h> +#include <jsconsolewidget.h> +#include <kjsembedpart.h> + +#include "jsconsoleplugin.h" +#include "jsconsoleplugin.moc" + +typedef KGenericFactory<KJSEmbed::JSConsolePlugin> JSConsolePluginFactory; +K_EXPORT_COMPONENT_FACTORY( libjsconsoleplugin, JSConsolePluginFactory( "jsconsoleplugin" ) ) + +// +// KParts::Plugin Implementation +// +namespace KJSEmbed { + +JSConsolePlugin::JSConsolePlugin( QObject *parent, const char *name, const QStringList & ) + : KParts::Plugin( parent, name ) +{ + js = 0; + + KActionMenu *menu; + menu = new KActionMenu( i18n("&JavaScript"), "jsconsole", + actionCollection(), "jsconsole" ); + menu->setDelayed( false ); + + menu->insert( new KAction( i18n("&Console"), 0, + this, SLOT( showConsole() ), + actionCollection(), "jsconsole_show") ); +} + +void JSConsolePlugin::init() +{ + Q_ASSERT( js == 0 ); + js = new KJSEmbedPart( 0, 0, name(), 0, name() ); // shouldn't "this" be the parent? + + KJS::Interpreter *interp = js->interpreter(); + KJS::Object global( interp->globalObject() ); + js->addObject( js->view(), global, "console" ); + js->addObject( parent(), global, "plugin_parent" ); + js->addObject( KApplication::kApplication(), global, "application" ); + + if ( parent()->inherits("KParts::Part") ) { + KParts::Part *part = static_cast<KParts::Part *>( parent() ); + js->addObject( part, "kpart" ); + if ( part->widget() ) { + js->addObject( part->widget(), "widget" ); + js->addObject( part->widget()->topLevelWidget(), "window" ); + } + } +} + +JSConsolePlugin::~JSConsolePlugin() +{ + delete js; +} + +void JSConsolePlugin::showConsole() +{ + if ( !js ) + init(); + js->widget()->show(); +} + +} // namespace KJSEmbed + +// Local Variables: +// c-basic-offset: 4 +// End: + + + + diff --git a/kjsembed/plugin/jsconsoleplugin.h b/kjsembed/plugin/jsconsoleplugin.h new file mode 100644 index 00000000..6f4bc54b --- /dev/null +++ b/kjsembed/plugin/jsconsoleplugin.h @@ -0,0 +1,61 @@ +// -*- c++ -*- + +/* + * Copyright (C) 2001-2003, Richard J. Moore <rich@kde.org> + * + * This library 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 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 KJSEMBEDJSCONSOLEPLUGIN_H +#define KJSEMBEDJSCONSOLEPLUGIN_H + +#include <kparts/plugin.h> + +class KJSEmbedPart; + +namespace KJSEmbed { + +/** + * A KParts::Plugin that provides a console for executing Javascript commands. + * + * @version $Id$ + * @author Richard Moore, rich@kde.org + */ +class JSConsolePlugin : public KParts::Plugin +{ + Q_OBJECT + +public: + JSConsolePlugin( QObject *parent, const char *name, const QStringList & ); + ~JSConsolePlugin(); + +private slots: + void showConsole(); + +private: + void init(); + + KJSEmbedPart *js; + class Private *d; +}; + +} // namespace KJSEmbed + +#endif // KJSEMBEDJSCONSOLEPLUGIN_H + +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/kjsembed/plugin/plugin_jsconsole.rc b/kjsembed/plugin/plugin_jsconsole.rc new file mode 100644 index 00000000..b1adf821 --- /dev/null +++ b/kjsembed/plugin/plugin_jsconsole.rc @@ -0,0 +1,11 @@ +<!DOCTYPE kpartgui> +<kpartplugin name="jsconsole" library="libjsconsoleplugin"> +<MenuBar> + <Menu name="tools"><Text>&Tools</Text> + <Action name="jsconsole"/> + </Menu> +</MenuBar> +<ToolBar name="extraToolBar"> + <Action name="jsconsole"/> +</ToolBar> +</kpartplugin> |