mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-13 00:03:09 -04:00
[style dock] Add better API for panels
This commit is contained in:
parent
16eb1e14d0
commit
e926e2d0aa
@ -9,7 +9,7 @@
|
||||
* \see QgsEffectStackCompactWidget
|
||||
*/
|
||||
|
||||
class QgsEffectStackPropertiesWidget : QWidget
|
||||
class QgsEffectStackPropertiesWidget : QgsPanelWidget
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <qgseffectstackpropertieswidget.h>
|
||||
@ -66,18 +66,6 @@ class QgsEffectStackPropertiesWidget : QWidget
|
||||
*/
|
||||
void changeEffect( QgsPaintEffect* newEffect );
|
||||
|
||||
signals:
|
||||
/**
|
||||
* Emitted when something in the widget changes.
|
||||
*/
|
||||
void widgetChanged();
|
||||
|
||||
/** Emitted when a panel is shown in the widget.
|
||||
* @param widget widget panel which was shown
|
||||
* @note added in QGIS 2.16
|
||||
*/
|
||||
void showPanel( QgsRendererWidgetContainer* widget );
|
||||
|
||||
protected:
|
||||
|
||||
/** Refreshes the widget to reflect the current state of the stack.
|
||||
@ -159,7 +147,7 @@ class QgsEffectStackPropertiesDialog : QgsDialog
|
||||
* \see QgsEffectStackPropertiesDialog
|
||||
*/
|
||||
|
||||
class QgsEffectStackCompactWidget : QWidget
|
||||
class QgsEffectStackCompactWidget : QgsPanelWidget
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <qgseffectstackpropertieswidget.h>
|
||||
@ -206,11 +194,4 @@ class QgsEffectStackCompactWidget : QWidget
|
||||
/** Emitted when the paint effect properties change
|
||||
*/
|
||||
void changed();
|
||||
|
||||
/** Emitted when a panel is shown in the widget.
|
||||
* @param widget widget panel which was shown
|
||||
* @note added in QGIS 2.16
|
||||
*/
|
||||
void showPanel( QgsRendererWidgetContainer* widget );
|
||||
|
||||
};
|
||||
|
@ -135,6 +135,7 @@
|
||||
%Include qgsoptionsdialogbase.sip
|
||||
%Include qgsorderbydialog.sip
|
||||
%Include qgsowssourceselect.sip
|
||||
%Include qgspanelwidget.sip
|
||||
%Include qgspixmaplabel.sip
|
||||
%Include qgspluginmanagerinterface.sip
|
||||
%Include qgsprevieweffect.sip
|
||||
@ -252,7 +253,6 @@
|
||||
%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
|
||||
|
@ -293,10 +293,10 @@ class QgisInterface : QObject
|
||||
virtual void unregisterMapLayerPropertiesFactory( QgsMapLayerPropertiesFactory* factory ) = 0;
|
||||
|
||||
/** Register a new tab in the layer properties dialog */
|
||||
virtual void registerMapStylePanelFactory( QgsMapStylePanelFactory* factory ) = 0;
|
||||
virtual void registerMapStylePanelFactory( QgsMapStylingPanelFactory* factory ) = 0;
|
||||
|
||||
/** Unregister a previously registered tab in the layer properties dialog */
|
||||
virtual void unregisterMapStylePanelFactory( QgsMapStylePanelFactory* factory ) = 0;
|
||||
virtual void unregisterMapStylePanelFactory( QgsMapStylingPanelFactory* factory ) = 0;
|
||||
|
||||
// @todo is this deprecated in favour of QgsContextHelp?
|
||||
/** Open a url in the users browser. By default the QGIS doc directory is used
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @brief The QgsMapLayerStyleManagerWidget class which is used to visually manage
|
||||
* the layer styles.
|
||||
*/
|
||||
class QgsMapLayerStyleManagerWidget : QgsMapStylePanel
|
||||
class QgsMapLayerStyleManagerWidget : QgsMapStylingPanel
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include "qgsmaplayerstylemanagerwidget.h"
|
||||
|
@ -2,7 +2,7 @@
|
||||
* \class A panel widget that can be shown in the map style dock
|
||||
* \note added in QGIS 2.16
|
||||
*/
|
||||
class QgsMapStylePanel : public QWidget
|
||||
class QgsMapStylingPanel : public QgsPanelWidget
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <qgsmapstylepanel.h>
|
||||
@ -16,7 +16,7 @@ public:
|
||||
* @note The widget is created each time the panel is selected in the dock.
|
||||
* Keep the loading light as possible for speed in the UI.
|
||||
*/
|
||||
QgsMapStylePanel(QgsMapLayer* layer, QgsMapCanvas *canvas, QWidget *parent = 0);
|
||||
QgsMapStylingPanel(QgsMapLayer* layer, QgsMapCanvas *canvas, QWidget *parent = 0);
|
||||
|
||||
signals:
|
||||
/**
|
||||
@ -41,7 +41,7 @@ public slots:
|
||||
* \class QgsMapStylePanelFactory
|
||||
* \note added in QGIS 2.16
|
||||
*/
|
||||
class QgsMapStylePanelFactory
|
||||
class QgsMapStylingPanelFactory
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <qgsmapstylepanel.h>
|
||||
@ -50,10 +50,10 @@ class QgsMapStylePanelFactory
|
||||
typedef QFlags<QgsMapLayer::LayerType> LayerTypesFlags;
|
||||
|
||||
/** Constructor */
|
||||
QgsMapStylePanelFactory();
|
||||
QgsMapStylingPanelFactory();
|
||||
|
||||
/** Destructor */
|
||||
virtual ~QgsMapStylePanelFactory();
|
||||
virtual ~QgsMapStylingPanelFactory();
|
||||
|
||||
/**
|
||||
* @brief The icon that will be shown in the UI for the panel.
|
||||
@ -82,5 +82,5 @@ class QgsMapStylePanelFactory
|
||||
* @param parent The parent of the widget.
|
||||
* @return A new QgsMapStylePanel which is shown in the map style dock.
|
||||
*/
|
||||
virtual QgsMapStylePanel* createPanel( QgsMapLayer* layer, QgsMapCanvas *canvas, QWidget* parent /TransferThis/ ) = 0 /Factory/;
|
||||
virtual QgsMapStylingPanel* createPanel( QgsMapLayer* layer, QgsMapCanvas *canvas, QWidget* parent /TransferThis/ ) = 0 /Factory/;
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
class QgsRendererRasterPropertiesWidget : QgsMapStylePanel
|
||||
class QgsRendererRasterPropertiesWidget : QgsMapStylingPanel
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <qgsrendererrasterpropertieswidget.h>
|
||||
|
@ -1,4 +1,4 @@
|
||||
class QgsLayerPropertiesWidget : QWidget
|
||||
class QgsLayerPropertiesWidget : QgsPanelWidget
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <qgslayerpropertieswidget.h>
|
||||
|
@ -24,6 +24,8 @@ class QgsRendererV2PropertiesDialog : QDialog
|
||||
*/
|
||||
void setMapCanvas( QgsMapCanvas* canvas );
|
||||
|
||||
void setDockMode( bool dockMode );
|
||||
|
||||
signals:
|
||||
/**
|
||||
* Emitted when expression context variables on the associated
|
||||
@ -48,18 +50,6 @@ class QgsRendererV2PropertiesDialog : QDialog
|
||||
//! Apply and accept the changes for the dialog.
|
||||
void onOK();
|
||||
|
||||
/** Shows a panel widget inside the renderer widget.
|
||||
* @param container widget panel to show
|
||||
* @note added in QGIS 2.16
|
||||
*/
|
||||
void showPanel( QgsRendererWidgetContainer *container );
|
||||
|
||||
/**
|
||||
* Closes the given panel in the stack of panels.
|
||||
* @param container The container widget to close.
|
||||
*/
|
||||
void closePanel( QgsRendererWidgetContainer *container );
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Connect the given slot to the value changed event for the set of widgets
|
||||
|
@ -1,4 +1,4 @@
|
||||
class QgsRendererV2Widget : QWidget
|
||||
class QgsRendererV2Widget : QgsPanelWidget
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <qgsrendererv2widget.h>
|
||||
@ -39,6 +39,13 @@ class QgsRendererV2Widget : QWidget
|
||||
*/
|
||||
void applyChanges();
|
||||
|
||||
/**
|
||||
* Set the widget in dock mode which tells the widget to emit panel
|
||||
* widgets and not open dialogs
|
||||
* @param dockMode True to enable dock mode.
|
||||
*/
|
||||
virtual void setDockMode( bool dockMode);
|
||||
|
||||
signals:
|
||||
/**
|
||||
* Emitted when expression context variables on the associated
|
||||
@ -47,18 +54,6 @@ class QgsRendererV2Widget : QWidget
|
||||
*/
|
||||
void layerVariablesChanged();
|
||||
|
||||
/**
|
||||
* Emitted when something on the widget has changed.
|
||||
* All widgets will fire this event to notify of an internal change.
|
||||
*/
|
||||
void widgetChanged();
|
||||
|
||||
/** Shows a panel widget inside the renderer widget.
|
||||
* @param widget widget panel to show
|
||||
* @note added in QGIS 2.16
|
||||
*/
|
||||
void showPanel( QgsRendererWidgetContainer* widget );
|
||||
|
||||
protected:
|
||||
/** Subclasses may provide the capability of changing multiple symbols at once by implementing the following two methods
|
||||
and by connecting the slot contextMenuViewCategories(const QPoint&)*/
|
||||
|
@ -1,55 +0,0 @@
|
||||
/**
|
||||
* @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 QgsRendererWidgetContainer : QWidget
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include "qgsrendererwidgetcontainer.h"
|
||||
%End
|
||||
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( QgsRendererWidgetContainer* container );
|
||||
|
||||
/**
|
||||
* Emiited when the internal widget changes state.
|
||||
* @param conatiner The container holding the widget that changed state.
|
||||
*/
|
||||
void widgetChanged( QgsRendererWidgetContainer* conatiner );
|
||||
|
||||
public slots:
|
||||
|
||||
/**
|
||||
* Accept the container. Causes accepted to be emiited.
|
||||
*/
|
||||
void accept();
|
||||
|
||||
/**
|
||||
* Fire the widgetChanged event on the container. Connect your widgets dirty signal to
|
||||
* this slot to fire the and listen to widgetChanged to handle the event.
|
||||
*/
|
||||
void emitWidgetChanged();
|
||||
|
||||
|
||||
protected:
|
||||
void keyPressEvent( QKeyEvent* event );
|
||||
};
|
@ -13,6 +13,8 @@ class QgsSingleSymbolRendererV2Widget : QgsRendererV2Widget
|
||||
|
||||
virtual void setMapCanvas( QgsMapCanvas* canvas );
|
||||
|
||||
virtual void setDockMode( bool dockMode );
|
||||
|
||||
public slots:
|
||||
void changeSingleSymbol();
|
||||
|
||||
|
@ -1,3 +1,101 @@
|
||||
class QgsSymbolV2SelectorWidget : QgsPanelWidget
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <qgssymbolv2selectordialog.h>
|
||||
%End
|
||||
|
||||
public:
|
||||
QgsSymbolV2SelectorWidget( QgsSymbolV2* symbol, QgsStyleV2* style, const QgsVectorLayer* vl, QWidget* parent /TransferThis/ = 0);
|
||||
|
||||
//! return menu for "advanced" button - create it if doesn't exist and show the advanced button
|
||||
QMenu* advancedMenu();
|
||||
|
||||
/** Sets the optional expression context used for the widget. This expression context is used for
|
||||
* evaluating data defined symbol properties and for populating based expression widgets in
|
||||
* the layer widget.
|
||||
* @param context expression context pointer. Ownership is transferred to the dialog.
|
||||
* @note added in QGIS 2.12
|
||||
* @see expressionContext()
|
||||
*/
|
||||
void setExpressionContext( QgsExpressionContext* context /Transfer/ );
|
||||
|
||||
/** Returns the expression context used for the dialog, if set. This expression context is used for
|
||||
* evaluating data defined symbol properties and for populating based expression widgets in
|
||||
* the dialog.
|
||||
* @note added in QGIS 2.12
|
||||
* @see setExpressionContext()
|
||||
*/
|
||||
QgsExpressionContext* expressionContext() const;
|
||||
|
||||
/** Sets the map canvas associated with the dialog. This allows the widget to retrieve the current
|
||||
* map scale and other properties from the canvas.
|
||||
* @param canvas map canvas
|
||||
* @note added in QGIS 2.12
|
||||
*/
|
||||
void setMapCanvas( QgsMapCanvas* canvas );
|
||||
|
||||
/**
|
||||
* @brief Return the symbol that is currently active in the widget. Can be null.
|
||||
* @return The active symbol.
|
||||
*/
|
||||
QgsSymbolV2* symbol();
|
||||
|
||||
/**
|
||||
* Set the widget in dock mode which will emit showPanel when a sub widget requests
|
||||
* to show a widget.
|
||||
* @param dockMode True to enable dock mode.
|
||||
*/
|
||||
void setDockMode( bool dockMode );
|
||||
protected:
|
||||
//! Reimplements dialog keyPress event so we can ignore it
|
||||
void keyPressEvent( QKeyEvent * event );
|
||||
|
||||
void loadSymbol();
|
||||
//! @note not available in python bindings
|
||||
// void loadSymbol( QgsSymbolV2* symbol, SymbolLayerItem* parent );
|
||||
|
||||
void updateUi();
|
||||
|
||||
void updateLockButton();
|
||||
|
||||
//! @note not available in python bindings
|
||||
// SymbolLayerItem* currentLayerItem();
|
||||
QgsSymbolLayerV2* currentLayer();
|
||||
|
||||
void moveLayerByOffset( int offset );
|
||||
|
||||
void setWidget( QWidget* widget );
|
||||
|
||||
signals:
|
||||
void symbolModified();
|
||||
|
||||
public slots:
|
||||
void moveLayerDown();
|
||||
void moveLayerUp();
|
||||
|
||||
void addLayer();
|
||||
void removeLayer();
|
||||
|
||||
void lockLayer();
|
||||
|
||||
void saveSymbol() /Deprecated/;
|
||||
|
||||
//! Duplicates the current symbol layer and places the duplicated layer above the current symbol layer
|
||||
//! @note added in QGIS 2.14
|
||||
void duplicateLayer();
|
||||
|
||||
void layerChanged();
|
||||
|
||||
void updateLayerPreview();
|
||||
void updatePreview();
|
||||
|
||||
//! Slot to update tree when a new symbol from style
|
||||
void symbolChanged();
|
||||
//! alters tree and sets proper widget when Layer Type is changed
|
||||
//! @note: The layer is received from the LayerPropertiesWidget
|
||||
void changeLayer( QgsSymbolLayerV2* layer );
|
||||
};
|
||||
|
||||
class QgsSymbolV2SelectorDialog : QDialog
|
||||
{
|
||||
%TypeHeaderCode
|
||||
|
@ -9063,12 +9063,12 @@ void QgisApp::unregisterMapLayerPropertiesFactory( QgsMapLayerPropertiesFactory*
|
||||
mMapLayerPropertiesFactories.removeAll( factory );
|
||||
}
|
||||
|
||||
void QgisApp::registerMapStylePanelFactory( QgsMapStylePanelFactory *factory )
|
||||
void QgisApp::registerMapStylePanelFactory( QgsMapStylingPanelFactory *factory )
|
||||
{
|
||||
mMapStylePanelFactories << factory;
|
||||
}
|
||||
|
||||
void QgisApp::unregisterMapStylePanelFactory( QgsMapStylePanelFactory *factory )
|
||||
void QgisApp::unregisterMapStylePanelFactory( QgsMapStylingPanelFactory *factory )
|
||||
{
|
||||
mMapStylePanelFactories.removeAll( factory );
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ class QgsLayerTreeView;
|
||||
class QgsMapCanvas;
|
||||
class QgsMapLayer;
|
||||
class QgsMapLayerPropertiesFactory;
|
||||
class QgsMapStylePanelFactory;
|
||||
class QgsMapStylingPanelFactory;
|
||||
class QgsMapTip;
|
||||
class QgsMapTool;
|
||||
class QgsMapToolAdvancedDigitizing;
|
||||
@ -514,10 +514,10 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
|
||||
void unregisterMapLayerPropertiesFactory( QgsMapLayerPropertiesFactory* factory );
|
||||
|
||||
/** Register a new tab in the layer properties dialog */
|
||||
void registerMapStylePanelFactory( QgsMapStylePanelFactory* factory );
|
||||
void registerMapStylePanelFactory( QgsMapStylingPanelFactory* factory );
|
||||
|
||||
/** Unregister a previously registered tab in the layer properties dialog */
|
||||
void unregisterMapStylePanelFactory( QgsMapStylePanelFactory* factory );
|
||||
void unregisterMapStylePanelFactory( QgsMapStylingPanelFactory* factory );
|
||||
|
||||
public slots:
|
||||
void layerTreeViewDoubleClicked( const QModelIndex& index );
|
||||
@ -1781,7 +1781,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
|
||||
QgsSnappingUtils* mSnappingUtils;
|
||||
|
||||
QList<QgsMapLayerPropertiesFactory*> mMapLayerPropertiesFactories;
|
||||
QList<QgsMapStylePanelFactory*> mMapStylePanelFactories;
|
||||
QList<QgsMapStylingPanelFactory*> mMapStylePanelFactories;
|
||||
|
||||
QDateTime mProjectLastModified;
|
||||
|
||||
|
@ -485,12 +485,12 @@ void QgisAppInterface::unregisterMapLayerPropertiesFactory( QgsMapLayerPropertie
|
||||
qgis->unregisterMapLayerPropertiesFactory( factory );
|
||||
}
|
||||
|
||||
void QgisAppInterface::registerMapStylePanelFactory( QgsMapStylePanelFactory *factory )
|
||||
void QgisAppInterface::registerMapStylePanelFactory( QgsMapStylingPanelFactory *factory )
|
||||
{
|
||||
qgis->registerMapStylePanelFactory( factory );
|
||||
}
|
||||
|
||||
void QgisAppInterface::unregisterMapStylePanelFactory( QgsMapStylePanelFactory *factory )
|
||||
void QgisAppInterface::unregisterMapStylePanelFactory( QgsMapStylingPanelFactory *factory )
|
||||
{
|
||||
qgis->unregisterMapStylePanelFactory( factory );
|
||||
}
|
||||
|
@ -302,10 +302,10 @@ class APP_EXPORT QgisAppInterface : public QgisInterface
|
||||
virtual void unregisterMapLayerPropertiesFactory( QgsMapLayerPropertiesFactory* factory ) override;
|
||||
|
||||
/** Register a new tab in the layer properties dialog */
|
||||
virtual void registerMapStylePanelFactory( QgsMapStylePanelFactory* factory ) override;
|
||||
virtual void registerMapStylePanelFactory( QgsMapStylingPanelFactory* factory ) override;
|
||||
|
||||
/** Unregister a previously registered tab in the layer properties dialog */
|
||||
virtual void unregisterMapStylePanelFactory( QgsMapStylePanelFactory* factory ) override;
|
||||
virtual void unregisterMapStylePanelFactory( QgsMapStylingPanelFactory* factory ) override;
|
||||
|
||||
/** Accessors for inserting items into menus and toolbars.
|
||||
* An item can be inserted before any existing action.
|
||||
|
@ -41,7 +41,7 @@
|
||||
#include "qgsmapstylepanel.h"
|
||||
#include "qgsmaplayerstylemanagerwidget.h"
|
||||
|
||||
QgsMapStylingWidget::QgsMapStylingWidget( QgsMapCanvas* canvas, QList<QgsMapStylePanelFactory*> pages, QWidget *parent )
|
||||
QgsMapStylingWidget::QgsMapStylingWidget( QgsMapCanvas* canvas, QList<QgsMapStylingPanelFactory*> pages, QWidget *parent )
|
||||
: QWidget( parent )
|
||||
, mNotSupportedPage( 0 )
|
||||
, mLayerPage( 1 )
|
||||
@ -87,7 +87,7 @@ QgsMapStylingWidget::~QgsMapStylingWidget()
|
||||
delete mStyleManagerFactory;
|
||||
}
|
||||
|
||||
void QgsMapStylingWidget::setPageFactories( QList<QgsMapStylePanelFactory *> factories )
|
||||
void QgsMapStylingWidget::setPageFactories( QList<QgsMapStylingPanelFactory *> factories )
|
||||
{
|
||||
mPageFactories = factories;
|
||||
// Always append the style manager factory at the bottom of the list
|
||||
@ -127,7 +127,7 @@ void QgsMapStylingWidget::setLayer( QgsMapLayer *layer )
|
||||
mOptionsListWidget->addItem( new QListWidgetItem( QgsApplication::getThemeIcon( "propertyicons/histogram.png" ), "" ) );
|
||||
}
|
||||
|
||||
Q_FOREACH ( QgsMapStylePanelFactory* factory, mPageFactories )
|
||||
Q_FOREACH ( QgsMapStylingPanelFactory* factory, mPageFactories )
|
||||
{
|
||||
if ( factory->supportsLayer( layer ) )
|
||||
{
|
||||
@ -162,7 +162,7 @@ void QgsMapStylingWidget::apply()
|
||||
QWidget* current = mWidgetArea->widget();
|
||||
|
||||
bool styleWasChanged = false;
|
||||
if ( QgsMapStylePanel* widget = qobject_cast<QgsMapStylePanel*>( current ) )
|
||||
if ( QgsMapStylingPanel* widget = qobject_cast<QgsMapStylingPanel*>( current ) )
|
||||
{
|
||||
widget->apply();
|
||||
styleWasChanged = true;
|
||||
@ -256,12 +256,13 @@ void QgsMapStylingWidget::updateCurrentWidgetLayer()
|
||||
// TODO Make all widgets use this method.
|
||||
if ( mUserPages.contains( row ) )
|
||||
{
|
||||
QgsMapStylePanel* panel = mUserPages[row]->createPanel( layer, mMapCanvas, this );
|
||||
QgsMapStylingPanel* panel = mUserPages[row]->createPanel( layer, mMapCanvas, this );
|
||||
if ( panel )
|
||||
{
|
||||
QgsDebugMsg( "Made me a widget!!" );
|
||||
connect( panel, SIGNAL( widgetChanged() ), this, SLOT( autoApply() ) );
|
||||
mWidgetArea->setWidget( panel );
|
||||
connect( panel, SIGNAL( widgetChanged( QgsPanelWidget* ) ), this, SLOT( autoApply() ) );
|
||||
QgsPanelWidgetStackWidget* stack = new QgsPanelWidgetStackWidget( mWidgetArea );
|
||||
mWidgetArea->setWidget( stack );
|
||||
stack->addMainPanel( panel );
|
||||
}
|
||||
}
|
||||
|
||||
@ -280,6 +281,7 @@ void QgsMapStylingWidget::updateCurrentWidgetLayer()
|
||||
{
|
||||
mVectorStyleWidget->deleteLater();
|
||||
mVectorStyleWidget = new QgsRendererV2PropertiesDialog( vlayer, QgsStyleV2::defaultStyle(), true, mWidgetArea );
|
||||
mVectorStyleWidget->setDockMode( true );
|
||||
connect( mVectorStyleWidget, SIGNAL( widgetChanged() ), this, SLOT( autoApply() ) );
|
||||
mWidgetArea->setWidget( mVectorStyleWidget );
|
||||
break;
|
||||
@ -419,7 +421,7 @@ QString QgsMapLayerStyleManagerWidgetFactory::title()
|
||||
return QString();
|
||||
}
|
||||
|
||||
QgsMapStylePanel *QgsMapLayerStyleManagerWidgetFactory::createPanel( QgsMapLayer *layer, QgsMapCanvas *canvas, QWidget *parent )
|
||||
QgsMapStylingPanel *QgsMapLayerStyleManagerWidgetFactory::createPanel( QgsMapLayer *layer, QgsMapCanvas *canvas, QWidget *parent )
|
||||
{
|
||||
return new QgsMapLayerStyleManagerWidget( layer, canvas, parent );
|
||||
|
||||
|
@ -36,15 +36,15 @@ class QgsRendererV2PropertiesDialog;
|
||||
class QgsRendererRasterPropertiesWidget;
|
||||
class QgsUndoWidget;
|
||||
class QgsRasterHistogramWidget;
|
||||
class QgsMapStylePanelFactory;
|
||||
class QgsMapStylingPanelFactory;
|
||||
class QgsMapLayerStyleManagerWidget;
|
||||
|
||||
class APP_EXPORT QgsMapLayerStyleManagerWidgetFactory : public QgsMapStylePanelFactory
|
||||
class APP_EXPORT QgsMapLayerStyleManagerWidgetFactory : public QgsMapStylingPanelFactory
|
||||
{
|
||||
public:
|
||||
QIcon icon() override;
|
||||
QString title() override;
|
||||
QgsMapStylePanel *createPanel( QgsMapLayer *layer, QgsMapCanvas *canvas, QWidget *parent ) override;
|
||||
QgsMapStylingPanel *createPanel( QgsMapLayer *layer, QgsMapCanvas *canvas, QWidget *parent ) override;
|
||||
bool supportsLayer( QgsMapLayer *layer ) override;
|
||||
};
|
||||
|
||||
@ -66,11 +66,11 @@ class APP_EXPORT QgsMapStylingWidget : public QWidget, private Ui::QgsMapStyling
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
QgsMapStylingWidget( QgsMapCanvas *canvas, QList<QgsMapStylePanelFactory *> pages, QWidget *parent = 0 );
|
||||
QgsMapStylingWidget( QgsMapCanvas *canvas, QList<QgsMapStylingPanelFactory *> pages, QWidget *parent = 0 );
|
||||
~QgsMapStylingWidget();
|
||||
QgsMapLayer* layer() { return mCurrentLayer; }
|
||||
|
||||
void setPageFactories( QList<QgsMapStylePanelFactory*> factories );
|
||||
void setPageFactories( QList<QgsMapStylingPanelFactory*> factories );
|
||||
|
||||
signals:
|
||||
void styleChanged( QgsMapLayer* layer );
|
||||
@ -100,8 +100,8 @@ class APP_EXPORT QgsMapStylingWidget : public QWidget, private Ui::QgsMapStyling
|
||||
QgsLabelingWidget *mLabelingWidget;
|
||||
QgsRendererV2PropertiesDialog* mVectorStyleWidget;
|
||||
QgsRendererRasterPropertiesWidget* mRasterStyleWidget;
|
||||
QList<QgsMapStylePanelFactory*> mPageFactories;
|
||||
QMap<int, QgsMapStylePanelFactory*> mUserPages;
|
||||
QList<QgsMapStylingPanelFactory*> mPageFactories;
|
||||
QMap<int, QgsMapStylingPanelFactory*> mUserPages;
|
||||
QgsMapLayerStyleManagerWidgetFactory* mStyleManagerFactory;
|
||||
};
|
||||
|
||||
|
@ -1306,6 +1306,7 @@ void QgsVectorLayerProperties::updateSymbologyPage()
|
||||
if ( mLayer->rendererV2() )
|
||||
{
|
||||
mRendererDialog = new QgsRendererV2PropertiesDialog( mLayer, QgsStyleV2::defaultStyle(), true, this );
|
||||
mRendererDialog->setDockMode( true );
|
||||
mRendererDialog->setMapCanvas( QgisApp::instance()->mapCanvas() );
|
||||
|
||||
connect( mRendererDialog, SIGNAL( layerVariablesChanged() ), this, SLOT( updateVariableEditor() ) );
|
||||
|
@ -31,7 +31,6 @@ 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
|
||||
@ -275,6 +274,7 @@ SET(QGIS_GUI_SRCS
|
||||
qgsorderbydialog.cpp
|
||||
qgsowssourceselect.cpp
|
||||
qgssourceselectdialog.cpp
|
||||
qgspanelwidget.cpp
|
||||
qgspixmaplabel.cpp
|
||||
qgspluginmanagerinterface.cpp
|
||||
qgsprevieweffect.cpp
|
||||
@ -424,6 +424,7 @@ SET(QGIS_GUI_MOC_HDRS
|
||||
qgsorderbydialog.h
|
||||
qgsowssourceselect.h
|
||||
qgssourceselectdialog.h
|
||||
qgspanelwidget.h
|
||||
qgspixmaplabel.h
|
||||
qgspluginmanagerinterface.h
|
||||
qgsprevieweffect.h
|
||||
@ -480,7 +481,6 @@ 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
|
||||
|
@ -21,7 +21,7 @@
|
||||
#include "qgspainteffectwidget.h"
|
||||
#include "qgsapplication.h"
|
||||
#include "qgssymbollayerv2utils.h"
|
||||
#include "qgsrendererwidgetcontainer.h"
|
||||
#include "qgspanelwidget.h"
|
||||
|
||||
#include <QPicture>
|
||||
#include <QPainter>
|
||||
@ -94,7 +94,7 @@ class EffectItem : public QStandardItem
|
||||
//
|
||||
|
||||
QgsEffectStackPropertiesWidget::QgsEffectStackPropertiesWidget( QgsEffectStack *stack, QWidget *parent )
|
||||
: QWidget( parent )
|
||||
: QgsPanelWidget( parent )
|
||||
, mStack( stack )
|
||||
, mPreviewPicture( nullptr )
|
||||
{
|
||||
@ -133,6 +133,8 @@ QgsEffectStackPropertiesWidget::QgsEffectStackPropertiesWidget( QgsEffectStack *
|
||||
// set effect as active item in the tree
|
||||
QModelIndex newIndex = mEffectsList->model()->index( 0, 0 );
|
||||
mEffectsList->setCurrentIndex( newIndex );
|
||||
|
||||
setPanelTitle( tr( "Effects Properties" ) );
|
||||
}
|
||||
|
||||
QgsEffectStackPropertiesWidget::~QgsEffectStackPropertiesWidget()
|
||||
@ -379,7 +381,7 @@ void QgsEffectStackPropertiesDialog::setPreviewPicture( const QPicture &picture
|
||||
//
|
||||
|
||||
QgsEffectStackCompactWidget::QgsEffectStackCompactWidget( QWidget *parent , QgsPaintEffect *effect )
|
||||
: QWidget( parent )
|
||||
: QgsPanelWidget( parent )
|
||||
, mDockMode( false )
|
||||
, mEnabledCheckBox( nullptr )
|
||||
, mButton( nullptr )
|
||||
@ -457,11 +459,9 @@ void QgsEffectStackCompactWidget::showDialog()
|
||||
{
|
||||
widget->setPreviewPicture( *mPreviewPicture );
|
||||
}
|
||||
QgsRendererWidgetContainer* container = new QgsRendererWidgetContainer( widget, tr( "Effects Properties" ), nullptr );
|
||||
connect( widget, SIGNAL( widgetChanged() ), container, SLOT( emitWidgetChanged() ) );
|
||||
connect( container, SIGNAL( widgetChanged( QgsRendererWidgetContainer* ) ), this, SLOT( updateFromContainer( QgsRendererWidgetContainer* ) ) );
|
||||
connect( container, SIGNAL( accepted( QgsRendererWidgetContainer* ) ), this, SLOT( cleanUpContainer( QgsRendererWidgetContainer* ) ) );
|
||||
emit showPanel( container );
|
||||
connect( widget, SIGNAL( widgetChanged() ), this, SLOT( updateEffectLive() ) );
|
||||
connect( widget, SIGNAL( panelAccepted( QgsPanelWidget* ) ), this, SLOT( updateAcceptWidget( QgsPanelWidget* ) ) );
|
||||
emit showPanel( widget );
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -492,17 +492,17 @@ void QgsEffectStackCompactWidget::enableToggled( bool checked )
|
||||
emit changed();
|
||||
}
|
||||
|
||||
void QgsEffectStackCompactWidget::cleanUpContainer( QgsRendererWidgetContainer *container )
|
||||
void QgsEffectStackCompactWidget::updateAcceptWidget( QgsPanelWidget *panel )
|
||||
{
|
||||
QgsEffectStackPropertiesWidget* widget = qobject_cast<QgsEffectStackPropertiesWidget*>( container->widget() );
|
||||
QgsEffectStackPropertiesWidget* widget = qobject_cast<QgsEffectStackPropertiesWidget*>( panel );
|
||||
*mStack = *widget->stack();
|
||||
emit changed();
|
||||
// delete widget->stack();
|
||||
}
|
||||
|
||||
void QgsEffectStackCompactWidget::updateFromContainer( QgsRendererWidgetContainer *container )
|
||||
void QgsEffectStackCompactWidget::updateEffectLive()
|
||||
{
|
||||
QgsEffectStackPropertiesWidget* widget = qobject_cast<QgsEffectStackPropertiesWidget*>( container->widget() );
|
||||
QgsEffectStackPropertiesWidget* widget = qobject_cast<QgsEffectStackPropertiesWidget*>( sender() );
|
||||
*mStack = *widget->stack();
|
||||
emit changed();
|
||||
}
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "effects/qgseffectstack.h"
|
||||
#include <QWidget>
|
||||
#include <QStandardItemModel>
|
||||
#include <qgspanelwidget.h>
|
||||
|
||||
#include "ui_qgseffectstackpropertieswidgetbase.h"
|
||||
|
||||
@ -27,7 +28,7 @@ class EffectItem;
|
||||
class QgsPaintEffect;
|
||||
class QCheckBox;
|
||||
class QToolButton;
|
||||
class QgsRendererWidgetContainer;
|
||||
class QgsPanelWidget;
|
||||
|
||||
/** \ingroup gui
|
||||
* \class QgsEffectStackPropertiesWidget
|
||||
@ -40,7 +41,7 @@ class QgsRendererWidgetContainer;
|
||||
* \see QgsEffectStackCompactWidget
|
||||
*/
|
||||
|
||||
class GUI_EXPORT QgsEffectStackPropertiesWidget : public QWidget, private Ui::QgsEffectStackPropertiesWidgetBase
|
||||
class GUI_EXPORT QgsEffectStackPropertiesWidget : public QgsPanelWidget, private Ui::QgsEffectStackPropertiesWidgetBase
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@ -64,12 +65,6 @@ class GUI_EXPORT QgsEffectStackPropertiesWidget : public QWidget, private Ui::Qg
|
||||
*/
|
||||
void setPreviewPicture( const QPicture& picture );
|
||||
|
||||
signals:
|
||||
/**
|
||||
* Emiited when something in the widget changes.
|
||||
*/
|
||||
void widgetChanged();
|
||||
|
||||
public slots:
|
||||
|
||||
/** Moves the currently selected effect down in the stack.
|
||||
@ -190,7 +185,7 @@ class GUI_EXPORT QgsEffectStackPropertiesDialog: public QgsDialog
|
||||
* \see QgsEffectStackPropertiesDialog
|
||||
*/
|
||||
|
||||
class GUI_EXPORT QgsEffectStackCompactWidget: public QWidget
|
||||
class GUI_EXPORT QgsEffectStackCompactWidget: public QgsPanelWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@ -237,20 +232,14 @@ class GUI_EXPORT QgsEffectStackCompactWidget: public QWidget
|
||||
*/
|
||||
void changed();
|
||||
|
||||
/** Emitted when a panel is shown in the widget.
|
||||
* @param widget widget panel which was shown
|
||||
* @note added in QGIS 2.16
|
||||
*/
|
||||
void showPanel( QgsRendererWidgetContainer* widget );
|
||||
|
||||
private slots:
|
||||
|
||||
void showDialog();
|
||||
|
||||
void enableToggled( bool checked );
|
||||
|
||||
void cleanUpContainer( QgsRendererWidgetContainer* container );
|
||||
void updateFromContainer( QgsRendererWidgetContainer *container );
|
||||
void updateAcceptWidget( QgsPanelWidget* panel );
|
||||
void updateEffectLive();
|
||||
|
||||
private:
|
||||
bool mDockMode;
|
||||
|
@ -35,7 +35,7 @@ class QgsLegendInterface;
|
||||
class QgsMapCanvas;
|
||||
class QgsMapLayer;
|
||||
class QgsMapLayerPropertiesFactory;
|
||||
class QgsMapStylePanelFactory;
|
||||
class QgsMapStylingPanelFactory;
|
||||
class QgsMessageBar;
|
||||
class QgsPluginManagerInterface;
|
||||
class QgsRasterLayer;
|
||||
@ -344,10 +344,10 @@ class GUI_EXPORT QgisInterface : public QObject
|
||||
virtual void unregisterMapLayerPropertiesFactory( QgsMapLayerPropertiesFactory* factory ) = 0;
|
||||
|
||||
/** Register a new tab in the layer properties dialog */
|
||||
virtual void registerMapStylePanelFactory( QgsMapStylePanelFactory* factory ) = 0;
|
||||
virtual void registerMapStylePanelFactory( QgsMapStylingPanelFactory* factory ) = 0;
|
||||
|
||||
/** Unregister a previously registered tab in the layer properties dialog */
|
||||
virtual void unregisterMapStylePanelFactory( QgsMapStylePanelFactory* factory ) = 0;
|
||||
virtual void unregisterMapStylePanelFactory( QgsMapStylingPanelFactory* factory ) = 0;
|
||||
|
||||
// @todo is this deprecated in favour of QgsContextHelp?
|
||||
/** Open a url in the users browser. By default the QGIS doc directory is used
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
|
||||
QgsMapLayerStyleManagerWidget::QgsMapLayerStyleManagerWidget( QgsMapLayer* layer, QgsMapCanvas *canvas, QWidget *parent )
|
||||
: QgsMapStylePanel( layer, canvas, parent )
|
||||
: QgsMapStylingPanel( layer, canvas, parent )
|
||||
{
|
||||
mModel = new QStandardItemModel( this );
|
||||
mStyleList = new QListView( this );
|
||||
|
@ -29,7 +29,7 @@ class QgsMapCanvas;
|
||||
* @brief The QgsMapLayerStyleManagerWidget class which is used to visually manage
|
||||
* the layer styles.
|
||||
*/
|
||||
class GUI_EXPORT QgsMapLayerStyleManagerWidget : public QgsMapStylePanel
|
||||
class GUI_EXPORT QgsMapLayerStyleManagerWidget : public QgsMapStylingPanel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
@ -13,21 +13,22 @@
|
||||
* *
|
||||
***************************************************************************/
|
||||
#include "qgsmapstylepanel.h"
|
||||
#include "qgspanelwidget.h"
|
||||
|
||||
QgsMapStylePanel::QgsMapStylePanel( QgsMapLayer *layer, QgsMapCanvas *canvas, QWidget *parent )
|
||||
: QWidget( parent )
|
||||
QgsMapStylingPanel::QgsMapStylingPanel( QgsMapLayer *layer, QgsMapCanvas *canvas, QWidget *parent )
|
||||
: QgsPanelWidget( parent )
|
||||
, mLayer( layer )
|
||||
, mMapCanvas( canvas )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QgsMapStylePanelFactory::QgsMapStylePanelFactory()
|
||||
QgsMapStylingPanelFactory::QgsMapStylingPanelFactory()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QgsMapStylePanelFactory::~QgsMapStylePanelFactory()
|
||||
QgsMapStylingPanelFactory::~QgsMapStylingPanelFactory()
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <QIcon>
|
||||
|
||||
#include "qgsmaplayer.h"
|
||||
#include "qgspanelwidget.h"
|
||||
|
||||
class QgsMapCanvas;
|
||||
|
||||
@ -27,7 +28,7 @@ class QgsMapCanvas;
|
||||
* \brief A panel widget that can be shown in the map style dock
|
||||
* \note added in QGIS 2.16
|
||||
*/
|
||||
class GUI_EXPORT QgsMapStylePanel : public QWidget
|
||||
class GUI_EXPORT QgsMapStylingPanel : public QgsPanelWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
@ -40,16 +41,7 @@ class GUI_EXPORT QgsMapStylePanel : public QWidget
|
||||
* @note The widget is created each time the panel is selected in the dock.
|
||||
* Keep the loading light as possible for speed in the UI.
|
||||
*/
|
||||
QgsMapStylePanel( QgsMapLayer* layer, QgsMapCanvas *canvas, QWidget *parent = 0 );
|
||||
|
||||
signals:
|
||||
/**
|
||||
* @brief Nofity the map style dock that something has changed and
|
||||
* we need to update the map.
|
||||
* You should emit this when any of the widgets are changed if live
|
||||
* update is enabled apply() will get called to apply the changes to the layer.
|
||||
*/
|
||||
void widgetChanged();
|
||||
QgsMapStylingPanel( QgsMapLayer* layer, QgsMapCanvas *canvas, QWidget *parent = 0 );
|
||||
|
||||
public slots:
|
||||
/**
|
||||
@ -68,16 +60,16 @@ class GUI_EXPORT QgsMapStylePanel : public QWidget
|
||||
* \class QgsMapStylePanelFactory
|
||||
* \note added in QGIS 2.16
|
||||
*/
|
||||
class GUI_EXPORT QgsMapStylePanelFactory
|
||||
class GUI_EXPORT QgsMapStylingPanelFactory
|
||||
{
|
||||
public:
|
||||
Q_DECLARE_FLAGS( LayerTypesFlags, QgsMapLayer::LayerType )
|
||||
|
||||
/** Constructor */
|
||||
QgsMapStylePanelFactory();
|
||||
QgsMapStylingPanelFactory();
|
||||
|
||||
/** Destructor */
|
||||
virtual ~QgsMapStylePanelFactory();
|
||||
virtual ~QgsMapStylingPanelFactory();
|
||||
|
||||
/**
|
||||
* @brief The icon that will be shown in the UI for the panel.
|
||||
@ -106,7 +98,7 @@ class GUI_EXPORT QgsMapStylePanelFactory
|
||||
* @param parent The parent of the widget.
|
||||
* @return A new QgsMapStylePanel which is shown in the map style dock.
|
||||
*/
|
||||
virtual QgsMapStylePanel* createPanel( QgsMapLayer* layer, QgsMapCanvas *canvas, QWidget* parent ) = 0;
|
||||
virtual QgsMapStylingPanel* createPanel( QgsMapLayer* layer, QgsMapCanvas *canvas, QWidget* parent ) = 0;
|
||||
};
|
||||
|
||||
|
||||
|
@ -47,7 +47,7 @@ static void _initRendererWidgetFunctions()
|
||||
|
||||
|
||||
QgsRendererRasterPropertiesWidget::QgsRendererRasterPropertiesWidget( QgsMapLayer *layer, QgsMapCanvas* canvas, QWidget *parent )
|
||||
: QgsMapStylePanel( layer, canvas, parent )
|
||||
: QgsMapStylingPanel( layer, canvas, parent )
|
||||
, mRendererWidget( nullptr )
|
||||
{
|
||||
mRasterLayer = qobject_cast<QgsRasterLayer*>( layer );
|
||||
|
@ -27,7 +27,7 @@ class QgsRasterLayer;
|
||||
class QgsMapCanvas;
|
||||
class QgsRasterRendererWidget;
|
||||
|
||||
class GUI_EXPORT QgsRendererRasterPropertiesWidget : public QgsMapStylePanel, private Ui::QgsRendererRasterPropsWidgetBase
|
||||
class GUI_EXPORT QgsRendererRasterPropertiesWidget : public QgsMapStylingPanel, private Ui::QgsRendererRasterPropsWidgetBase
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
#include "qgscategorizedsymbolrendererv2widget.h"
|
||||
#include "qgsrendererwidgetcontainer.h"
|
||||
#include "qgspanelwidget.h"
|
||||
|
||||
#include "qgscategorizedsymbolrendererv2.h"
|
||||
|
||||
@ -571,14 +571,13 @@ void QgsCategorizedSymbolRendererV2Widget::changeSelectedSymbols()
|
||||
void QgsCategorizedSymbolRendererV2Widget::changeCategorizedSymbol()
|
||||
{
|
||||
QgsSymbolV2* newSymbol = mCategorizedSymbol->clone();
|
||||
QgsSymbolV2SelectorDialog* dlg = new QgsSymbolV2SelectorDialog( newSymbol, mStyle, mLayer, nullptr, true );
|
||||
QgsSymbolV2SelectorWidget* dlg = new QgsSymbolV2SelectorWidget( newSymbol, mStyle, mLayer, nullptr );
|
||||
dlg->setDockMode( true );
|
||||
dlg->setMapCanvas( mMapCanvas );
|
||||
|
||||
QgsRendererWidgetContainer* container = new QgsRendererWidgetContainer( dlg, "Select Symbol", nullptr );
|
||||
connect( dlg, SIGNAL( symbolModified() ), container, SLOT( emitWidgetChanged() ) );
|
||||
connect( container, SIGNAL( widgetChanged( QgsRendererWidgetContainer* ) ), this, SLOT( updateSymbolsFromWidget( QgsRendererWidgetContainer* ) ) );
|
||||
connect( container, SIGNAL( accepted( QgsRendererWidgetContainer* ) ), this, SLOT( cleanUpSymbolSelector( QgsRendererWidgetContainer* ) ) );
|
||||
emit showPanel( container );
|
||||
connect( dlg, SIGNAL( widgetChanged() ), this, SLOT( updateSymbolsFromWidget() ) );
|
||||
connect( dlg, SIGNAL( accepted( QgsPanelWidget* ) ), this, SLOT( cleanUpSymbolSelector( QgsPanelWidget* ) ) );
|
||||
emit showPanel( dlg );
|
||||
}
|
||||
|
||||
void QgsCategorizedSymbolRendererV2Widget::updateCategorizedSymbolIcon()
|
||||
@ -617,14 +616,12 @@ void QgsCategorizedSymbolRendererV2Widget::changeCategorySymbol()
|
||||
symbol = QgsSymbolV2::defaultSymbol( mLayer->geometryType() );
|
||||
}
|
||||
|
||||
QgsSymbolV2SelectorDialog* dlg = new QgsSymbolV2SelectorDialog( symbol, mStyle, mLayer, nullptr, true );
|
||||
QgsSymbolV2SelectorWidget* dlg = new QgsSymbolV2SelectorWidget( symbol, mStyle, mLayer, nullptr );
|
||||
dlg->setDockMode( true );
|
||||
dlg->setMapCanvas( mMapCanvas );
|
||||
|
||||
QgsRendererWidgetContainer* container = new QgsRendererWidgetContainer( dlg, "Select Symbol", nullptr );
|
||||
connect( dlg, SIGNAL( symbolModified() ), container, SLOT( emitWidgetChanged() ) );
|
||||
connect( container, SIGNAL( widgetChanged( QgsRendererWidgetContainer* ) ), this, SLOT( updateSymbolsFromWidget( QgsRendererWidgetContainer* ) ) );
|
||||
connect( container, SIGNAL( accepted( QgsRendererWidgetContainer* ) ), this, SLOT( cleanUpSymbolSelector( QgsRendererWidgetContainer* ) ) );
|
||||
emit showPanel( container );
|
||||
connect( dlg, SIGNAL( widgetChanged() ), this, SLOT( updateSymbolsFromWidget() ) );
|
||||
connect( dlg, SIGNAL( accepted( QgsPanelWidget* ) ), this, SLOT( cleanUpSymbolSelector( QgsPanelWidget* ) ) );
|
||||
emit showPanel( dlg );
|
||||
}
|
||||
|
||||
static void _createCategories( QgsCategoryList& cats, QList<QVariant>& values, QgsSymbolV2* symbol )
|
||||
@ -1002,18 +999,18 @@ void QgsCategorizedSymbolRendererV2Widget::matchToSymbolsFromXml()
|
||||
}
|
||||
}
|
||||
|
||||
void QgsCategorizedSymbolRendererV2Widget::cleanUpSymbolSelector( QgsRendererWidgetContainer *container )
|
||||
void QgsCategorizedSymbolRendererV2Widget::cleanUpSymbolSelector( QgsPanelWidget *container )
|
||||
{
|
||||
if ( container )
|
||||
{
|
||||
QgsSymbolV2SelectorDialog* dlg = qobject_cast<QgsSymbolV2SelectorDialog*>( container->widget() );
|
||||
QgsSymbolV2SelectorWidget* dlg = qobject_cast<QgsSymbolV2SelectorWidget*>( container );
|
||||
delete dlg->symbol();
|
||||
}
|
||||
}
|
||||
|
||||
void QgsCategorizedSymbolRendererV2Widget::updateSymbolsFromWidget( QgsRendererWidgetContainer* container )
|
||||
void QgsCategorizedSymbolRendererV2Widget::updateSymbolsFromWidget()
|
||||
{
|
||||
QgsSymbolV2SelectorDialog* dlg = qobject_cast<QgsSymbolV2SelectorDialog*>( container->widget() );
|
||||
QgsSymbolV2SelectorWidget* dlg = qobject_cast<QgsSymbolV2SelectorWidget*>( sender() );
|
||||
delete mCategorizedSymbol;
|
||||
mCategorizedSymbol = dlg->symbol()->clone();
|
||||
|
||||
|
@ -131,8 +131,8 @@ class GUI_EXPORT QgsCategorizedSymbolRendererV2Widget : public QgsRendererV2Widg
|
||||
|
||||
private slots:
|
||||
|
||||
void cleanUpSymbolSelector( QgsRendererWidgetContainer* container );
|
||||
void updateSymbolsFromWidget( QgsRendererWidgetContainer *container );
|
||||
void cleanUpSymbolSelector( QgsPanelWidget* container );
|
||||
void updateSymbolsFromWidget();
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
* *
|
||||
***************************************************************************/
|
||||
#include "qgsgraduatedsymbolrendererv2widget.h"
|
||||
#include "qgsrendererwidgetcontainer.h"
|
||||
#include "qgspanelwidget.h"
|
||||
|
||||
#include "qgssymbolv2.h"
|
||||
#include "qgssymbollayerv2utils.h"
|
||||
@ -687,18 +687,18 @@ void QgsGraduatedSymbolRendererV2Widget::refreshRanges( bool reset )
|
||||
emit widgetChanged();
|
||||
}
|
||||
|
||||
void QgsGraduatedSymbolRendererV2Widget::cleanUpSymbolSelector( QgsRendererWidgetContainer *container )
|
||||
void QgsGraduatedSymbolRendererV2Widget::cleanUpSymbolSelector( QgsPanelWidget *container )
|
||||
{
|
||||
if ( container )
|
||||
{
|
||||
QgsSymbolV2SelectorDialog* dlg = qobject_cast<QgsSymbolV2SelectorDialog*>( container->widget() );
|
||||
QgsSymbolV2SelectorWidget* dlg = qobject_cast<QgsSymbolV2SelectorWidget*>( container );
|
||||
delete dlg->symbol();
|
||||
}
|
||||
}
|
||||
|
||||
void QgsGraduatedSymbolRendererV2Widget::updateSymbolsFromWidget( QgsRendererWidgetContainer *container )
|
||||
void QgsGraduatedSymbolRendererV2Widget::updateSymbolsFromWidget()
|
||||
{
|
||||
QgsSymbolV2SelectorDialog* dlg = qobject_cast<QgsSymbolV2SelectorDialog*>( container->widget() );
|
||||
QgsSymbolV2SelectorWidget* dlg = qobject_cast<QgsSymbolV2SelectorWidget*>( sender() );
|
||||
delete mGraduatedSymbol;
|
||||
mGraduatedSymbol = dlg->symbol()->clone();
|
||||
|
||||
@ -827,14 +827,12 @@ void QgsGraduatedSymbolRendererV2Widget::reapplySizes()
|
||||
void QgsGraduatedSymbolRendererV2Widget::changeGraduatedSymbol()
|
||||
{
|
||||
QgsSymbolV2* newSymbol = mGraduatedSymbol->clone();
|
||||
QgsSymbolV2SelectorDialog* dlg = new QgsSymbolV2SelectorDialog( newSymbol, mStyle, mLayer, nullptr, true );
|
||||
QgsSymbolV2SelectorWidget* dlg = new QgsSymbolV2SelectorWidget( newSymbol, mStyle, mLayer, nullptr );
|
||||
dlg->setMapCanvas( mMapCanvas );
|
||||
|
||||
QgsRendererWidgetContainer* container = new QgsRendererWidgetContainer( dlg, "Select Symbol", nullptr );
|
||||
connect( dlg, SIGNAL( symbolModified() ), container, SLOT( emitWidgetChanged() ) );
|
||||
connect( container, SIGNAL( widgetChanged( QgsRendererWidgetContainer* ) ), this, SLOT( updateSymbolsFromWidget( QgsRendererWidgetContainer* ) ) );
|
||||
connect( container, SIGNAL( accepted( QgsRendererWidgetContainer* ) ), this, SLOT( cleanUpSymbolSelector( QgsRendererWidgetContainer* ) ) );
|
||||
emit showPanel( container );
|
||||
connect( dlg, SIGNAL( widgetChanged() ), this, SLOT( updateSymbolsFromWidget() ) );
|
||||
connect( dlg, SIGNAL( accepted( QgsPanelWidget* ) ), this, SLOT( cleanUpSymbolSelector( QgsPanelWidget* ) ) );
|
||||
emit showPanel( dlg );
|
||||
}
|
||||
|
||||
void QgsGraduatedSymbolRendererV2Widget::updateGraduatedSymbolIcon()
|
||||
@ -907,14 +905,13 @@ void QgsGraduatedSymbolRendererV2Widget::changeSelectedSymbols()
|
||||
void QgsGraduatedSymbolRendererV2Widget::changeRangeSymbol( int rangeIdx )
|
||||
{
|
||||
QgsSymbolV2* newSymbol = mRenderer->ranges()[rangeIdx].symbol()->clone();
|
||||
QgsSymbolV2SelectorDialog* dlg = new QgsSymbolV2SelectorDialog( newSymbol, mStyle, mLayer, nullptr, true );
|
||||
QgsSymbolV2SelectorWidget* dlg = new QgsSymbolV2SelectorWidget( newSymbol, mStyle, mLayer, nullptr );
|
||||
dlg->setDockMode( true );
|
||||
dlg->setMapCanvas( mMapCanvas );
|
||||
|
||||
QgsRendererWidgetContainer* container = new QgsRendererWidgetContainer( dlg, "Select Symbol", nullptr );
|
||||
connect( dlg, SIGNAL( symbolModified() ), container, SLOT( emitWidgetChanged() ) );
|
||||
connect( container, SIGNAL( widgetChanged( QgsRendererWidgetContainer* ) ), this, SLOT( updateSymbolsFromWidget( QgsRendererWidgetContainer* ) ) );
|
||||
connect( container, SIGNAL( accepted( QgsRendererWidgetContainer* ) ), this, SLOT( cleanUpSymbolSelector( QgsRendererWidgetContainer* ) ) );
|
||||
emit showPanel( container );
|
||||
connect( dlg, SIGNAL( widgetChanged() ), this, SLOT( updateSymbolsFromWidget() ) );
|
||||
connect( dlg, SIGNAL( accepted( QgsPanelWidget* ) ), this, SLOT( cleanUpSymbolSelector( QgsPanelWidget* ) ) );
|
||||
emit showPanel( dlg );
|
||||
}
|
||||
|
||||
void QgsGraduatedSymbolRendererV2Widget::changeRange( int rangeIdx )
|
||||
|
@ -119,8 +119,8 @@ class GUI_EXPORT QgsGraduatedSymbolRendererV2Widget : public QgsRendererV2Widget
|
||||
void refreshRanges( bool reset = false );
|
||||
|
||||
private slots:
|
||||
void cleanUpSymbolSelector( QgsRendererWidgetContainer* container );
|
||||
void updateSymbolsFromWidget( QgsRendererWidgetContainer *container );
|
||||
void cleanUpSymbolSelector( QgsPanelWidget* container );
|
||||
void updateSymbolsFromWidget();
|
||||
|
||||
protected:
|
||||
void updateUiFromRenderer( bool updateCount = true );
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include "qgsellipsesymbollayerv2widget.h"
|
||||
#include "qgsvectorfieldsymbollayerwidget.h"
|
||||
#include "qgssymbolv2.h" //for the unit
|
||||
#include "qgspanelwidget.h"
|
||||
|
||||
static bool _initWidgetFunction( const QString& name, QgsSymbolLayerV2WidgetFunc f )
|
||||
{
|
||||
@ -86,7 +87,7 @@ static void _initWidgetFunctions()
|
||||
|
||||
|
||||
QgsLayerPropertiesWidget::QgsLayerPropertiesWidget( QgsSymbolLayerV2* layer, const QgsSymbolV2* symbol, const QgsVectorLayer* vl, QWidget* parent )
|
||||
: QWidget( parent )
|
||||
: QgsPanelWidget( parent )
|
||||
, mPresetExpressionContext( nullptr )
|
||||
, mMapCanvas( nullptr )
|
||||
{
|
||||
@ -119,6 +120,9 @@ QgsLayerPropertiesWidget::QgsLayerPropertiesWidget( QgsSymbolLayerV2* layer, con
|
||||
connect( cboLayerType, SIGNAL( currentIndexChanged( int ) ), this, SLOT( layerTypeChanged() ) );
|
||||
|
||||
connect( mEffectWidget, SIGNAL( changed() ), this, SLOT( emitSignalChanged() ) );
|
||||
|
||||
this->connectChildPanel( mEffectWidget );
|
||||
|
||||
mEffectWidget->setPaintEffect( mLayer->paintEffect() );
|
||||
}
|
||||
|
||||
@ -130,6 +134,15 @@ void QgsLayerPropertiesWidget::setMapCanvas( QgsMapCanvas *canvas )
|
||||
w->setMapCanvas( mMapCanvas );
|
||||
}
|
||||
|
||||
void QgsLayerPropertiesWidget::setDockMode( bool dockMode )
|
||||
{
|
||||
mDockMode = dockMode;
|
||||
if ( dockMode )
|
||||
{
|
||||
mEffectWidget->setDockMode( dockMode );
|
||||
}
|
||||
}
|
||||
|
||||
void QgsLayerPropertiesWidget::setExpressionContext( QgsExpressionContext *context )
|
||||
{
|
||||
mPresetExpressionContext = context;
|
||||
@ -227,6 +240,7 @@ void QgsLayerPropertiesWidget::emitSignalChanged()
|
||||
|
||||
// also update paint effect preview
|
||||
mEffectWidget->setPreviewPicture( QgsSymbolLayerV2Utils::symbolLayerPreviewPicture( mLayer, QgsSymbolV2::MM, QSize( 80, 80 ) ) );
|
||||
emit widgetChanged();
|
||||
}
|
||||
|
||||
void QgsLayerPropertiesWidget::reloadLayer()
|
||||
|
@ -23,6 +23,7 @@ class QgsSymbolLayerV2;
|
||||
class QgsSymbolLayerV2Widget;
|
||||
class QgsVectorLayer;
|
||||
class QgsMapCanvas;
|
||||
class QgsPanelWidget;
|
||||
|
||||
class SymbolLayerItem;
|
||||
|
||||
@ -30,7 +31,7 @@ class SymbolLayerItem;
|
||||
#include <QStandardItemModel>
|
||||
|
||||
|
||||
class GUI_EXPORT QgsLayerPropertiesWidget : public QWidget, private Ui::LayerPropertiesWidget
|
||||
class GUI_EXPORT QgsLayerPropertiesWidget : public QgsPanelWidget, private Ui::LayerPropertiesWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@ -52,6 +53,13 @@ class GUI_EXPORT QgsLayerPropertiesWidget : public QWidget, private Ui::LayerPro
|
||||
*/
|
||||
virtual void setMapCanvas( QgsMapCanvas* canvas );
|
||||
|
||||
/**
|
||||
* Set the widget in dock mode which tells the widget to emit panel
|
||||
* widgets and not open dialogs
|
||||
* @param dockMode True to enable dock mode.
|
||||
*/
|
||||
void setDockMode( bool dockMode );
|
||||
|
||||
public slots:
|
||||
void layerTypeChanged();
|
||||
void emitSignalChanged();
|
||||
@ -84,6 +92,7 @@ class GUI_EXPORT QgsLayerPropertiesWidget : public QWidget, private Ui::LayerPro
|
||||
void reloadLayer();
|
||||
|
||||
private:
|
||||
bool mDockMode;
|
||||
QgsExpressionContext* mPresetExpressionContext;
|
||||
QgsMapCanvas* mMapCanvas;
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
#include "qgsheatmaprendererwidget.h"
|
||||
#include "qgs25drendererwidget.h"
|
||||
#include "qgsnullsymbolrendererwidget.h"
|
||||
#include "qgsrendererwidgetcontainer.h"
|
||||
#include "qgspanelwidget.h"
|
||||
|
||||
#include "qgsorderbydialog.h"
|
||||
#include "qgsapplication.h"
|
||||
@ -97,6 +97,7 @@ QgsRendererV2PropertiesDialog::QgsRendererV2PropertiesDialog( QgsVectorLayer* la
|
||||
layout()->setContentsMargins( 0, 0, 0, 0 );
|
||||
}
|
||||
|
||||
this->setDockMode( embedded );
|
||||
|
||||
// initialize registry's widget functions
|
||||
_initRendererWidgetFunctions();
|
||||
@ -121,9 +122,10 @@ QgsRendererV2PropertiesDialog::QgsRendererV2PropertiesDialog( QgsVectorLayer* la
|
||||
connect( checkboxEnableOrderBy, SIGNAL( toggled( bool ) ), btnOrderBy, SLOT( setEnabled( bool ) ) );
|
||||
connect( checkboxEnableOrderBy, SIGNAL( toggled( bool ) ), lineEditOrderBy, SLOT( setEnabled( bool ) ) );
|
||||
connect( btnOrderBy, SIGNAL( clicked( bool ) ), this, SLOT( showOrderByDialog() ) );
|
||||
connect( mEffectWidget, SIGNAL( showPanel( QgsRendererWidgetContainer* ) ), this, SLOT( showPanel( QgsRendererWidgetContainer* ) ) );
|
||||
|
||||
mEffectWidget->setDockMode( true );
|
||||
QList<QgsPanelWidget*> panels;
|
||||
panels << mEffectWidget;
|
||||
mainStack->connectPanels( panels );
|
||||
|
||||
syncToLayer();
|
||||
|
||||
@ -197,6 +199,12 @@ void QgsRendererV2PropertiesDialog::setMapCanvas( QgsMapCanvas* canvas )
|
||||
mActiveWidget->setMapCanvas( mMapCanvas );
|
||||
}
|
||||
|
||||
void QgsRendererV2PropertiesDialog::setDockMode( bool dockMode )
|
||||
{
|
||||
mDockMode = dockMode;
|
||||
mEffectWidget->setDockMode( dockMode );
|
||||
}
|
||||
|
||||
|
||||
void QgsRendererV2PropertiesDialog::rendererChanged()
|
||||
{
|
||||
@ -250,7 +258,8 @@ void QgsRendererV2PropertiesDialog::rendererChanged()
|
||||
connect( mActiveWidget, SIGNAL( layerVariablesChanged() ), this, SIGNAL( layerVariablesChanged() ) );
|
||||
}
|
||||
connect( mActiveWidget, SIGNAL( widgetChanged() ), this, SIGNAL( widgetChanged() ) );
|
||||
connect( mActiveWidget, SIGNAL( showPanel( QgsRendererWidgetContainer* ) ), this, SLOT( showPanel( QgsRendererWidgetContainer* ) ) );
|
||||
mainStack->connectPanel( mActiveWidget );
|
||||
w->setDockMode( mDockMode );
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -293,20 +302,6 @@ void QgsRendererV2PropertiesDialog::onOK()
|
||||
accept();
|
||||
}
|
||||
|
||||
void QgsRendererV2PropertiesDialog::showPanel( QgsRendererWidgetContainer *container )
|
||||
{
|
||||
connect( container, SIGNAL( accepted( QgsRendererWidgetContainer* ) ), this, SLOT( closePanel( QgsRendererWidgetContainer* ) ) );
|
||||
|
||||
int page = this->mainStack->addWidget( container );
|
||||
this->mainStack->setCurrentIndex( page );
|
||||
}
|
||||
|
||||
void QgsRendererV2PropertiesDialog::closePanel( QgsRendererWidgetContainer *container )
|
||||
{
|
||||
this->mainStack->removeWidget( container );
|
||||
this->mainStack->setCurrentIndex( this->mainStack->currentIndex() - 1 );
|
||||
container->deleteLater();
|
||||
}
|
||||
|
||||
void QgsRendererV2PropertiesDialog::syncToLayer()
|
||||
{
|
||||
|
@ -31,7 +31,6 @@ class QgsSymbolV2;
|
||||
class QgsPaintEffect;
|
||||
class QgsRendererV2Widget;
|
||||
class QgsMapCanvas;
|
||||
class QgsRendererWidgetContainer;
|
||||
|
||||
|
||||
class GUI_EXPORT QgsRendererV2PropertiesDialog : public QDialog, private Ui::QgsRendererV2PropsDialogBase
|
||||
@ -57,6 +56,13 @@ class GUI_EXPORT QgsRendererV2PropertiesDialog : public QDialog, private Ui::Qgs
|
||||
*/
|
||||
void setMapCanvas( QgsMapCanvas* canvas );
|
||||
|
||||
/**
|
||||
* Set the widget in dock mode which tells the widget to emit panel
|
||||
* widgets and not open dialogs
|
||||
* @param dockMode True to enable dock mode.
|
||||
*/
|
||||
void setDockMode( bool dockMode );
|
||||
|
||||
signals:
|
||||
/**
|
||||
* Emitted when expression context variables on the associated
|
||||
@ -81,18 +87,6 @@ class GUI_EXPORT QgsRendererV2PropertiesDialog : public QDialog, private Ui::Qgs
|
||||
//! Apply and accept the changes for the dialog.
|
||||
void onOK();
|
||||
|
||||
/** Shows a panel widget inside the renderer widget.
|
||||
* @param container widget panel to show
|
||||
* @note added in QGIS 2.16
|
||||
*/
|
||||
void showPanel( QgsRendererWidgetContainer *container );
|
||||
|
||||
/**
|
||||
* Closes the given panel in the stack of panels.
|
||||
* @param container The container widget to close.
|
||||
*/
|
||||
void closePanel( QgsRendererWidgetContainer *container );
|
||||
|
||||
private slots:
|
||||
void showOrderByDialog();
|
||||
|
||||
@ -126,6 +120,9 @@ class GUI_EXPORT QgsRendererV2PropertiesDialog : public QDialog, private Ui::Qgs
|
||||
QgsMapCanvas* mMapCanvas;
|
||||
|
||||
QgsFeatureRequest::OrderBy mOrderBy;
|
||||
|
||||
private:
|
||||
bool mDockMode;
|
||||
};
|
||||
|
||||
|
||||
|
@ -19,13 +19,14 @@
|
||||
#include "qgssymbollevelsv2dialog.h"
|
||||
#include "qgsexpressionbuilderdialog.h"
|
||||
#include "qgsmapcanvas.h"
|
||||
#include "qgspanelwidget.h"
|
||||
|
||||
#include <QMessageBox>
|
||||
#include <QInputDialog>
|
||||
#include <QMenu>
|
||||
|
||||
QgsRendererV2Widget::QgsRendererV2Widget( QgsVectorLayer* layer, QgsStyleV2* style )
|
||||
: QWidget()
|
||||
: QgsPanelWidget()
|
||||
, mLayer( layer )
|
||||
, mStyle( style )
|
||||
, mMapCanvas( nullptr )
|
||||
@ -272,6 +273,11 @@ void QgsRendererV2Widget::applyChanges()
|
||||
apply();
|
||||
}
|
||||
|
||||
void QgsRendererV2Widget::setDockMode( bool dockMode )
|
||||
{
|
||||
mDockMode = dockMode;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////
|
||||
|
@ -20,14 +20,13 @@
|
||||
#include <QStackedWidget>
|
||||
#include "qgssymbolv2.h"
|
||||
#include "qgsdatadefined.h"
|
||||
#include "qgspanelwidget.h"
|
||||
|
||||
class QgsVectorLayer;
|
||||
class QgsStyleV2;
|
||||
class QgsFeatureRendererV2;
|
||||
class QgsSymbolV2SelectorDialog;
|
||||
class QgsMapCanvas;
|
||||
class QgsRendererWidgetContainer;
|
||||
|
||||
|
||||
/**
|
||||
Base class for renderer settings widgets
|
||||
@ -39,7 +38,7 @@ WORKFLOW:
|
||||
- on any change of renderer type, create some default (dummy?) version and change the stacked widget
|
||||
- when clicked ok/apply, get the renderer from active widget and clone it for the layer
|
||||
*/
|
||||
class GUI_EXPORT QgsRendererV2Widget : public QWidget
|
||||
class GUI_EXPORT QgsRendererV2Widget : public QgsPanelWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
@ -77,6 +76,13 @@ class GUI_EXPORT QgsRendererV2Widget : public QWidget
|
||||
*/
|
||||
void applyChanges();
|
||||
|
||||
/**
|
||||
* Set the widget in dock mode which tells the widget to emit panel
|
||||
* widgets and not open dialogs
|
||||
* @param dockMode True to enable dock mode.
|
||||
*/
|
||||
virtual void setDockMode( bool dockMode ) override;
|
||||
|
||||
|
||||
signals:
|
||||
/**
|
||||
@ -86,19 +92,8 @@ class GUI_EXPORT QgsRendererV2Widget : public QWidget
|
||||
*/
|
||||
void layerVariablesChanged();
|
||||
|
||||
/**
|
||||
* Emitted when something on the widget has changed.
|
||||
* All widgets will fire this event to notify of an internal change.
|
||||
*/
|
||||
void widgetChanged();
|
||||
|
||||
/** Shows a panel widget inside the renderer widget.
|
||||
* @param widget widget panel to show
|
||||
* @note added in QGIS 2.16
|
||||
*/
|
||||
void showPanel( QgsRendererWidgetContainer* widget );
|
||||
|
||||
protected:
|
||||
bool mDockMode;
|
||||
QgsVectorLayer* mLayer;
|
||||
QgsStyleV2* mStyle;
|
||||
QMenu* contextMenu;
|
||||
|
@ -1,54 +0,0 @@
|
||||
/***************************************************************************
|
||||
qgsrendererwidgetcontainer.cpp
|
||||
---------------------
|
||||
begin : June 2016
|
||||
copyright : (C) 2016 by Nathan Woodrow
|
||||
email :
|
||||
***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
#include <QDialogButtonBox>
|
||||
#include <QPushButton>
|
||||
|
||||
#include "qgsrendererwidgetcontainer.h"
|
||||
|
||||
QgsRendererWidgetContainer::QgsRendererWidgetContainer( QWidget *widget, const QString& title, QWidget *parent )
|
||||
: QWidget( parent )
|
||||
, mWidget( widget )
|
||||
{
|
||||
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, SLOT( accept() ) );
|
||||
}
|
||||
|
||||
QWidget *QgsRendererWidgetContainer::widget()
|
||||
{
|
||||
return mWidget;
|
||||
}
|
||||
|
||||
void QgsRendererWidgetContainer::accept()
|
||||
{
|
||||
emit accepted( this );
|
||||
}
|
||||
|
||||
void QgsRendererWidgetContainer::emitWidgetChanged()
|
||||
{
|
||||
emit widgetChanged( this );
|
||||
}
|
||||
|
||||
void QgsRendererWidgetContainer::keyPressEvent( QKeyEvent *event )
|
||||
{
|
||||
if ( event->key() == Qt::Key_Escape )
|
||||
{
|
||||
accept();
|
||||
}
|
||||
}
|
@ -1,84 +0,0 @@
|
||||
/***************************************************************************
|
||||
qgsrendererwidgetcontainer.h
|
||||
---------------------
|
||||
begin : June 2016
|
||||
copyright : (C) 2016 by Nathan Woodrow
|
||||
email :
|
||||
***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
#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( QgsRendererWidgetContainer* container );
|
||||
|
||||
/**
|
||||
* Emiited when the internal widget changes state.
|
||||
* @param conatiner The container holding the widget that changed state.
|
||||
*/
|
||||
void widgetChanged( QgsRendererWidgetContainer* conatiner );
|
||||
|
||||
public slots:
|
||||
|
||||
/**
|
||||
* Accept the container. Causes accepted to be emiited.
|
||||
*/
|
||||
void accept();
|
||||
|
||||
/**
|
||||
* Fire the widgetChanged event on the container. Connect your widgets dirty signal to
|
||||
* this slot to fire the and listen to widgetChanged to handle the event.
|
||||
*/
|
||||
void emitWidgetChanged();
|
||||
|
||||
protected:
|
||||
/**
|
||||
* @brief Overriden key press event to handle the esc event on the widget.
|
||||
* @param event The key event
|
||||
*/
|
||||
void keyPressEvent( QKeyEvent* event );
|
||||
|
||||
private:
|
||||
QWidget* mWidget;
|
||||
|
||||
};
|
||||
|
||||
#endif // QGSRENDERERWIDGETCONTAINER_H
|
@ -51,8 +51,9 @@ QgsSingleSymbolRendererV2Widget::QgsSingleSymbolRendererV2Widget( QgsVectorLayer
|
||||
mSingleSymbol = mRenderer->symbol()->clone();
|
||||
|
||||
// setup ui
|
||||
mSelector = new QgsSymbolV2SelectorDialog( mSingleSymbol, mStyle, mLayer, nullptr, true );
|
||||
mSelector = new QgsSymbolV2SelectorWidget( mSingleSymbol, mStyle, mLayer, nullptr );
|
||||
connect( mSelector, SIGNAL( symbolModified() ), this, SLOT( changeSingleSymbol() ) );
|
||||
connect( mSelector, SIGNAL( showPanel( QgsPanelWidget* ) ), this, SIGNAL( showPanel( QgsPanelWidget* ) ) );
|
||||
|
||||
QVBoxLayout* layout = new QVBoxLayout( this );
|
||||
layout->setContentsMargins( 0, 0, 0, 0 );
|
||||
@ -86,6 +87,14 @@ void QgsSingleSymbolRendererV2Widget::setMapCanvas( QgsMapCanvas* canvas )
|
||||
mSelector->setMapCanvas( canvas );
|
||||
}
|
||||
|
||||
void QgsSingleSymbolRendererV2Widget::setDockMode( bool dockMode )
|
||||
{
|
||||
QgsRendererV2Widget::setDockMode( dockMode );
|
||||
mDockMode = dockMode;
|
||||
if ( mSelector )
|
||||
mSelector->setDockMode( dockMode );
|
||||
}
|
||||
|
||||
void QgsSingleSymbolRendererV2Widget::changeSingleSymbol()
|
||||
{
|
||||
// update symbol from the GUI
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "qgsrendererv2widget.h"
|
||||
|
||||
class QgsSingleSymbolRendererV2;
|
||||
class QgsSymbolV2SelectorDialog;
|
||||
class QgsSymbolV2SelectorWidget;
|
||||
|
||||
class QMenu;
|
||||
|
||||
@ -36,6 +36,13 @@ class GUI_EXPORT QgsSingleSymbolRendererV2Widget : public QgsRendererV2Widget
|
||||
|
||||
virtual void setMapCanvas( QgsMapCanvas* canvas ) override;
|
||||
|
||||
/**
|
||||
* Set the widget in dock mode which tells the widget to emit panel
|
||||
* widgets and not open dialogs
|
||||
* @param dockMode True to enable dock mode.
|
||||
*/
|
||||
virtual void setDockMode( bool dockMode ) override;
|
||||
|
||||
public slots:
|
||||
void changeSingleSymbol();
|
||||
|
||||
@ -47,7 +54,7 @@ class GUI_EXPORT QgsSingleSymbolRendererV2Widget : public QgsRendererV2Widget
|
||||
protected:
|
||||
|
||||
QgsSingleSymbolRendererV2* mRenderer;
|
||||
QgsSymbolV2SelectorDialog* mSelector;
|
||||
QgsSymbolV2SelectorWidget* mSelector;
|
||||
QgsSymbolV2* mSingleSymbol;
|
||||
};
|
||||
|
||||
|
@ -208,8 +208,8 @@ class SymbolLayerItem : public QStandardItem
|
||||
|
||||
//////////
|
||||
|
||||
QgsSymbolV2SelectorDialog::QgsSymbolV2SelectorDialog( QgsSymbolV2* symbol, QgsStyleV2* style, const QgsVectorLayer* vl, QWidget* parent, bool embedded )
|
||||
: QDialog( parent )
|
||||
QgsSymbolV2SelectorWidget::QgsSymbolV2SelectorWidget( QgsSymbolV2* symbol, QgsStyleV2* style, const QgsVectorLayer* vl, QWidget* parent )
|
||||
: QgsPanelWidget( parent )
|
||||
, mAdvancedMenu( nullptr )
|
||||
, mVectorLayer( vl )
|
||||
, mMapCanvas( nullptr )
|
||||
@ -223,15 +223,6 @@ QgsSymbolV2SelectorDialog::QgsSymbolV2SelectorDialog( QgsSymbolV2* symbol, QgsSt
|
||||
|
||||
setupUi( this );
|
||||
|
||||
QSettings settings;
|
||||
restoreGeometry( settings.value( "/Windows/SymbolSelectorDialog/geometry" ).toByteArray() );
|
||||
|
||||
// can be embedded in renderer properties dialog
|
||||
if ( embedded )
|
||||
{
|
||||
buttonBox->hide();
|
||||
layout()->setContentsMargins( 0, 0, 0, 0 );
|
||||
}
|
||||
// setup icons
|
||||
btnAddLayer->setIcon( QIcon( QgsApplication::iconPath( "symbologyAdd.svg" ) ) );
|
||||
btnRemoveLayer->setIcon( QIcon( QgsApplication::iconPath( "symbologyRemove.svg" ) ) );
|
||||
@ -262,34 +253,22 @@ QgsSymbolV2SelectorDialog::QgsSymbolV2SelectorDialog( QgsSymbolV2* symbol, QgsSt
|
||||
connect( btnRemoveLayer, SIGNAL( clicked() ), this, SLOT( removeLayer() ) );
|
||||
connect( btnLock, SIGNAL( clicked() ), this, SLOT( lockLayer() ) );
|
||||
connect( btnDuplicate, SIGNAL( clicked() ), this, SLOT( duplicateLayer() ) );
|
||||
connect( this, SIGNAL( symbolModified() ), this, SIGNAL( widgetChanged() ) );
|
||||
|
||||
updateUi();
|
||||
|
||||
// set symbol as active item in the tree
|
||||
QModelIndex newIndex = layersTree->model()->index( 0, 0 );
|
||||
layersTree->setCurrentIndex( newIndex );
|
||||
|
||||
setPanelTitle( tr( "Symbol selector" ) );
|
||||
}
|
||||
|
||||
QgsSymbolV2SelectorDialog::~QgsSymbolV2SelectorDialog()
|
||||
QgsSymbolV2SelectorWidget::~QgsSymbolV2SelectorWidget()
|
||||
{
|
||||
QSettings settings;
|
||||
settings.setValue( "/Windows/SymbolSelectorDialog/geometry", saveGeometry() );
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::keyPressEvent( QKeyEvent * e )
|
||||
{
|
||||
// Ignore the ESC key to avoid close the dialog without the properties window
|
||||
if ( !isWindow() && e->key() == Qt::Key_Escape )
|
||||
{
|
||||
e->ignore();
|
||||
}
|
||||
else
|
||||
{
|
||||
QDialog::keyPressEvent( e );
|
||||
}
|
||||
}
|
||||
|
||||
QMenu* QgsSymbolV2SelectorDialog::advancedMenu()
|
||||
QMenu* QgsSymbolV2SelectorWidget::advancedMenu()
|
||||
{
|
||||
if ( !mAdvancedMenu )
|
||||
{
|
||||
@ -300,14 +279,14 @@ QMenu* QgsSymbolV2SelectorDialog::advancedMenu()
|
||||
return mAdvancedMenu;
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::setExpressionContext( QgsExpressionContext *context )
|
||||
void QgsSymbolV2SelectorWidget::setExpressionContext( QgsExpressionContext *context )
|
||||
{
|
||||
mPresetExpressionContext.reset( context );
|
||||
layerChanged();
|
||||
updatePreview();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::setMapCanvas( QgsMapCanvas *canvas )
|
||||
void QgsSymbolV2SelectorWidget::setMapCanvas( QgsMapCanvas *canvas )
|
||||
{
|
||||
mMapCanvas = canvas;
|
||||
|
||||
@ -321,7 +300,12 @@ void QgsSymbolV2SelectorDialog::setMapCanvas( QgsMapCanvas *canvas )
|
||||
listWidget->setMapCanvas( canvas );
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::loadSymbol( QgsSymbolV2* symbol, SymbolLayerItem* parent )
|
||||
void QgsSymbolV2SelectorWidget::setDockMode( bool dockMode )
|
||||
{
|
||||
mDockMode = dockMode;
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorWidget::loadSymbol( QgsSymbolV2* symbol, SymbolLayerItem* parent )
|
||||
{
|
||||
SymbolLayerItem* symbolItem = new SymbolLayerItem( symbol );
|
||||
QFont boldFont = symbolItem->font();
|
||||
@ -345,13 +329,13 @@ void QgsSymbolV2SelectorDialog::loadSymbol( QgsSymbolV2* symbol, SymbolLayerItem
|
||||
}
|
||||
|
||||
|
||||
void QgsSymbolV2SelectorDialog::loadSymbol()
|
||||
void QgsSymbolV2SelectorWidget::loadSymbol()
|
||||
{
|
||||
model->clear();
|
||||
loadSymbol( mSymbol, static_cast<SymbolLayerItem*>( model->invisibleRootItem() ) );
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::updateUi()
|
||||
void QgsSymbolV2SelectorWidget::updateUi()
|
||||
{
|
||||
QModelIndex currentIdx = layersTree->currentIndex();
|
||||
if ( !currentIdx.isValid() )
|
||||
@ -378,7 +362,7 @@ void QgsSymbolV2SelectorDialog::updateUi()
|
||||
btnDuplicate->setEnabled( true );
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::updatePreview()
|
||||
void QgsSymbolV2SelectorWidget::updatePreview()
|
||||
{
|
||||
QImage preview = mSymbol->bigSymbolPreviewImage( mPresetExpressionContext.data() );
|
||||
lblPreview->setPixmap( QPixmap::fromImage( preview ) );
|
||||
@ -386,7 +370,7 @@ void QgsSymbolV2SelectorDialog::updatePreview()
|
||||
emit symbolModified();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::updateLayerPreview()
|
||||
void QgsSymbolV2SelectorWidget::updateLayerPreview()
|
||||
{
|
||||
// get current layer item and update its icon
|
||||
SymbolLayerItem* item = currentLayerItem();
|
||||
@ -396,7 +380,7 @@ void QgsSymbolV2SelectorDialog::updateLayerPreview()
|
||||
updatePreview();
|
||||
}
|
||||
|
||||
SymbolLayerItem* QgsSymbolV2SelectorDialog::currentLayerItem()
|
||||
SymbolLayerItem* QgsSymbolV2SelectorWidget::currentLayerItem()
|
||||
{
|
||||
QModelIndex idx = layersTree->currentIndex();
|
||||
if ( !idx.isValid() )
|
||||
@ -409,7 +393,7 @@ SymbolLayerItem* QgsSymbolV2SelectorDialog::currentLayerItem()
|
||||
return item;
|
||||
}
|
||||
|
||||
QgsSymbolLayerV2* QgsSymbolV2SelectorDialog::currentLayer()
|
||||
QgsSymbolLayerV2* QgsSymbolV2SelectorWidget::currentLayer()
|
||||
{
|
||||
QModelIndex idx = layersTree->currentIndex();
|
||||
if ( !idx.isValid() )
|
||||
@ -422,7 +406,7 @@ QgsSymbolLayerV2* QgsSymbolV2SelectorDialog::currentLayer()
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::layerChanged()
|
||||
void QgsSymbolV2SelectorWidget::layerChanged()
|
||||
{
|
||||
updateUi();
|
||||
|
||||
@ -435,6 +419,7 @@ void QgsSymbolV2SelectorDialog::layerChanged()
|
||||
SymbolLayerItem *parent = static_cast<SymbolLayerItem*>( currentItem->parent() );
|
||||
mDataDefineRestorer.reset( new DataDefinedRestorer( parent->symbol(), currentItem->layer() ) );
|
||||
QgsLayerPropertiesWidget *layerProp = new QgsLayerPropertiesWidget( currentItem->layer(), parent->symbol(), mVectorLayer );
|
||||
layerProp->setDockMode( mDockMode );
|
||||
layerProp->setExpressionContext( mPresetExpressionContext.data() );
|
||||
layerProp->setMapCanvas( mMapCanvas );
|
||||
setWidget( layerProp );
|
||||
@ -442,6 +427,8 @@ void QgsSymbolV2SelectorDialog::layerChanged()
|
||||
connect( layerProp, SIGNAL( changed() ), this, SLOT( updateLayerPreview() ) );
|
||||
// This connection when layer type is changed
|
||||
connect( layerProp, SIGNAL( changeLayer( QgsSymbolLayerV2* ) ), this, SLOT( changeLayer( QgsSymbolLayerV2* ) ) );
|
||||
|
||||
connectChildPanel( layerProp );
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -459,7 +446,7 @@ void QgsSymbolV2SelectorDialog::layerChanged()
|
||||
updateLockButton();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::symbolChanged()
|
||||
void QgsSymbolV2SelectorWidget::symbolChanged()
|
||||
{
|
||||
SymbolLayerItem *currentItem = static_cast<SymbolLayerItem*>( model->itemFromIndex( layersTree->currentIndex() ) );
|
||||
if ( !currentItem || currentItem->isLayer() )
|
||||
@ -488,7 +475,7 @@ void QgsSymbolV2SelectorDialog::symbolChanged()
|
||||
connect( layersTree->selectionModel(), SIGNAL( currentChanged( const QModelIndex&, const QModelIndex& ) ), this, SLOT( layerChanged() ) );
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::setWidget( QWidget* widget )
|
||||
void QgsSymbolV2SelectorWidget::setWidget( QWidget* widget )
|
||||
{
|
||||
int index = stackedWidget->addWidget( widget );
|
||||
stackedWidget->setCurrentIndex( index );
|
||||
@ -497,7 +484,7 @@ void QgsSymbolV2SelectorDialog::setWidget( QWidget* widget )
|
||||
mPresentWidget = widget;
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::updateLockButton()
|
||||
void QgsSymbolV2SelectorWidget::updateLockButton()
|
||||
{
|
||||
QgsSymbolLayerV2* layer = currentLayer();
|
||||
if ( !layer )
|
||||
@ -505,7 +492,7 @@ void QgsSymbolV2SelectorDialog::updateLockButton()
|
||||
btnLock->setChecked( layer->isLocked() );
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::addLayer()
|
||||
void QgsSymbolV2SelectorWidget::addLayer()
|
||||
{
|
||||
QModelIndex idx = layersTree->currentIndex();
|
||||
if ( !idx.isValid() )
|
||||
@ -555,7 +542,7 @@ void QgsSymbolV2SelectorDialog::addLayer()
|
||||
updatePreview();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::removeLayer()
|
||||
void QgsSymbolV2SelectorWidget::removeLayer()
|
||||
{
|
||||
SymbolLayerItem *item = currentLayerItem();
|
||||
int row = item->row();
|
||||
@ -577,17 +564,17 @@ void QgsSymbolV2SelectorDialog::removeLayer()
|
||||
delete tmpLayer;
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::moveLayerDown()
|
||||
void QgsSymbolV2SelectorWidget::moveLayerDown()
|
||||
{
|
||||
moveLayerByOffset( + 1 );
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::moveLayerUp()
|
||||
void QgsSymbolV2SelectorWidget::moveLayerUp()
|
||||
{
|
||||
moveLayerByOffset( -1 );
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::moveLayerByOffset( int offset )
|
||||
void QgsSymbolV2SelectorWidget::moveLayerByOffset( int offset )
|
||||
{
|
||||
SymbolLayerItem *item = currentLayerItem();
|
||||
if ( !item )
|
||||
@ -613,7 +600,7 @@ void QgsSymbolV2SelectorDialog::moveLayerByOffset( int offset )
|
||||
updateUi();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::lockLayer()
|
||||
void QgsSymbolV2SelectorWidget::lockLayer()
|
||||
{
|
||||
QgsSymbolLayerV2* layer = currentLayer();
|
||||
if ( !layer )
|
||||
@ -621,7 +608,7 @@ void QgsSymbolV2SelectorDialog::lockLayer()
|
||||
layer->setLocked( btnLock->isChecked() );
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::duplicateLayer()
|
||||
void QgsSymbolV2SelectorWidget::duplicateLayer()
|
||||
{
|
||||
QModelIndex idx = layersTree->currentIndex();
|
||||
if ( !idx.isValid() )
|
||||
@ -658,7 +645,7 @@ void QgsSymbolV2SelectorDialog::duplicateLayer()
|
||||
updatePreview();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::saveSymbol()
|
||||
void QgsSymbolV2SelectorWidget::saveSymbol()
|
||||
{
|
||||
bool ok;
|
||||
QString name = QInputDialog::getText( this, tr( "Symbol name" ),
|
||||
@ -686,7 +673,7 @@ void QgsSymbolV2SelectorDialog::saveSymbol()
|
||||
mStyle->saveSymbol( name, mSymbol->clone(), 0, QStringList() );
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::changeLayer( QgsSymbolLayerV2* newLayer )
|
||||
void QgsSymbolV2SelectorWidget::changeLayer( QgsSymbolLayerV2* newLayer )
|
||||
{
|
||||
SymbolLayerItem* item = currentLayerItem();
|
||||
QgsSymbolLayerV2* layer = item->layer();
|
||||
@ -714,3 +701,172 @@ void QgsSymbolV2SelectorDialog::changeLayer( QgsSymbolLayerV2* newLayer )
|
||||
// Important: This lets the layer have its own layer properties widget
|
||||
layerChanged();
|
||||
}
|
||||
|
||||
QgsSymbolV2SelectorDialog::QgsSymbolV2SelectorDialog( QgsSymbolV2 *symbol, QgsStyleV2 *style, const QgsVectorLayer *vl, QWidget *parent, bool embedded )
|
||||
: QDialog( parent )
|
||||
{
|
||||
setLayout( new QVBoxLayout() );
|
||||
mSelectorWidget = new QgsSymbolV2SelectorWidget( symbol, style, vl, this );
|
||||
mButtonBox = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
|
||||
|
||||
connect( mButtonBox, SIGNAL( accepted() ), this, SLOT( accept() ) );
|
||||
connect( mButtonBox, SIGNAL( rejected() ), this, SLOT( reject() ) );
|
||||
|
||||
layout()->addWidget( mSelectorWidget );
|
||||
layout()->addWidget( mButtonBox );
|
||||
|
||||
QSettings settings;
|
||||
restoreGeometry( settings.value( "/Windows/SymbolSelectorWidget/geometry" ).toByteArray() );
|
||||
|
||||
// can be embedded in renderer properties dialog
|
||||
if ( embedded )
|
||||
{
|
||||
mButtonBox->hide();
|
||||
layout()->setContentsMargins( 0, 0, 0, 0 );
|
||||
}
|
||||
mSelectorWidget->setDockMode( embedded );
|
||||
}
|
||||
|
||||
QgsSymbolV2SelectorDialog::~QgsSymbolV2SelectorDialog()
|
||||
{
|
||||
QSettings settings;
|
||||
settings.setValue( "/Windows/SymbolSelectorWidget/geometry", saveGeometry() );
|
||||
}
|
||||
|
||||
QMenu *QgsSymbolV2SelectorDialog::advancedMenu()
|
||||
{
|
||||
return mSelectorWidget->advancedMenu();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::setExpressionContext( QgsExpressionContext *context )
|
||||
{
|
||||
mSelectorWidget->setExpressionContext( context );
|
||||
}
|
||||
|
||||
QgsExpressionContext *QgsSymbolV2SelectorDialog::expressionContext() const
|
||||
{
|
||||
return mSelectorWidget->expressionContext();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::setMapCanvas( QgsMapCanvas *canvas )
|
||||
{
|
||||
mSelectorWidget->setMapCanvas( canvas );
|
||||
}
|
||||
|
||||
QgsSymbolV2 *QgsSymbolV2SelectorDialog::symbol()
|
||||
{
|
||||
return mSelectorWidget->symbol();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::keyPressEvent( QKeyEvent *e )
|
||||
{
|
||||
// Ignore the ESC key to avoid close the dialog without the properties window
|
||||
if ( !isWindow() && e->key() == Qt::Key_Escape )
|
||||
{
|
||||
e->ignore();
|
||||
}
|
||||
else
|
||||
{
|
||||
QDialog::keyPressEvent( e );
|
||||
}
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::loadSymbol()
|
||||
{
|
||||
mSelectorWidget->loadSymbol();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::loadSymbol( QgsSymbolV2 *symbol, SymbolLayerItem *parent )
|
||||
{
|
||||
mSelectorWidget->loadSymbol( symbol, parent );
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::updateUi()
|
||||
{
|
||||
mSelectorWidget->updateUi();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::updateLockButton()
|
||||
{
|
||||
mSelectorWidget->updateLockButton();
|
||||
}
|
||||
|
||||
SymbolLayerItem *QgsSymbolV2SelectorDialog::currentLayerItem()
|
||||
{
|
||||
return mSelectorWidget->currentLayerItem();
|
||||
}
|
||||
|
||||
QgsSymbolLayerV2 *QgsSymbolV2SelectorDialog::currentLayer()
|
||||
{
|
||||
return mSelectorWidget->currentLayer();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::moveLayerByOffset( int offset )
|
||||
{
|
||||
mSelectorWidget->moveLayerByOffset( offset );
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::setWidget( QWidget *widget )
|
||||
{
|
||||
mSelectorWidget->setWidget( widget );
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::moveLayerDown()
|
||||
{
|
||||
mSelectorWidget->moveLayerDown();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::moveLayerUp()
|
||||
{
|
||||
mSelectorWidget->moveLayerUp();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::addLayer()
|
||||
{
|
||||
mSelectorWidget->addLayer();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::removeLayer()
|
||||
{
|
||||
mSelectorWidget->removeLayer();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::lockLayer()
|
||||
{
|
||||
mSelectorWidget->lockLayer();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::saveSymbol()
|
||||
{
|
||||
mSelectorWidget->saveSymbol();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::duplicateLayer()
|
||||
{
|
||||
mSelectorWidget->duplicateLayer();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::layerChanged()
|
||||
{
|
||||
mSelectorWidget->layerChanged();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::updateLayerPreview()
|
||||
{
|
||||
mSelectorWidget->updateLayerPreview();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::updatePreview()
|
||||
{
|
||||
mSelectorWidget->updatePreview();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::symbolChanged()
|
||||
{
|
||||
mSelectorWidget->symbolChanged();
|
||||
}
|
||||
|
||||
void QgsSymbolV2SelectorDialog::changeLayer( QgsSymbolLayerV2 *layer )
|
||||
{
|
||||
mSelectorWidget->changeLayer( layer );
|
||||
}
|
||||
|
@ -21,9 +21,11 @@
|
||||
#include "ui_qgssymbolv2selectordialogbase.h"
|
||||
|
||||
#include "qgsdatadefined.h"
|
||||
#include "qgspanelwidget.h"
|
||||
|
||||
#include <QStandardItemModel>
|
||||
#include <QScopedPointer>
|
||||
#include <QDialogButtonBox>
|
||||
|
||||
class QgsStyleV2;
|
||||
class QgsSymbolV2;
|
||||
@ -71,13 +73,27 @@ class DataDefinedRestorer: public QObject
|
||||
};
|
||||
///@endcond
|
||||
|
||||
class GUI_EXPORT QgsSymbolV2SelectorDialog : public QDialog, private Ui::QgsSymbolV2SelectorDialogBase
|
||||
class QgsSymbolV2SelectorDialog;
|
||||
|
||||
/**
|
||||
* Symbol selector widget that cna be used to select and build a symbol
|
||||
*/
|
||||
class GUI_EXPORT QgsSymbolV2SelectorWidget: public QgsPanelWidget, private Ui::QgsSymbolV2SelectorDialogBase
|
||||
{
|
||||
Q_OBJECT
|
||||
/// Too allow for non API break access from the dialog.
|
||||
friend class QgsSymbolV2SelectorDialog;
|
||||
|
||||
public:
|
||||
QgsSymbolV2SelectorDialog( QgsSymbolV2* symbol, QgsStyleV2* style, const QgsVectorLayer* vl, QWidget* parent = nullptr, bool embedded = false );
|
||||
~QgsSymbolV2SelectorDialog();
|
||||
/**
|
||||
* Symbol selector widget that cna be used to select and build a symbol
|
||||
* @param symbol The symbol to load into the widget as a start point.
|
||||
* @param style The style used by the widget.
|
||||
* @param vl The vector layer for the symbol.
|
||||
* @param parent
|
||||
*/
|
||||
QgsSymbolV2SelectorWidget( QgsSymbolV2* symbol, QgsStyleV2* style, const QgsVectorLayer* vl, QWidget* parent = nullptr );
|
||||
~QgsSymbolV2SelectorWidget();
|
||||
|
||||
//! return menu for "advanced" button - create it if doesn't exist and show the advanced button
|
||||
QMenu* advancedMenu();
|
||||
@ -112,9 +128,185 @@ class GUI_EXPORT QgsSymbolV2SelectorDialog : public QDialog, private Ui::QgsSymb
|
||||
*/
|
||||
QgsSymbolV2* symbol() { return mSymbol; }
|
||||
|
||||
/**
|
||||
* Set the widget in dock mode which will emit showPanel when a sub widget requests
|
||||
* to show a widget.
|
||||
* @param dockMode True to enable dock mode.
|
||||
*/
|
||||
void setDockMode( bool dockMode );
|
||||
|
||||
protected:
|
||||
|
||||
/**
|
||||
* Reload the current symbol in the view.
|
||||
*/
|
||||
void loadSymbol();
|
||||
//! @note not available in python bindings
|
||||
|
||||
/**
|
||||
* Load the given symbol into the widget..
|
||||
* @param symbol The symbol to load.
|
||||
* @param parent The parent symbol layer item.
|
||||
*/
|
||||
void loadSymbol( QgsSymbolV2* symbol, SymbolLayerItem* parent );
|
||||
|
||||
/**
|
||||
* Update the state of the UI based on the currently set symbol layer.
|
||||
*/
|
||||
void updateUi();
|
||||
|
||||
/**
|
||||
* Update the lock button states based on the current symbol layer.
|
||||
*/
|
||||
void updateLockButton();
|
||||
|
||||
//! @note not available in python bindings
|
||||
SymbolLayerItem* currentLayerItem();
|
||||
|
||||
/**
|
||||
* The current symbol layer that is active in the interface.
|
||||
* @return The active symbol layer.
|
||||
*/
|
||||
QgsSymbolLayerV2* currentLayer();
|
||||
|
||||
/**
|
||||
* Move the current active layer by a set offset in the list.
|
||||
* @param offset The offset to move the layer by
|
||||
*/
|
||||
void moveLayerByOffset( int offset );
|
||||
|
||||
/**
|
||||
* Set the properties widget for the active symbol layer.
|
||||
* @param widget The widget to set to configure the active symbol layer.
|
||||
*/
|
||||
void setWidget( QWidget* widget );
|
||||
|
||||
signals:
|
||||
/**
|
||||
* Emiited when a symbol is modified in the widget.
|
||||
*/
|
||||
void symbolModified();
|
||||
|
||||
public slots:
|
||||
/**
|
||||
* Move the active symbol layer down.
|
||||
*/
|
||||
void moveLayerDown();
|
||||
|
||||
/**
|
||||
* Move the active symbol layer up.
|
||||
*/
|
||||
void moveLayerUp();
|
||||
|
||||
/**
|
||||
* Add a symobl layer to the bottom of the stack.
|
||||
*/
|
||||
void addLayer();
|
||||
|
||||
/**
|
||||
* Remove the current active symbol layer.
|
||||
*/
|
||||
void removeLayer();
|
||||
|
||||
/**
|
||||
* Lock the current active symbol layer.
|
||||
*/
|
||||
void lockLayer();
|
||||
|
||||
/**
|
||||
* Save the current active symbol layer into the users saved styles.
|
||||
*/
|
||||
Q_DECL_DEPRECATED void saveSymbol();
|
||||
|
||||
//! Duplicates the current symbol layer and places the duplicated layer above the current symbol layer
|
||||
//! @note added in QGIS 2.14
|
||||
void duplicateLayer();
|
||||
|
||||
/**
|
||||
* Called when the layer changes in the widget. Updates the active properties for
|
||||
* active symbol layer.
|
||||
*/
|
||||
void layerChanged();
|
||||
|
||||
/**
|
||||
* Update the single symbol layer preview in the widget.
|
||||
*/
|
||||
void updateLayerPreview();
|
||||
|
||||
/**
|
||||
* Update the preivew of the whole symbol in the iterface.
|
||||
*/
|
||||
void updatePreview();
|
||||
|
||||
//! Slot to update tree when a new symbol from style
|
||||
void symbolChanged();
|
||||
//! alters tree and sets proper widget when Layer Type is changed
|
||||
//! @note: The layer is received from the LayerPropertiesWidget
|
||||
void changeLayer( QgsSymbolLayerV2* layer );
|
||||
|
||||
|
||||
protected: // data
|
||||
QgsStyleV2* mStyle;
|
||||
QgsSymbolV2* mSymbol;
|
||||
QMenu* mAdvancedMenu;
|
||||
const QgsVectorLayer* mVectorLayer;
|
||||
|
||||
QStandardItemModel* model;
|
||||
QWidget *mPresentWidget;
|
||||
|
||||
private:
|
||||
bool mDockMode;
|
||||
QScopedPointer<DataDefinedRestorer> mDataDefineRestorer;
|
||||
QScopedPointer< QgsExpressionContext > mPresetExpressionContext;
|
||||
|
||||
QgsMapCanvas* mMapCanvas;
|
||||
};
|
||||
|
||||
|
||||
class GUI_EXPORT QgsSymbolV2SelectorDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QgsSymbolV2SelectorDialog( QgsSymbolV2* symbol, QgsStyleV2* style, const QgsVectorLayer* vl, QWidget* parent = nullptr, bool embedded = false );
|
||||
~QgsSymbolV2SelectorDialog();
|
||||
|
||||
//! return menu for "advanced" button - create it if doesn't exist and show the advanced button
|
||||
QMenu* advancedMenu();
|
||||
|
||||
/** Sets the optional expression context used for the widget. This expression context is used for
|
||||
* evaluating data defined symbol properties and for populating based expression widgets in
|
||||
* the layer widget.
|
||||
* @param context expression context pointer. Ownership is transferred to the dialog.
|
||||
* @note added in QGIS 2.12
|
||||
* @see expressionContext()
|
||||
*/
|
||||
void setExpressionContext( QgsExpressionContext* context );
|
||||
|
||||
/** Returns the expression context used for the dialog, if set. This expression context is used for
|
||||
* evaluating data defined symbol properties and for populating based expression widgets in
|
||||
* the dialog.
|
||||
* @note added in QGIS 2.12
|
||||
* @see setExpressionContext()
|
||||
*/
|
||||
QgsExpressionContext* expressionContext() const;
|
||||
|
||||
/** Sets the map canvas associated with the dialog. This allows the widget to retrieve the current
|
||||
* map scale and other properties from the canvas.
|
||||
* @param canvas map canvas
|
||||
* @note added in QGIS 2.12
|
||||
*/
|
||||
void setMapCanvas( QgsMapCanvas* canvas );
|
||||
|
||||
/**
|
||||
* @brief Return the symbol that is currently active in the widget. Can be null.
|
||||
* @return The active symbol.
|
||||
*/
|
||||
QgsSymbolV2* symbol();
|
||||
|
||||
protected:
|
||||
//! Reimplements dialog keyPress event so we can ignore it
|
||||
void keyPressEvent( QKeyEvent * event ) override;
|
||||
void keyPressEvent( QKeyEvent * e ) override;
|
||||
|
||||
void loadSymbol();
|
||||
//! @note not available in python bindings
|
||||
@ -161,21 +353,9 @@ class GUI_EXPORT QgsSymbolV2SelectorDialog : public QDialog, private Ui::QgsSymb
|
||||
//! @note: The layer is received from the LayerPropertiesWidget
|
||||
void changeLayer( QgsSymbolLayerV2* layer );
|
||||
|
||||
|
||||
protected: // data
|
||||
QgsStyleV2* mStyle;
|
||||
QgsSymbolV2* mSymbol;
|
||||
QMenu* mAdvancedMenu;
|
||||
const QgsVectorLayer* mVectorLayer;
|
||||
|
||||
QStandardItemModel* model;
|
||||
QWidget *mPresentWidget;
|
||||
|
||||
private:
|
||||
QScopedPointer<DataDefinedRestorer> mDataDefineRestorer;
|
||||
QScopedPointer< QgsExpressionContext > mPresetExpressionContext;
|
||||
|
||||
QgsMapCanvas* mMapCanvas;
|
||||
QgsSymbolV2SelectorWidget* mSelectorWidget;
|
||||
QDialogButtonBox* mButtonBox;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -27,7 +27,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="mainStack">
|
||||
<widget class="QgsPanelWidgetStackWidget" name="mainStack">
|
||||
<widget class="QWidget" name="page">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<property name="leftMargin">
|
||||
@ -218,7 +218,6 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="page_2"/>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
@ -241,6 +240,12 @@
|
||||
<header>effects/qgseffectstackpropertieswidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsPanelWidgetStackWidget</class>
|
||||
<extends>QStackedWidget</extends>
|
||||
<header>qgspanelwidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>cboRenderers</tabstop>
|
||||
|
@ -1,297 +1,249 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>QgsSymbolV2SelectorDialogBase</class>
|
||||
<widget class="QDialog" name="QgsSymbolV2SelectorDialogBase">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>364</width>
|
||||
<height>594</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Symbol selector</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QScrollArea" name="scrollArea">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="widgetResizable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="scrollAreaWidgetContents">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>364</width>
|
||||
<height>552</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>
|
||||
<widget class="QTreeView" name="layersTree">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>100</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::NoEditTriggers</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lblPreview">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>100</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Sunken</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<layout class="QHBoxLayout" name="pushBtnBox">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnAddLayer">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Add symbol layer</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnRemoveLayer">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Remove symbol layer</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnLock">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Lock layer's color</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnDuplicate">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Duplicates the current layer</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnUp">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Move up</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnDown">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Move down</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="Line" name="line">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QFrame" name="frame">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>4</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Sunken</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="stackedWidget">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>2</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<widget class="QWidget" name="page_2"/>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
<zorder>frame</zorder>
|
||||
<zorder>line</zorder>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>QgsSymbolV2SelectorDialogBase</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>257</x>
|
||||
<y>406</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>QgsSymbolV2SelectorDialogBase</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>325</x>
|
||||
<y>406</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>QgsSymbolV2SelectorDialogBase</class>
|
||||
<widget class="QWidget" name="QgsSymbolV2SelectorDialogBase">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>341</width>
|
||||
<height>616</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QScrollArea" name="scrollArea">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="widgetResizable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="scrollAreaWidgetContents">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>341</width>
|
||||
<height>616</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="1" column="0">
|
||||
<layout class="QHBoxLayout" name="pushBtnBox">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnAddLayer">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Add symbol layer</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnRemoveLayer">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Remove symbol layer</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnLock">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Lock layer's color</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnDuplicate">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Duplicates the current layer</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnUp">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Move up</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnDown">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Move down</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="Line" name="line">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QFrame" name="frame">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>4</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Sunken</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="stackedWidget">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>2</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<widget class="QWidget" name="page_2"/>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QTreeView" name="layersTree">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>100</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::NoEditTriggers</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lblPreview">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>100</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Sunken</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
<zorder>frame</zorder>
|
||||
<zorder>line</zorder>
|
||||
<zorder></zorder>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
@ -1,44 +1,63 @@
|
||||
<?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>
|
||||
<?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>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QToolButton" name="mBackButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Back</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../../images/images.qrc">
|
||||
<normaloff>:/images/themes/default/mActionArrowLeft.png</normaloff>:/images/themes/default/mActionArrowLeft.png</iconset>
|
||||
</property>
|
||||
<property name="toolButtonStyle">
|
||||
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<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/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="mWidgetLayout"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources>
|
||||
<include location="../../../images/images.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
Loading…
x
Reference in New Issue
Block a user