mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-20 00:41:23 +00:00
First step to a kpart.
svn path=/trunk/kdebase/nsplugins/; revision=45843
This commit is contained in:
parent
d6eaf414cb
commit
d1301bf1ae
|
@ -1,4 +1,4 @@
|
|||
SUBDIRS = viewer wrapper
|
||||
SUBDIRS = viewer #wrapper
|
||||
|
||||
INCLUDES = $(all_includes) -I$(top_srcdir)/libltdl
|
||||
|
||||
|
@ -15,3 +15,14 @@ test_LDADD = $(LIB_KDEUI) libnsplugin.a -lXt
|
|||
|
||||
NSPluginClassIface.h:
|
||||
ln -s viewer/NSPluginClassIface.h .
|
||||
|
||||
|
||||
|
||||
lib_LTLIBRARIES = libplugin.la
|
||||
libplugin_la_SOURCES = main.cpp plugin_part.cpp
|
||||
|
||||
libplugin_la_LDFLAGS = $(all_libraries) -version-info 1:0:0 -module
|
||||
libplugin_la_LIBADD = $(LIB_KFILE) -lkparts
|
||||
|
||||
kdelnkdir = $(kde_servicesdir)
|
||||
kdelnk_DATA = plugin.desktop
|
||||
|
|
10
nsplugins/plugin.desktop
Normal file
10
nsplugins/plugin.desktop
Normal file
|
@ -0,0 +1,10 @@
|
|||
[Desktop Entry]
|
||||
Name=Netscape Plugin
|
||||
Icon=netscape
|
||||
MimeType=image/x-xpixmap;application/x-java-applet;application/x-shockwave-flash;
|
||||
Type=Service
|
||||
DocPath=aktion/aktion.html
|
||||
Comment=Netscape plugin viewer
|
||||
Terminal=0
|
||||
ServiceTypes=KParts/ReadOnlyPart,Browser/View
|
||||
X-KDE-Library=libplugin
|
111
nsplugins/plugin_part.cpp
Normal file
111
nsplugins/plugin_part.cpp
Normal file
|
@ -0,0 +1,111 @@
|
|||
#include "plugin_part.h"
|
||||
|
||||
#include <kinstance.h>
|
||||
#include <klocale.h>
|
||||
#include <kaboutdata.h>
|
||||
|
||||
#include <qlabel.h>
|
||||
|
||||
extern "C"
|
||||
{
|
||||
/**
|
||||
* This function is the 'main' function of this part. It takes
|
||||
* the form 'void *init_lib<library name>() It always returns a
|
||||
* new factory object
|
||||
*/
|
||||
void *init_libplugin()
|
||||
{
|
||||
return new PluginFactory;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* We need one static instance of the factory for our C 'main'
|
||||
* function
|
||||
*/
|
||||
KInstance *PluginFactory::s_instance = 0L;
|
||||
|
||||
PluginFactory::PluginFactory()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
PluginFactory::~PluginFactory()
|
||||
{
|
||||
if (s_instance)
|
||||
delete s_instance;
|
||||
|
||||
s_instance = 0;
|
||||
}
|
||||
|
||||
|
||||
QObject *PluginFactory::create(QObject *parent, const char *name, const char*,
|
||||
const QStringList& )
|
||||
{
|
||||
QObject *obj = new PluginPart((QWidget*)parent, name);
|
||||
emit objectCreated(obj);
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
||||
KInstance *PluginFactory::instance()
|
||||
{
|
||||
if ( !s_instance )
|
||||
{
|
||||
KAboutData about("plugin", I18N_NOOP("plugin"), "1.99");
|
||||
s_instance = new KInstance(&about);
|
||||
}
|
||||
return s_instance;
|
||||
}
|
||||
|
||||
|
||||
PluginPart::PluginPart(QWidget *parent, const char *name)
|
||||
: KParts::ReadOnlyPart(parent, name)
|
||||
{
|
||||
setInstance(PluginFactory::instance());
|
||||
|
||||
// create a canvas to insert our widget
|
||||
QWidget *canvas = new QWidget(parent);
|
||||
canvas->setFocusPolicy(QWidget::ClickFocus);
|
||||
setWidget(canvas);
|
||||
|
||||
m_extension = new PluginBrowserExtension(this);
|
||||
|
||||
// as an example, display a blank white widget
|
||||
widget = new QLabel(canvas);
|
||||
widget->setText("plugin!");
|
||||
widget->setAutoResize(true);
|
||||
widget->show();
|
||||
}
|
||||
|
||||
|
||||
PluginPart::~PluginPart()
|
||||
{
|
||||
closeURL();
|
||||
}
|
||||
|
||||
|
||||
bool PluginPart::openFile()
|
||||
{
|
||||
widget->setText(m_file);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool PluginPart::closeURL()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
PluginBrowserExtension::PluginBrowserExtension(PluginPart *parent)
|
||||
: KParts::BrowserExtension(parent, "PluginBrowserExtension")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
PluginBrowserExtension::~PluginBrowserExtension()
|
||||
{
|
||||
}
|
70
nsplugins/plugin_part.h
Normal file
70
nsplugins/plugin_part.h
Normal file
|
@ -0,0 +1,70 @@
|
|||
#ifndef __plugin_part_h__
|
||||
#define __plugin_part_h__
|
||||
|
||||
#include <kparts/browserextension.h>
|
||||
#include <klibloader.h>
|
||||
|
||||
class KInstance;
|
||||
class PluginBrowserExtension;
|
||||
class QLabel;
|
||||
|
||||
class PluginFactory : public KLibFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
PluginFactory();
|
||||
virtual ~PluginFactory();
|
||||
|
||||
virtual QObject* create(QObject* parent = 0, const char* name = 0,
|
||||
const char* classname = "QObject",
|
||||
const QStringList &args = QStringList());
|
||||
|
||||
static KInstance *instance();
|
||||
|
||||
|
||||
private:
|
||||
|
||||
static KInstance *s_instance;
|
||||
|
||||
};
|
||||
|
||||
|
||||
class PluginPart: public KParts::ReadOnlyPart
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
PluginPart(QWidget *parent, const char *name);
|
||||
virtual ~PluginPart();
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
virtual bool openFile();
|
||||
virtual bool closeURL();
|
||||
|
||||
|
||||
private:
|
||||
|
||||
QLabel *widget;
|
||||
PluginBrowserExtension *m_extension;
|
||||
};
|
||||
|
||||
|
||||
class PluginBrowserExtension : public KParts::BrowserExtension
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
friend class PluginPart;
|
||||
|
||||
public:
|
||||
|
||||
PluginBrowserExtension(PluginPart *parent);
|
||||
virtual ~PluginBrowserExtension();
|
||||
};
|
||||
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue