From 520a8796f25901b6e7934dba0664c402bb27619c Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Tue, 22 Oct 2019 09:50:18 +0200 Subject: [PATCH 1/7] PG source select dlg: show multiline comments in tooltips Fixes #32257 --- src/providers/postgres/qgspgsourceselect.cpp | 4 +++- src/providers/postgres/qgspgtablemodel.cpp | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/providers/postgres/qgspgsourceselect.cpp b/src/providers/postgres/qgspgsourceselect.cpp index 300d65d5b362..5080cc72d9f9 100644 --- a/src/providers/postgres/qgspgsourceselect.cpp +++ b/src/providers/postgres/qgspgsourceselect.cpp @@ -40,6 +40,7 @@ email : sherman at mrcc.com #include #include + //! Used to create an editor for when the user tries to change the contents of a cell QWidget *QgsPgSourceSelectDelegate::createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const { @@ -159,7 +160,7 @@ void QgsPgSourceSelectDelegate::setModelData( QWidget *editor, QAbstractItemMode { if ( index.column() == QgsPgTableModel::DbtmType ) { - QgsWkbTypes::Type type = ( QgsWkbTypes::Type ) cb->currentData().toInt(); + QgsWkbTypes::Type type = static_cast< QgsWkbTypes::Type >( cb->currentData().toInt() ); model->setData( index, QgsPgTableModel::iconForWkbType( type ), Qt::DecorationRole ); model->setData( index, type != QgsWkbTypes::Unknown ? QgsPostgresConn::displayStringForWkbType( type ) : tr( "Select…" ) ); @@ -264,6 +265,7 @@ QgsPgSourceSelect::QgsPgSourceSelect( QWidget *parent, Qt::WindowFlags fl, QgsPr mTablesTreeView->setModel( &mProxyModel ); mTablesTreeView->setSortingEnabled( true ); + mTablesTreeView->setUniformRowHeights( true ); mTablesTreeView->setEditTriggers( QAbstractItemView::CurrentChanged ); mTablesTreeView->setItemDelegate( new QgsPgSourceSelectDelegate( this ) ); diff --git a/src/providers/postgres/qgspgtablemodel.cpp b/src/providers/postgres/qgspgtablemodel.cpp index 28151ef30e27..e3149465e35d 100644 --- a/src/providers/postgres/qgspgtablemodel.cpp +++ b/src/providers/postgres/qgspgtablemodel.cpp @@ -99,6 +99,7 @@ void QgsPgTableModel::addTableEntry( const QgsPostgresLayerProperty &layerProper QStandardItem *tableItem = new QStandardItem( layerProperty.tableName ); QStandardItem *commentItem = new QStandardItem( layerProperty.tableComment ); + commentItem->setToolTip( layerProperty.tableComment ); QStandardItem *geomItem = new QStandardItem( layerProperty.geometryColName ); QStandardItem *sridItem = new QStandardItem( wkbType != QgsWkbTypes::NoGeometry ? QString::number( srid ) : QString() ); sridItem->setEditable( wkbType != QgsWkbTypes::NoGeometry && srid == std::numeric_limits::min() ); @@ -190,7 +191,7 @@ void QgsPgTableModel::addTableEntry( const QgsPostgresLayerProperty &layerProper else item->setFlags( item->flags() & ~Qt::ItemIsSelectable ); - if ( tip.isEmpty() && item != checkPkUnicityItem && item != selItem ) + if ( item->toolTip().isEmpty() && tip.isEmpty() && item != checkPkUnicityItem && item != selItem ) { item->setToolTip( QString() ); } From 6d322c57839aa0d4844aad19e3d7c08a0e43810d Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Tue, 22 Oct 2019 09:56:27 +0200 Subject: [PATCH 2/7] PG source select: do not add tooltip if table comment is empty --- src/providers/postgres/qgspgtablemodel.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/providers/postgres/qgspgtablemodel.cpp b/src/providers/postgres/qgspgtablemodel.cpp index e3149465e35d..5d5af2543130 100644 --- a/src/providers/postgres/qgspgtablemodel.cpp +++ b/src/providers/postgres/qgspgtablemodel.cpp @@ -99,7 +99,10 @@ void QgsPgTableModel::addTableEntry( const QgsPostgresLayerProperty &layerProper QStandardItem *tableItem = new QStandardItem( layerProperty.tableName ); QStandardItem *commentItem = new QStandardItem( layerProperty.tableComment ); - commentItem->setToolTip( layerProperty.tableComment ); + if ( ! layerProperty.tableComment.isEmpty() ) + { + commentItem->setToolTip( layerProperty.tableComment ); + } QStandardItem *geomItem = new QStandardItem( layerProperty.geometryColName ); QStandardItem *sridItem = new QStandardItem( wkbType != QgsWkbTypes::NoGeometry ? QString::number( srid ) : QString() ); sridItem->setEditable( wkbType != QgsWkbTypes::NoGeometry && srid == std::numeric_limits::min() ); From 23f1ca66f909e498f925b3eb6351ddd19ee58c17 Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Tue, 22 Oct 2019 13:16:45 +0200 Subject: [PATCH 3/7] PG source select align table comment top --- resources/data/world_map.gpkg | Bin 12689408 -> 12689408 bytes src/providers/postgres/qgspgtablemodel.cpp | 1 + 2 files changed, 1 insertion(+) diff --git a/resources/data/world_map.gpkg b/resources/data/world_map.gpkg index bb32da5b0dd32bb6d8e90a3f6ea9c7888633b1d0..4b72dca59cc4a17e0c5912616a4a3a77a4e84e7b 100644 GIT binary patch delta 629 zcmWO2XG4tv06^i_rR-#{D{rz#M)oQSxiXTy;}jv0Yp)wl_Q)QQy+=m&$UoDE=MOxI z#_HrmlW0+4L0P;cEUl<4FOG*(-k}NHy zm9&;N(pK6@dr6TFk}4gglXR9Y(p9=icj+NLrI+-UsPvIE=_{e6OFzkw{xU!Y${-mm zLu9B7li@N#GG(NUlF>3ovSh4`lkqY^Cdwq4EK_8vOq1!7EjcnnW=gK)$t;;Ib0lBp zN=)WSfy|c$vQQRDp)8gnSt3hinJkwTvQk#bYFQ&|Wu2^-4N@!{Ws@{rl}M>-aI7LY0+UtgsY}q5S_a-AN|4bjAKky_P ztCAB~}8sX-(XWQSo81hJZEPEst$NYAfCBGOEnOAASoWJ!^h z(n?xO8)+-;q`h>IROu+4q_cF9uF_4qOAqNOy`;B9rH}NLeiBN5Ns|FGPzK3h86rbv zm<*Q@k}e}9Lq^GH86#sQQ^v`7nIIEol1!Eu6tCdVZqm2yH($|+H*{vwV?y`6}P!yZn#_`6<8TxBQX6(pb;G+PeR0fCkS1 diff --git a/src/providers/postgres/qgspgtablemodel.cpp b/src/providers/postgres/qgspgtablemodel.cpp index 5d5af2543130..facd1575f08e 100644 --- a/src/providers/postgres/qgspgtablemodel.cpp +++ b/src/providers/postgres/qgspgtablemodel.cpp @@ -102,6 +102,7 @@ void QgsPgTableModel::addTableEntry( const QgsPostgresLayerProperty &layerProper if ( ! layerProperty.tableComment.isEmpty() ) { commentItem->setToolTip( layerProperty.tableComment ); + commentItem->setTextAlignment( Qt::AlignTop ); } QStandardItem *geomItem = new QStandardItem( layerProperty.geometryColName ); QStandardItem *sridItem = new QStandardItem( wkbType != QgsWkbTypes::NoGeometry ? QString::number( srid ) : QString() ); From 9f54bda17ea49cdfc77e76f865fc87886146251a Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Tue, 22 Oct 2019 13:20:10 +0200 Subject: [PATCH 4/7] PG source select word wrap table comments --- resources/data/world_map.gpkg | Bin 12689408 -> 12689408 bytes src/providers/postgres/qgspgtablemodel.cpp | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/data/world_map.gpkg b/resources/data/world_map.gpkg index 4b72dca59cc4a17e0c5912616a4a3a77a4e84e7b..9244827d7b1f636a758451d1d350dfa819b912d7 100644 GIT binary patch delta 625 zcmWO2XG4tv06^jQ8rfv8ORtqZlRZkAHzV2egd$4h+SCmv*|K-pd&?g6&-CH>15cu% zDk;$S`5UYu1MPijmM4Cx+X(25oNm@y3X(Mf= zowSz@(os4|vUHX%(p9=icj+NLrI+-UKGIjB(ogzJii9#i2Ff5AEJGw!hRQG*E+b^5 zjFQnZM#joG87~tgO(sgZOp?hmMW)I$nJzPArp%Jrk|CKgN3tYa=E^*oFAHR$ERvYy z$YNO{OJ$kl%5uq*6|z!R$!b|6Yh|6RmkqK}Hpymb`pK6qvQ@T8ffUMi*&#);Q+7$Q zl*n!=l|8ao%4DC!WxpJdgK|g?%Mm#$$K<$_ONAt)QclQ8IVDP!oR(@iBWLBDoRHJ5b9o^z<(0gaH}Y2A m$$R-AALWyLmM>B-U*(&8mml&|e#vk7BY)+eG}O~rSNk78Qv)FY delta 625 zcmWO2XG4tv06^ili!zhFuDtf1*`x?@Wh8r^P=rLTUEFZ8NA@mzZ`q^%nLa#!;7K%8 zCnuUj3-a?y;zeO`S$Sz;Jj@8vf=DFD4#OY_Vl~m6q*xV_BoS#Q&83ATONz9VR?=G9 zNLy(qsnTB3q=R&nPSRPrNLT45-KB^0lwJ~*-jXhTB$U3=Px{LM87PBfundu*GE9cc z2pK7(WVDQtu`*6FWV}p}i84th%M_U^(`342$_&YpY?&#uBu8e;9GNS*GEe49OcqF< zER;pESe8h>ER_OTCd*}otdv!NwI8|ZBioJWrysP zQrRVCvRn2@x$Kp=?34X+Kn}_wIV?w{LMr8`9Fv4p$#FR$Cq=22Q*v6)$XPij=jDQ2 zluL41YUGMsm1}ZcZpcl!CAZ~{+?9KBUmi%U)X776B#-5ZJe6niTwcgac_pvqjl7k2 m@?Jj3NBJb5<%`tISNSI2<%j%~U-Dc2$Y1#<4fQnE)&2)SX#*hu diff --git a/src/providers/postgres/qgspgtablemodel.cpp b/src/providers/postgres/qgspgtablemodel.cpp index facd1575f08e..a661a851f9a7 100644 --- a/src/providers/postgres/qgspgtablemodel.cpp +++ b/src/providers/postgres/qgspgtablemodel.cpp @@ -101,7 +101,8 @@ void QgsPgTableModel::addTableEntry( const QgsPostgresLayerProperty &layerProper QStandardItem *commentItem = new QStandardItem( layerProperty.tableComment ); if ( ! layerProperty.tableComment.isEmpty() ) { - commentItem->setToolTip( layerProperty.tableComment ); + // word wrap + commentItem->setToolTip( QStringLiteral( "%1" ).arg( layerProperty.tableComment ) ); commentItem->setTextAlignment( Qt::AlignTop ); } QStandardItem *geomItem = new QStandardItem( layerProperty.geometryColName ); From 112a1cd9ca62b226ebbf371c2146c3e966870061 Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Tue, 22 Oct 2019 13:23:16 +0200 Subject: [PATCH 5/7] PG source select maintain newline in tooltips --- resources/data/world_map.gpkg | Bin 12689408 -> 12689408 bytes src/providers/postgres/qgspgtablemodel.cpp | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/data/world_map.gpkg b/resources/data/world_map.gpkg index 9244827d7b1f636a758451d1d350dfa819b912d7..e62a6c5c3cb882839b018d8d275a24c018666e09 100644 GIT binary patch delta 600 zcmWO2XIl*b0D#fw8X1-BRdzQUk#fBp^Mcr}UEE5+;45uk@4t5-t%EDFY-*2Ff5AEJI|d43pt9 zLPp9c87nJsflKoVu4 zB*`L4mc_C}mdY|&E-A7?R!XX*NxH0()v`v`N`|bH^%9f~vQak4X4xW{vQ@UpcG)3W zvQu`+ZrLMyWuNSq?widE$&nLsQclTf$(1v5R?f+J$&(9mQ7%co zT$U?RAXlYOilkUVQX+aJNAAi!DVO_FA(iq#9?BzmEKlUARLL`W zE-$27UP_JBN}art*YZZ{<*hWxJ86{n@#M zggVQ^LftB30>P@-)IhKl2}lp=DZQk(gh?OiEB&OugiC}($^eOyfig%2%MckV!(_OO zkdYECqa;RRWweZuu`*7^%LJJyaWY9J%M_U^@iI-O%M6(*vt+g;$Q+p~^CVH`%K}*_ zNwP?iWw9)grLs(xONy+Jm69rHk}j)cwXBh~k|9A^C+lT{Y?Mv1S++=~Y?W=YU3N&8 z?37)yTlUCa*(dv@`zKot$U!+IhvkSIm1B}4xpG`i$VoXRd2(9L$XPij`Ep(^$VDlT zOLAEX<%$$Zv6M(iO697Q$u&{R<+|LEn{rET%N@BZ6>?81rAqG019>QqsetToolTip( QStringLiteral( "%1" ).arg( layerProperty.tableComment ) ); + commentItem->setToolTip( QStringLiteral( "%1" ).arg( layerProperty.tableComment ).replace( '\n', QStringLiteral( "
") ) ); commentItem->setTextAlignment( Qt::AlignTop ); } QStandardItem *geomItem = new QStandardItem( layerProperty.geometryColName ); From 5ec15b8ea2402b5fad80d01de6a5cc726780239a Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Tue, 22 Oct 2019 16:55:31 +0200 Subject: [PATCH 6/7] Code layout --- src/providers/postgres/qgspgtablemodel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/providers/postgres/qgspgtablemodel.cpp b/src/providers/postgres/qgspgtablemodel.cpp index fadef631e765..7c816da2cafd 100644 --- a/src/providers/postgres/qgspgtablemodel.cpp +++ b/src/providers/postgres/qgspgtablemodel.cpp @@ -102,7 +102,7 @@ void QgsPgTableModel::addTableEntry( const QgsPostgresLayerProperty &layerProper if ( ! layerProperty.tableComment.isEmpty() ) { // word wrap - commentItem->setToolTip( QStringLiteral( "%1" ).arg( layerProperty.tableComment ).replace( '\n', QStringLiteral( "
") ) ); + commentItem->setToolTip( QStringLiteral( "%1" ).arg( layerProperty.tableComment ).replace( '\n', QStringLiteral( "
" ) ) ); commentItem->setTextAlignment( Qt::AlignTop ); } QStandardItem *geomItem = new QStandardItem( layerProperty.geometryColName ); From 312ac93b58a7ecd893aff7214ce5c3a3300d7942 Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Wed, 23 Oct 2019 15:06:58 +0200 Subject: [PATCH 7/7] PG source select: remove initial newlines from table comments --- src/providers/postgres/qgspgtablemodel.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/providers/postgres/qgspgtablemodel.cpp b/src/providers/postgres/qgspgtablemodel.cpp index 7c816da2cafd..cd352907e0cd 100644 --- a/src/providers/postgres/qgspgtablemodel.cpp +++ b/src/providers/postgres/qgspgtablemodel.cpp @@ -102,7 +102,10 @@ void QgsPgTableModel::addTableEntry( const QgsPostgresLayerProperty &layerProper if ( ! layerProperty.tableComment.isEmpty() ) { // word wrap - commentItem->setToolTip( QStringLiteral( "%1" ).arg( layerProperty.tableComment ).replace( '\n', QStringLiteral( "
" ) ) ); + QString commentText { layerProperty.tableComment }; + commentText.replace( QRegularExpression( QStringLiteral( "^\n*" ) ), QString() ); + commentItem->setText( commentText ); + commentItem->setToolTip( QStringLiteral( "%1" ).arg( commentText.replace( '\n', QStringLiteral( "
" ) ) ) ); commentItem->setTextAlignment( Qt::AlignTop ); } QStandardItem *geomItem = new QStandardItem( layerProperty.geometryColName );