00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __plugin_part_h__
00025 #define __plugin_part_h__
00026
00027 #include <kparts/browserextension.h>
00028 #include <kparts/factory.h>
00029 #include <kparts/part.h>
00030 #include <klibloader.h>
00031 #include <tqwidget.h>
00032 #include <tqguardedptr.h>
00033
00034 class KAboutData;
00035 class KInstance;
00036 class PluginBrowserExtension;
00037 class PluginLiveConnectExtension;
00038 class TQLabel;
00039 class NSPluginInstance;
00040 class PluginPart;
00041
00042
00043 #include "NSPluginCallbackIface.h"
00044
00045
00046 class NSPluginCallback : public NSPluginCallbackIface
00047 {
00048 public:
00049 NSPluginCallback(PluginPart *part);
00050
00051 ASYNC reloadPage();
00052 ASYNC requestURL(TQString url, TQString target);
00053 ASYNC postURL(TQString url, TQString target, TQByteArray data, TQString mime);
00054 ASYNC statusMessage( TQString msg );
00055 ASYNC evalJavaScript( int id, TQString script );
00056
00057 private:
00058 PluginPart *_part;
00059 };
00060
00061
00062 class PluginFactory : public KParts::Factory
00063 {
00064 Q_OBJECT
00065
00066 public:
00067 PluginFactory();
00068 virtual ~PluginFactory();
00069
00070 virtual KParts::Part * createPartObject(TQWidget *parentWidget = 0, const char *widgetName = 0,
00071 TQObject *parent = 0, const char *name = 0,
00072 const char *classname = "KParts::Part",
00073 const TQStringList &args = TQStringList());
00074
00075 static KInstance *instance();
00076 static KAboutData *aboutData();
00077
00078 private:
00079
00080 static KInstance *s_instance;
00081 class NSPluginLoader *_loader;
00082 };
00083
00084
00085 class PluginCanvasWidget : public QWidget
00086 {
00087 Q_OBJECT
00088 public:
00089
00090 PluginCanvasWidget(TQWidget *parent=0, const char *name=0)
00091 : TQWidget(parent,name) {}
00092
00093 protected:
00094 void resizeEvent(TQResizeEvent *e);
00095
00096 signals:
00097 void resized(int,int);
00098 };
00099
00100
00101 class PluginPart: public KParts::ReadOnlyPart
00102 {
00103 Q_OBJECT
00104 public:
00105 PluginPart(TQWidget *parentWidget, const char *widgetName, TQObject *parent,
00106 const char *name, const TQStringList &args = TQStringList());
00107 virtual ~PluginPart();
00108
00109 void postURL(const TQString& url, const TQString& target, const TQByteArray& data, const TQString& mime);
00110 void requestURL(const TQString& url, const TQString& target);
00111 void statusMessage( TQString msg );
00112 void evalJavaScript( int id, const TQString& script );
00113 void reloadPage();
00114
00115 void changeSrc(const TQString& url);
00116
00117 protected:
00118 virtual bool openURL(const KURL &url);
00119 virtual bool closeURL();
00120 virtual bool openFile() { return false; };
00121
00122 protected slots:
00123 void pluginResized(int,int);
00124 void saveAs();
00125
00126 private:
00127 TQGuardedPtr<TQWidget> _widget;
00128 PluginCanvasWidget *_canvas;
00129 PluginBrowserExtension *_extension;
00130 PluginLiveConnectExtension *_liveconnect;
00131 NSPluginCallback *_callback;
00132 TQStringList _args;
00133 class NSPluginLoader *_loader;
00134 bool *_destructed;
00135 };
00136
00137
00138 class PluginLiveConnectExtension : public KParts::LiveConnectExtension
00139 {
00140 Q_OBJECT
00141 public:
00142 PluginLiveConnectExtension(PluginPart* part);
00143 virtual ~PluginLiveConnectExtension();
00144 virtual bool put(const unsigned long, const TQString &field, const TQString &value);
00145 virtual bool get(const unsigned long, const TQString&, Type&, unsigned long&, TQString&);
00146 virtual bool call(const unsigned long, const TQString&, const TQStringList&, Type&, unsigned long&, TQString&);
00147
00148 TQString evalJavaScript( const TQString & script );
00149
00150 signals:
00151 virtual void partEvent( const unsigned long objid, const TQString & event, const KParts::LiveConnectExtension::ArgList & args );
00152
00153 private:
00154 PluginPart *_part;
00155 TQString *_retval;
00156 };
00157
00158
00159 #endif