Skip to content

Commit 0e8db15

Browse files
committed
fix: different settings for structural frames
1 parent cea7d79 commit 0e8db15

File tree

1 file changed

+43
-16
lines changed

1 file changed

+43
-16
lines changed

loopstructural/gui/modelling/feature_details_panel.py

Lines changed: 43 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
from PyQt5.QtCore import Qt
55
from PyQt5.QtWidgets import QScrollArea
66
from LoopStructural.utils import normal_vector_to_strike_and_dip
7+
from LoopStructural.modelling.features import StructuralFrame
78
class BaseFeatureDetailsPanel(QWidget):
89
def __init__(self, parent=None,*, feature=None):
910
super().__init__(parent)
10-
1111
# Create a scroll area for horizontal scrolling
1212
scroll = QScrollArea(self)
1313
scroll.setWidgetResizable(True)
@@ -32,10 +32,6 @@ def __init__(self, parent=None,*, feature=None):
3232
self.regularisation_spin_box = QDoubleSpinBox()
3333
self.regularisation_spin_box.setRange(0, 100)
3434
self.regularisation_spin_box.setValue(feature.builder.build_arguments.get('regularisation', 1.0))
35-
36-
# self.regularisation_slider.valueChanged.connect(
37-
# lambda value: feature.builder.foliation_parameters.__setitem__('regularisation', value)
38-
# )
3935
self.regularisation_spin_box.valueChanged.connect(
4036
lambda value: feature.builder.update_build_arguments({'regularisation': value})
4137
)
@@ -58,10 +54,10 @@ def __init__(self, parent=None,*, feature=None):
5854

5955
self.n_elements_spinbox = QDoubleSpinBox()
6056
self.n_elements_spinbox.setRange(100, 1000000)
61-
self.n_elements_spinbox.setValue(feature.interpolator.n_elements)
57+
self.n_elements_spinbox.setValue(self.getNelements(feature))
6258
self.n_elements_spinbox.setPrefix("Number of Elements: ")
6359

64-
self.n_elements_spinbox.valueChanged.connect(lambda value: feature.builder.update_build_arguments({'nelements': value}))
60+
self.n_elements_spinbox.valueChanged.connect(self.updateNelements)
6561

6662
# Form layout for better organization
6763
form_layout = QFormLayout()
@@ -71,10 +67,36 @@ def __init__(self, parent=None,*, feature=None):
7167
form_layout.addRow('Contact points weight', self.cpw_spin_box)
7268
form_layout.addRow('Orientation point weight', self.npw_spin_box)
7369

70+
QgsCollapsibleGroupBox = QWidget()
71+
QgsCollapsibleGroupBox.setLayout(form_layout)
72+
self.layout.addWidget(QgsCollapsibleGroupBox)
7473

7574

76-
self.layout.addLayout(form_layout)
77-
75+
# self.layout.addLayout(form_layout)
76+
def updateNelements(self, value):
77+
"""Update the number of elements in the feature's interpolator."""
78+
if self.feature:
79+
if issubclass(type(self.feature),StructuralFrame):
80+
for i in range(3):
81+
if self.feature[i].interpolator is not None:
82+
self.feature[i].interpolator.n_elements = value
83+
self.feature[i].builder.update_build_arguments({'n_elements': value})
84+
self.feature[i].builder.build()
85+
elif self.feature.interpolator is not None:
86+
87+
self.feature.interpolator.n_elements = value
88+
self.feature.builder.update_build_arguments({'n_elements': value})
89+
self.feature.builder.build()
90+
else:
91+
print("Error: Feature is not initialized.")
92+
def getNelements(self, feature):
93+
"""Get the number of elements from the feature's interpolator."""
94+
if feature:
95+
if issubclass(type(feature),StructuralFrame):
96+
return feature[0].interpolator.n_elements
97+
elif feature.interpolator is not None:
98+
return feature.interpolator.n_elements
99+
return 1000
78100
class FaultFeatureDetailsPanel(BaseFeatureDetailsPanel):
79101
def __init__(self, parent=None,*, fault=None):
80102
super().__init__(parent,feature=fault)
@@ -96,8 +118,7 @@ def __init__(self, parent=None,*, fault=None):
96118
self.displacement_spinbox = QDoubleSpinBox()
97119
self.displacement_spinbox.setRange(0, 1000000) # Example range
98120
self.displacement_spinbox.setValue(self.fault.displacement)
99-
self.displacement_label = QLabel(f"Fault Displacement:")
100-
self.displacement_slider.valueChanged.connect(
121+
self.displacement_spinbox.valueChanged.connect(
101122
lambda value: self.fault_parameters.__setitem__('displacement', value)
102123
)
103124

@@ -132,6 +153,12 @@ def __init__(self, parent=None,*, fault=None):
132153
self.dip_spinbox.valueChanged.connect(
133154
lambda value: self.fault_parameters.__setitem__('dip', value)
134155
)
156+
self.pitch_spinbox = QDoubleSpinBox()
157+
self.pitch_spinbox.setRange(0, 180)
158+
self.pitch_spinbox.setValue(self.fault_parameters['pitch'])
159+
self.pitch_spinbox.valueChanged.connect(
160+
lambda value: self.fault_parameters.__setitem__('pitch', value)
161+
)
135162
# self.dip_spinbox.valueChanged.connect(
136163

137164
# Enabled field
@@ -140,11 +167,11 @@ def __init__(self, parent=None,*, fault=None):
140167

141168
# Form layout for better organization
142169
form_layout = QFormLayout()
143-
form_layout.addRow(self.displacement_label, self.displacement_spinbox)
144-
form_layout.addRow("Major Axis Length:", self.major_axis_spinbox)
145-
form_layout.addRow("Minor Axis Length:", self.minor_axis_spinbox)
146-
form_layout.addRow("Intermediate Axis Length:", self.intermediate_axis_spinbox)
147-
form_layout.addRow("Fault Dip:", self.dip_spinbox)
170+
form_layout.addRow("Fault displacement", self.displacement_spinbox)
171+
form_layout.addRow("Major Axis Length", self.major_axis_spinbox)
172+
form_layout.addRow("Minor Axis Length", self.minor_axis_spinbox)
173+
form_layout.addRow("Intermediate Axis Length", self.intermediate_axis_spinbox)
174+
form_layout.addRow("Fault Dip", self.dip_spinbox)
148175
# form_layout.addRow("Enabled:", self.enabled_checkbox)
149176

150177
self.layout.addLayout(form_layout)

0 commit comments

Comments
 (0)