def test_header_tooltip(self): rat = get_rat(self.raster_layer_color, 1) model = RATModel(rat) tooltip = model.getHeaderTooltip(1) self.assertIn('<dt>Role</dt><dd>Class value(min=max)</dd>', tooltip) self.assertIn('<dt>Type</dt><dd>Integer</dd>', tooltip) tooltip = model.getHeaderTooltip(2) self.assertIn('<dt>Role</dt><dd>Histogram pixel count</dd>', tooltip) self.assertIn('<dt>Type</dt><dd>Integer</dd>', tooltip) tooltip = model.getHeaderTooltip(3) self.assertIn('<dt>Role</dt><dd>General purpose field</dd>', tooltip) self.assertIn('<dt>Type</dt><dd>String</dd>', tooltip)
def test_remove_color(self): rat = get_rat(self.raster_layer_color, 1) model = RATModel(rat) tester = QAbstractItemModelTester( model, QAbstractItemModelTester.FailureReportingMode.Warning) self.assertTrue({'R', 'G', 'B'}.issubset(rat.keys)) self.assertTrue({'R', 'G', 'B'}.issubset(model.headers)) self.assertTrue(model.has_color) column_count = model.columnCount(QModelIndex()) self.assertEqual(column_count, 17) # Remove colors self.assertTrue(model.remove_color()) self.assertEqual(model.columnCount(QModelIndex()), column_count - 4) self.assertFalse(rat.has_color) self.assertFalse(model.has_color) self.assertFalse({'R', 'G', 'B'}.issubset(rat.keys)) self.assertFalse({'R', 'G', 'B'}.issubset(model.headers)) # Add color back (with alpha) self.assertTrue(model.insert_color(2)) self.assertEqual(model.columnCount(QModelIndex()), column_count + 1) self.assertTrue({'R', 'G', 'B'}.issubset(rat.keys)) self.assertTrue({'R', 'G', 'B'}.issubset(model.headers)) self.assertTrue(rat.has_color) self.assertTrue(model.has_color) self.assertTrue(RAT_COLOR_HEADER_NAME in rat.keys)
def loadRat(self, band_0_based) -> bool: """Load RAT for raster band 0-based""" if type(band_0_based) != int: rat_log( QCoreApplication.translate( 'RAT', 'Invalid band number for the selected raster.'), Qgis.Critical) return False self.mClassifyComboBox.clear() self.rat = get_rat(self.raster_layer, band_0_based + 1) if self.rat.keys: self.model = RATModel(self.rat) if os.environ.get('CI'): self.tester = QAbstractItemModelTester(self.model) self.model.dataChanged.connect(self.dirty) self.model.rowsInserted.connect(self.dirty) self.model.rowsRemoved.connect(self.dirty) self.model.columnsInserted.connect(self.dirty) self.model.columnsRemoved.connect(self.dirty) self.model.columnsInserted.connect(self.updateClassify) self.model.columnsRemoved.connect(self.updateClassify) self.proxyModel = QSortFilterProxyModel(self) self.proxyModel.setSourceModel(self.model) self.mRATView.setModel(self.proxyModel) self.mRATView.selectionModel().selectionChanged.connect( self.updateButtons) # Color picker if self.rat.has_color: if gdal.GFU_Alpha in self.rat.field_usages: colorDelegate = ColorAlphaDelegate(self.mRATView) else: colorDelegate = ColorDelegate(self.mRATView) self.mRATView.setItemDelegateForColumn(0, colorDelegate) self.updateClassify() self.mRATView.sortByColumn( self.model.headers.index(self.rat.value_columns[0]), Qt.AscendingOrder) return True else: rat_log( QCoreApplication.translate( 'RAT', 'There is no Raster Attribute Table for the selected raster.' ), Qgis.Critical) return False
def test_edit_color(self): rat = get_rat(self.raster_layer_color, 1) model = RATModel(rat) tester = QAbstractItemModelTester( model, QAbstractItemModelTester.FailureReportingMode.Warning) index = model.index(0, 0) value = QColor(Qt.magenta) model.setData(index, value) self.assertEqual(model.data(index, Qt.BackgroundColorRole), value)
def test_remove_column(self): rat = get_rat(self.raster_layer, 1) self.assertTrue(rat.isValid()) model = RATModel(rat) tester = QAbstractItemModelTester( model, QAbstractItemModelTester.FailureReportingMode.Warning) column_count = model.columnCount(QModelIndex()) self.assertFalse(model.remove_column(0)[0]) self.assertFalse(model.remove_column(1)[0]) self.assertTrue(model.remove_column(2)[0]) self.assertEqual(model.columnCount(QModelIndex()), column_count - 1)
def test_insert_column_color(self): rat = get_rat(self.raster_layer_color, 1) self.assertTrue(rat.isValid()) model = RATModel(rat) tester = QAbstractItemModelTester( model, QAbstractItemModelTester.FailureReportingMode.Warning) column_count = model.columnCount(QModelIndex()) field = RATField('f1', gdal.GFU_Generic, gdal.GFT_String) self.assertTrue(model.insert_column(3, field)[0]) self.assertEqual(model.columnCount(QModelIndex()), column_count + 1) self.assertEqual(model.headers.index('f1'), 3) # Error field = RATField('f1', gdal.GFU_Generic, gdal.GFT_String) self.assertFalse(model.insert_column(3, field)[0]) self.assertEqual(model.columnCount(QModelIndex()), column_count + 1)
def _test(raster_layer): rat = get_rat(self.raster_layer_color, 1) model = RATModel(rat) tester = QAbstractItemModelTester( model, QAbstractItemModelTester.FailureReportingMode.Warning) row_count = model.rowCount(QModelIndex()) value_index = 1 if model.has_color else 0 value_0 = model.data(model.index(0, value_index, QModelIndex())) value_last = model.data( model.index(row_count - 1, value_index, QModelIndex())) # Insert first self.assertTrue(model.insert_row(0)) self.assertEqual(model.rowCount(QModelIndex()), row_count + 1) self.assertNotEqual( model.data(model.index(0, value_index, QModelIndex())), value_0) self.assertEqual( model.data(model.index(0, value_index, QModelIndex())), 0) self.assertTrue(model.remove_row(0)) self.assertEqual(model.rowCount(QModelIndex()), row_count) self.assertEqual( model.data(model.index(0, value_index, QModelIndex())), value_0) # Insert last self.assertTrue(model.insert_row(row_count)) self.assertEqual(model.rowCount(QModelIndex()), row_count + 1) self.assertNotEqual( model.data(model.index(row_count, value_index, QModelIndex())), value_last) self.assertEqual( model.data(model.index(row_count, value_index, QModelIndex())), 0) self.assertEqual( model.data( model.index(row_count - 1, value_index, QModelIndex())), value_last) self.assertTrue(model.remove_row(row_count)) self.assertEqual(model.rowCount(QModelIndex()), row_count) self.assertEqual( model.data( model.index(row_count - 1, value_index, QModelIndex())), value_last)