26
26
#include " qgsproject.h"
27
27
#include " qgscoordinatetransform.h"
28
28
29
+ #include < QLabel>
29
30
#include < QTableWidget>
30
31
#include < QHeaderView>
31
32
#include < QVBoxLayout>
@@ -301,17 +302,31 @@ QgsVertexEditor::QgsVertexEditor(
301
302
{
302
303
setWindowTitle ( tr ( " Vertex Editor" ) );
303
304
setObjectName ( QStringLiteral ( " VertexEditor" ) );
304
- mTableView = new QTableView ( this );
305
305
306
+ QWidget *content = new QWidget ( this );
307
+ content->setMinimumHeight ( 160 );
308
+ QVBoxLayout *layout = new QVBoxLayout ( content );
309
+ layout->setContentsMargins ( 0 , 0 , 0 , 0 );
310
+
311
+ mHintLabel = new QLabel ( this );
312
+ mHintLabel ->setText ( tr ( " Right click on the edge of an editable feature to show its table of vertices" ) );
313
+ mHintLabel ->setWordWrap ( true );
314
+ mHintLabel ->setAlignment ( Qt::AlignHCenter | Qt::AlignVCenter );
315
+
316
+ mTableView = new QTableView ( this );
306
317
mTableView ->setSelectionMode ( QTableWidget::ExtendedSelection );
307
318
mTableView ->setSelectionBehavior ( QTableWidget::SelectRows );
308
319
mTableView ->setItemDelegateForColumn ( 0 , new CoordinateItemDelegate ( this ) );
309
320
mTableView ->setItemDelegateForColumn ( 1 , new CoordinateItemDelegate ( this ) );
310
321
mTableView ->setItemDelegateForColumn ( 2 , new CoordinateItemDelegate ( this ) );
311
322
mTableView ->setItemDelegateForColumn ( 3 , new CoordinateItemDelegate ( this ) );
312
323
mTableView ->setItemDelegateForColumn ( 4 , new CoordinateItemDelegate ( this ) );
324
+ mTableView ->setVisible ( false );
325
+
326
+ layout->addWidget ( mTableView );
327
+ layout->addWidget ( mHintLabel );
313
328
314
- setWidget ( mTableView );
329
+ setWidget ( content );
315
330
316
331
updateEditor ( layer, selectedFeature );
317
332
}
@@ -323,12 +338,23 @@ void QgsVertexEditor::updateEditor( QgsVectorLayer *layer, QgsSelectedFeature *s
323
338
mLayer = layer;
324
339
mSelectedFeature = selectedFeature;
325
340
326
- // TODO We really should just update the model itself.
327
- mVertexModel = new QgsVertexEditorModel ( mLayer , mSelectedFeature , mCanvas , this );
328
- mTableView ->setModel ( mVertexModel );
329
- connect ( mTableView ->selectionModel (), &QItemSelectionModel::selectionChanged, this , &QgsVertexEditor::updateVertexSelection );
341
+ if ( mLayer && mSelectedFeature )
342
+ {
343
+ // TODO We really should just update the model itself.
344
+ mVertexModel = new QgsVertexEditorModel ( mLayer , mSelectedFeature , mCanvas , this );
345
+ mTableView ->setModel ( mVertexModel );
330
346
331
- connect ( mSelectedFeature , &QgsSelectedFeature::selectionChanged, this , &QgsVertexEditor::updateTableSelection );
347
+ mHintLabel ->setVisible ( false );
348
+ mTableView ->setVisible ( true );
349
+
350
+ connect ( mTableView ->selectionModel (), &QItemSelectionModel::selectionChanged, this , &QgsVertexEditor::updateVertexSelection );
351
+ connect ( mSelectedFeature , &QgsSelectedFeature::selectionChanged, this , &QgsVertexEditor::updateTableSelection );
352
+ }
353
+ else
354
+ {
355
+ mHintLabel ->setVisible ( true );
356
+ mTableView ->setVisible ( false );
357
+ }
332
358
}
333
359
334
360
void QgsVertexEditor::updateTableSelection ()
0 commit comments