[styledock] Inline panels for renderers

This commit is contained in:
Nathan Woodrow 2016-05-30 19:47:09 +10:00
parent 4c1812a9f6
commit 47916d0269
17 changed files with 955 additions and 752 deletions

View File

@ -249,6 +249,7 @@
%Include symbology-ng/qgsvectorfieldsymbollayerwidget.sip
%Include symbology-ng/qgsvectorgradientcolorrampv2dialog.sip
%Include symbology-ng/qgsvectorrandomcolorrampv2dialog.sip
%Include symbology-ng/qgsrendererwidgetcontainer.sip
%Include effects/qgseffectdrawmodecombobox.sip
%Include effects/qgseffectstackpropertieswidget.sip

View File

@ -31,6 +31,7 @@ SET(QGIS_GUI_SRCS
symbology-ng/qgspointdisplacementrendererwidget.cpp
symbology-ng/qgsrendererv2propertiesdialog.cpp
symbology-ng/qgsrendererv2widget.cpp
symbology-ng/qgsrendererwidgetcontainer.cpp
symbology-ng/qgsrulebasedrendererv2widget.cpp
symbology-ng/qgssinglesymbolrendererv2widget.cpp
symbology-ng/qgssizescalewidget.cpp
@ -474,6 +475,7 @@ SET(QGIS_GUI_MOC_HDRS
symbology-ng/qgspointdisplacementrendererwidget.h
symbology-ng/qgsrendererv2propertiesdialog.h
symbology-ng/qgsrendererv2widget.h
symbology-ng/qgsrendererwidgetcontainer.h
symbology-ng/qgsrulebasedrendererv2widget.h
symbology-ng/qgssinglesymbolrendererv2widget.h
symbology-ng/qgssizescalewidget.h

View File

@ -14,6 +14,7 @@
***************************************************************************/
#include "qgscategorizedsymbolrendererv2widget.h"
#include "qgsrendererwidgetcontainer.h"
#include "qgscategorizedsymbolrendererv2.h"
@ -565,33 +566,16 @@ void QgsCategorizedSymbolRendererV2Widget::changeSelectedSymbols()
void QgsCategorizedSymbolRendererV2Widget::changeCategorizedSymbol()
{
// When there is a slection, change the selected symbols alone
QItemSelectionModel* m = viewCategories->selectionModel();
QModelIndexList i = m->selectedRows();
if ( m && !i.isEmpty() )
{
changeSelectedSymbols();
return;
}
// When there is no selection, change the base mCategorizedSymbol
QgsSymbolV2* newSymbol = mCategorizedSymbol->clone();
QgsSymbolV2SelectorDialog* dlg = new QgsSymbolV2SelectorDialog( newSymbol, mStyle, mLayer, nullptr, true );
dlg->setMapCanvas( mMapCanvas );
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
dlg.setMapCanvas( mMapCanvas );
if ( !dlg.exec() || !newSymbol )
{
delete newSymbol;
return;
}
delete mCategorizedSymbol;
mCategorizedSymbol = newSymbol;
updateCategorizedSymbolIcon();
mRenderer->updateSymbols( mCategorizedSymbol );
emit widgetChanged();
QgsRendererWidgetContainer* container = new QgsRendererWidgetContainer( dlg, "Select Symbol", nullptr );
connect( dlg, SIGNAL( symbolModified() ), this, SLOT( updateSymbolsFromWidget() ) );
connect( container, SIGNAL( accepted() ), this, SLOT( cleanUpSymbolSelector() ) );
int page = mStackedWidget->addWidget( container );
mStackedWidget->setCurrentIndex( page );
emit panelOpened( true );
}
void QgsCategorizedSymbolRendererV2Widget::updateCategorizedSymbolIcon()
@ -631,16 +615,15 @@ void QgsCategorizedSymbolRendererV2Widget::changeCategorySymbol()
symbol = QgsSymbolV2::defaultSymbol( mLayer->geometryType() );
}
QgsSymbolV2SelectorDialog dlg( symbol, mStyle, mLayer, this );
dlg.setMapCanvas( mMapCanvas );
if ( !dlg.exec() )
{
delete symbol;
return;
}
QgsSymbolV2SelectorDialog* dlg = new QgsSymbolV2SelectorDialog( symbol, mStyle, mLayer, nullptr, true );
dlg->setMapCanvas( mMapCanvas );
mRenderer->updateCategorySymbol( catIdx, symbol );
emit widgetChanged();
QgsRendererWidgetContainer* container = new QgsRendererWidgetContainer( dlg, "Select Symbol", nullptr );
connect( dlg, SIGNAL( symbolModified() ), this, SLOT( updateSymbolsFromWidget() ) );
connect( container, SIGNAL( accepted() ), this, SLOT( cleanUpSymbolSelector() ) );
int page = mStackedWidget->addWidget( container );
mStackedWidget->setCurrentIndex( page );
emit panelOpened( true );
}
static void _createCategories( QgsCategoryList& cats, QList<QVariant>& values, QgsSymbolV2* symbol )
@ -1013,6 +996,56 @@ void QgsCategorizedSymbolRendererV2Widget::matchToSymbolsFromXml()
}
}
void QgsCategorizedSymbolRendererV2Widget::cleanUpSymbolSelector()
{
QgsRendererWidgetContainer* container = qobject_cast<QgsRendererWidgetContainer*>( mStackedWidget->currentWidget() );
if ( container )
{
mStackedWidget->removeWidget( container );
QgsSymbolV2SelectorDialog* dlg = qobject_cast<QgsSymbolV2SelectorDialog*>( container->widget() );
delete dlg->symbol();
container->deleteLater();
mStackedWidget->setCurrentIndex( 0 );
emit panelOpened( false );
}
}
void QgsCategorizedSymbolRendererV2Widget::updateSymbolsFromWidget()
{
QgsRendererWidgetContainer* container = qobject_cast<QgsRendererWidgetContainer*>( mStackedWidget->currentWidget() );
QgsSymbolV2SelectorDialog* dlg = qobject_cast<QgsSymbolV2SelectorDialog*>( container->widget() );
delete mCategorizedSymbol;
mCategorizedSymbol = dlg->symbol()->clone();
updateCategorizedSymbolIcon();
// When there is a slection, change the selected symbols alone
QItemSelectionModel* m = viewCategories->selectionModel();
QModelIndexList i = m->selectedRows();
if ( m && !i.isEmpty() )
{
QList<int> selectedCats = selectedCategories();
if ( !selectedCats.isEmpty() )
{
Q_FOREACH ( int idx, selectedCats )
{
QgsRendererCategoryV2 category = mRenderer->categories().value( idx );
QgsSymbolV2* newCatSymbol = mCategorizedSymbol->clone();
newCatSymbol->setColor( mRenderer->categories()[idx].symbol()->color() );
mRenderer->updateCategorySymbol( idx, newCatSymbol );
}
emit widgetChanged();
}
return;
}
mRenderer->updateSymbols( mCategorizedSymbol );
emit widgetChanged();
}
void QgsCategorizedSymbolRendererV2Widget::keyPressEvent( QKeyEvent* event )
{
if ( !event )

View File

@ -129,6 +129,11 @@ class GUI_EXPORT QgsCategorizedSymbolRendererV2Widget : public QgsRendererV2Widg
*/
void matchToSymbolsFromXml();
private slots:
void cleanUpSymbolSelector();
void updateSymbolsFromWidget();
protected:
void updateUiFromRenderer();

View File

@ -13,6 +13,7 @@
* *
***************************************************************************/
#include "qgsgraduatedsymbolrendererv2widget.h"
#include "qgsrendererwidgetcontainer.h"
#include "qgssymbolv2.h"
#include "qgssymbollayerv2utils.h"
@ -686,6 +687,58 @@ void QgsGraduatedSymbolRendererV2Widget::refreshRanges( bool reset )
emit widgetChanged();
}
void QgsGraduatedSymbolRendererV2Widget::cleanUpSymbolSelector()
{
QgsRendererWidgetContainer* container = qobject_cast<QgsRendererWidgetContainer*>( mStackedWidget->currentWidget() );
if ( container )
{
mStackedWidget->removeWidget( container );
QgsSymbolV2SelectorDialog* dlg = qobject_cast<QgsSymbolV2SelectorDialog*>( container->widget() );
delete dlg->symbol();
container->deleteLater();
mStackedWidget->setCurrentIndex( 0 );
emit panelOpened( false );
}
}
void QgsGraduatedSymbolRendererV2Widget::updateSymbolsFromWidget()
{
QgsRendererWidgetContainer* container = qobject_cast<QgsRendererWidgetContainer*>( mStackedWidget->currentWidget() );
QgsSymbolV2SelectorDialog* dlg = qobject_cast<QgsSymbolV2SelectorDialog*>( container->widget() );
delete mGraduatedSymbol;
mGraduatedSymbol = dlg->symbol()->clone();
mSizeUnitWidget->blockSignals( true );
mSizeUnitWidget->setUnit( mGraduatedSymbol->outputUnit() );
mSizeUnitWidget->setMapUnitScale( mGraduatedSymbol->mapUnitScale() );
mSizeUnitWidget->blockSignals( false );
QItemSelectionModel* m = viewGraduated->selectionModel();
QModelIndexList selectedIndexes = m->selectedRows( 1 );
if ( m && !selectedIndexes.isEmpty() )
{
Q_FOREACH ( const QModelIndex& idx, selectedIndexes )
{
if ( idx.isValid() )
{
int rangeIdx = idx.row();
QgsSymbolV2* newRangeSymbol = mGraduatedSymbol->clone();
newRangeSymbol->setColor( mRenderer->ranges()[rangeIdx].symbol()->color() );
mRenderer->updateRangeSymbol( rangeIdx, newRangeSymbol );
}
}
}
else
{
updateGraduatedSymbolIcon();
mRenderer->updateSymbols( mGraduatedSymbol );
}
refreshSymbolView();
emit widgetChanged();
}
void QgsGraduatedSymbolRendererV2Widget::classifyGraduated()
{
QString attrName = mExpressionWidget->currentField();
@ -779,37 +832,16 @@ void QgsGraduatedSymbolRendererV2Widget::reapplySizes()
void QgsGraduatedSymbolRendererV2Widget::changeGraduatedSymbol()
{
// Change the selected symbols alone if anything is selected
QItemSelectionModel* m = viewGraduated->selectionModel();
QModelIndexList i = m->selectedRows();
if ( m && !i.isEmpty() )
{
changeSelectedSymbols();
return;
}
// Otherwise change the base mGraduatedSymbol
QgsSymbolV2* newSymbol = mGraduatedSymbol->clone();
QgsSymbolV2SelectorDialog* dlg = new QgsSymbolV2SelectorDialog( newSymbol, mStyle, mLayer, nullptr, true );
dlg->setMapCanvas( mMapCanvas );
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
dlg.setMapCanvas( mMapCanvas );
if ( !dlg.exec() )
{
delete newSymbol;
return;
}
delete mGraduatedSymbol;
mGraduatedSymbol = newSymbol;
mSizeUnitWidget->blockSignals( true );
mSizeUnitWidget->setUnit( mGraduatedSymbol->outputUnit() );
mSizeUnitWidget->setMapUnitScale( mGraduatedSymbol->mapUnitScale() );
mSizeUnitWidget->blockSignals( false );
updateGraduatedSymbolIcon();
mRenderer->updateSymbols( mGraduatedSymbol );
refreshSymbolView();
QgsRendererWidgetContainer* container = new QgsRendererWidgetContainer( dlg, "Select Symbol", nullptr );
connect( dlg, SIGNAL( symbolModified() ), this, SLOT( updateSymbolsFromWidget() ) );
connect( container, SIGNAL( accepted() ), this, SLOT( cleanUpSymbolSelector() ) );
int page = mStackedWidget->addWidget( container );
mStackedWidget->setCurrentIndex( page );
emit panelOpened( true );
}
void QgsGraduatedSymbolRendererV2Widget::updateGraduatedSymbolIcon()
@ -877,48 +909,20 @@ void QgsGraduatedSymbolRendererV2Widget::rangesClicked( const QModelIndex & idx
void QgsGraduatedSymbolRendererV2Widget::changeSelectedSymbols()
{
QItemSelectionModel* m = viewGraduated->selectionModel();
QModelIndexList selectedIndexes = m->selectedRows( 1 );
if ( m && !selectedIndexes.isEmpty() )
{
QgsSymbolV2* newSymbol = mGraduatedSymbol->clone();
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
dlg.setMapCanvas( mMapCanvas );
if ( !dlg.exec() )
{
delete newSymbol;
return;
}
Q_FOREACH ( const QModelIndex& idx, selectedIndexes )
{
if ( idx.isValid() )
{
int rangeIdx = idx.row();
QgsSymbolV2* newRangeSymbol = newSymbol->clone();
newRangeSymbol->setColor( mRenderer->ranges()[rangeIdx].symbol()->color() );
mRenderer->updateRangeSymbol( rangeIdx, newRangeSymbol );
}
}
}
refreshSymbolView();
}
void QgsGraduatedSymbolRendererV2Widget::changeRangeSymbol( int rangeIdx )
{
QgsSymbolV2* newSymbol = mRenderer->ranges()[rangeIdx].symbol()->clone();
QgsSymbolV2SelectorDialog* dlg = new QgsSymbolV2SelectorDialog( newSymbol, mStyle, mLayer, nullptr, true );
dlg->setMapCanvas( mMapCanvas );
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
dlg.setMapCanvas( mMapCanvas );
if ( !dlg.exec() )
{
delete newSymbol;
return;
}
mRenderer->updateRangeSymbol( rangeIdx, newSymbol );
mHistogramWidget->refresh();
emit widgetChanged();
QgsRendererWidgetContainer* container = new QgsRendererWidgetContainer( dlg, "Select Symbol", nullptr );
connect( dlg, SIGNAL( symbolModified() ), this, SLOT( updateSymbolsFromWidget() ) );
connect( container, SIGNAL( accepted() ), this, SLOT( cleanUpSymbolSelector() ) );
int page = mStackedWidget->addWidget( container );
mStackedWidget->setCurrentIndex( page );
emit panelOpened( true );
}
void QgsGraduatedSymbolRendererV2Widget::changeRange( int rangeIdx )

View File

@ -118,6 +118,11 @@ class GUI_EXPORT QgsGraduatedSymbolRendererV2Widget : public QgsRendererV2Widget
void on_methodComboBox_currentIndexChanged( int );
void refreshRanges( bool reset = false );
private slots:
void cleanUpSymbolSelector();
void updateSymbolsFromWidget();
protected:
void updateUiFromRenderer( bool updateCount = true );
void connectUpdateHandlers();

View File

@ -270,6 +270,7 @@ void QgsRendererV2PropertiesDialog::rendererChanged()
connect( mActiveWidget, SIGNAL( layerVariablesChanged() ), this, SIGNAL( layerVariablesChanged() ) );
}
connect( mActiveWidget, SIGNAL( widgetChanged() ), this, SIGNAL( widgetChanged() ) );
connect( mActiveWidget, SIGNAL( panelOpened(bool)), this, SLOT( updateUIState(bool) ));
}
else
{
@ -331,6 +332,12 @@ void QgsRendererV2PropertiesDialog::changeOrderBy( const QgsFeatureRequest::Orde
checkboxEnableOrderBy->setChecked( orderByEnabled );
}
void QgsRendererV2PropertiesDialog::updateUIState(bool hidden)
{
groupBox->setHidden( hidden );
cboRenderers->setHidden( hidden );
}
void QgsRendererV2PropertiesDialog::keyPressEvent( QKeyEvent * e )
{

View File

@ -32,6 +32,7 @@ class QgsPaintEffect;
class QgsRendererV2Widget;
class QgsMapCanvas;
class GUI_EXPORT QgsRendererV2PropertiesDialog : public QDialog, private Ui::QgsRendererV2PropsDialogBase
{
Q_OBJECT
@ -76,6 +77,8 @@ class GUI_EXPORT QgsRendererV2PropertiesDialog : public QDialog, private Ui::Qgs
void changeOrderBy( const QgsFeatureRequest::OrderBy& orderBy, bool orderByEnabled );
void updateUIState( bool hidden );
protected:
/**
* Connect the given slot to the value changed event for the set of widgets

View File

@ -26,6 +26,7 @@ class QgsFeatureRendererV2;
class QgsSymbolV2SelectorDialog;
class QgsMapCanvas;
/**
Base class for renderer settings widgets
@ -88,6 +89,8 @@ class GUI_EXPORT QgsRendererV2Widget : public QWidget
*/
void widgetChanged();
void panelOpened( bool opened );
protected:
QgsVectorLayer* mLayer;
QgsStyleV2* mStyle;

View File

@ -0,0 +1,29 @@
#include <QDialogButtonBox>
#include <QPushButton>
#include "qgsrendererwidgetcontainer.h"
QgsRendererWidgetContainer::QgsRendererWidgetContainer( QWidget *widget, const QString& title, QWidget *parent )
: QWidget( parent )
{
setupUi( this );
mWidgetLayout->addWidget( widget );
mWidgetLayout->setContentsMargins( 0, 0, 0, 0 );
mTitleText->setText( title );
QPushButton* button = mButtonBox->button( QDialogButtonBox::Close );
button->setDefault( true );
connect( button, SIGNAL( pressed() ), this, SIGNAL( accepted() ) );
}
QWidget *QgsRendererWidgetContainer::widget()
{
return mWidgetLayout->itemAt( 0 )->widget() ;
}
void QgsRendererWidgetContainer::keyPressEvent( QKeyEvent *event )
{
if ( event->key() == Qt::Key_Escape )
{
emit accepted();
}
}

View File

@ -0,0 +1,46 @@
#ifndef QGSRENDERERWIDGETCONTAINER_H
#define QGSRENDERERWIDGETCONTAINER_H
#include <QWidget>
#include <QKeyEvent>
#include "ui_qgsrenderercontainerbase.h"
/**
* @brief A container widget that can be used to show a renderer widget with a title and close button.
* @note Mainly used for the style dock panels at the moment.
*/
class GUI_EXPORT QgsRendererWidgetContainer : public QWidget, private Ui::QgsRendererWidgetContainerBase
{
Q_OBJECT
public:
/**
* @brief A container widget that can be used to show a renderer widget with a title and close button.
* @param widget The internal widget to be shown to the user.
* @param title The title to show on the widget.
* @param parent The parent of the widget.
*/
QgsRendererWidgetContainer( QWidget* widget, const QString &title, QWidget *parent = 0 );
/**
* @brief Returns the current internal widget.
* @return The internal widget.
*/
QWidget* widget();
signals:
/**
* @brief Emitted when the container is accpeted and closed.
* Listen to this to clean up the callers state.
*/
void accepted();
public slots:
protected:
void keyPressEvent( QKeyEvent* event );
};
#endif // QGSRENDERERWIDGETCONTAINER_H

View File

@ -106,6 +106,8 @@ class GUI_EXPORT QgsSymbolV2SelectorDialog : public QDialog, private Ui::QgsSymb
*/
void setMapCanvas( QgsMapCanvas* canvas );
QgsSymbolV2* symbol() { return mSymbol; }
protected:
//! Reimplements dialog keyPress event so we can ignore it
void keyPressEvent( QKeyEvent * event ) override;

View File

@ -6,6 +6,7 @@ FILE(GLOB PAINTEFFECT_UIS "${CMAKE_CURRENT_SOURCE_DIR}/effects/*.ui")
FILE(GLOB COMPOSER_UIS "${CMAKE_CURRENT_SOURCE_DIR}/composer/*.ui")
FILE(GLOB AUTH_UIS "${CMAKE_CURRENT_SOURCE_DIR}/auth/*.ui")
FILE(GLOB RASTER_UIS "${CMAKE_CURRENT_SOURCE_DIR}/raster/*.ui")
FILE(GLOB RASTER_UIS "${CMAKE_CURRENT_SOURCE_DIR}/styledock/*.ui")
QT4_WRAP_UI(QGIS_UIS_H ${QGIS_UIS} ${SYMBOLLAYER_UIS} ${EDITORWIDGET_UIS} ${PAINTEFFECT_UIS} ${COMPOSER_UIS} ${AUTH_UIS} ${RASTER_UIS})

View File

@ -6,206 +6,218 @@
<rect>
<x>0</x>
<y>0</y>
<width>422</width>
<height>417</height>
<width>372</width>
<height>446</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="margin">
<number>3</number>
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Column</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_9">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Symbol</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_10">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Color ramp</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="3">
<widget class="QTreeView" name="viewCategories">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="dragDropMode">
<enum>QAbstractItemView::InternalMove</enum>
</property>
<property name="defaultDropAction">
<enum>Qt::IgnoreAction</enum>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="rootIsDecorated">
<bool>false</bool>
</property>
<property name="itemsExpandable">
<bool>false</bool>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<property name="allColumnsShowFocus">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="btnAddCategories">
<property name="text">
<string>Classify</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnAddCategory">
<property name="text">
<string>Add</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyAdd.png</normaloff>:/images/themes/default/symbologyAdd.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnDeleteCategories">
<property name="text">
<string>Delete</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyRemove.png</normaloff>:/images/themes/default/symbologyRemove.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnDeleteAllCategories">
<property name="text">
<string>Delete all</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyRemove.png</normaloff>:/images/themes/default/symbologyRemove.png</iconset>
</property>
</widget>
</item>
<item>
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btnAdvanced">
<property name="text">
<string>Advanced</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="1" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QgsColorRampComboBox" name="cboCategorizedColorRamp">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mButtonEditRamp">
<property name="text">
<string>Edit</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbxInvertedColorRamp">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Invert</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="1" colspan="2">
<widget class="QgsFieldExpressionWidget" name="mExpressionWidget" native="true">
<property name="maximumSize">
<size>
<width>500</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QPushButton" name="btnChangeCategorizedSymbol">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Change...</string>
<item>
<widget class="QStackedWidget" name="mStackedWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="page">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Column</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QgsFieldExpressionWidget" name="mExpressionWidget" native="true">
<property name="maximumSize">
<size>
<width>500</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_9">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Symbol</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="btnChangeCategorizedSymbol">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Change...</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_10">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Color ramp</string>
</property>
</widget>
</item>
<item row="2" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QgsColorRampComboBox" name="cboCategorizedColorRamp">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mButtonEditRamp">
<property name="text">
<string>Edit</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbxInvertedColorRamp">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Invert</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0" colspan="2">
<widget class="QTreeView" name="viewCategories">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="dragDropMode">
<enum>QAbstractItemView::InternalMove</enum>
</property>
<property name="defaultDropAction">
<enum>Qt::IgnoreAction</enum>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="rootIsDecorated">
<bool>false</bool>
</property>
<property name="itemsExpandable">
<bool>false</bool>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<property name="allColumnsShowFocus">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="btnAddCategories">
<property name="text">
<string>Classify</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnAddCategory">
<property name="text">
<string>Add</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyAdd.png</normaloff>:/images/themes/default/symbologyAdd.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnDeleteCategories">
<property name="text">
<string>Delete</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyRemove.png</normaloff>:/images/themes/default/symbologyRemove.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnDeleteAllCategories">
<property name="text">
<string>Delete all</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyRemove.png</normaloff>:/images/themes/default/symbologyRemove.png</iconset>
</property>
</widget>
</item>
<item>
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btnAdvanced">
<property name="text">
<string>Advanced</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="page_2"/>
</widget>
</item>
</layout>

View File

@ -6,432 +6,510 @@
<rect>
<x>0</x>
<y>0</y>
<width>430</width>
<height>538</height>
<width>388</width>
<height>503</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0">
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>0</number>
</property>
<item row="1" column="0">
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Classes</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QStackedWidget" name="mStackedWidget">
<widget class="QWidget" name="page_5">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Column</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QgsFieldExpressionWidget" name="mExpressionWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>500</width>
<height>16777215</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Symbol</string>
</property>
<property name="buddy">
<cstring>btnChangeGraduatedSymbol</cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="btnChangeGraduatedSymbol">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Change...</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Legend Format</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>txtLegendFormat</cstring>
</property>
</widget>
</item>
<item row="2" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_8">
<property name="text">
<string>Mode</string>
<widget class="QLineEdit" name="txtLegendFormat">
<property name="toolTip">
<string>Template for the legend text associated with each classification.
Use &quot;%1&quot; for the lower bound of the classification, and &quot;%2&quot; for the upper bound.</string>
</property>
<property name="buddy">
<cstring>cboGraduatedMode</cstring>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="cboGraduatedMode">
<item>
<property name="text">
<string>Equal Interval</string>
</property>
</item>
<item>
<property name="text">
<string>Quantile (Equal Count)</string>
</property>
</item>
<item>
<property name="text">
<string>Natural Breaks (Jenks)</string>
</property>
</item>
<item>
<property name="text">
<string>Standard Deviation</string>
</property>
</item>
<item>
<property name="text">
<string>Pretty Breaks</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>Classes</string>
</property>
<property name="buddy">
<cstring>spinGraduatedClasses</cstring>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinGraduatedClasses">
<widget class="QSpinBox" name="spinPrecision">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Precision of upper and lower values in label text.
Positive is number of decimal places
Negative rounds to powers of 10</string>
</property>
<property name="prefix">
<string>Precison </string>
</property>
<property name="minimum">
<number>1</number>
<number>0</number>
</property>
<property name="maximum">
<number>999</number>
<number>10</number>
</property>
<property name="value">
<number>5</number>
<number>4</number>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnGraduatedClassify">
<widget class="QCheckBox" name="cbxTrimTrailingZeroes">
<property name="toolTip">
<string>Check to remove trailing zeroes after the decimal point from the upper and lower values in the legend.</string>
</property>
<property name="text">
<string>Classify</string>
<string>Trim</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QTreeView" name="viewGraduated">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="showDropIndicator" stdset="0">
<bool>true</bool>
</property>
<property name="dragDropMode">
<enum>QAbstractItemView::InternalMove</enum>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="rootIsDecorated">
<bool>false</bool>
</property>
<property name="itemsExpandable">
<bool>false</bool>
</property>
<property name="sortingEnabled">
<bool>true</bool>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Method</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QToolButton" name="btnGraduatedAdd">
<property name="text">
<string>Add class</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyAdd.png</normaloff>:/images/themes/default/symbologyAdd.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnGraduatedDelete">
<property name="text">
<string>Delete</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyRemove.png</normaloff>:/images/themes/default/symbologyRemove.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnDeleteAllClasses">
<property name="text">
<string>Delete all</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyRemove.png</normaloff>:/images/themes/default/symbologyRemove.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbxLinkBoundaries">
<property name="text">
<string>Link class boundaries</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Histogram</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="0">
<item>
<widget class="QgsGraduatedHistogramWidget" name="mHistogramWidget" native="true"/>
</item>
</layout>
</widget>
</widget>
</item>
<item row="2" column="0" colspan="2">
<layout class="QHBoxLayout" name="_2">
<item>
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btnAdvanced">
<property name="text">
<string>Advanced</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0" colspan="2">
<layout class="QGridLayout" columnstretch="0,0,0,0">
<property name="rightMargin">
<number>6</number>
</property>
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Legend Format</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>txtLegendFormat</cstring>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QPushButton" name="btnChangeGraduatedSymbol">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Change...</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Column</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QLineEdit" name="txtLegendFormat">
<item row="3" column="1">
<widget class="QComboBox" name="methodComboBox">
<property name="toolTip">
<string>Template for the legend text associated with each classification.
Use &quot;%1&quot; for the lower bound of the classification, and &quot;%2&quot; for the upper bound.</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Choose between color and size graduation. &lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;If you want to combine both, use a data-defined size for the symbol and graduate by color.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinPrecision">
<item row="4" column="0" colspan="2">
<widget class="QStackedWidget" name="mMethodStackedWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Precision of upper and lower values in label text.
Positive is number of decimal places
Negative rounds to powers of 10</string>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>50</height>
</size>
</property>
<property name="prefix">
<string>Precison </string>
</property>
<property name="minimum">
<property name="currentIndex">
<number>0</number>
</property>
<property name="maximum">
<number>10</number>
</property>
<property name="value">
<number>4</number>
</property>
<widget class="QWidget" name="page">
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,1,0,0,0">
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_7">
<property name="text">
<string>Color ramp</string>
</property>
<property name="buddy">
<cstring>cboGraduatedColorRamp</cstring>
</property>
</widget>
</item>
<item>
<widget class="QgsColorRampComboBox" name="cboGraduatedColorRamp"/>
</item>
<item>
<widget class="QPushButton" name="mButtonEditRamp">
<property name="text">
<string>Edit</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbxInvertedColorRamp">
<property name="text">
<string>Invert</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="page_2">
<layout class="QGridLayout" name="gridLayout_2">
<property name="margin">
<number>0</number>
</property>
<item row="0" column="2">
<widget class="QgsDoubleSpinBox" name="minSizeSpinBox">
<property name="decimals">
<number>6</number>
</property>
<property name="maximum">
<double>999999999.000000000000000</double>
</property>
<property name="singleStep">
<double>0.200000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
<property name="showClearButton" stdset="0">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Size from </string>
</property>
<property name="buddy">
<cstring>cboGraduatedColorRamp</cstring>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QgsDoubleSpinBox" name="maxSizeSpinBox">
<property name="decimals">
<number>6</number>
</property>
<property name="maximum">
<double>999999999.000000000000000</double>
</property>
<property name="singleStep">
<double>0.200000000000000</double>
</property>
<property name="value">
<double>10.000000000000000</double>
</property>
<property name="showClearButton" stdset="0">
<bool>false</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>to</string>
</property>
</widget>
</item>
<item row="0" column="5">
<widget class="QgsUnitSelectionWidget" name="mSizeUnitWidget" native="true">
<property name="minimumSize">
<size>
<width>14</width>
<height>0</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbxTrimTrailingZeroes">
<property name="toolTip">
<string>Check to remove trailing zeroes after the decimal point from the upper and lower values in the legend.</string>
</property>
<property name="text">
<string>Trim</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="1" colspan="2">
<widget class="QgsFieldExpressionWidget" name="mExpressionWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>500</width>
<height>16777215</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Symbol</string>
</property>
<property name="buddy">
<cstring>btnChangeGraduatedSymbol</cstring>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Method</string>
</property>
</widget>
</item>
<item row="3" column="1" colspan="2">
<widget class="QComboBox" name="methodComboBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Choose between color and size graduation. &lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;If you want to combine both, use a data-defined size for the symbol and graduate by color.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="3">
<widget class="QStackedWidget" name="mMethodStackedWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>50</height>
</size>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="page">
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,1,0,0,0">
<property name="margin">
<item row="5" column="0" colspan="2">
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Classes</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="label_8">
<property name="text">
<string>Mode</string>
</property>
<property name="buddy">
<cstring>cboGraduatedMode</cstring>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="cboGraduatedMode">
<item>
<property name="text">
<string>Equal Interval</string>
</property>
</item>
<item>
<property name="text">
<string>Quantile (Equal Count)</string>
</property>
</item>
<item>
<property name="text">
<string>Natural Breaks (Jenks)</string>
</property>
</item>
<item>
<property name="text">
<string>Standard Deviation</string>
</property>
</item>
<item>
<property name="text">
<string>Pretty Breaks</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>Classes</string>
</property>
<property name="buddy">
<cstring>spinGraduatedClasses</cstring>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinGraduatedClasses">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>999</number>
</property>
<property name="value">
<number>5</number>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnGraduatedClassify">
<property name="text">
<string>Classify</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QTreeView" name="viewGraduated">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="showDropIndicator" stdset="0">
<bool>true</bool>
</property>
<property name="dragDropMode">
<enum>QAbstractItemView::InternalMove</enum>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="rootIsDecorated">
<bool>false</bool>
</property>
<property name="itemsExpandable">
<bool>false</bool>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QToolButton" name="btnGraduatedAdd">
<property name="text">
<string>Add class</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyAdd.png</normaloff>:/images/themes/default/symbologyAdd.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnGraduatedDelete">
<property name="text">
<string>Delete</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyRemove.png</normaloff>:/images/themes/default/symbologyRemove.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnDeleteAllClasses">
<property name="text">
<string>Delete all</string>
</property>
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/symbologyRemove.png</normaloff>:/images/themes/default/symbologyRemove.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbxLinkBoundaries">
<property name="text">
<string>Link class boundaries</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Histogram</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="0">
<item>
<widget class="QgsGraduatedHistogramWidget" name="mHistogramWidget" native="true"/>
</item>
</layout>
</widget>
</widget>
</item>
<item row="6" column="0" colspan="2">
<layout class="QHBoxLayout" name="_2">
<item>
<widget class="QLabel" name="label_7">
<property name="text">
<string>Color ramp</string>
</property>
<property name="buddy">
<cstring>cboGraduatedColorRamp</cstring>
</property>
</widget>
</item>
<item>
<widget class="QgsColorRampComboBox" name="cboGraduatedColorRamp"/>
</item>
<item>
<widget class="QPushButton" name="mButtonEditRamp">
<property name="text">
<string>Edit</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbxInvertedColorRamp">
<property name="text">
<string>Invert</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@ -443,92 +521,19 @@ Negative rounds to powers of 10</string>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="page_2">
<layout class="QGridLayout" name="gridLayout_2">
<property name="margin">
<number>0</number>
</property>
<item row="0" column="2">
<widget class="QgsDoubleSpinBox" name="minSizeSpinBox">
<property name="decimals">
<number>6</number>
</property>
<property name="maximum">
<double>999999999.000000000000000</double>
</property>
<property name="singleStep">
<double>0.200000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
<property name="showClearButton" stdset="0">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_10">
<item>
<widget class="QPushButton" name="btnAdvanced">
<property name="text">
<string>Size from </string>
</property>
<property name="buddy">
<cstring>cboGraduatedColorRamp</cstring>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QgsDoubleSpinBox" name="maxSizeSpinBox">
<property name="decimals">
<number>6</number>
</property>
<property name="maximum">
<double>999999999.000000000000000</double>
</property>
<property name="singleStep">
<double>0.200000000000000</double>
</property>
<property name="value">
<double>10.000000000000000</double>
</property>
<property name="showClearButton" stdset="0">
<bool>false</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>to</string>
</property>
</widget>
</item>
<item row="0" column="5">
<widget class="QgsUnitSelectionWidget" name="mSizeUnitWidget" native="true">
<property name="minimumSize">
<size>
<width>14</width>
<height>0</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
<string>Advanced</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="page_6"/>
</widget>
</item>
</layout>
</widget>

View File

@ -37,10 +37,13 @@
<x>0</x>
<y>0</y>
<width>364</width>
<height>552</height>
<height>556</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<number>0</number>
</property>
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
@ -241,8 +244,6 @@
</layout>
<zorder>frame</zorder>
<zorder>line</zorder>
<zorder>frame</zorder>
<zorder>line</zorder>
</widget>
</widget>
</item>

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>QgsRendererWidgetContainerBase</class>
<widget class="QWidget" name="QgsRendererWidgetContainerBase">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>375</width>
<height>628</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="mTitleText">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="mWidgetLayout"/>
</item>
<item>
<widget class="QDialogButtonBox" name="mButtonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Close</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>