44from PyQt5 .QtCore import Qt
55from PyQt5 .QtWidgets import QScrollArea
66from LoopStructural .utils import normal_vector_to_strike_and_dip
7+ from LoopStructural .modelling .features import StructuralFrame
78class 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
78100class 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