def testRelations(self): """ check that layers are shown in widget model""" p = QgsProject.instance() # not valid, but doesn't matter for test.... rel = QgsRelation() rel.setId('rel1') rel.setName('Relation Number One') rel.setReferencingLayer(self.referencingLayer.id()) rel.setReferencedLayer(self.referencedLayer.id()) rel.addFieldPair('foreignkey', 'y') rel2 = QgsRelation() rel2.setId('rel2') rel2.setName('Relation Number Two') rel2.setReferencingLayer(self.referencingLayer.id()) rel2.setReferencedLayer(self.referencedLayer.id()) rel2.addFieldPair('foreignkey', 'y') p.relationManager().addRelation(rel) p.relationManager().addRelation(rel2) w = QgsExpressionBuilderWidget() m = w.model() # check that relations are shown items = m.findItems('Relation Number One', Qt.MatchRecursive) self.assertEqual(len(items), 1) items = m.findItems('Relation Number Two', Qt.MatchRecursive) self.assertEqual(len(items), 1)
def testLayers(self): """ check that layers are shown in widget model""" p = QgsProject.instance() layer = QgsVectorLayer("Point", "layer1", "memory") layer2 = QgsVectorLayer("Point", "layer2", "memory") p.addMapLayers([layer, layer2]) w = QgsExpressionBuilderWidget() m = w.model() # check that layers are shown items = m.findItems('layer1', Qt.MatchRecursive) self.assertEqual(len(items), 1) items = m.findItems('layer2', Qt.MatchRecursive) self.assertEqual(len(items), 1) # change project p2 = QgsProject() layer3 = QgsVectorLayer("Point", "layer3", "memory") p2.addMapLayers([layer3]) w.setProject(p2) m = w.model() items = m.findItems('layer1', Qt.MatchRecursive) self.assertEqual(len(items), 0) items = m.findItems('layer2', Qt.MatchRecursive) self.assertEqual(len(items), 0) items = m.findItems('layer3', Qt.MatchRecursive) self.assertEqual(len(items), 1)
def testFunctionPresent(self): """ check through widget model to ensure it is initially populated with functions """ w = QgsExpressionBuilderWidget() m = w.model() # check that some standard expression functions are shown items = m.findItems('lower', Qt.MatchRecursive) self.assertEqual(len(items), 1) items = m.findItems('upper', Qt.MatchRecursive) self.assertEqual(len(items), 1) items = m.findItems('asdasdasda#$@#$', Qt.MatchRecursive) self.assertEqual(len(items), 0)
def testVariables(self): """ check through widget model to ensure it is populated with variables """ w = QgsExpressionBuilderWidget() m = w.model() s = QgsExpressionContextScope() s.setVariable('my_var1', 'x') s.setVariable('my_var2', 'y') c = QgsExpressionContext() c.appendScope(s) # check that variables are added when setting context w.setExpressionContext(c) items = m.findItems('my_var1', Qt.MatchRecursive) self.assertEqual(len(items), 1) items = m.findItems('my_var2', Qt.MatchRecursive) self.assertEqual(len(items), 1) items = m.findItems('not_my_var', Qt.MatchRecursive) self.assertEqual(len(items), 0) # double check that functions are still only there once items = m.findItems('lower', Qt.MatchRecursive) self.assertEqual(len(items), 1) items = m.findItems('upper', Qt.MatchRecursive) self.assertEqual(len(items), 1)
def setupUi(self, FieldsCalculator): FieldsCalculator.setObjectName(_fromUtf8("FieldsCalculator")) FieldsCalculator.resize(681, 681) self.gridLayout = QtGui.QGridLayout(FieldsCalculator) self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.mNewFieldGroupBox = QtGui.QGroupBox(FieldsCalculator) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.mNewFieldGroupBox.sizePolicy().hasHeightForWidth()) self.mNewFieldGroupBox.setSizePolicy(sizePolicy) self.mNewFieldGroupBox.setFlat(True) self.mNewFieldGroupBox.setCheckable(True) self.mNewFieldGroupBox.setChecked(True) self.mNewFieldGroupBox.setObjectName(_fromUtf8("mNewFieldGroupBox")) self.gridlayout = QtGui.QGridLayout(self.mNewFieldGroupBox) self.gridlayout.setSizeConstraint(QtGui.QLayout.SetMinimumSize) self.gridlayout.setContentsMargins(3, 3, 3, 0) self.gridlayout.setVerticalSpacing(3) self.gridlayout.setObjectName(_fromUtf8("gridlayout")) self.mFieldNameLabel = QtGui.QLabel(self.mNewFieldGroupBox) self.mFieldNameLabel.setObjectName(_fromUtf8("mFieldNameLabel")) self.gridlayout.addWidget(self.mFieldNameLabel, 0, 0, 1, 1) self.mOutputFieldNameLineEdit = QtGui.QLineEdit(self.mNewFieldGroupBox) self.mOutputFieldNameLineEdit.setObjectName(_fromUtf8("mOutputFieldNameLineEdit")) self.gridlayout.addWidget(self.mOutputFieldNameLineEdit, 0, 1, 1, 3) self.mOutputFieldTypeLabel = QtGui.QLabel(self.mNewFieldGroupBox) self.mOutputFieldTypeLabel.setObjectName(_fromUtf8("mOutputFieldTypeLabel")) self.gridlayout.addWidget(self.mOutputFieldTypeLabel, 1, 0, 1, 1) self.mOutputFieldTypeComboBox = QtGui.QComboBox(self.mNewFieldGroupBox) self.mOutputFieldTypeComboBox.setObjectName(_fromUtf8("mOutputFieldTypeComboBox")) self.gridlayout.addWidget(self.mOutputFieldTypeComboBox, 1, 1, 1, 3) self.mOutputFieldWidthLabel = QtGui.QLabel(self.mNewFieldGroupBox) self.mOutputFieldWidthLabel.setObjectName(_fromUtf8("mOutputFieldWidthLabel")) self.gridlayout.addWidget(self.mOutputFieldWidthLabel, 2, 0, 1, 1) self.mOutputFieldWidthSpinBox = QtGui.QSpinBox(self.mNewFieldGroupBox) self.mOutputFieldWidthSpinBox.setMinimum(0) self.mOutputFieldWidthSpinBox.setProperty("value", 15) self.mOutputFieldWidthSpinBox.setObjectName(_fromUtf8("mOutputFieldWidthSpinBox")) self.gridlayout.addWidget(self.mOutputFieldWidthSpinBox, 2, 1, 1, 1) self.mOutputFieldPrecisionLabel = QtGui.QLabel(self.mNewFieldGroupBox) self.mOutputFieldPrecisionLabel.setObjectName(_fromUtf8("mOutputFieldPrecisionLabel")) self.gridlayout.addWidget(self.mOutputFieldPrecisionLabel, 2, 2, 1, 1) self.mOutputFieldPrecisionSpinBox = QtGui.QSpinBox(self.mNewFieldGroupBox) self.mOutputFieldPrecisionSpinBox.setProperty("value", 2) self.mOutputFieldPrecisionSpinBox.setObjectName(_fromUtf8("mOutputFieldPrecisionSpinBox")) self.gridlayout.addWidget(self.mOutputFieldPrecisionSpinBox, 2, 3, 1, 1) self.gridLayout.addWidget(self.mNewFieldGroupBox, 2, 0, 1, 1) self.mButtonBox = QtGui.QDialogButtonBox(FieldsCalculator) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(3) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.mButtonBox.sizePolicy().hasHeightForWidth()) self.mButtonBox.setSizePolicy(sizePolicy) self.mButtonBox.setOrientation(QtCore.Qt.Horizontal) self.mButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) self.mButtonBox.setObjectName(_fromUtf8("mButtonBox")) self.gridLayout.addWidget(self.mButtonBox, 5, 0, 1, 2) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) self.label = QtGui.QLabel(FieldsCalculator) self.label.setObjectName(_fromUtf8("label")) self.horizontalLayout.addWidget(self.label) self.cmbInputLayer = QtGui.QComboBox(FieldsCalculator) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.cmbInputLayer.sizePolicy().hasHeightForWidth()) self.cmbInputLayer.setSizePolicy(sizePolicy) self.cmbInputLayer.setObjectName(_fromUtf8("cmbInputLayer")) self.horizontalLayout.addWidget(self.cmbInputLayer) self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 2) self.mUpdateExistingGroupBox = QtGui.QGroupBox(FieldsCalculator) self.mUpdateExistingGroupBox.setFlat(True) self.mUpdateExistingGroupBox.setCheckable(True) self.mUpdateExistingGroupBox.setChecked(False) self.mUpdateExistingGroupBox.setObjectName(_fromUtf8("mUpdateExistingGroupBox")) self.verticalLayout = QtGui.QVBoxLayout(self.mUpdateExistingGroupBox) self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) self.mExistingFieldComboBox = QtGui.QComboBox(self.mUpdateExistingGroupBox) self.mExistingFieldComboBox.setObjectName(_fromUtf8("mExistingFieldComboBox")) self.verticalLayout.addWidget(self.mExistingFieldComboBox) self.gridLayout.addWidget(self.mUpdateExistingGroupBox, 2, 1, 1, 1) self.builder = QgsExpressionBuilderWidget(FieldsCalculator) self.builder.setAutoFillBackground(False) self.builder.setObjectName(_fromUtf8("builder")) self.gridLayout.addWidget(self.builder, 3, 0, 1, 2) self.horizontalLayout_2 = QtGui.QHBoxLayout() self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) self.label_2 = QtGui.QLabel(FieldsCalculator) self.label_2.setObjectName(_fromUtf8("label_2")) self.horizontalLayout_2.addWidget(self.label_2) self.leOutputFile = QtGui.QLineEdit(FieldsCalculator) self.leOutputFile.setObjectName(_fromUtf8("leOutputFile")) self.horizontalLayout_2.addWidget(self.leOutputFile) self.btnBrowse = QtGui.QToolButton(FieldsCalculator) self.btnBrowse.setObjectName(_fromUtf8("btnBrowse")) self.horizontalLayout_2.addWidget(self.btnBrowse) self.gridLayout.addLayout(self.horizontalLayout_2, 1, 0, 1, 2) self.progressBar = QtGui.QProgressBar(FieldsCalculator) self.progressBar.setProperty("value", 0) self.progressBar.setObjectName(_fromUtf8("progressBar")) self.gridLayout.addWidget(self.progressBar, 4, 0, 1, 2) self.mFieldNameLabel.setBuddy(self.mOutputFieldNameLineEdit) self.mOutputFieldTypeLabel.setBuddy(self.mOutputFieldTypeComboBox) self.mOutputFieldWidthLabel.setBuddy(self.mOutputFieldWidthSpinBox) self.mOutputFieldPrecisionLabel.setBuddy(self.mOutputFieldPrecisionSpinBox) self.retranslateUi(FieldsCalculator) QtCore.QObject.connect(self.mButtonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), FieldsCalculator.accept) QtCore.QObject.connect(self.mButtonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), FieldsCalculator.reject) QtCore.QMetaObject.connectSlotsByName(FieldsCalculator) FieldsCalculator.setTabOrder(self.mOutputFieldNameLineEdit, self.mOutputFieldTypeComboBox) FieldsCalculator.setTabOrder(self.mOutputFieldTypeComboBox, self.mOutputFieldWidthSpinBox) FieldsCalculator.setTabOrder(self.mOutputFieldWidthSpinBox, self.mOutputFieldPrecisionSpinBox) FieldsCalculator.setTabOrder(self.mOutputFieldPrecisionSpinBox, self.mButtonBox)
def setupUi(self, FieldsCalculator): FieldsCalculator.setObjectName(_fromUtf8("FieldsCalculator")) FieldsCalculator.resize(681, 681) self.gridLayout = QtGui.QGridLayout(FieldsCalculator) self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.mNewFieldGroupBox = QtGui.QGroupBox(FieldsCalculator) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.mNewFieldGroupBox.sizePolicy().hasHeightForWidth()) self.mNewFieldGroupBox.setSizePolicy(sizePolicy) self.mNewFieldGroupBox.setFlat(True) self.mNewFieldGroupBox.setCheckable(True) self.mNewFieldGroupBox.setChecked(True) self.mNewFieldGroupBox.setObjectName(_fromUtf8("mNewFieldGroupBox")) self.gridlayout = QtGui.QGridLayout(self.mNewFieldGroupBox) self.gridlayout.setSizeConstraint(QtGui.QLayout.SetMinimumSize) self.gridlayout.setContentsMargins(3, 3, 3, 0) self.gridlayout.setVerticalSpacing(3) self.gridlayout.setObjectName(_fromUtf8("gridlayout")) self.mFieldNameLabel = QtGui.QLabel(self.mNewFieldGroupBox) self.mFieldNameLabel.setObjectName(_fromUtf8("mFieldNameLabel")) self.gridlayout.addWidget(self.mFieldNameLabel, 0, 0, 1, 1) self.mOutputFieldNameLineEdit = QtGui.QLineEdit(self.mNewFieldGroupBox) self.mOutputFieldNameLineEdit.setObjectName( _fromUtf8("mOutputFieldNameLineEdit")) self.gridlayout.addWidget(self.mOutputFieldNameLineEdit, 0, 1, 1, 3) self.mOutputFieldTypeLabel = QtGui.QLabel(self.mNewFieldGroupBox) self.mOutputFieldTypeLabel.setObjectName( _fromUtf8("mOutputFieldTypeLabel")) self.gridlayout.addWidget(self.mOutputFieldTypeLabel, 1, 0, 1, 1) self.mOutputFieldTypeComboBox = QtGui.QComboBox(self.mNewFieldGroupBox) self.mOutputFieldTypeComboBox.setObjectName( _fromUtf8("mOutputFieldTypeComboBox")) self.gridlayout.addWidget(self.mOutputFieldTypeComboBox, 1, 1, 1, 3) self.mOutputFieldWidthLabel = QtGui.QLabel(self.mNewFieldGroupBox) self.mOutputFieldWidthLabel.setObjectName( _fromUtf8("mOutputFieldWidthLabel")) self.gridlayout.addWidget(self.mOutputFieldWidthLabel, 2, 0, 1, 1) self.mOutputFieldWidthSpinBox = QtGui.QSpinBox(self.mNewFieldGroupBox) self.mOutputFieldWidthSpinBox.setMinimum(0) self.mOutputFieldWidthSpinBox.setProperty("value", 15) self.mOutputFieldWidthSpinBox.setObjectName( _fromUtf8("mOutputFieldWidthSpinBox")) self.gridlayout.addWidget(self.mOutputFieldWidthSpinBox, 2, 1, 1, 1) self.mOutputFieldPrecisionLabel = QtGui.QLabel(self.mNewFieldGroupBox) self.mOutputFieldPrecisionLabel.setObjectName( _fromUtf8("mOutputFieldPrecisionLabel")) self.gridlayout.addWidget(self.mOutputFieldPrecisionLabel, 2, 2, 1, 1) self.mOutputFieldPrecisionSpinBox = QtGui.QSpinBox( self.mNewFieldGroupBox) self.mOutputFieldPrecisionSpinBox.setProperty("value", 2) self.mOutputFieldPrecisionSpinBox.setObjectName( _fromUtf8("mOutputFieldPrecisionSpinBox")) self.gridlayout.addWidget(self.mOutputFieldPrecisionSpinBox, 2, 3, 1, 1) self.gridLayout.addWidget(self.mNewFieldGroupBox, 2, 0, 1, 1) self.mButtonBox = QtGui.QDialogButtonBox(FieldsCalculator) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(3) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.mButtonBox.sizePolicy().hasHeightForWidth()) self.mButtonBox.setSizePolicy(sizePolicy) self.mButtonBox.setOrientation(QtCore.Qt.Horizontal) self.mButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Ok) self.mButtonBox.setObjectName(_fromUtf8("mButtonBox")) self.gridLayout.addWidget(self.mButtonBox, 5, 0, 1, 2) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) self.label = QtGui.QLabel(FieldsCalculator) self.label.setObjectName(_fromUtf8("label")) self.horizontalLayout.addWidget(self.label) self.cmbInputLayer = QtGui.QComboBox(FieldsCalculator) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.cmbInputLayer.sizePolicy().hasHeightForWidth()) self.cmbInputLayer.setSizePolicy(sizePolicy) self.cmbInputLayer.setObjectName(_fromUtf8("cmbInputLayer")) self.horizontalLayout.addWidget(self.cmbInputLayer) self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 2) self.mUpdateExistingGroupBox = QtGui.QGroupBox(FieldsCalculator) self.mUpdateExistingGroupBox.setFlat(True) self.mUpdateExistingGroupBox.setCheckable(True) self.mUpdateExistingGroupBox.setChecked(False) self.mUpdateExistingGroupBox.setObjectName( _fromUtf8("mUpdateExistingGroupBox")) self.verticalLayout = QtGui.QVBoxLayout(self.mUpdateExistingGroupBox) self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) self.mExistingFieldComboBox = QtGui.QComboBox( self.mUpdateExistingGroupBox) self.mExistingFieldComboBox.setObjectName( _fromUtf8("mExistingFieldComboBox")) self.verticalLayout.addWidget(self.mExistingFieldComboBox) self.gridLayout.addWidget(self.mUpdateExistingGroupBox, 2, 1, 1, 1) self.builder = QgsExpressionBuilderWidget(FieldsCalculator) self.builder.setAutoFillBackground(False) self.builder.setObjectName(_fromUtf8("builder")) self.gridLayout.addWidget(self.builder, 3, 0, 1, 2) self.horizontalLayout_2 = QtGui.QHBoxLayout() self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) self.label_2 = QtGui.QLabel(FieldsCalculator) self.label_2.setObjectName(_fromUtf8("label_2")) self.horizontalLayout_2.addWidget(self.label_2) self.leOutputFile = QtGui.QLineEdit(FieldsCalculator) self.leOutputFile.setObjectName(_fromUtf8("leOutputFile")) self.horizontalLayout_2.addWidget(self.leOutputFile) self.btnBrowse = QtGui.QToolButton(FieldsCalculator) self.btnBrowse.setObjectName(_fromUtf8("btnBrowse")) self.horizontalLayout_2.addWidget(self.btnBrowse) self.gridLayout.addLayout(self.horizontalLayout_2, 1, 0, 1, 2) self.progressBar = QtGui.QProgressBar(FieldsCalculator) self.progressBar.setProperty("value", 0) self.progressBar.setObjectName(_fromUtf8("progressBar")) self.gridLayout.addWidget(self.progressBar, 4, 0, 1, 2) self.mFieldNameLabel.setBuddy(self.mOutputFieldNameLineEdit) self.mOutputFieldTypeLabel.setBuddy(self.mOutputFieldTypeComboBox) self.mOutputFieldWidthLabel.setBuddy(self.mOutputFieldWidthSpinBox) self.mOutputFieldPrecisionLabel.setBuddy( self.mOutputFieldPrecisionSpinBox) self.retranslateUi(FieldsCalculator) QtCore.QObject.connect(self.mButtonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), FieldsCalculator.accept) QtCore.QObject.connect(self.mButtonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), FieldsCalculator.reject) QtCore.QMetaObject.connectSlotsByName(FieldsCalculator) FieldsCalculator.setTabOrder(self.mOutputFieldNameLineEdit, self.mOutputFieldTypeComboBox) FieldsCalculator.setTabOrder(self.mOutputFieldTypeComboBox, self.mOutputFieldWidthSpinBox) FieldsCalculator.setTabOrder(self.mOutputFieldWidthSpinBox, self.mOutputFieldPrecisionSpinBox) FieldsCalculator.setTabOrder(self.mOutputFieldPrecisionSpinBox, self.mButtonBox)
# coding: utf-8 from PyQt4.QtGui import QWidget from qgis.gui import QgsExpressionBuilderWidget w = QWidget() expression_builder_widget = QgsExpressionBuilderWidget(w) w.show()
def testStoredExpressions(self): """Check that expressions can be stored and retrieved""" w = QgsExpressionBuilderWidget() w.saveToUserExpressions('Stored Expression Number One', '"field_one" = 123', "An humble expression") items = w.findExpressions('Stored Expression Number One') self.assertEqual(len(items), 1) exp = items[0] self.assertEqual(exp.getExpressionText(), '"field_one" = 123') # Add another one with the same name (overwrite) w.saveToUserExpressions('Stored Expression Number One', '"field_two" = 456', "An even more humble expression") items = w.findExpressions('Stored Expression Number One') self.assertEqual(len(items), 1) exp = items[0] self.assertEqual(exp.getExpressionText(), '"field_two" = 456') # Reload by creating a new widget w = QgsExpressionBuilderWidget() items = w.findExpressions('Stored Expression Number One') self.assertEqual(len(items), 1) exp = items[0] self.assertEqual(exp.getExpressionText(), '"field_two" = 456') # Test removal w.removeFromUserExpressions('Stored Expression Number One') items = w.findExpressions('Stored Expression Number One') self.assertEqual(len(items), 0)
def testValuesList(self): """ Test the content of values list widget """ w = QgsExpressionBuilderWidget() valuesList = w.findChild(QListView, 'mValuesListView') self.assertTrue(valuesList) valuesModel = valuesList.model() self.assertTrue(valuesModel) layer = QgsVectorLayer( "None?field=myarray:string[]&field=mystr:string&field=myint:integer&field=myintarray:int[]&field=mydoublearray:double[]", "arraylayer", "memory") self.assertTrue(layer.isValid()) # add some features, one has invalid geometry pr = layer.dataProvider() f1 = QgsFeature(1) f1.setAttributes([["one 'item'", 'B'], "another 'item'", 0, [1, 2], [1.1, 2.1]]) f2 = QgsFeature(2) f2.setAttributes([['C'], "", 1, [3, 4], [-0.1, 2.0]]) f3 = QgsFeature(3) f3.setAttributes([[], "test", 2, [], []]) f4 = QgsFeature(4) self.assertTrue(pr.addFeatures([f1, f2, f3, f4])) w.setLayer(layer) # test string array items = w.expressionTree().findExpressions("myarray") self.assertEqual(len(items), 1) currentIndex = w.expressionTree().model().mapFromSource(items[0].index()) self.assertTrue(currentIndex.isValid()) w.expressionTree().setCurrentIndex(currentIndex) self.assertTrue(w.expressionTree().currentItem()) w.loadAllValues() datas = sorted([(valuesModel.data(valuesModel.index(i, 0), Qt.DisplayRole), valuesModel.data(valuesModel.index(i, 0), Qt.UserRole + 1)) for i in range(4)]) self.assertEqual(datas, [(" [array()]", "array()"), ("C [array('C')]", "array('C')"), ("NULL [NULL]", "NULL"), ("one 'item', B [array('one ''item''', 'B')]", "array('one ''item''', 'B')")]) # test string items = w.expressionTree().findExpressions("mystr") self.assertEqual(len(items), 1) currentIndex = w.expressionTree().model().mapFromSource(items[0].index()) self.assertTrue(currentIndex.isValid()) w.expressionTree().setCurrentIndex(currentIndex) self.assertTrue(w.expressionTree().currentItem()) w.loadAllValues() datas = sorted([(valuesModel.data(valuesModel.index(i, 0), Qt.DisplayRole), valuesModel.data(valuesModel.index(i, 0), Qt.UserRole + 1)) for i in range(4)]) self.assertEqual(datas, [("", "''"), ("NULL [NULL]", "NULL"), ("another 'item'", "'another ''item'''"), ("test", "'test'")]) # test int items = w.expressionTree().findExpressions("myint") self.assertEqual(len(items), 1) currentIndex = w.expressionTree().model().mapFromSource(items[0].index()) self.assertTrue(currentIndex.isValid()) w.expressionTree().setCurrentIndex(currentIndex) self.assertTrue(w.expressionTree().currentItem()) w.loadAllValues() datas = sorted([(valuesModel.data(valuesModel.index(i, 0), Qt.DisplayRole), valuesModel.data(valuesModel.index(i, 0), Qt.UserRole + 1)) for i in range(4)]) self.assertEqual(datas, [("0", "0"), ("1", "1"), ("2", "2"), ("NULL [NULL]", "NULL")]) # test int array items = w.expressionTree().findExpressions("myintarray") self.assertEqual(len(items), 1) currentIndex = w.expressionTree().model().mapFromSource(items[0].index()) self.assertTrue(currentIndex.isValid()) w.expressionTree().setCurrentIndex(currentIndex) self.assertTrue(w.expressionTree().currentItem()) w.loadAllValues() datas = sorted([(valuesModel.data(valuesModel.index(i, 0), Qt.DisplayRole), valuesModel.data(valuesModel.index(i, 0), Qt.UserRole + 1)) for i in range(4)]) self.assertEqual(datas, [(" [array()]", "array()"), ("1, 2 [array(1, 2)]", "array(1, 2)"), ("3, 4 [array(3, 4)]", "array(3, 4)"), ("NULL [NULL]", "NULL"), ]) # test double array items = w.expressionTree().findExpressions("mydoublearray") self.assertEqual(len(items), 1) currentIndex = w.expressionTree().model().mapFromSource(items[0].index()) self.assertTrue(currentIndex.isValid()) w.expressionTree().setCurrentIndex(currentIndex) self.assertTrue(w.expressionTree().currentItem()) w.loadAllValues() datas = sorted([(valuesModel.data(valuesModel.index(i, 0), Qt.DisplayRole), valuesModel.data(valuesModel.index(i, 0), Qt.UserRole + 1)) for i in range(4)]) self.assertEqual(datas, [(" [array()]", "array()"), ("-0.1, 2 [array(-0.1, 2)]", "array(-0.1, 2)"), ("1.1, 2.1 [array(1.1, 2.1)]", "array(1.1, 2.1)"), ("NULL [NULL]", "NULL"), ])