Skip to content

Commit

Permalink
Moved in designer plugins
Browse files Browse the repository at this point in the history
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@4608 c8812cc2-4d05-0410-92ff-de0c093fc19c
  • Loading branch information
timlinux committed Jan 8, 2006
1 parent 02d2b60 commit 6b005a2
Show file tree
Hide file tree
Showing 3 changed files with 261 additions and 0 deletions.
31 changes: 31 additions & 0 deletions src/designer/Makefile.am
@@ -0,0 +1,31 @@
# Copyright (C) 2005 Tim Sutton <tim at linfiniti.com>
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# $Id: Makefile.am 4490 2006-01-07 01:09:27Z timlinux $


plugindir = ${pkglibdir}/designer

%.moc.cpp: %.h
$(MOC) -o $@ $<

# name of the designer plugin
plugin_LTLIBRARIES = qgisdesignerwidgets.la

qgisdesignerwidgets_la_SOURCES = qgsdesignerwidgets.cpp \
qgsdesignerwidgets.h \
$(projectionselector_la_MOC)

qgisdesignerwidgets_la_MOC = qgsprojectionselectorplugin.moc.cpp

projectionselector_la_LIBADD = ../src/libqgis.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../ -I../legend
207 changes: 207 additions & 0 deletions src/designer/qgsdesignerwidgets.cpp
@@ -0,0 +1,207 @@
#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 )
23 changes: 23 additions & 0 deletions src/designer/qgsdesignerwidgets.h
@@ -0,0 +1,23 @@
#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;
};

0 comments on commit 6b005a2

Please sign in to comment.