[QGIS Commit] r12191 - in trunk/qgis/src: app gui/symbology-ng ui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Thu Nov 19 08:13:47 EST 2009
Author: wonder
Date: 2009-11-19 08:13:42 -0500 (Thu, 19 Nov 2009)
New Revision: 12191
Modified:
trunk/qgis/src/app/qgsvectorlayerproperties.cpp
trunk/qgis/src/app/qgsvectorlayerproperties.h
trunk/qgis/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp
trunk/qgis/src/gui/symbology-ng/qgsrendererv2propertiesdialog.h
trunk/qgis/src/ui/qgsrendererv2propsdialogbase.ui
trunk/qgis/src/ui/qgsvectorlayerpropertiesbase.ui
Log:
Vector layer properties dialog can convert layer to new/old symbology.
(there's no transfer of settings between old/new symbology)
Modified: trunk/qgis/src/app/qgsvectorlayerproperties.cpp
===================================================================
--- trunk/qgis/src/app/qgsvectorlayerproperties.cpp 2009-11-19 12:28:31 UTC (rev 12190)
+++ trunk/qgis/src/app/qgsvectorlayerproperties.cpp 2009-11-19 13:13:42 UTC (rev 12191)
@@ -56,6 +56,8 @@
#include "qgsrendererv2propertiesdialog.h"
#include "qgsstylev2.h"
+#include "qgssinglesymbolrenderer.h"
+#include "qgssinglesymbolrendererv2.h"
#if QT_VERSION < 0x040300
#define toPlainText() text()
@@ -95,6 +97,7 @@
mToggleEditingButton->setIcon( QgisApp::getThemeIcon( "/mActionToggleEditing.png" ) );
mCalculateFieldButton->setIcon( QgisApp::getThemeIcon( "/mActionCalculateField.png" ) );
+ connect( btnUseNewSymbology, SIGNAL( clicked() ), this, SLOT( useNewSymbology() ) );
// Create the Label dialog tab
QVBoxLayout *layout = new QVBoxLayout( labelOptionsFrame );
@@ -479,56 +482,9 @@
}
}
- //find out the type of renderer in the vectorlayer, create a dialog with these settings and add it to the form
- delete mRendererDialog;
- mRendererDialog = 0;
+ // load appropriate symbology page (V1 or V2)
+ updateSymbologyPage();
- if ( layer->isUsingRendererV2() )
- {
- mRendererDialog = new QgsRendererV2PropertiesDialog( layer, QgsStyleV2::defaultStyle(), true );
-
- // hide unused widgets
- legendtypecombobox->hide();
- legendtypelabel->hide();
- lblTransparencyPercent->hide();
- sliderTransparency->hide();
- }
- else
- {
-
- QString rtype = layer->renderer()->name();
- if ( rtype == "Single Symbol" )
- {
- mRendererDialog = new QgsSingleSymbolDialog( layer );
- legendtypecombobox->setCurrentIndex( 0 );
- }
- else if ( rtype == "Graduated Symbol" )
- {
- mRendererDialog = new QgsGraduatedSymbolDialog( layer );
- legendtypecombobox->setCurrentIndex( 1 );
- }
- else if ( rtype == "Continuous Color" )
- {
- mRendererDialog = new QgsContinuousColorDialog( layer );
- legendtypecombobox->setCurrentIndex( 2 );
- }
- else if ( rtype == "Unique Value" )
- {
- mRendererDialog = new QgsUniqueValueDialog( layer );
- legendtypecombobox->setCurrentIndex( 3 );
- }
-
- QObject::connect( legendtypecombobox, SIGNAL( activated( const QString & ) ), this,
- SLOT( alterLayerDialog( const QString & ) ) );
-
- }
-
- if ( mRendererDialog )
- {
- widgetStackRenderers->addWidget( mRendererDialog );
- widgetStackRenderers->setCurrentWidget( mRendererDialog );
- }
-
// reset fields in label dialog
layer->label()->setFields( layer->pendingFields() );
@@ -1136,3 +1092,96 @@
return pluginList;
}
+
+void QgsVectorLayerProperties::setUsingNewSymbology( bool useNewSymbology )
+{
+ if ( useNewSymbology )
+ {
+ layer->setUsingRendererV2( true );
+ layer->setRendererV2( QgsFeatureRendererV2::defaultRenderer( layer->geometryType() ) );
+ layer->setRenderer( NULL );
+ }
+ else
+ {
+ layer->setUsingRendererV2( false );
+ layer->setRendererV2( NULL );
+ layer->setRenderer( new QgsSingleSymbolRenderer( layer->geometryType() ) );
+ }
+
+ // update GUI!
+ updateSymbologyPage();
+}
+
+void QgsVectorLayerProperties::useNewSymbology()
+{
+ int res = QMessageBox::question( this, tr( "Symbology" ),
+ tr( "Do you wish to use original symbology implementation for this layer?" ),
+ QMessageBox::Yes | QMessageBox::No );
+
+ if ( res != QMessageBox::Yes )
+ return;
+
+ setUsingNewSymbology( true );
+}
+
+void QgsVectorLayerProperties::updateSymbologyPage()
+{
+
+ //find out the type of renderer in the vectorlayer, create a dialog with these settings and add it to the form
+ delete mRendererDialog;
+ mRendererDialog = 0;
+
+ bool v2 = layer->isUsingRendererV2();
+
+ // hide unused widgets
+ legendtypecombobox->setVisible( !v2 );
+ legendtypelabel->setVisible( !v2 );
+ lblTransparencyPercent->setVisible( !v2 );
+ sliderTransparency->setVisible( !v2 );
+ btnUseNewSymbology->setVisible( !v2 );
+
+ if ( v2 )
+ {
+ mRendererDialog = new QgsRendererV2PropertiesDialog( layer, QgsStyleV2::defaultStyle(), true );
+
+ connect( mRendererDialog, SIGNAL( useNewSymbology( bool ) ), this, SLOT( setUsingNewSymbology( bool ) ) );
+
+ }
+ else
+ {
+
+ QString rtype = layer->renderer()->name();
+ if ( rtype == "Single Symbol" )
+ {
+ mRendererDialog = new QgsSingleSymbolDialog( layer );
+ legendtypecombobox->setCurrentIndex( 0 );
+ }
+ else if ( rtype == "Graduated Symbol" )
+ {
+ mRendererDialog = new QgsGraduatedSymbolDialog( layer );
+ legendtypecombobox->setCurrentIndex( 1 );
+ }
+ else if ( rtype == "Continuous Color" )
+ {
+ mRendererDialog = new QgsContinuousColorDialog( layer );
+ legendtypecombobox->setCurrentIndex( 2 );
+ }
+ else if ( rtype == "Unique Value" )
+ {
+ mRendererDialog = new QgsUniqueValueDialog( layer );
+ legendtypecombobox->setCurrentIndex( 3 );
+ }
+
+ QObject::connect( legendtypecombobox, SIGNAL( activated( const QString & ) ), this,
+ SLOT( alterLayerDialog( const QString & ) ) );
+
+ }
+
+ if ( mRendererDialog )
+ {
+ widgetStackRenderers->addWidget( mRendererDialog );
+ widgetStackRenderers->setCurrentWidget( mRendererDialog );
+ }
+
+
+}
Modified: trunk/qgis/src/app/qgsvectorlayerproperties.h
===================================================================
--- trunk/qgis/src/app/qgsvectorlayerproperties.h 2009-11-19 12:28:31 UTC (rev 12190)
+++ trunk/qgis/src/app/qgsvectorlayerproperties.h 2009-11-19 13:13:42 UTC (rev 12191)
@@ -112,6 +112,9 @@
void attributeAdded( int idx );
void attributeDeleted( int idx );
+ void useNewSymbology();
+ void setUsingNewSymbology( bool useNewSymbology );
+
signals:
/** emitted when changes to layer were saved to update legend */
@@ -120,6 +123,9 @@
void toggleEditing( QgsMapLayer * );
protected:
+
+ void updateSymbologyPage();
+
enum attrColumns
{
attrIdCol = 0,
Modified: trunk/qgis/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp
===================================================================
--- trunk/qgis/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp 2009-11-19 12:28:31 UTC (rev 12190)
+++ trunk/qgis/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp 2009-11-19 13:13:42 UTC (rev 12191)
@@ -16,64 +16,65 @@
#include "qgsvectorlayer.h"
#include <QKeyEvent>
+#include <QMessageBox>
-
-QgsRendererV2PropertiesDialog::QgsRendererV2PropertiesDialog(QgsVectorLayer* layer, QgsStyleV2* style, bool embedded)
- : mLayer(layer), mStyle(style), mActiveWidget(NULL)
+QgsRendererV2PropertiesDialog::QgsRendererV2PropertiesDialog( QgsVectorLayer* layer, QgsStyleV2* style, bool embedded )
+ : mLayer( layer ), mStyle( style ), mActiveWidget( NULL )
{
- setupUi(this);
+ setupUi( this );
// can be embedded in vector layer properties
- if (embedded)
+ if ( embedded )
{
buttonBox->hide();
- layout()->setContentsMargins(0,0,0,0);
+ layout()->setContentsMargins( 0, 0, 0, 0 );
}
- connect(buttonBox, SIGNAL(accepted()), this, SLOT(onOK()));
- connect(btnSymbolLevels, SIGNAL(clicked()), this, SLOT(showSymbolLevels()));
+ connect( buttonBox, SIGNAL( accepted() ), this, SLOT( onOK() ) );
+ connect( btnSymbolLevels, SIGNAL( clicked() ), this, SLOT( showSymbolLevels() ) );
+ connect( btnOldSymbology, SIGNAL( clicked() ), this, SLOT( useOldSymbology() ) );
// initialize registry's widget functions
QgsRendererV2Registry* reg = QgsRendererV2Registry::instance();
- if (reg->rendererMetadata("singleSymbol").widgetFunction() == NULL)
+ if ( reg->rendererMetadata( "singleSymbol" ).widgetFunction() == NULL )
{
- reg->setRendererWidgetFunction("singleSymbol", QgsSingleSymbolRendererV2Widget::create);
- reg->setRendererWidgetFunction("categorizedSymbol", QgsCategorizedSymbolRendererV2Widget::create);
- reg->setRendererWidgetFunction("graduatedSymbol", QgsGraduatedSymbolRendererV2Widget::create);
+ reg->setRendererWidgetFunction( "singleSymbol", QgsSingleSymbolRendererV2Widget::create );
+ reg->setRendererWidgetFunction( "categorizedSymbol", QgsCategorizedSymbolRendererV2Widget::create );
+ reg->setRendererWidgetFunction( "graduatedSymbol", QgsGraduatedSymbolRendererV2Widget::create );
}
QPixmap pix;
QStringList renderers = reg->renderersList();
- foreach (QString name, renderers)
+ foreach( QString name, renderers )
{
- QgsRendererV2Metadata m = reg->rendererMetadata(name);
+ QgsRendererV2Metadata m = reg->rendererMetadata( name );
QString iconPath = QgsApplication::defaultThemePath() + m.iconName();
- if (!pix.load(iconPath, "png"))
+ if ( !pix.load( iconPath, "png" ) )
pix = QPixmap();
- cboRenderers->addItem(QIcon(pix), m.visibleName(), name);
+ cboRenderers->addItem( QIcon( pix ), m.visibleName(), name );
}
- cboRenderers->setCurrentIndex(-1); // set no current renderer
+ cboRenderers->setCurrentIndex( -1 ); // set no current renderer
// if the layer doesn't use renderer V2, let's start using it!
- if (!mLayer->isUsingRendererV2())
+ if ( !mLayer->isUsingRendererV2() )
{
- mLayer->setRendererV2( QgsFeatureRendererV2::defaultRenderer(mLayer->geometryType()) );
- mLayer->setUsingRendererV2(true);
+ mLayer->setRendererV2( QgsFeatureRendererV2::defaultRenderer( mLayer->geometryType() ) );
+ mLayer->setUsingRendererV2( true );
}
// setup slot rendererChanged()
- connect(cboRenderers, SIGNAL(currentIndexChanged(int)), this, SLOT(rendererChanged()));
+ connect( cboRenderers, SIGNAL( currentIndexChanged( int ) ), this, SLOT( rendererChanged() ) );
// set current renderer from layer
QString rendererName = mLayer->rendererV2()->type();
- for (int i = 0; i < cboRenderers->count(); i++)
+ for ( int i = 0; i < cboRenderers->count(); i++ )
{
- if (cboRenderers->itemData(i).toString() == rendererName)
+ if ( cboRenderers->itemData( i ).toString() == rendererName )
{
- cboRenderers->setCurrentIndex(i);
+ cboRenderers->setCurrentIndex( i );
return;
}
}
@@ -87,16 +88,16 @@
void QgsRendererV2PropertiesDialog::rendererChanged()
{
- if (cboRenderers->currentIndex() == -1)
+ if ( cboRenderers->currentIndex() == -1 )
{
- QgsDebugMsg("No current item -- this should never happen!");
+ QgsDebugMsg( "No current item -- this should never happen!" );
return;
}
QString rendererName = cboRenderers->itemData( cboRenderers->currentIndex() ).toString();
// get rid of old active widget (if any)
- if (mActiveWidget)
+ if ( mActiveWidget )
{
stackedWidget->removeWidget( mActiveWidget );
@@ -104,30 +105,30 @@
mActiveWidget = NULL;
}
- QgsRendererV2Metadata m = QgsRendererV2Registry::instance()->rendererMetadata(rendererName);
+ QgsRendererV2Metadata m = QgsRendererV2Registry::instance()->rendererMetadata( rendererName );
QgsRendererV2WidgetFunc fWidget = m.widgetFunction();
- if (fWidget != NULL)
+ if ( fWidget != NULL )
{
// instantiate the widget and set as active
- mActiveWidget = fWidget(mLayer, mStyle, mLayer->rendererV2()->clone());
- stackedWidget->addWidget(mActiveWidget);
- stackedWidget->setCurrentWidget(mActiveWidget);
+ mActiveWidget = fWidget( mLayer, mStyle, mLayer->rendererV2()->clone() );
+ stackedWidget->addWidget( mActiveWidget );
+ stackedWidget->setCurrentWidget( mActiveWidget );
- btnSymbolLevels->setEnabled(true);
+ btnSymbolLevels->setEnabled( true );
}
else
{
// set default "no edit widget available" page
- stackedWidget->setCurrentWidget(pageNoWidget);
+ stackedWidget->setCurrentWidget( pageNoWidget );
- btnSymbolLevels->setEnabled(false);
+ btnSymbolLevels->setEnabled( false );
}
}
void QgsRendererV2PropertiesDialog::apply()
{
- if (mActiveWidget != NULL)
+ if ( mActiveWidget != NULL )
{
mLayer->setRendererV2( mActiveWidget->renderer()->clone() );
}
@@ -149,22 +150,34 @@
}
else
{
- QDialog::keyPressEvent(e);
+ QDialog::keyPressEvent( e );
}
}
void QgsRendererV2PropertiesDialog::showSymbolLevels()
{
- if (!mActiveWidget)
+ if ( !mActiveWidget )
return;
QgsFeatureRendererV2* r = mActiveWidget->renderer();
QgsSymbolV2List symbols = r->symbols();
- QgsSymbolLevelsV2Dialog dlg(symbols, r->usingSymbolLevels(), this);
- if (dlg.exec())
+ QgsSymbolLevelsV2Dialog dlg( symbols, r->usingSymbolLevels(), this );
+ if ( dlg.exec() )
{
r->setUsingSymbolLevels( dlg.usingLevels() );
}
}
+
+void QgsRendererV2PropertiesDialog::useOldSymbology()
+{
+ int res = QMessageBox::question( this, tr( "Symbology" ),
+ tr( "Do you wish to use original symbology implementation for this layer?" ),
+ QMessageBox::Yes | QMessageBox::No );
+
+ if ( res != QMessageBox::Yes )
+ return;
+
+ emit useNewSymbology( false );
+}
Modified: trunk/qgis/src/gui/symbology-ng/qgsrendererv2propertiesdialog.h
===================================================================
--- trunk/qgis/src/gui/symbology-ng/qgsrendererv2propertiesdialog.h 2009-11-19 12:28:31 UTC (rev 12190)
+++ trunk/qgis/src/gui/symbology-ng/qgsrendererv2propertiesdialog.h 2009-11-19 13:13:42 UTC (rev 12191)
@@ -30,6 +30,11 @@
void showSymbolLevels();
+ void useOldSymbology();
+
+ signals:
+ void useNewSymbology( bool );
+
protected:
//! Reimplements dialog keyPress event so we can ignore it
Modified: trunk/qgis/src/ui/qgsrendererv2propsdialogbase.ui
===================================================================
--- trunk/qgis/src/ui/qgsrendererv2propsdialogbase.ui 2009-11-19 12:28:31 UTC (rev 12190)
+++ trunk/qgis/src/ui/qgsrendererv2propsdialogbase.ui 2009-11-19 13:13:42 UTC (rev 12191)
@@ -46,6 +46,13 @@
</property>
</widget>
</item>
+ <item>
+ <widget class="QPushButton" name="btnOldSymbology">
+ <property name="text">
+ <string>Old symbology</string>
+ </property>
+ </widget>
+ </item>
</layout>
</item>
<item>
Modified: trunk/qgis/src/ui/qgsvectorlayerpropertiesbase.ui
===================================================================
--- trunk/qgis/src/ui/qgsvectorlayerpropertiesbase.ui 2009-11-19 12:28:31 UTC (rev 12190)
+++ trunk/qgis/src/ui/qgsvectorlayerpropertiesbase.ui 2009-11-19 13:13:42 UTC (rev 12191)
@@ -157,7 +157,7 @@
</property>
</widget>
</item>
- <item row="1" column="0" colspan="4">
+ <item row="1" column="0" colspan="5">
<widget class="QStackedWidget" name="widgetStackRenderers">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
@@ -178,6 +178,13 @@
<widget class="QWidget" name="page_2"/>
</widget>
</item>
+ <item row="0" column="4">
+ <widget class="QPushButton" name="btnUseNewSymbology">
+ <property name="text">
+ <string>New symbology</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
<widget class="QWidget" name="page_4">
@@ -348,8 +355,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>555</width>
- <height>401</height>
+ <width>407</width>
+ <height>394</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_3">
More information about the QGIS-commit
mailing list