mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-28 00:17:30 -05:00
[styledock] inline new rule panel
This commit is contained in:
parent
1f0fce7852
commit
3fb87de1f8
@ -134,29 +134,24 @@ void QgsRuleBasedRendererV2Widget::addRule()
|
|||||||
QgsSymbolV2* s = QgsSymbolV2::defaultSymbol( mLayer->geometryType() );
|
QgsSymbolV2* s = QgsSymbolV2::defaultSymbol( mLayer->geometryType() );
|
||||||
QgsRuleBasedRendererV2::Rule* newrule = new QgsRuleBasedRendererV2::Rule( s );
|
QgsRuleBasedRendererV2::Rule* newrule = new QgsRuleBasedRendererV2::Rule( s );
|
||||||
|
|
||||||
QgsRendererRulePropsDialog dlg( newrule, mLayer, mStyle, this, mMapCanvas );
|
QgsRuleBasedRendererV2::Rule* current = currentRule();
|
||||||
if ( dlg.exec() )
|
if ( current )
|
||||||
{
|
{
|
||||||
QgsRuleBasedRendererV2::Rule* current = currentRule();
|
// add after this rule
|
||||||
if ( current )
|
QModelIndex currentIndex = viewRules->selectionModel()->currentIndex();
|
||||||
{
|
mModel->insertRule( currentIndex.parent(), currentIndex.row() + 1, newrule );
|
||||||
// add after this rule
|
QModelIndex newindex = mModel->index( currentIndex.row() + 1, 0, currentIndex.parent() );
|
||||||
QModelIndex currentIndex = viewRules->selectionModel()->currentIndex();
|
viewRules->selectionModel()->setCurrentIndex( newindex, QItemSelectionModel::ClearAndSelect );
|
||||||
mModel->insertRule( currentIndex.parent(), currentIndex.row() + 1, newrule );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// append to root rule
|
|
||||||
int rows = mModel->rowCount();
|
|
||||||
mModel->insertRule( QModelIndex(), rows, newrule );
|
|
||||||
}
|
|
||||||
mModel->clearFeatureCounts();
|
|
||||||
emit widgetChanged();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
delete newrule;
|
// append to root rule
|
||||||
|
int rows = mModel->rowCount();
|
||||||
|
mModel->insertRule( QModelIndex(), rows, newrule );
|
||||||
|
QModelIndex newindex = mModel->index( rows, 0 );
|
||||||
|
viewRules->selectionModel()->setCurrentIndex( newindex, QItemSelectionModel::ClearAndSelect );
|
||||||
}
|
}
|
||||||
|
editRule();
|
||||||
}
|
}
|
||||||
|
|
||||||
QgsRuleBasedRendererV2::Rule* QgsRuleBasedRendererV2Widget::currentRule()
|
QgsRuleBasedRendererV2::Rule* QgsRuleBasedRendererV2Widget::currentRule()
|
||||||
@ -180,12 +175,12 @@ void QgsRuleBasedRendererV2Widget::editRule( const QModelIndex& index )
|
|||||||
|
|
||||||
QgsRuleBasedRendererV2::Rule* rule = mModel->ruleForIndex( index );
|
QgsRuleBasedRendererV2::Rule* rule = mModel->ruleForIndex( index );
|
||||||
|
|
||||||
QgsRendererRulePropsWidget* widget = new QgsRendererRulePropsWidget( rule, mLayer, mStyle, this, mMapCanvas);
|
QgsRendererRulePropsWidget* widget = new QgsRendererRulePropsWidget( rule, mLayer, mStyle, this, mMapCanvas );
|
||||||
widget->setDockMode( true );
|
widget->setDockMode( true );
|
||||||
widget->setPanelTitle(tr("Edit rule"));
|
widget->setPanelTitle( tr( "Edit rule" ) );
|
||||||
connect( widget, SIGNAL(panelAccepted(QgsPanelWidget*)), this, SLOT(ruleWidgetPanelAccepted(QgsPanelWidget*)));
|
connect( widget, SIGNAL( panelAccepted( QgsPanelWidget* ) ), this, SLOT( ruleWidgetPanelAccepted( QgsPanelWidget* ) ) );
|
||||||
connect( widget, SIGNAL(widgetChanged()), this, SLOT(liveUpdateRuleFromPanel()));
|
connect( widget, SIGNAL( widgetChanged() ), this, SLOT( liveUpdateRuleFromPanel() ) );
|
||||||
openPanel(widget);
|
openPanel( widget );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QgsRuleBasedRendererV2Widget::removeRule()
|
void QgsRuleBasedRendererV2Widget::removeRule()
|
||||||
@ -491,20 +486,21 @@ void QgsRuleBasedRendererV2Widget::paste()
|
|||||||
mModel->dropMimeData( mime, Qt::CopyAction, index.row(), index.column(), index.parent() );
|
mModel->dropMimeData( mime, Qt::CopyAction, index.row(), index.column(), index.parent() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QgsRuleBasedRendererV2Widget::ruleWidgetPanelAccepted(QgsPanelWidget *panel)
|
void QgsRuleBasedRendererV2Widget::ruleWidgetPanelAccepted( QgsPanelWidget *panel )
|
||||||
{
|
{
|
||||||
QgsRendererRulePropsWidget* widget = qobject_cast<QgsRendererRulePropsWidget*>( panel );
|
QgsRendererRulePropsWidget* widget = qobject_cast<QgsRendererRulePropsWidget*>( panel );
|
||||||
widget->apply();
|
widget->apply();
|
||||||
|
|
||||||
// model should know about the change and emit dataChanged signal for the view
|
// model should know about the change and emit dataChanged signal for the view
|
||||||
QModelIndex index = viewRules->selectionModel()->currentIndex();
|
QModelIndex index = viewRules->selectionModel()->currentIndex();
|
||||||
mModel->updateRule( index.parent(), index.row() );
|
mModel->updateRule( index.parent(), index.row() );
|
||||||
mModel->clearFeatureCounts();
|
mModel->clearFeatureCounts();
|
||||||
|
emit widgetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QgsRuleBasedRendererV2Widget::liveUpdateRuleFromPanel()
|
void QgsRuleBasedRendererV2Widget::liveUpdateRuleFromPanel()
|
||||||
{
|
{
|
||||||
ruleWidgetPanelAccepted( qobject_cast<QgsPanelWidget*>(sender()));
|
ruleWidgetPanelAccepted( qobject_cast<QgsPanelWidget*>( sender() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -649,8 +645,8 @@ QgsRendererRulePropsWidget::QgsRendererRulePropsWidget( QgsRuleBasedRendererV2::
|
|||||||
|
|
||||||
mSymbolSelector = new QgsSymbolV2SelectorWidget( mSymbol, style, mLayer, this );
|
mSymbolSelector = new QgsSymbolV2SelectorWidget( mSymbol, style, mLayer, this );
|
||||||
mSymbolSelector->setMapCanvas( mMapCanvas );
|
mSymbolSelector->setMapCanvas( mMapCanvas );
|
||||||
connect(mSymbolSelector, SIGNAL(widgetChanged()), this, SIGNAL(widgetChanged()));
|
connect( mSymbolSelector, SIGNAL( widgetChanged() ), this, SIGNAL( widgetChanged() ) );
|
||||||
connect( mSymbolSelector, SIGNAL(showPanel(QgsPanelWidget*)), this, SLOT(openPanel(QgsPanelWidget*)));
|
connect( mSymbolSelector, SIGNAL( showPanel( QgsPanelWidget* ) ), this, SLOT( openPanel( QgsPanelWidget* ) ) );
|
||||||
|
|
||||||
QVBoxLayout* l = new QVBoxLayout;
|
QVBoxLayout* l = new QVBoxLayout;
|
||||||
l->addWidget( mSymbolSelector );
|
l->addWidget( mSymbolSelector );
|
||||||
@ -666,20 +662,20 @@ QgsRendererRulePropsWidget::~QgsRendererRulePropsWidget()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QgsRendererRulePropsDialog::QgsRendererRulePropsDialog(QgsRuleBasedRendererV2::Rule *rule, QgsVectorLayer *layer, QgsStyleV2 *style, QWidget *parent, QgsMapCanvas *mapCanvas)
|
QgsRendererRulePropsDialog::QgsRendererRulePropsDialog( QgsRuleBasedRendererV2::Rule *rule, QgsVectorLayer *layer, QgsStyleV2 *style, QWidget *parent, QgsMapCanvas *mapCanvas )
|
||||||
: QDialog(parent)
|
: QDialog( parent )
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
setWindowModality( Qt::WindowModal );
|
setWindowModality( Qt::WindowModal );
|
||||||
#endif
|
#endif
|
||||||
this->setLayout(new QVBoxLayout());
|
this->setLayout( new QVBoxLayout() );
|
||||||
|
|
||||||
buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
buttonBox = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
|
||||||
mPropsWidget = new QgsRendererRulePropsWidget(rule, layer, style, this, mapCanvas);
|
mPropsWidget = new QgsRendererRulePropsWidget( rule, layer, style, this, mapCanvas );
|
||||||
|
|
||||||
this->layout()->addWidget(mPropsWidget);
|
this->layout()->addWidget( mPropsWidget );
|
||||||
this->layout()->addWidget(buttonBox);
|
this->layout()->addWidget( buttonBox );
|
||||||
|
|
||||||
connect( buttonBox, SIGNAL( accepted() ), this, SLOT( accept() ) );
|
connect( buttonBox, SIGNAL( accepted() ), this, SLOT( accept() ) );
|
||||||
connect( buttonBox, SIGNAL( rejected() ), this, SLOT( reject() ) );
|
connect( buttonBox, SIGNAL( rejected() ), this, SLOT( reject() ) );
|
||||||
@ -796,7 +792,7 @@ void QgsRendererRulePropsWidget::apply()
|
|||||||
mRule->setSymbol( groupSymbol->isChecked() ? mSymbol->clone() : nullptr );
|
mRule->setSymbol( groupSymbol->isChecked() ? mSymbol->clone() : nullptr );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QgsRendererRulePropsWidget::setDockMode(bool dockMode)
|
void QgsRendererRulePropsWidget::setDockMode( bool dockMode )
|
||||||
{
|
{
|
||||||
QgsPanelWidget::setDockMode( dockMode );
|
QgsPanelWidget::setDockMode( dockMode );
|
||||||
mSymbolSelector->setDockMode( true );
|
mSymbolSelector->setDockMode( true );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user