2121 ProjectFieldWidget ,
2222 ResolutionsFieldWidget ,
2323)
24+ from rascal2 .widgets .utils import FlowLayout
2425
2526
2627class ProjectWidget (QtWidgets .QWidget ):
@@ -77,16 +78,43 @@ def __init__(self, parent):
7778 layout .addWidget (self .stacked_widget )
7879 self .setLayout (layout )
7980
81+ @staticmethod
82+ def make_labelled_widget (label_text , form_widget ):
83+ """Create widget containing a label and the given widget.
84+
85+ Parameters
86+ ----------
87+ label_text: str
88+ The label text for the form widget.
89+ form_widget
90+ The widget to add.
91+
92+ Returns
93+ -------
94+ label_form_widget:
95+ A widget with label and the given widget.
96+ """
97+ layout = QtWidgets .QHBoxLayout ()
98+ layout .setSpacing (0 )
99+ layout .setContentsMargins (2 , 5 , 2 , 5 )
100+ layout .addWidget (QtWidgets .QLabel (f"{ label_text } : " , objectName = "BoldLabel" ))
101+ layout .addWidget (form_widget )
102+
103+ widget = QtWidgets .QWidget ()
104+ widget .setLayout (layout )
105+ widget .setSizePolicy (QtWidgets .QSizePolicy .Policy .Minimum , QtWidgets .QSizePolicy .Policy .Fixed )
106+ return widget
107+
80108 def create_project_view (self ) -> QtWidgets .QWidget :
81109 """Create the project (non-edit) view."""
82110 project_widget = QtWidgets .QWidget ()
83111 main_layout = QtWidgets .QVBoxLayout ()
84112 main_layout .setSpacing (20 )
85113
86- show_sliders_button = QtWidgets .QPushButton ("Show sliders" , self )
114+ show_sliders_button = QtWidgets .QPushButton ("Show sliders" )
87115 show_sliders_button .clicked .connect (self .parent .toggle_sliders )
88116
89- self .edit_project_button = QtWidgets .QPushButton ("Edit Project" , self , icon = QtGui .QIcon (path_for ("edit.png" )))
117+ self .edit_project_button = QtWidgets .QPushButton ("Edit Project" , icon = QtGui .QIcon (path_for ("edit.png" )))
90118 self .edit_project_button .clicked .connect (self .show_edit_view )
91119 button_layout = QtWidgets .QHBoxLayout ()
92120 button_layout .setAlignment (QtCore .Qt .AlignmentFlag .AlignRight )
@@ -95,42 +123,27 @@ def create_project_view(self) -> QtWidgets.QWidget:
95123
96124 main_layout .addLayout (button_layout )
97125
98- settings_layout = QtWidgets . QHBoxLayout ( )
99- settings_layout .setAlignment (QtCore .Qt .AlignmentFlag .AlignHCenter )
126+ settings_layout = FlowLayout ( spacing = 2 )
127+ settings_layout .setAlignment (QtCore .Qt .AlignmentFlag .AlignRight )
100128
101- absorption_label = QtWidgets .QLabel ("Absorption:" , self , objectName = "BoldLabel" )
102129 self .absorption_checkbox = QtWidgets .QCheckBox ()
103130 self .absorption_checkbox .setDisabled (True )
131+ settings_layout .addWidget (self .make_labelled_widget ("Absorption" , self .absorption_checkbox ))
104132
105- settings_layout .addWidget (absorption_label )
106- settings_layout .addWidget (self .absorption_checkbox )
107-
108- self .calculation_label = QtWidgets .QLabel ("Calculation:" , self , objectName = "BoldLabel" )
109-
110- self .calculation_type = QtWidgets .QLineEdit (self )
133+ self .calculation_type = QtWidgets .QLineEdit ()
111134 self .calculation_type .setAlignment (QtCore .Qt .AlignmentFlag .AlignCenter )
112135 self .calculation_type .setReadOnly (True )
136+ settings_layout .addWidget (self .make_labelled_widget ("Calculation" , self .calculation_type ))
113137
114- settings_layout .addWidget (self .calculation_label )
115- settings_layout .addWidget (self .calculation_type )
116-
117- self .model_type_label = QtWidgets .QLabel ("Model Type:" , self , objectName = "BoldLabel" )
118-
119- self .model_type = QtWidgets .QLineEdit (self )
138+ self .model_type = QtWidgets .QLineEdit ()
120139 self .model_type .setAlignment (QtCore .Qt .AlignmentFlag .AlignCenter )
121140 self .model_type .setReadOnly (True )
141+ settings_layout .addWidget (self .make_labelled_widget ("Model Type" , self .model_type ))
122142
123- settings_layout .addWidget (self .model_type_label )
124- settings_layout .addWidget (self .model_type )
125-
126- self .geometry_label = QtWidgets .QLabel ("Geometry:" , self , objectName = "BoldLabel" )
127-
128- self .geometry_type = QtWidgets .QLineEdit (self )
143+ self .geometry_type = QtWidgets .QLineEdit ()
129144 self .geometry_type .setAlignment (QtCore .Qt .AlignmentFlag .AlignCenter )
130145 self .geometry_type .setReadOnly (True )
131-
132- settings_layout .addWidget (self .geometry_label )
133- settings_layout .addWidget (self .geometry_type )
146+ settings_layout .addWidget (self .make_labelled_widget ("Geometry" , self .geometry_type ))
134147
135148 main_layout .addLayout (settings_layout )
136149
@@ -152,11 +165,11 @@ def create_edit_view(self) -> QtWidgets.QWidget:
152165 main_layout .setSpacing (20 )
153166
154167 self .save_project_button = QtWidgets .QPushButton (
155- "Accept Changes" , self , icon = QtGui .QIcon (path_for ("save-project.png" ))
168+ "Accept Changes" , icon = QtGui .QIcon (path_for ("save-project.png" ))
156169 )
157170 self .save_project_button .clicked .connect (self .save_changes )
158171
159- self .cancel_button = QtWidgets .QPushButton ("Cancel" , self , icon = QtGui .QIcon (path_for ("cancel-dark.png" )))
172+ self .cancel_button = QtWidgets .QPushButton ("Cancel" , icon = QtGui .QIcon (path_for ("cancel-dark.png" )))
160173 self .cancel_button .clicked .connect (self .show_project_view )
161174
162175 buttons_layout = QtWidgets .QHBoxLayout ()
@@ -165,47 +178,24 @@ def create_edit_view(self) -> QtWidgets.QWidget:
165178 buttons_layout .addWidget (self .cancel_button )
166179 main_layout .addLayout (buttons_layout )
167180
168- settings_layout = QtWidgets . QHBoxLayout ( )
181+ settings_layout = FlowLayout ( spacing = 2 )
169182 settings_layout .setAlignment (QtCore .Qt .AlignmentFlag .AlignHCenter )
170183
171- absorption_label = QtWidgets .QLabel ("Absorption:" , self , objectName = "BoldLabel" )
172184 self .edit_absorption_checkbox = QtWidgets .QCheckBox ()
185+ settings_layout .addWidget (self .make_labelled_widget ("Absorption" , self .edit_absorption_checkbox ))
173186
174- settings_layout .addWidget (absorption_label )
175- settings_layout .addWidget (self .edit_absorption_checkbox )
176-
177- self .edit_calculation_label = QtWidgets .QLabel ("Calculation:" , self , objectName = "BoldLabel" )
178-
179- self .calculation_combobox = QtWidgets .QComboBox (self )
180- self .calculation_combobox .setSizePolicy (
181- QtWidgets .QSizePolicy .Policy .MinimumExpanding , QtWidgets .QSizePolicy .Policy .Fixed
182- )
187+ self .calculation_combobox = QtWidgets .QComboBox ()
183188 self .calculation_combobox .addItems ([calc for calc in Calculations ])
189+ settings_layout .addWidget (self .make_labelled_widget ("Calculation" , self .calculation_combobox ))
184190
185- settings_layout .addWidget (self .edit_calculation_label )
186- settings_layout .addWidget (self .calculation_combobox )
187-
188- self .edit_model_type_label = QtWidgets .QLabel ("Model Type:" , self , objectName = "BoldLabel" )
189-
190- self .model_combobox = QtWidgets .QComboBox (self )
191- self .model_combobox .setSizePolicy (
192- QtWidgets .QSizePolicy .Policy .MinimumExpanding , QtWidgets .QSizePolicy .Policy .Fixed
193- )
191+ self .model_combobox = QtWidgets .QComboBox ()
194192 self .model_combobox .addItems ([model for model in LayerModels ])
193+ settings_layout .addWidget (self .make_labelled_widget ("Model Type" , self .model_combobox ))
195194
196- settings_layout .addWidget (self .edit_model_type_label )
197- settings_layout .addWidget (self .model_combobox )
198-
199- self .edit_geometry_label = QtWidgets .QLabel ("Geometry:" , self , objectName = "BoldLabel" )
200-
201- self .geometry_combobox = QtWidgets .QComboBox (self )
202- self .geometry_combobox .setSizePolicy (
203- QtWidgets .QSizePolicy .Policy .MinimumExpanding , QtWidgets .QSizePolicy .Policy .Fixed
204- )
195+ self .geometry_combobox = QtWidgets .QComboBox ()
205196 self .geometry_combobox .addItems ([geo for geo in Geometries ])
197+ settings_layout .addWidget (self .make_labelled_widget ("Geometry" , self .geometry_combobox ))
206198
207- settings_layout .addWidget (self .edit_geometry_label )
208- settings_layout .addWidget (self .geometry_combobox )
209199 main_layout .addLayout (settings_layout )
210200
211201 self .edit_absorption_checkbox .checkStateChanged .connect (
0 commit comments