Some updates for qt designer plugin support - still in progress...

git-svn-id: http://svn.osgeo.org/qgis/trunk@5133 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
timlinux 2006-04-02 22:57:22 +00:00
parent 2b6b2eb8ce
commit d743bdddc4
7 changed files with 44 additions and 242 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 707 B

View File

@ -15,5 +15,5 @@ endif
# depend on the existence of libqgis_gui.
# gui *must* be specified immediately before the providers
# subdirectory.
SUBDIRS = core ui legend raster composer widgets gui providers plugins $(MAC) helpviewer
SUBDIRS = core ui legend raster composer widgets gui providers plugins $(MAC) helpviewer designer

View File

@ -10,22 +10,49 @@
#
# $Id: Makefile.am 4490 2006-01-07 01:09:27Z timlinux $
##
## ----------------------------------------------------------------------
## Define Targets
## ----------------------------------------------------------------------
##
lib_LTLIBRARIES= libqgis_designerwidgets.la
## TODO change this so it installs into ${QTDIR}/plugins/designer
libqgis_designerwidgetsdir = ${pkglibdir}/designer
plugindir = ${pkglibdir}/designer
##
## ----------------------------------------------------------------------
## get Qt4 to run moc and rcc where required...
## ----------------------------------------------------------------------
##
#run moc on files
%.moc.cpp: %.h
$(MOC) -o $@ $<
# name of the designer plugin
plugin_LTLIBRARIES = qgisdesignerwidgets.la
#qt resources
%.qrc.cpp: %.qrc
$(RCC) -o $@ $<
qgisdesignerwidgets_la_SOURCES = qgsdesignerwidgets.cpp \
qgsdesignerwidgets.h \
$(projectionselector_la_MOC)
libqgis_designerwidgets_la_MOC = qgsprojectionselectorwidget.moc.cpp
qgisdesignerwidgets_la_MOC = qgsprojectionselectorplugin.moc.cpp
libqgis_designerwidgets_RES = qgisdesignerwidgets.qrc.cpp
#projectionselector_la_LIBADD = ../src/gui/libqgis_gui.la $(QT_LDADD)
#qgisdesignerwidgets_la_LIBADD = $(QT_LDADD) ../widgets/projectionselector/libqgsprojectionselector.la
qgisdesignerwidgets_la_LDFLAGS = -avoid-version -module
qgisdesignerwidgets_la_CXXFLAGS = $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(QT_CXXFLAGS) $(DEBUG_QGIS) -I../gui/ -I../legend
libqgis_designerwidgets_QRC = qgisdesignerwidgets.qrc
## $(libqgis_designerwidgets_la_MOC) \
libqgis_designerwidgets_la_SOURCES = qgsprojectionselectorwidget.cpp \
$(libqgis_designerwidgets_QRC) \
$(libqgis_designerwidgets_RES)
libqgis_designerwidgets_la_LIBADD = $(QT_LDADD) ../widgets/projectionselector/libqgsprojectionselector.la
libqgis_designerwidgets_la_LDFLAGS = -avoid-version -module
libqgis_designerwidgets_la_CXXFLAGS = $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(QT_CXXFLAGS) $(DEBUG_QGIS) -I../gui/ -I../legend -I../core -I../widgets/projectionselector/
##
## ----------------------------------------------------------------------
## additional files that need to be installed go here
## ----------------------------------------------------------------------
##
libqgis_designerwidgets_HEADERS = qgsprojectionselectorwidget.h

View File

@ -0,0 +1,5 @@
<RCC>
<qresource prefix="/" >
<file>../../images/designer_widget_icons/projectionselector.png</file>
</qresource>
</RCC>

View File

