/* This file is part of the KDE project Copyright (C) 2004 Joseph Wenninger 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 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include 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 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 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 = TDEIcon::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 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 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 > toolviews; }; namespace Kate { namespace JS { class ToolView: public TQVBox { Q_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_