mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
Fix QgsFieldComboBox::setField sets incorrect field when filter is present
This commit is contained in:
parent
9efd666e48
commit
6e49403163
@ -62,7 +62,7 @@ void QgsFieldComboBox::setField( const QString &fieldName )
|
||||
QModelIndex proxyIdx = mFieldProxyModel->mapFromSource( idx );
|
||||
if ( proxyIdx.isValid() )
|
||||
{
|
||||
setCurrentIndex( idx.row() );
|
||||
setCurrentIndex( proxyIdx.row() );
|
||||
emit fieldChanged( currentField() );
|
||||
return;
|
||||
}
|
||||
|
@ -52,6 +52,7 @@ ADD_PYTHON_TEST(PyQgsExtentGroupBox test_qgsextentgroupbox.py)
|
||||
ADD_PYTHON_TEST(PyQgsFeature test_qgsfeature.py)
|
||||
ADD_PYTHON_TEST(PyQgsFeatureSink test_qgsfeaturesink.py)
|
||||
ADD_PYTHON_TEST(PyQgsFeatureSource test_qgsfeaturesource.py)
|
||||
ADD_PYTHON_TEST(PyQgsFieldComboBoxTest test_qgsfieldcombobox.py)
|
||||
ADD_PYTHON_TEST(PyQgsFieldFormattersTest test_qgsfieldformatters.py)
|
||||
ADD_PYTHON_TEST(PyQgsFillSymbolLayers test_qgsfillsymbollayers.py)
|
||||
ADD_PYTHON_TEST(PyQgsProject test_qgsproject.py)
|
||||
|
65
tests/src/python/test_qgsfieldcombobox.py
Normal file
65
tests/src/python/test_qgsfieldcombobox.py
Normal file
@ -0,0 +1,65 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""QGIS Unit tests for QgsFieldComboBox
|
||||
|
||||
.. note:: This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
"""
|
||||
__author__ = 'Nyall Dawson'
|
||||
__date__ = '20/07/2017'
|
||||
__copyright__ = 'Copyright 2017, The QGIS Project'
|
||||
# This will get replaced with a git SHA1 when you do a git archive
|
||||
__revision__ = '$Format:%H$'
|
||||
|
||||
import qgis # NOQA
|
||||
|
||||
from qgis.core import QgsFields, QgsVectorLayer, QgsFieldProxyModel
|
||||
from qgis.gui import QgsFieldComboBox
|
||||
from qgis.PyQt.QtCore import QVariant, Qt
|
||||
|
||||
from qgis.testing import start_app, unittest
|
||||
|
||||
start_app()
|
||||
|
||||
|
||||
def create_layer():
|
||||
layer = QgsVectorLayer("Point?field=fldtxt:string&field=fldint:integer&field=fldint2:integer",
|
||||
"addfeat", "memory")
|
||||
assert layer.isValid()
|
||||
return layer
|
||||
|
||||
|
||||
def create_model():
|
||||
l = create_layer()
|
||||
m = QgsFieldModel()
|
||||
m.setLayer(l)
|
||||
return l, m
|
||||
|
||||
|
||||
class TestQgsFieldComboBox(unittest.TestCase):
|
||||
|
||||
def testGettersSetters(self):
|
||||
""" test combobox getters/setters """
|
||||
l = create_layer()
|
||||
w = QgsFieldComboBox()
|
||||
w.setLayer(l)
|
||||
self.assertEqual(w.layer(), l)
|
||||
|
||||
w.setField('fldint')
|
||||
self.assertEqual(w.currentField(), 'fldint')
|
||||
|
||||
def testFilter(self):
|
||||
""" test setting field with filter """
|
||||
l = create_layer()
|
||||
w = QgsFieldComboBox()
|
||||
w.setLayer(l)
|
||||
w.setFilters(QgsFieldProxyModel.Int)
|
||||
self.assertEqual(w.layer(), l)
|
||||
|
||||
w.setField('fldint')
|
||||
self.assertEqual(w.currentField(), 'fldint')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
Loading…
x
Reference in New Issue
Block a user