@ -1,207 +0,0 @@
#include "qgsdesignerwidgets.h"
#include <qstringlist.h>
#include <qimage.h>
#include <q3dragobject.h>
#include "qgslegend.h"
#include "qgsmapcanvas.h"
#include "qgslinestylewidget.h"
#include "qgsfillstylewidget.h"
#include "qgspointstylewidget.h"
#include "qgsvectorsymbologywidget.h"
//Added by qt3to4:
#include <QPixmap>
#include <Q3ValueList>
static const char *legend_pixmap[] = {
"22 22 8 1",
" c Gray100",
". c Gray97",
"X c #4f504f",
"o c #00007f",
"O c Gray0",
"+ c none",
"@ c Gray0",
"# c Gray0",
"++++++++++++++++++++++",
"++++++++++++++++++++++",
"++++++++++++++++++++++",
"++++++++++++++++++++++",
"+OOOOOOOOOOOOOOOOOOOO+",
"OOXXXXXXXXXXXXXXXXXXOO",
"OXX. O",
"OX. ooooooooo O",
"OX. o o .O",
"OX o o O",
"OX o o O",
"O o o O",
"OX o o o O",
"OX o o o O",
"OX o o O",
"OX ooooooooo o O",
"OO..................OO",
"+OOOOOOOOOOOOOOOOOOOO+",
"++++++++++++++++++++++",
"++++++++++++++++++++++",
"++++++++++++++++++++++",
"++++++++++++++++++++++"
};
//shamelessly snarfed from qwt stuff - a very nice simple neat way to
//accommodate building multiple widgets...Tim
namespace
{
struct Entry
{
Entry() {}
Entry( QString theClassname, QString theHeader, QString thePixmap,
QString theTooltip, QString theWhatsThisString):
classname(theClassname),
header(theHeader),
pixmap(thePixmap),
tooltip(theTooltip),
whatshis(theWhatsThisString)
{}
QString classname;
QString header;
QString pixmap;
QString tooltip;
QString whatshis;
};
Q3ValueList<Entry> mEntriesVector;
const Entry *entry(const QString& theString)
{
for ( uint i = 0; i < mEntriesVector.count(); i++ )
{
if (theString == mEntriesVector[i].classname)
return &mEntriesVector[i];
}
return NULL;
}
}
QgsDesignerWidgets::QgsDesignerWidgets(QObject *parent)
: QObject(parent)
{
mInitialized = false;
mEntriesVector.append(Entry("QgsLegend", "qgslegend.h",
"", "A legend widget that shows layers associated with a mapcanvas.", "A legend widget that shows layers associated with a mapcanvas"));
mEntriesVector.append(Entry("QgsMapCanvas", "qgsmapcanvas.h",
"", "A map canvas widget", "A map canvas is an interactive map that can be panned and zoomed."));
mEntriesVector.append(Entry("QgsLineStyleWidget", "qgslinestylewidget.h",
"", "A widget that lets you select a line style.", "A widget that lets you select a line style"));
mEntriesVector.append(Entry("QgsFillStyleWidget", "qgsfillstylewidget.h",
"", "A widget that lets you select a fill style.", "A widget that lets you select a fill style"));
mEntriesVector.append(Entry("QgsPointStyleWidget", "qgspointstylewidget.h",
"", "A widget that lets you select a point style.", "A widget that lets you select a point style"));
mEntriesVector.append(Entry("QgsVectorSymbologyWidget", "QgsVectorSymbologyWidget",
"", "A widget that lets you select vector symbology.", "A widget that lets you select vector symbology"));
}
void QgsDesignerWidgets::initialize(QDesignerFormEditorInterface * core )
{
if (mInitialized)
return;
mInitialized = true;
}
bool QgsDesignerWidgets::isInitialized() const
{
return mInitialized;
}
QWidget* QgsDesignerWidgets::create(const QString &key,
QWidget* parent, const char* name)
{
if ( key == "QgsLegend" )
return new QgsLegend( parent, name );
else if ( key == "QgsMapCanvas" )
return new QgsMapCanvas ( parent, name );
else if ( key == "QgsLineStyleWidget" )
return new QgsLineStyleWidget ( parent, name );
else if ( key == "QgsFillStyleWidget" )
return new QgsFillStyleWidget ( parent, name );
else if ( key == "QgsPointStyleWidget" )
return new QgsPointStyleWidget ( parent, name );
else if ( key == "QgsVectorSymbologyWidget" )
return new QgsVectorSymbologyWidget( parent, name );
return 0;
}
QStringList QgsDesignerWidgets::keys() const
{
QStringList list;
for (unsigned i = 0; i < mEntriesVector.count(); i++)
list += mEntriesVector[i].classname;
return list;
}
QString QgsDesignerWidgets::group( const QString& feature ) const
{
if (entry(feature) != NULL )
return QString("QGIS");
return QString::null;
}
QIcon QgsDesignerWidgets::iconSet( const QString& thePixmap) const
{
QString pixmapKey("qwtwidget.png");
if (entry(thePixmap) != NULL )
pixmapKey = entry(thePixmap)->pixmap;
const QMimeSource *ms =
Q3MimeSourceFactory::defaultFactory()->data(pixmapKey);
QPixmap pixmap;
Q3ImageDrag::decode(ms, pixmap);
return QIcon(pixmap);
}
QString QgsDesignerWidgets::includeFile( const QString& feature ) const
{
if (entry(feature) != NULL)
return entry(feature)->header;
return QString::null;
}
QString QgsDesignerWidgets::toolTip( const QString& feature ) const
{
if (entry(feature) != NULL )
return entry(feature)->tooltip;
return QString::null;
}
QString QgsDesignerWidgets::whatsThis( const QString& feature ) const
{
if (entry(feature) != NULL)
return entry(feature)->whatshis;
return QString::null;
}
bool QgsDesignerWidgets::isContainer( const QString& ) const
{
return FALSE;
}
/*
The Q_EXPORT_PLUGIN macro.
Q_EXPORT_PLUGIN( CustomWidgetPlugin )
This macro identifies the module as a plugin -- all the other code simply
implements the relevant interface, i.e. wraps the classes you wish to make available.
This macro must appear once in your plugin. It should be copied with the class name
changed to the name of your plugin's class. (See the Qt Plugin documentation for more
information on the plugin entry point.)
Each widget you wrap in a widget plugin implementation becomes a class that the
plugin implementation offers. There is no limit to the number of classes that you
may include in an plugin implementation.
*/
Q_EXPORT_PLUGIN( QgsDesignerWidgets )

View File

@ -1,23 +0,0 @@
#include <QDesignerCustomWidgetInterface>
class QgsDesignerWidgets : public QObject, public QDesignerCustomWidgetInterface
{
Q_OBJECT;
Q_INTERFACES(QDesignerCustomWidgetInterface);
public:
QgsDesignerWidgets(QObject *parent = 0);
void initialize(QDesignerFormEditorInterface *core);
QStringList keys() const;
QWidget* create( const QString &classname, QWidget* parent = 0, const char* name = 0 );
QString group( const QString& ) const;
QIcon iconSet( const QString& ) const;
QString includeFile( const QString& ) const;
QString toolTip( const QString& ) const;
QString whatsThis( const QString& ) const;
bool isContainer( const QString& ) const;
bool isInitialized() const;
private:
bool mInitialized;
};