You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
184 lines
4.8 KiB
184 lines
4.8 KiB
/* This file is part of the KDE project
|
|
Copyright (C) 2004 Joseph Wenninger <jowenn@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 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 _PLUGIN_KATE_KJS_WRAPPER_H_
|
|
#define _PLUGIN_KATE_KJS_WRAPPER_H_
|
|
|
|
#include <kate/application.h>
|
|
#include <kate/documentmanager.h>
|
|
#include <kate/document.h>
|
|
#include <kate/pluginconfiginterface.h>
|
|
#include <kate/pluginconfiginterfaceextension.h>
|
|
#include <kate/mainwindow.h>
|
|
#include <kate/plugin.h>
|
|
#include <kate/view.h>
|
|
#include <kate/viewmanager.h>
|
|
|
|
#include <kcombobox.h>
|
|
#include <kdialogbase.h>
|
|
#include <klibloader.h>
|
|
#include <klocale.h>
|
|
#include <kurlrequester.h>
|
|
#include <tqcheckbox.h>
|
|
#include <tqvaluelist.h>
|
|
#include <kjs/value.h>
|
|
#include <kjs/object.h>
|
|
#include <tqvbox.h>
|
|
#include <tqptrdict.h>
|
|
#include <kxmlguiclient.h>
|
|
#include <tqvaluelist.h>
|
|
#include <tqguardedptr.h>
|
|
|
|
namespace Kate {
|
|
class PluginConfigPage;
|
|
namespace JS {
|
|
class Bindings;
|
|
class Management;
|
|
class RefCountedObjectDict;
|
|
class Application;
|
|
class MainWindow;
|
|
}
|
|
}
|
|
|
|
|
|
namespace KJSEmbed {
|
|
class KJSEmbedPart;
|
|
class JSFactory;
|
|
}
|
|
|
|
class KateKJSWrapperConfigPage;
|
|
class PluginKateKJSWrapperView;
|
|
|
|
namespace KMDI {
|
|
class ToolViewAccessor;
|
|
}
|
|
|
|
class PluginKateKJSWrapper : public Kate::Plugin,
|
|
Kate::PluginViewInterface,
|
|
Kate::PluginConfigInterfaceExtension
|
|
{
|
|
Q_OBJECT
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
PluginKateKJSWrapper( TQObject* parent = 0, const char* name = 0, const TQStringList& = TQStringList() );
|
|
virtual ~PluginKateKJSWrapper();
|
|
|
|
void addView (Kate::MainWindow *win);
|
|
void removeView (Kate::MainWindow *win);
|
|
|
|
Kate::View *kv;
|
|
|
|
|
|
TQPtrDict<class PluginKateKJSWrapperView> m_views;
|
|
uint configPages () const;
|
|
Kate::PluginConfigPage *configPage (uint , TQWidget *w, const char *name=0);
|
|
TQString configPageName(uint) const;
|
|
TQString configPageFullName(uint) const;
|
|
TQPixmap configPagePixmap (uint /*number = 0*/,
|
|
int /*size = KIcon::SizeSmall*/) const;
|
|
PluginKateKJSWrapperView *getViewObject(Kate::MainWindow *win);
|
|
|
|
public slots:
|
|
//void slotInsertCommand();
|
|
//void slotAbort();
|
|
void applyConfig( KateKJSWrapperConfigPage* );
|
|
void slotWindowDestroyed();
|
|
|
|
private:
|
|
friend class Kate::JS::Management;
|
|
friend class KateKJSWrapperConfigPage;
|
|
KJSEmbed::KJSEmbedPart *m_part;
|
|
Kate::JS::Bindings *m_kateAppBindings;
|
|
//TQValueList<KJS::Value> m_configPageFactories;
|
|
KJS::Value m_configPageFactories;
|
|
KJS::Value m_toolViewConstructors;
|
|
KJS::Value m_newWindowHandler;
|
|
KJS::Value m_removeWindowHandler;
|
|
TQString m_scriptname;
|
|
};
|
|
|
|
|
|
/** Config page for the plugin. */
|
|
class KateKJSWrapperConfigPage : public Kate::PluginConfigPage
|
|
{
|
|
Q_OBJECT
|
|
TQ_OBJECT
|
|
friend class PluginKateKJSWrapper;
|
|
|
|
public:
|
|
KateKJSWrapperConfigPage(KJS::Object pageConstructor,PluginKateKJSWrapper* parent = 0L, TQWidget *parentWidget = 0L);
|
|
~KateKJSWrapperConfigPage() {};
|
|
|
|
/** Reimplemented from Kate::PluginConfigPage
|
|
* just emits configPageApplyRequest( this ).
|
|
*/
|
|
void apply();
|
|
|
|
void reset ();
|
|
void defaults ();
|
|
|
|
signals:
|
|
/** Ask the plugin to set initial values */
|
|
void configPageApplyRequest( KateKJSWrapperConfigPage* );
|
|
/** Ask the plugin to apply changes */
|
|
void configPageInitRequest( KateKJSWrapperConfigPage* );
|
|
|
|
private:
|
|
KJS::Object m_pageObject;
|
|
PluginKateKJSWrapper *m_plugin;
|
|
};
|
|
|
|
class PluginKateKJSWrapperView : public KXMLGUIClient
|
|
{
|
|
public:
|
|
|
|
virtual ~PluginKateKJSWrapperView();
|
|
|
|
private:
|
|
friend class PluginKateKJSWrapper;
|
|
friend class Kate::JS::Application;
|
|
friend class Kate::JS::MainWindow;
|
|
void removeFromWindow();
|
|
|
|
Kate::MainWindow *win;
|
|
KJS::Object winObj;
|
|
KJS::Object actionCollectionObj;
|
|
TQValueList<TQGuardedPtr<KMDI::ToolViewAccessor> > toolviews;
|
|
};
|
|
|
|
|
|
|
|
namespace Kate {
|
|
namespace JS {
|
|
class ToolView: public TQVBox {
|
|
Q_OBJECT
|
|
TQ_OBJECT
|
|
public:
|
|
ToolView(KJS::Object constr, KJS::ExecState *exec, KJSEmbed::JSFactory *factory, KJS::List parameters, const char * name);
|
|
virtual ~ToolView();
|
|
private:
|
|
KJS::Object handler;
|
|
};
|
|
}
|
|
|
|
}
|
|
|
|
#endif // _PLUGIN_KATE_KJS_WRAPPER_H_
|
|
|