Skip to content

Commit 98bb668

Browse files
committedApr 17, 2023
Add export settings
1 parent 191417e commit 98bb668

File tree

3 files changed

+223
-67
lines changed

3 files changed

+223
-67
lines changed
 

‎src/app/qgsmeasuredialog.cpp

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ QgsMeasureDialog::QgsMeasureDialog( QgsMeasureTool *tool, Qt::WindowFlags f )
5858
{
5959
QPushButton *cpb = new QPushButton( tr( "Copy &All" ) );
6060
buttonBox->addButton( cpb, QDialogButtonBox::ActionRole );
61-
connect( cpb, &QAbstractButton::clicked, this, [this] {copyMeasurements( mShowCoordinates->isChecked() );} );
61+
connect( cpb, &QAbstractButton::clicked, this, &QgsMeasureDialog::copyMeasurements );
6262

6363
// Toggle the coordinates columns visibility
6464
connect( mShowCoordinates, &QCheckBox::clicked, this, &QgsMeasureDialog::showCoordinatesChanged );
@@ -67,6 +67,7 @@ QgsMeasureDialog::QgsMeasureDialog( QgsMeasureTool *tool, Qt::WindowFlags f )
6767
else
6868
{
6969
mShowCoordinates->hide();
70+
mCopySettingsGroupBox->hide();
7071
}
7172

7273
repopulateComboBoxUnits( mMeasureArea );
@@ -745,11 +746,40 @@ double QgsMeasureDialog::convertArea( double area, Qgis::AreaUnit toUnit ) const
745746
return mDa.convertAreaMeasurement( area, toUnit );
746747
}
747748

