Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[node editor] When no feature is selected, offer an hint label to eas…
…e discovery
  • Loading branch information
nirvn committed Jan 23, 2019
1 parent d77596c commit cf90371
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 7 deletions.
40 changes: 33 additions & 7 deletions src/app/vertextool/qgsvertexeditor.cpp
Expand Up @@ -26,6 +26,7 @@
#include "qgsproject.h"
#include "qgscoordinatetransform.h"

#include <QLabel>
#include <QTableWidget>
#include <QHeaderView>
#include <QVBoxLayout>
Expand Down Expand Up @@ -301,17 +302,31 @@ QgsVertexEditor::QgsVertexEditor(
{
setWindowTitle( tr( "Vertex Editor" ) );
setObjectName( QStringLiteral( "VertexEditor" ) );
mTableView = new QTableView( this );

QWidget *content = new QWidget( this );
content->setMinimumHeight( 160 );
QVBoxLayout *layout = new QVBoxLayout( content );
layout->setContentsMargins( 0, 0, 0, 0 );

mHintLabel = new QLabel( this );
mHintLabel->setText( tr( "Right click on the edge of an editable feature to show its table of vertices" ) );
mHintLabel->setWordWrap( true );
mHintLabel->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter );

mTableView = new QTableView( this );
mTableView->setSelectionMode( QTableWidget::ExtendedSelection );
mTableView->setSelectionBehavior( QTableWidget::SelectRows );
mTableView->setItemDelegateForColumn( 0, new CoordinateItemDelegate( this ) );
mTableView->setItemDelegateForColumn( 1, new CoordinateItemDelegate( this ) );
mTableView->setItemDelegateForColumn( 2, new CoordinateItemDelegate( this ) );
mTableView->setItemDelegateForColumn( 3, new CoordinateItemDelegate( this ) );
mTableView->setItemDelegateForColumn( 4, new CoordinateItemDelegate( this ) );
mTableView->setVisible( false );

layout->addWidget( mTableView );
layout->addWidget( mHintLabel );

setWidget( mTableView );
setWidget( content );

updateEditor( layer, selectedFeature );
}
Expand All @@ -323,12 +338,23 @@ void QgsVertexEditor::updateEditor( QgsVectorLayer *layer, QgsSelectedFeature *s
mLayer = layer;
mSelectedFeature = selectedFeature;

// TODO We really should just update the model itself.
mVertexModel = new QgsVertexEditorModel( mLayer, mSelectedFeature, mCanvas, this );
mTableView->setModel( mVertexModel );
connect( mTableView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &QgsVertexEditor::updateVertexSelection );
if ( mLayer && mSelectedFeature )
{
// TODO We really should just update the model itself.
mVertexModel = new QgsVertexEditorModel( mLayer, mSelectedFeature, mCanvas, this );
mTableView->setModel( mVertexModel );

connect( mSelectedFeature, &QgsSelectedFeature::selectionChanged, this, &QgsVertexEditor::updateTableSelection );
mHintLabel->setVisible( false );
mTableView->setVisible( true );

connect( mTableView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &QgsVertexEditor::updateVertexSelection );
connect( mSelectedFeature, &QgsSelectedFeature::selectionChanged, this, &QgsVertexEditor::updateTableSelection );
}
else
{
mHintLabel->setVisible( true );
mTableView->setVisible( false );
}
}

void QgsVertexEditor::updateTableSelection()
Expand Down
4 changes: 4 additions & 0 deletions src/app/vertextool/qgsvertexeditor.h
Expand Up @@ -28,6 +28,8 @@ class QgsMapCanvas;
class QgsRubberBand;
class QgsSelectedFeature;
class QgsVectorLayer;

class QLabel;
class QTableView;

class QgsVertexEditorModel : public QAbstractTableModel
Expand Down Expand Up @@ -96,6 +98,8 @@ class QgsVertexEditor : public QgsDockWidget

private:

QLabel *mHintLabel = nullptr;

bool mUpdatingTableSelection = false;
bool mUpdatingVertexSelection = false;
};
Expand Down

0 comments on commit cf90371

Please sign in to comment.