qgis-tem-loader

qgis plugin for loading TEM geophysical inversion XYZ files as 3D objects
git clone git://src.adamsgaard.dk/qgis-tem-loader # fast
git clone https://src.adamsgaard.dk/qgis-tem-loader.git # slow
Log | Files | Refs | README | LICENSE Back to index

commit 2444f6ea0afaf4faae96aae33b416a8ce545a141
parent dccc776ed89d325fce2972786865b967510671b4
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date:   Fri, 15 May 2026 23:27:46 +0200

feat(qgis): add DEM raster selector

Diffstat:
Mtem_loader/tem_loader.py | 8++++++++
Mtest/test_core.py | 47++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 54 insertions(+), 1 deletion(-)

diff --git a/tem_loader/tem_loader.py b/tem_loader/tem_loader.py @@ -156,8 +156,16 @@ class _ImportOptionsDialog(QDialog): ) self._dem_checkbox.setChecked(False) + self._dem_raster_combo = QgsMapLayerComboBox() + self._dem_raster_combo.setProject(QgsProject.instance()) + self._dem_raster_combo.setFilters(_layer_filter('RasterLayer')) + self._dem_raster_combo.setAllowEmptyLayer(True, 'No elevation raster') + self._dem_raster_combo.setEnabled(False) + self._dem_checkbox.toggled.connect(self._dem_raster_combo.setEnabled) + form = QFormLayout() form.addRow('Opacity', self._opacity_spinbox) + form.addRow('Elevation raster', self._dem_raster_combo) buttons = QDialogButtonBox(_dialog_buttons()) buttons.accepted.connect(self.accept) diff --git a/test/test_core.py b/test/test_core.py @@ -553,7 +553,32 @@ class PluginTests(unittest.TestCase): return self._value class FakeMapLayerComboBox: - pass + def __init__(self): + self.project = None + self.filters = None + self.allow_empty = False + self.empty_text = None + self.enabled = True + self._layer = None + + def setProject(self, project): + self.project = project + + def setFilters(self, filters): + self.filters = filters + + def setAllowEmptyLayer(self, allow_empty, text=""): + self.allow_empty = bool(allow_empty) + self.empty_text = text + + def setEnabled(self, enabled): + self.enabled = bool(enabled) + + def currentLayer(self): + return self._layer + + def setLayer(self, layer): + self._layer = layer class FakeVBoxLayout: def __init__(self): @@ -917,6 +942,26 @@ class PluginTests(unittest.TestCase): }, ) + def test_import_options_dialog_dem_raster_combo_toggles_with_checkbox(self): + module, _, _ = self._import_plugin_module() + + dialog = module._ImportOptionsDialog(object()) + + self.assertIs(dialog._dem_raster_combo.project, module.QgsProject.instance()) + self.assertEqual( + dialog._dem_raster_combo.filters, + module.Qgis.LayerFilter.RasterLayer, + ) + self.assertTrue(dialog._dem_raster_combo.allow_empty) + self.assertEqual(dialog._dem_raster_combo.empty_text, "No elevation raster") + self.assertFalse(dialog._dem_raster_combo.enabled) + + dialog._dem_checkbox.setChecked(True) + self.assertTrue(dialog._dem_raster_combo.enabled) + + dialog._dem_checkbox.setChecked(False) + self.assertFalse(dialog._dem_raster_combo.enabled) + def test_import_options_dialog_supports_qt6_button_namespace(self): module, _, _ = self._import_plugin_module(qt6_enums=True)