Skip to content

Commit

Permalink
Add export settings
Browse files Browse the repository at this point in the history
  • Loading branch information
YoannQDQ committed Apr 17, 2023
1 parent 191417e commit 98bb668
Show file tree
Hide file tree
Showing 3 changed files with 223 additions and 67 deletions.
34 changes: 32 additions & 2 deletions src/app/qgsmeasuredialog.cpp
Expand Up @@ -58,7 +58,7 @@ QgsMeasureDialog::QgsMeasureDialog( QgsMeasureTool *tool, Qt::WindowFlags f )
{
QPushButton *cpb = new QPushButton( tr( "Copy &All" ) );
buttonBox->addButton( cpb, QDialogButtonBox::ActionRole );
connect( cpb, &QAbstractButton::clicked, this, [this] {copyMeasurements( mShowCoordinates->isChecked() );} );
connect( cpb, &QAbstractButton::clicked, this, &QgsMeasureDialog::copyMeasurements );

// Toggle the coordinates columns visibility
connect( mShowCoordinates, &QCheckBox::clicked, this, &QgsMeasureDialog::showCoordinatesChanged );
Expand All @@ -67,6 +67,7 @@ QgsMeasureDialog::QgsMeasureDialog( QgsMeasureTool *tool, Qt::WindowFlags f )
else
{
mShowCoordinates->hide();
mCopySettingsGroupBox->hide();
}

repopulateComboBoxUnits( mMeasureArea );
Expand Down Expand Up @@ -745,11 +746,40 @@ double QgsMeasureDialog::convertArea( double area, Qgis::AreaUnit toUnit ) const
return mDa.convertAreaMeasurement( area, toUnit );
}