748-
void QgsMeasureDialog::copyMeasurements( bool copyCoordinates, QString separator )
749+
void QgsMeasureDialog::copyMeasurements()
749750
{
751+
bool copyCoordinates = mShowCoordinates->isChecked();
752+
bool includeHeader = mIncludeHeader->isChecked();
753+
754+
// Get the separator
755+
QString separator;
756+
if ( mSeparatorTab->isChecked() )
757+
separator = QStringLiteral( "\t" );
758+
else if ( mSeparatorComma->isChecked() )
759+
separator = QStringLiteral( "," );
760+
else if ( mSeparatorSemicolon->isChecked() )
761+
separator = QStringLiteral( ";" );
762+
else if ( mSeparatorSpace->isChecked() )
763+
separator = QStringLiteral( " " );
764+
else if ( mSeparatorColon->isChecked() )
765+
separator = QStringLiteral( ":" );
766+
else
767+
separator = mSeparatorCustom->text();
768+
769+
750770
QClipboard *clipboard = QApplication::clipboard();
751771
QString text;
752772
QTreeWidgetItemIterator it( mTable );
773+
774+
if ( includeHeader )
775+
{
776+
if ( copyCoordinates )
777+
{
778+
text += mTable->headerItem()->text( Columns::X ) + separator;
779+
text += mTable->headerItem()->text( Columns::Y ) + separator;
780+
}
781+
text += mTable->headerItem()->text( Columns::Distance ) + QStringLiteral( "\n" );
782+
}
753783
// Discard the first item if show coordinates is not checked
754784
if ( !copyCoordinates )
755785
{

‎src/app/qgsmeasuredialog.h

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,8 @@ class APP_EXPORT QgsMeasureDialog : public QDialog, private Ui::QgsMeasureBase
7070
//! Open configuration tab
7171
void openConfigTab();
7272

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

7976
void showCoordinatesChanged();
8077

‎src/ui/qgsmeasurebase.ui

Lines changed: 189 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>462</width>
10-
<height>376</height>
9+
<width>430</width>
10+
<height>472</height>
1111
</rect>
1212
</property>
1313
<property name="baseSize">
@@ -73,16 +73,74 @@
7373
</column>
7474
</widget>
7575
</item>
76-
<item row="4" column="0">
77-
<widget class="QLabel" name="totalDistanceLabel">
76+
<item row="7" column="2">
77+
<widget class="QRadioButton" name="mEllipsoidal">
7878
<property name="text">
79-
<string>Total</string>
79+
<string>Ellipsoidal</string>
8080
</property>
81-
<property name="buddy">
82-
<cstring>editTotal</cstring>
81+
<property name="checked">
82+
<bool>true</bool>
83+
</property>
84+
</widget>
85+
</item>
86+
<item row="9" column="0" colspan="4">
87+
<widget class="QgsCollapsibleGroupBox" name="groupBox">
88+
<property name="title">
89+
<string>Info</string>
8390
</property>
91+
<layout class="QVBoxLayout" name="verticalLayout">
92+
<item>
93+
<widget class="QLabel" name="mNotesLabel">
94+
<property name="text">
95+
<string/>
96+
</property>
97+
<property name="wordWrap">
98+
<bool>true</bool>
99+
</property>
100+
</widget>
101+
</item>
102+
</layout>
84103
</widget>
85104
</item>
105+
<item row="10" column="0" colspan="4">
106+
<spacer name="mSpacer">
107+
<property name="orientation">
108+
<enum>Qt::Vertical</enum>
109+
</property>
110+
<property name="sizeHint" stdset="0">
111+
<size>
112+
<width>40</width>
113+
<height>20</height>
114+
</size>
115+
</property>
116+
</spacer>
117+
</item>
118+
<item row="4" column="2">
119+
<widget class="QLineEdit" name="editTotal">
120+
<property name="font">
121+
<font>
122+
<weight>75</weight>
123+
<bold>true</bold>
124+
</font>
125+
</property>
126+
<property name="alignment">
127+
<set>Qt::AlignRight</set>
128+
</property>
129+
<property name="readOnly">
130+
<bool>true</bool>
131+
</property>
132+
</widget>
133+
</item>
134+
<item row="12" column="0" colspan="4">
135+
<widget class="QDialogButtonBox" name="buttonBox">
136+
<property name="standardButtons">
137+
<set>QDialogButtonBox::Close|QDialogButtonBox::Help</set>
138+
</property>
139+
</widget>
140+
</item>
141+
<item row="4" column="3">
142+
<widget class="QComboBox" name="mUnitsCombo"/>
143+
</item>
86144
<item row="4" column="1">
87145
<spacer>
88146
<property name="orientation">
@@ -122,13 +180,13 @@
122180
</property>
123181
</widget>
124182
</item>
125-
<item row="7" column="2">
126-
<widget class="QRadioButton" name="mEllipsoidal">
183+
<item row="4" column="0">
184+
<widget class="QLabel" name="totalDistanceLabel">
127185
<property name="text">
128-
<string>Ellipsoidal</string>
186+
<string>Total</string>
129187
</property>
130-
<property name="checked">
131-
<bool>true</bool>
188+
<property name="buddy">
189+
<cstring>editTotal</cstring>
132190
</property>
133191
</widget>
134192
</item>
@@ -142,64 +200,105 @@
142200
</property>
143201
</widget>
144202
</item>
145-
<item row="9" column="0" colspan="4">
146-
<widget class="QgsCollapsibleGroupBox" name="groupBox">
203+
<item row="11" column="0" colspan="4">
204+
<widget class="QgsCollapsibleGroupBox" name="mCopySettingsGroupBox">
147205
<property name="title">
148-
<string>Info</string>
206+
<string>Copy settings</string>
149207
</property>
150-
<layout class="QVBoxLayout" name="verticalLayout">
151-
<item>
152-
<widget class="QLabel" name="mNotesLabel">
208+
<layout class="QFormLayout" name="formLayout">
209+
<item row="0" column="0">
210+
<widget class="QLabel" name="label_3">
211+
<property name="text">
212+
<string>Include header</string>
213+
</property>
214+
</widget>
215+
</item>
216+
<item row="0" column="1">
217+
<widget class="QCheckBox" name="mIncludeHeader">
153218
<property name="text">
154219
<string/>
155220
</property>
156-
<property name="wordWrap">
157-
<bool>true</bool>
221+
</widget>
222+
</item>
223+
<item row="1" column="0">
224+
<widget class="QLabel" name="label">
225+
<property name="text">
226+
<string>Separator</string>
158227
</property>
159228
</widget>
160229
</item>
230+
<item row="1" column="1">
231+
<layout class="QGridLayout" name="gridLayout">
232+
<item row="0" column="0">
233+
<widget class="QRadioButton" name="mSeparatorComma">
234+
<property name="text">
235+
<string>Comma</string>
236+
</property>
237+
</widget>
238+
</item>
239+
<item row="2" column="0">
240+
<widget class="QRadioButton" name="mSeparatorSpace">
241+
<property name="text">
242+
<string>Space</string>
243+
</property>
244+
</widget>
245+
</item>
246+
<item row="1" column="1">
247+
<widget class="QRadioButton" name="mSeparatorColon">
248+
<property name="text">
249+
<string>Colon</string>
250+
</property>
251+
</widget>
252+
</item>
253+
<item row="0" column="1">
254+
<widget class="QRadioButton" name="mSeparatorSemicolon">
255+
<property name="text">
256+
<string>Semicolon</string>
257+
</property>
258+
</widget>
259+
</item>
260+
<item row="1" column="0">
261+
<widget class="QRadioButton" name="mSeparatorTab">
262+
<property name="text">
263+
<string>Tab</string>
264+
</property>
265+
<property name="checked">
266+
<bool>true</bool>
267+
</property>
268+
</widget>
269+
</item>
270+
<item row="2" column="1">
271+
<layout class="QHBoxLayout" name="horizontalLayout">
272+
<item>
273+
<widget class="QRadioButton" name="mSeparatorOther">
274+
<property name="text">
275+
<string>Other</string>
276+
</property>
277+
</widget>
278+
</item>
279+
<item>
280+
<widget class="QLineEdit" name="mSeparatorCustom">
281+
<property name="enabled">
282+
<bool>false</bool>
283+
</property>
284+
<property name="sizePolicy">
285+
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
286+
<horstretch>0</horstretch>
287+
<verstretch>0</verstretch>
288+
</sizepolicy>
289+
</property>
290+
<property name="maxLength">
291+
<number>3</number>
292+
</property>
293+
</widget>
294+
</item>
295+
</layout>
296+
</item>
297+
</layout>
298+
</item>
161299
</layout>
162300
</widget>
163301
</item>
164-
<item row="4" column="3">
165-
<widget class="QComboBox" name="mUnitsCombo"/>
166-
</item>
167-
<item row="11" column="0" colspan="4">
168-
<widget class="QDialogButtonBox" name="buttonBox">
169-
<property name="standardButtons">
170-
<set>QDialogButtonBox::Close|QDialogButtonBox::Help</set>
171-
</property>
172-
</widget>
173-
</item>
174-
<item row="4" column="2">
175-
<widget class="QLineEdit" name="editTotal">
176-
<property name="font">
177-
<font>
178-
<weight>75</weight>
179-
<bold>true</bold>
180-
</font>
181-
</property>
182-
<property name="alignment">
183-
<set>Qt::AlignRight</set>
184-
</property>
185-
<property name="readOnly">
186-
<bool>true</bool>
187-
</property>
188-
</widget>
189-
</item>
190-
<item row="10" column="0" colspan="4">
191-
<spacer name="mSpacer">
192-
<property name="orientation">
193-
<enum>Qt::Vertical</enum>
194-
</property>
195-
<property name="sizeHint" stdset="0">
196-
<size>
197-
<width>40</width>
198-
<height>20</height>
199-
</size>
200-
</property>
201-
</spacer>
202-
</item>
203302
<item row="8" column="0" colspan="4">
204303
<widget class="QCheckBox" name="mShowCoordinates">
205304
<property name="text">
@@ -221,7 +320,37 @@
221320
<tabstops>
222321
<tabstop>mTable</tabstop>
223322
<tabstop>editTotal</tabstop>
323+
<tabstop>mEllipsoidal</tabstop>
324+
<tabstop>mUnitsCombo</tabstop>
325+
<tabstop>editHorizontalTotal</tabstop>
326+
<tabstop>mCartesian</tabstop>
327+
<tabstop>mShowCoordinates</tabstop>
328+
<tabstop>mIncludeHeader</tabstop>
329+
<tabstop>mSeparatorComma</tabstop>
330+
<tabstop>mSeparatorSemicolon</tabstop>
331+
<tabstop>mSeparatorTab</tabstop>
332+
<tabstop>mSeparatorColon</tabstop>
333+
<tabstop>mSeparatorSpace</tabstop>
334+
<tabstop>mSeparatorOther</tabstop>
335+
<tabstop>mSeparatorCustom</tabstop>
224336
</tabstops>
225337
<resources/>
226-
<connections/>
338+
<connections>
339+
<connection>
340+
<sender>mSeparatorOther</sender>
341+
<signal>toggled(bool)</signal>
342+
<receiver>mSeparatorCustom</receiver>
343+
<slot>setEnabled(bool)</slot>
344+
<hints>
345+
<hint type="sourcelabel">
346+
<x>311</x>
347+
<y>464</y>
348+
</hint>
349+
<hint type="destinationlabel">
350+
<x>381</x>
351+
<y>464</y>
352+
</hint>
353+
</hints>
354+
</connection>
355+
</connections>
227356
</ui>

0 commit comments

Comments
 (0)
Please sign in to comment.