This is the second part of 267318 - the Qt Designer plugin so that you can

be using QGecko like any other widget from the Qt Designer. Very cool.
(for "Creating Your Own Browsers 101" ;) )
This commit is contained in:
zack%kde.org 2004-12-02 23:35:20 +00:00
Родитель 334ce0b580
Коммит 24a5c9e1a7
5 изменённых файлов: 192 добавлений и 13 удалений

Просмотреть файл

@ -1,13 +0,0 @@
DEPTH = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = qgeckoembed
DIRS=src tests
PACKAGE_FILE = qgeckoembed.pkg
include $(topsrcdir)/config/rules.mk

Просмотреть файл

Просмотреть файл

@ -0,0 +1,139 @@
/* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Michal Ceresna
* for Lixto GmbH.
*
* Portions created by Initial Developer are Copyright (C) 2004
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Michal Ceresna <ceresna@amos.sturak.sk>
*/
#include <dlfcn.h>
#include <qdir.h>
#include <qlabel.h>
#include "qgeckoembed.h"
#include "plugin.h"
#include "plugin.xpm"
QGeckoPlugin::QGeckoPlugin()
{
}
QStringList QGeckoPlugin::keys() const
{
QStringList list;
list << "QGeckoEmbed";
return list;
}
QWidget* QGeckoPlugin::create(const QString& key,
QWidget* parent,
const char* name)
{
if (key=="QGeckoEmbed") {
//nicer would be to use the QLibrary, but it uses only
//the RTLD_LAZY flag and we need the RTLD_GLOBAL
//to successfully load the rest of mozilla libs
void *handle1 = dlopen("libxpcom.so", RTLD_NOW|RTLD_GLOBAL);
void *handle2 = dlopen("libqgeckoembed.so", RTLD_NOW|RTLD_GLOBAL);
if (!handle1 || !handle2) {
QLabel *l = new QLabel(parent, name);
l->setText("<html><body>"
"Unable to initialize Mozilla.<br>"
"Try to set <b>MOZILLA_FIVE_HOME</b> and "
#ifdef Q_WS_WIN
"<b>PATH</b>"
#else
"<b>LD_LIBRARY_PATH</b>"
#endif
" variables before starting the Qt Designer."
"</body></html>");
return l;
}
else {
//this is a workaround for mozilla bug:
//call to NS_InitEmbedding works only once
static bool initialized = FALSE;
if (!initialized) {
QGeckoEmbed::
initialize(QDir::
convertSeparators(QDir::home().absPath()+
"/.qgeckoembed-qtdesigner"),
"QtDesigner");
//QGeckoGlobals::pushStartup()
static QGeckoEmbed *sentinel;
sentinel = new QGeckoEmbed(NULL, "sentinel");
initialized = TRUE;
}
QGeckoEmbed *me = new QGeckoEmbed(parent, name);
me->loadURL("about:");
return me;
}
}
else {
return NULL;
}
}
QString QGeckoPlugin::includeFile(const QString& key) const
{
return
key=="QGeckoEmbed"?
"qgeckoembed.h":
QString::null;
}
QString QGeckoPlugin::group(const QString& key) const
{
return
key=="QGeckoEmbed"?
"Display (Mozilla)":
QString::null;
}
QIconSet QGeckoPlugin::iconSet(const QString&) const
{
return QIconSet(QPixmap(mozilla_pixmap));
}
QString QGeckoPlugin::toolTip(const QString& key) const
{
return
key=="QGeckoEmbed"?
"Mozilla Browser Control":
QString::null;
}
QString QGeckoPlugin::whatsThis(const QString& key) const
{
return
key=="QGeckoEmbed"?
"A widget with Mozilla Web Browser":
QString::null;
}
bool QGeckoPlugin::isContainer(const QString&) const
{
return FALSE;
}
Q_EXPORT_PLUGIN(QGeckoPlugin)

Просмотреть файл

@ -0,0 +1,53 @@
/* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Michal Ceresna
* for Lixto GmbH.
*
* Portions created by Initial Developer are Copyright (C) 2004
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Michal Ceresna <ceresna@amos.sturak.sk>
*/
#ifndef qgeckoplugin_h
#define qgeckoplugin_h
#include <qwidgetplugin.h>
/**
* Implements an interface for
* the Qt-Designer plugin
*/
class QGeckoPlugin : public QWidgetPlugin
{
public:
QGeckoPlugin();
QStringList keys() const;
QWidget* create(const QString& key,
QWidget* parent = 0,
const char* name = 0);
QString group(const QString& key) const;
QIconSet iconSet(const QString& key) const;
QString includeFile(const QString& key) const;
QString toolTip(const QString& key) const;
QString whatsThis(const QString& key) const;
bool isContainer(const QString&) const;
};
#endif /* qgeckoplugin_h */

Просмотреть файл