void QgsMeasureDialog::copyMeasurements( bool copyCoordinates, QString separator )
void QgsMeasureDialog::copyMeasurements()
{
bool copyCoordinates = mShowCoordinates->isChecked();
bool includeHeader = mIncludeHeader->isChecked();

// Get the separator
QString separator;
if ( mSeparatorTab->isChecked() )
separator = QStringLiteral( "\t" );
else if ( mSeparatorComma->isChecked() )
separator = QStringLiteral( "," );
else if ( mSeparatorSemicolon->isChecked() )
separator = QStringLiteral( ";" );
else if ( mSeparatorSpace->isChecked() )
separator = QStringLiteral( " " );
else if ( mSeparatorColon->isChecked() )
separator = QStringLiteral( ":" );
else
separator = mSeparatorCustom->text();


QClipboard *clipboard = QApplication::clipboard();
QString text;
QTreeWidgetItemIterator it( mTable );

if ( includeHeader )
{
if ( copyCoordinates )
{
text += mTable->headerItem()->text( Columns::X ) + separator;
text += mTable->headerItem()->text( Columns::Y ) + separator;
}
text += mTable->headerItem()->text( Columns::Distance ) + QStringLiteral( "\n" );
}
// Discard the first item if show coordinates is not checked
if ( !copyCoordinates )
{
Expand Down
7 changes: 2 additions & 5 deletions src/app/qgsmeasuredialog.h
Expand Up @@ -70,11 +70,8 @@ class APP_EXPORT QgsMeasureDialog : public QDialog, private Ui::QgsMeasureBase
//! Open configuration tab
void openConfigTab();

/**
* Copy measurements to the clipboard
* \param copyCoordinates \since QGIS 3.32 set to TRUE to also copy coordinates to clipboard
*/
void copyMeasurements( bool copyCoordinates = false, QString separator = QStringLiteral( "\t" ) );
//! Copy measurements to the clipboard
void copyMeasurements();

void showCoordinatesChanged();

Expand Down
249 changes: 189 additions & 60 deletions src/ui/qgsmeasurebase.ui
Expand Up @@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>462</width>
<height>376</height>
<width>430</width>
<height>472</height>
</rect>
</property>
<property name="baseSize">
Expand Down Expand Up @@ -73,16 +73,74 @@
</column>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="totalDistanceLabel">
<item row="7" column="2">
<widget class="QRadioButton" name="mEllipsoidal">
<property name="text">
<string>Total</string>
<string>Ellipsoidal</string>
</property>
<property name="buddy">
<cstring>editTotal</cstring>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="9" column="0" colspan="4">
<widget class="QgsCollapsibleGroupBox" name="groupBox">
<property name="title">
<string>Info</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="mNotesLabel">
<property name="text">
<string/>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="10" column="0" colspan="4">
<spacer name="mSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="2">
<widget class="QLineEdit" name="editTotal">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="alignment">
<set>Qt::AlignRight</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="12" column="0" colspan="4">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Close|QDialogButtonBox::Help</set>
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="QComboBox" name="mUnitsCombo"/>
</item>
<item row="4" column="1">
<spacer>
<property name="orientation">
Expand Down Expand Up @@ -122,13 +180,13 @@
</property>
</widget>
</item>
<item row="7" column="2">
<widget class="QRadioButton" name="mEllipsoidal">
<item row="4" column="0">
<widget class="QLabel" name="totalDistanceLabel">
<property name="text">
<string>Ellipsoidal</string>
<string>Total</string>
</property>
<property name="checked">
<bool>true</bool>
<property name="buddy">
<cstring>editTotal</cstring>
</property>
</widget>
</item>
Expand All @@ -142,64 +200,105 @@
</property>
</widget>
</item>
<item row="9" column="0" colspan="4">
<widget class="QgsCollapsibleGroupBox" name="groupBox">
<item row="11" column="0" colspan="4">
<widget class="QgsCollapsibleGroupBox" name="mCopySettingsGroupBox">
<property name="title">
<string>Info</string>
<string>Copy settings</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="mNotesLabel">
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Include header</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="mIncludeHeader">
<property name="text">
<string/>
</property>
<property name="wordWrap">
<bool>true</bool>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Separator</string>
</property>
</widget>
</item>
<item row="1" column="1">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QRadioButton" name="mSeparatorComma">
<property name="text">
<string>Comma</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="mSeparatorSpace">
<property name="text">
<string>Space</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QRadioButton" name="mSeparatorColon">
<property name="text">
<string>Colon</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="mSeparatorSemicolon">
<property name="text">
<string>Semicolon</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QRadioButton" name="mSeparatorTab">
<property name="text">
<string>Tab</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QRadioButton" name="mSeparatorOther">
<property name="text">
<string>Other</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="mSeparatorCustom">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxLength">
<number>3</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="4" column="3">
<widget class="QComboBox" name="mUnitsCombo"/>
</item>
<item row="11" column="0" colspan="4">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Close|QDialogButtonBox::Help</set>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QLineEdit" name="editTotal">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="alignment">
<set>Qt::AlignRight</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="10" column="0" colspan="4">
<spacer name="mSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="8" column="0" colspan="4">
<widget class="QCheckBox" name="mShowCoordinates">
<property name="text">
Expand All @@ -221,7 +320,37 @@
<tabstops>
<tabstop>mTable</tabstop>
<tabstop>editTotal</tabstop>
<tabstop>mEllipsoidal</tabstop>
<tabstop>mUnitsCombo</tabstop>
<tabstop>editHorizontalTotal</tabstop>
<tabstop>mCartesian</tabstop>
<tabstop>mShowCoordinates</tabstop>
<tabstop>mIncludeHeader</tabstop>
<tabstop>mSeparatorComma</tabstop>
<tabstop>mSeparatorSemicolon</tabstop>
<tabstop>mSeparatorTab</tabstop>
<tabstop>mSeparatorColon</tabstop>
<tabstop>mSeparatorSpace</tabstop>
<tabstop>mSeparatorOther</tabstop>
<tabstop>mSeparatorCustom</tabstop>
</tabstops>
<resources/>
<connections/>
<connections>
<connection>
<sender>mSeparatorOther</sender>
<signal>toggled(bool)</signal>
<receiver>mSeparatorCustom</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>311</x>
<y>464</y>
</hint>
<hint type="destinationlabel">
<x>381</x>
<y>464</y>
</hint>
</hints>
</connection>
</connections>
</ui>

0 comments on commit 98bb668

Please sign in to comment.