[styledock] Fix undo redo

This commit is contained in:
Nathan Woodrow 2016-05-26 15:32:59 +10:00
parent 17b48563a5
commit 705d4f5894
2 changed files with 43 additions and 25 deletions

View File

@ -42,6 +42,13 @@ QgsMapStylingWidget::QgsMapStylingWidget( QgsMapCanvas* canvas, QWidget *parent
mAutoApplyTimer = new QTimer( this ); mAutoApplyTimer = new QTimer( this );
mAutoApplyTimer->setSingleShot( true ); mAutoApplyTimer->setSingleShot( true );
mUndoWidget = new QgsUndoWidget( this, mMapCanvas );
mUndoWidget->setObjectName( "Undo Styles" );
mUndoWidget->hide();
connect( mUndoButton, SIGNAL( pressed() ), mUndoWidget, SLOT( undo() ) );
connect( mRedoButton, SIGNAL( pressed() ), mUndoWidget, SLOT( redo() ) );
connect( mAutoApplyTimer, SIGNAL( timeout() ), this, SLOT( apply() ) ); connect( mAutoApplyTimer, SIGNAL( timeout() ), this, SLOT( apply() ) );
connect( mOptionsListWidget, SIGNAL( currentRowChanged( int ) ), this, SLOT( updateCurrentWidgetLayer() ) ); connect( mOptionsListWidget, SIGNAL( currentRowChanged( int ) ), this, SLOT( updateCurrentWidgetLayer() ) );
@ -168,6 +175,8 @@ void QgsMapStylingWidget::updateCurrentWidgetLayer()
QgsMapLayer* layer = mCurrentLayer; QgsMapLayer* layer = mCurrentLayer;
mUndoWidget->setUndoStack( layer->undoStackStyles() );
mLayerTitleLabel->setText( layer->name() ); mLayerTitleLabel->setText( layer->name() );
if ( layer->type() == QgsMapLayer::VectorLayer ) if ( layer->type() == QgsMapLayer::VectorLayer )
@ -181,6 +190,10 @@ void QgsMapStylingWidget::updateCurrentWidgetLayer()
{ {
mLabelingWidget = widget; mLabelingWidget = widget;
} }
else if ( QgsUndoWidget* widget = qobject_cast<QgsUndoWidget*>( current ) )
{
mUndoWidget = widget;
}
else else
{ {
current->deleteLater(); current->deleteLater();
@ -208,11 +221,6 @@ void QgsMapStylingWidget::updateCurrentWidgetLayer()
break; break;
} }
case 2: // History case 2: // History
mUndoWidget = new QgsUndoWidget( mOptionsListWidget, mMapCanvas );
mUndoWidget->setObjectName( "Undo Styles" );
mUndoWidget->setUndoStack( layer->undoStackStyles() );
connect( mUndoButton, SIGNAL( pressed() ), mUndoWidget, SLOT( undo() ) );
connect( mRedoButton, SIGNAL( pressed() ), mUndoWidget, SLOT( redo() ) );
mWidgetArea->setWidget( mUndoWidget ); mWidgetArea->setWidget( mUndoWidget );
break; break;
default: default:
@ -235,6 +243,10 @@ void QgsMapStylingWidget::updateCurrentWidgetLayer()
{ {
mRasterStyleWidget = widget; mRasterStyleWidget = widget;
} }
else if ( QgsUndoWidget* widget = qobject_cast<QgsUndoWidget*>( current ) )
{
mUndoWidget = widget;
}
else else
{ {
current->deleteLater(); current->deleteLater();
@ -276,12 +288,6 @@ void QgsMapStylingWidget::updateCurrentWidgetLayer()
break; break;
} }
case 3: // History case 3: // History
mUndoWidget = new QgsUndoWidget( mOptionsListWidget, mMapCanvas );
mUndoWidget->setObjectName( "Undo Styles" );
mUndoWidget->setUndoStack( layer->undoStackStyles() );
connect( mUndoButton, SIGNAL( pressed() ), mUndoWidget, SLOT( undo() ) );
connect( mRedoButton, SIGNAL( pressed() ), mUndoWidget, SLOT( redo() ) );
mWidgetArea->setWidget( mUndoWidget ); mWidgetArea->setWidget( mUndoWidget );
break; break;
default: default:

View File

@ -14,13 +14,22 @@
<string>Form</string> <string>Form</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_2"> <layout class="QGridLayout" name="gridLayout_2">
<property name="margin"> <property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number> <number>3</number>
</property> </property>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QStackedWidget" name="mStackedWidget"> <widget class="QStackedWidget" name="mStackedWidget">
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="page"> <widget class="QWidget" name="page">
<layout class="QGridLayout" name="gridLayout_3"> <layout class="QGridLayout" name="gridLayout_3">
@ -35,16 +44,25 @@
</widget> </widget>
<widget class="QWidget" name="page_2"> <widget class="QWidget" name="page_2">
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="horizontalSpacing"> <property name="horizontalSpacing">
<number>3</number> <number>3</number>
</property> </property>
<property name="margin">
<number>0</number>
</property>
<item row="2" column="1"> <item row="2" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
<widget class="QToolButton" name="mRedoButton"> <widget class="QToolButton" name="mUndoButton">
<property name="text"> <property name="text">
<string>...</string> <string>...</string>
</property> </property>
@ -55,7 +73,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QToolButton" name="mUndoButton"> <widget class="QToolButton" name="mRedoButton">
<property name="text"> <property name="text">
<string>...</string> <string>...</string>
</property> </property>
@ -184,7 +202,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>320</width> <width>320</width>
<height>388</height> <height>401</height>
</rect> </rect>
</property> </property>
</widget> </widget>
@ -195,12 +213,6 @@
</widget> </widget>
</item> </item>
</layout> </layout>
<zorder>mLayerTitleLabel</zorder>
<zorder>mLiveApplyCheck</zorder>
<zorder>mStackedWidget</zorder>
<zorder>mRedoButton</zorder>
<zorder>mUndoButton</zorder>
<zorder>mButtonBox</zorder>
</widget> </widget>
<resources> <resources>
<include location="../../images/images.qrc"/> <include location="../../images/images.qrc"/>