mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-08 00:05:09 -04:00
replace spinboxes with extent selector in the mesh calculator dialog
This commit is contained in:
parent
b22d424d33
commit
0c228fdd4b
@ -25,6 +25,7 @@
|
||||
#include "qgssettings.h"
|
||||
#include "qgsgui.h"
|
||||
#include "qgsvectorlayer.h"
|
||||
#include "qgsmapcanvas.h"
|
||||
#include "qgsmaplayerproxymodel.h"
|
||||
#include "qgswkbtypes.h"
|
||||
#include "qgsfeatureiterator.h"
|
||||
@ -40,8 +41,10 @@
|
||||
#include <QFontDatabase>
|
||||
#include <QMap>
|
||||
|
||||
QgsMeshCalculatorDialog::QgsMeshCalculatorDialog( QgsMeshLayer *meshLayer, QWidget *parent, Qt::WindowFlags f )
|
||||
: QDialog( parent, f ), mLayer( meshLayer )
|
||||
QgsMeshCalculatorDialog::QgsMeshCalculatorDialog( QgsMeshLayer *meshLayer, QgsMapCanvas *mapCanvas, QWidget *parent, Qt::WindowFlags f )
|
||||
: QDialog( parent, f )
|
||||
, mLayer( meshLayer )
|
||||
, mMapCanvas( mapCanvas )
|
||||
{
|
||||
setupUi( this );
|
||||
QgsGui::enableAutoGeometryRestore( this );
|
||||
@ -60,7 +63,6 @@ QgsMeshCalculatorDialog::QgsMeshCalculatorDialog( QgsMeshLayer *meshLayer, QWidg
|
||||
connect( mOutputGroupNameLineEdit, &QLineEdit::textChanged, this, &QgsMeshCalculatorDialog::updateInfoMessage );
|
||||
|
||||
connect( mDatasetsListWidget, &QListView::doubleClicked, this, &QgsMeshCalculatorDialog::datasetGroupEntry );
|
||||
connect( mCurrentLayerExtentButton, &QPushButton::clicked, this, &QgsMeshCalculatorDialog::mCurrentLayerExtentButton_clicked );
|
||||
connect( mAllTimesButton, &QPushButton::clicked, this, &QgsMeshCalculatorDialog::mAllTimesButton_clicked );
|
||||
connect( mExpressionTextEdit, &QTextEdit::textChanged, this, &QgsMeshCalculatorDialog::updateInfoMessage );
|
||||
|
||||
@ -68,11 +70,6 @@ QgsMeshCalculatorDialog::QgsMeshCalculatorDialog( QgsMeshLayer *meshLayer, QWidg
|
||||
maskBox->setVisible( false );
|
||||
useMaskCb->setEnabled( cboLayerMask->count() );
|
||||
|
||||
mXMaxSpinBox->setShowClearButton( false );
|
||||
mXMinSpinBox->setShowClearButton( false );
|
||||
mYMaxSpinBox->setShowClearButton( false );
|
||||
mYMinSpinBox->setShowClearButton( false );
|
||||
|
||||
connect( mPlusPushButton, &QPushButton::clicked, this, &QgsMeshCalculatorDialog::mPlusPushButton_clicked );
|
||||
connect( mMinusPushButton, &QPushButton::clicked, this, &QgsMeshCalculatorDialog::mMinusPushButton_clicked );
|
||||
connect( mLessButton, &QPushButton::clicked, this, &QgsMeshCalculatorDialog::mLessButton_clicked );
|
||||
@ -101,7 +98,16 @@ QgsMeshCalculatorDialog::QgsMeshCalculatorDialog( QgsMeshLayer *meshLayer, QWidg
|
||||
|
||||
mExpressionTextEdit->setCurrentFont( QFontDatabase::systemFont( QFontDatabase::FixedFont ) );
|
||||
|
||||
useFullLayerExtent();
|
||||
mExtentGroupBox->setCurrentExtent( mMapCanvas->extent(), mMapCanvas->mapSettings().destinationCrs() );
|
||||
if ( mLayer )
|
||||
{
|
||||
mExtentGroupBox->setOutputExtentFromLayer( mLayer );
|
||||
}
|
||||
else
|
||||
{
|
||||
mExtentGroupBox->setOutputExtentFromCurrent();
|
||||
}
|
||||
|
||||
repopulateTimeCombos();
|
||||
mButtonBox->button( QDialogButtonBox::Ok )->setEnabled( false );
|
||||
connect( mButtonBox, &QDialogButtonBox::helpRequested, this, [=] {
|
||||
@ -140,13 +146,7 @@ QString QgsMeshCalculatorDialog::outputFile() const
|
||||
|
||||
QgsRectangle QgsMeshCalculatorDialog::outputExtent() const
|
||||
{
|
||||
const QgsRectangle ret(
|
||||
mXMinSpinBox->value(),
|
||||
mYMinSpinBox->value(),
|
||||
mXMaxSpinBox->value(),
|
||||
mYMaxSpinBox->value()
|
||||
);
|
||||
return ret;
|
||||
return mExtentGroupBox->outputExtent();
|
||||
}
|
||||
|
||||
QgsGeometry QgsMeshCalculatorDialog::maskGeometry() const
|
||||
@ -286,7 +286,7 @@ void QgsMeshCalculatorDialog::datasetGroupEntry( const QModelIndex &index )
|
||||
void QgsMeshCalculatorDialog::toggleExtendMask()
|
||||
{
|
||||
bool visible = useMaskCb->isChecked();
|
||||
extendBox->setVisible( !visible );
|
||||
mExtentGroupBox->setVisible( !visible );
|
||||
maskBox->setVisible( visible );
|
||||
}
|
||||
|
||||
@ -390,11 +390,6 @@ QString QgsMeshCalculatorDialog::datasetGroupName( const QModelIndex &index ) co
|
||||
return index.data( Qt::DisplayRole ).toString();
|
||||
}
|
||||
|
||||
void QgsMeshCalculatorDialog::mCurrentLayerExtentButton_clicked()
|
||||
{
|
||||
useFullLayerExtent();
|
||||
}
|
||||
|
||||
void QgsMeshCalculatorDialog::mAllTimesButton_clicked()
|
||||
{
|
||||
useAllTimesFromLayer();
|
||||
@ -591,19 +586,6 @@ void QgsMeshCalculatorDialog::populateDriversComboBox()
|
||||
mOutputFormatComboBox->setCurrentIndex( 0 );
|
||||
}
|
||||
|
||||
void QgsMeshCalculatorDialog::useFullLayerExtent()
|
||||
{
|
||||
QgsMeshLayer *layer = meshLayer();
|
||||
if ( !layer )
|
||||
return;
|
||||
|
||||
const QgsRectangle layerExtent = layer->extent();
|
||||
mXMinSpinBox->setValue( layerExtent.xMinimum() );
|
||||
mXMaxSpinBox->setValue( layerExtent.xMaximum() );
|
||||
mYMinSpinBox->setValue( layerExtent.yMinimum() );
|
||||
mYMaxSpinBox->setValue( layerExtent.yMaximum() );
|
||||
}
|
||||
|
||||
void QgsMeshCalculatorDialog::useAllTimesFromLayer()
|
||||
{
|
||||
const QString datasetGroupName = currentDatasetGroup();
|
||||
|
@ -22,6 +22,8 @@
|
||||
#include "qgsmeshcalculator.h"
|
||||
#include "qgis_app.h"
|
||||
|
||||
class QgsMapCanvas;
|
||||
|
||||
//! A dialog to enter a mesh calculation expression
|
||||
class APP_EXPORT QgsMeshCalculatorDialog : public QDialog, private Ui::QgsMeshCalculatorDialogBase
|
||||
{
|
||||
@ -33,7 +35,7 @@ class APP_EXPORT QgsMeshCalculatorDialog : public QDialog, private Ui::QgsMeshCa
|
||||
* \param parent widget
|
||||
* \param f window flags
|
||||
*/
|
||||
QgsMeshCalculatorDialog( QgsMeshLayer *meshLayer = nullptr, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags() );
|
||||
QgsMeshCalculatorDialog( QgsMeshLayer *meshLayer = nullptr, QgsMapCanvas *mapCanvas = nullptr, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags() );
|
||||
~QgsMeshCalculatorDialog();
|
||||
|
||||
//! Returns new mesh calculator created from dialog options
|
||||
@ -44,7 +46,6 @@ class APP_EXPORT QgsMeshCalculatorDialog : public QDialog, private Ui::QgsMeshCa
|
||||
|
||||
private slots:
|
||||
void datasetGroupEntry( const QModelIndex &index );
|
||||
void mCurrentLayerExtentButton_clicked();
|
||||
void mAllTimesButton_clicked();
|
||||
void toggleExtendMask();
|
||||
void updateInfoMessage();
|
||||
@ -127,6 +128,7 @@ class APP_EXPORT QgsMeshCalculatorDialog : public QDialog, private Ui::QgsMeshCa
|
||||
void populateDriversComboBox();
|
||||
|
||||
QgsMeshLayer *mLayer;
|
||||
QgsMapCanvas *mMapCanvas = nullptr;
|
||||
QHash<QString, QgsMeshDriverMetadata> mMeshDrivers;
|
||||
QStringList mVariableNames;
|
||||
|
||||
|
@ -6214,7 +6214,7 @@ void QgisApp::showMeshCalculator()
|
||||
QMessageBox::information( this, tr( "Mesh Calculator" ), tr( "Mesh calculator with mesh layer in edit mode is not supported." ) );
|
||||
return;
|
||||
}
|
||||
QgsMeshCalculatorDialog d( meshLayer, this );
|
||||
QgsMeshCalculatorDialog d( meshLayer, mMapCanvas, this );
|
||||
if ( d.exec() == QDialog::Accepted )
|
||||
{
|
||||
//invoke analysis library
|
||||
|
@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>912</width>
|
||||
<height>954</height>
|
||||
<height>982</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -174,138 +174,10 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="extendBox" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
<widget class="QgsExtentGroupBox" name="mExtentGroupBox">
|
||||
<property name="title">
|
||||
<string>Spatial Extent</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="2" column="4">
|
||||
<widget class="QgsDoubleSpinBox" name="mXMaxSpinBox">
|
||||
<property name="decimals">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<double>-999999999.000000000000000</double>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>999999999.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="mYMinLabel">
|
||||
<property name="text">
|
||||
<string>Y min</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="3">
|
||||
<widget class="QLabel" name="mXMaxLabel">
|
||||
<property name="text">
|
||||
<string>X max</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QgsDoubleSpinBox" name="mYMinSpinBox">
|
||||
<property name="decimals">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<double>-999999999.000000000000000</double>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>999999999.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="3">
|
||||
<widget class="QLabel" name="mYMaxLabel">
|
||||
<property name="text">
|
||||
<string>Y max</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QgsDoubleSpinBox" name="mXMinSpinBox">
|
||||
<property name="decimals">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<double>-999999999.000000000000000</double>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>999999999.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="4">
|
||||
<widget class="QgsDoubleSpinBox" name="mYMaxSpinBox">
|
||||
<property name="decimals">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<double>-999999999.000000000000000</double>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>999999999.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="mXMinLabel">
|
||||
<property name="text">
|
||||
<string>X min</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="5">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QPushButton" name="mCurrentLayerExtentButton">
|
||||
<property name="text">
|
||||
<string>Use Selected Layer Extent</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<spacer name="horizontalSpacer_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
@ -665,11 +537,6 @@
|
||||
<header>qgscollapsiblegroupbox.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsDoubleSpinBox</class>
|
||||
<extends>QDoubleSpinBox</extends>
|
||||
<header>qgsdoublespinbox.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsFileWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
@ -681,6 +548,12 @@
|
||||
<extends>QComboBox</extends>
|
||||
<header>qgsmaplayercombobox.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsExtentGroupBox</class>
|
||||
<extends>QGroupBox</extends>
|
||||
<header>qgsextentgroupbox.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>mDatasetsListWidget</tabstop>
|
||||
@ -690,11 +563,6 @@
|
||||
<tabstop>useExtentCb</tabstop>
|
||||
<tabstop>useMaskCb</tabstop>
|
||||
<tabstop>cboLayerMask</tabstop>
|
||||
<tabstop>mCurrentLayerExtentButton</tabstop>
|
||||
<tabstop>mXMinSpinBox</tabstop>
|
||||
<tabstop>mXMaxSpinBox</tabstop>
|
||||
<tabstop>mYMinSpinBox</tabstop>
|
||||
<tabstop>mYMaxSpinBox</tabstop>
|
||||
<tabstop>mAllTimesButton</tabstop>
|
||||
<tabstop>mStartTimeComboBox</tabstop>
|
||||
<tabstop>mEndTimeComboBox</tabstop>
|
||||
|
@ -85,7 +85,7 @@ void TestQgsMeshCalculatorDialog::testCalc()
|
||||
if ( !QgsTest::runFlakyTests() )
|
||||
QSKIP( "This test is disabled on Travis CI environment" );
|
||||
|
||||
auto dialog = std::make_unique<QgsMeshCalculatorDialog>( mpMeshLayer );
|
||||
auto dialog = std::make_unique<QgsMeshCalculatorDialog>( mpMeshLayer, mQgisApp->mapCanvas() );
|
||||
|
||||
const int groupCount = mpMeshLayer->dataProvider()->datasetGroupCount();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user