Skip to content

Commit 419abb3

Browse files
committed
fix: update compatibility for qt6
1 parent d62da7c commit 419abb3

46 files changed

Lines changed: 603 additions & 391 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# compat.py
2+
from qgis.PyQt.QtCore import QVariant
3+
4+
try:
5+
from qgis.PyQt.QtCore import QMetaType
6+
7+
# We create a proxy class to mimic the old QVariant.Type behavior
8+
class QVariantProxy:
9+
Type = QMetaType.Type
10+
# Add common types here if needed
11+
Int = QMetaType.Type.Int
12+
Double = QMetaType.Type.Double
13+
String = QMetaType.Type.QString
14+
Bool = QMetaType.Type.Bool
15+
16+
# In QGIS 4, we use our proxy
17+
QVariantCompat = QVariantProxy
18+
except (ImportError, AttributeError):
19+
# In QGIS 3, QVariant already has .Type
20+
QVariantCompat = QVariant

loopstructural/gui/data_conversion/data_conversion_widget.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88
from typing import Any, Dict, Iterable, List, Mapping, Optional, Tuple
99

1010
from LoopDataConverter import Datatype, InputData, LoopConverter, SurveyName
11-
from PyQt5.QtCore import Qt, QTimer
12-
from PyQt5.QtWidgets import (
11+
from qgis.core import QgsMapLayerProxyModel, QgsProject, QgsVectorLayer
12+
from qgis.gui import QgsMapLayerComboBox
13+
from qgis.PyQt.QtCore import Qt, QTimer
14+
from qgis.PyQt.QtWidgets import (
1315
QComboBox,
1416
QDialog,
1517
QDialogButtonBox,
@@ -21,8 +23,6 @@
2123
QVBoxLayout,
2224
QWidget,
2325
)
24-
from qgis.core import QgsMapLayerProxyModel, QgsProject, QgsVectorLayer
25-
from qgis.gui import QgsMapLayerComboBox
2626

2727
from ...main.helpers import ColumnMatcher
2828
from ...main.vectorLayerWrapper import QgsLayerFromDataFrame, QgsLayerFromGeoDataFrame

loopstructural/gui/loop_widget.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
interface for interacting with LoopStructural features inside QGIS.
66
"""
77

8-
from PyQt5.QtWidgets import QTabWidget, QVBoxLayout, QWidget
8+
from qgis.PyQt.QtWidgets import QTabWidget, QVBoxLayout, QWidget
99

1010
from .modelling.modelling_widget import ModellingWidget
1111
from .visualisation.visualisation_widget import VisualisationWidget

loopstructural/gui/map2loop_tools/basal_contacts_widget.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import os
44

5-
from PyQt5.QtWidgets import QMessageBox, QWidget
65
from qgis.core import QgsProject, QgsVectorFileWriter
76
from qgis.PyQt import uic
7+
from qgis.PyQt.QtWidgets import QMessageBox, QWidget
88

99
from ...main.helpers import ColumnMatcher, get_layer_names
1010
from ...main.m2l_api import extract_basal_contacts

loopstructural/gui/map2loop_tools/dialogs.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
instead of QGIS processing algorithms.
55
"""
66

7-
from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout
7+
from qgis.PyQt.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout
88

99

1010
class SamplerDialog(QDialog):
@@ -23,7 +23,9 @@ def setup_ui(self):
2323
from .sampler_widget import SamplerWidget
2424

2525
layout = QVBoxLayout(self)
26-
self.widget = SamplerWidget(self, data_manager=self.data_manager, debug_manager=self.debug_manager)
26+
self.widget = SamplerWidget(
27+
self, data_manager=self.data_manager, debug_manager=self.debug_manager
28+
)
2729
layout.addWidget(self.widget)
2830

2931
# Replace the run button with dialog buttons

loopstructural/gui/map2loop_tools/fault_topology_widget.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import os
44

55
import geopandas as gpd
6-
from PyQt5.QtWidgets import QDialog, QMessageBox
76
from qgis.core import QgsMapLayerProxyModel
87
from qgis.PyQt import uic
8+
from qgis.PyQt.QtWidgets import QDialog, QMessageBox
99

1010

1111
class FaultTopologyWidget(QDialog):

loopstructural/gui/map2loop_tools/paint_stratigraphic_order_widget.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22

33
import os
44

5-
from PyQt5.QtWidgets import QMessageBox, QWidget
65
from qgis.core import QgsMapLayerProxyModel
76
from qgis.PyQt import uic
8-
7+
from qgis.PyQt.QtWidgets import QMessageBox, QWidget
98

109
from ...main.m2l_api import paint_stratigraphic_order
1110

@@ -185,7 +184,6 @@ def _run_painter(self):
185184

186185
# Step 1: create a memory copy of the geology layer and copy attributes/geometry
187186
try:
188-
from PyQt5.QtCore import QVariant
189187
from qgis.core import (
190188
QgsFeature,
191189
QgsField,
@@ -198,6 +196,8 @@ def _run_painter(self):
198196
QgsWkbTypes,
199197
)
200198

199+
from loopstructural.gui.compatibility import QVariantCompat
200+
201201
geom_type = QgsWkbTypes.displayString(geology_layer.wkbType())
202202
crs_auth = (
203203
geology_layer.crs().authid() if hasattr(geology_layer, 'crs') else None
@@ -240,7 +240,7 @@ def _run_painter(self):
240240
try:
241241
if field_name not in [f.name() for f in mem_layer.fields()]:
242242
mem_layer.startEditing()
243-
mem_dp.addAttributes([QgsField(field_name, QVariant.Int)])
243+
mem_dp.addAttributes([QgsField(field_name, QVariantCompat.Int)])
244244
mem_layer.updateFields()
245245
mem_layer.commitChanges()
246246

loopstructural/gui/map2loop_tools/sampler_widget.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import os
44

5-
from PyQt5.QtWidgets import QMessageBox, QWidget
65
from qgis.core import QgsProject, QgsWkbTypes
76
from qgis.PyQt import uic
7+
from qgis.PyQt.QtWidgets import QMessageBox, QWidget
88

99
from loopstructural.toolbelt.preferences import PlgOptionsManager
1010

@@ -226,7 +226,8 @@ def _run_sampler(self):
226226
QgsPointXY,
227227
QgsVectorLayer,
228228
)
229-
from qgis.PyQt.QtCore import QVariant
229+
230+
from loopstructural.gui.compatibility import QVariantCompat
230231

231232
from ...main.m2l_api import sample_contacts
232233

@@ -293,11 +294,11 @@ def _run_sampler(self):
293294
dtype_str = str(dtype)
294295

295296
if dtype_str in ['float16', 'float32', 'float64']:
296-
field_type = QVariant.Double
297+
field_type = QVariantCompat.Double
297298
elif dtype_str in ['int8', 'int16', 'int32', 'int64']:
298-
field_type = QVariant.Int
299+
field_type = QVariantCompat.Int
299300
else:
300-
field_type = QVariant.String
301+
field_type = QVariantCompat.String
301302

302303
fields.append(QgsField(column_name, field_type))
303304

loopstructural/gui/map2loop_tools/sorter_widget.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22

33
import os
44

5-
from PyQt5.QtWidgets import QMessageBox, QWidget
6-
from qgis.core import QgsRasterLayer
7-
from qgis.core import QgsMapLayerProxyModel
8-
5+
from qgis.core import QgsMapLayerProxyModel, QgsRasterLayer
96
from qgis.PyQt import uic
7+
from qgis.PyQt.QtWidgets import QMessageBox, QWidget
108

119
from loopstructural.main.helpers import get_layer_names
1210
from loopstructural.main.m2l_api import PARAMETERS_DICTIONARY, SORTER_LIST

loopstructural/gui/map2loop_tools/thickness_calculator_widget.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import os
44

55
import pandas as pd
6-
from PyQt5.QtWidgets import QMessageBox, QWidget
76
from qgis.core import QgsMapLayerProxyModel
87
from qgis.PyQt import uic
8+
from qgis.PyQt.QtWidgets import QMessageBox, QWidget
99

1010
from loopstructural.toolbelt.preferences import PlgOptionsManager
1111

0 commit comments

Comments
 (0)