29
29
from MethodicConfigurator .frontend_tkinter_base import show_tooltip
30
30
#from MethodicConfigurator.frontend_tkinter_base import AutoResizeCombobox
31
31
from MethodicConfigurator .frontend_tkinter_base import ScrollFrame
32
+ from MethodicConfigurator .frontend_tkinter_base import get_font_family
33
+
34
+ from MethodicConfigurator .frontend_tkinter_connection_selection import PairTupleCombobox
32
35
33
36
from MethodicConfigurator .annotate_params import Par
34
37
@@ -219,8 +222,8 @@ def __create_flightcontroller_value(self, fc_parameters, param_name, param_defau
219
222
@staticmethod
220
223
def __update_new_value_entry_text (new_value_entry : ttk .Entry , value : float , param_default ):
221
224
new_value_entry .delete (0 , tk .END )
222
- text = format (value , '.6f' ).rstrip ('0' ).rstrip ('.' )
223
- new_value_entry .insert (0 , text )
225
+ value_str = format (value , '.6f' ).rstrip ('0' ).rstrip ('.' )
226
+ new_value_entry .insert (0 , value_str )
224
227
new_value_background = "light blue" if param_default is not None and \
225
228
is_within_tolerance (value , param_default .value ) else "white"
226
229
new_value_entry .config (background = new_value_background )
@@ -244,9 +247,20 @@ def __create_new_value_entry(self, param_name, param, # pylint: disable=too-man
244
247
param .value = self .local_filesystem .derived_parameters [self .current_file ][param_name ].value
245
248
self .at_least_one_param_edited = True
246
249
247
- new_value_entry = ttk .Entry (self .view_port , width = 10 , justify = tk .RIGHT )
248
- ParameterEditorTable .__update_new_value_entry_text (new_value_entry , param .value , param_default )
249
- bitmask_dict = param_metadata .get ('Bitmask' , None ) if param_metadata else None
250
+ bitmask_dict = None
251
+ value_str = format (param .value , '.6f' ).rstrip ('0' ).rstrip ('.' )
252
+ if 'values' in param_metadata and param_metadata ['values' ] and \
253
+ value_str in param_metadata ['values' ]:
254
+ selected_value = param_metadata ['values' ].get (value_str , None )
255
+ new_value_entry = PairTupleCombobox (self .view_port , param_metadata ['values' ],
256
+ value_str , param_name )
257
+ new_value_entry .set (selected_value )
258
+ new_value_entry .config (state = 'readonly' , width = 9 , font = (get_font_family (new_value_entry ), 9 ))
259
+ new_value_entry .config (background = 'white' ) # does not work when done together with state='readonly'
260
+ else :
261
+ new_value_entry = ttk .Entry (self .view_port , width = 10 , justify = tk .RIGHT )
262
+ ParameterEditorTable .__update_new_value_entry_text (new_value_entry , param .value , param_default )
263
+ bitmask_dict = param_metadata .get ('Bitmask' , None ) if param_metadata else None
250
264
try :
251
265
old_value = self .local_filesystem .file_parameters [self .current_file ][param_name ].value
252
266
except KeyError as e :
@@ -405,7 +419,10 @@ def __on_parameter_add(self, fc_parameters):
405
419
406
420
def __on_parameter_value_change (self , event , current_file , param_name ):
407
421
# Get the new value from the Entry widget
408
- new_value = event .widget .get ()
422
+ if isinstance (event .widget , PairTupleCombobox ):
423
+ new_value = event .widget .get_selected_key ()
424
+ else :
425
+ new_value = event .widget .get ()
409
426
try :
410
427
old_value = self .local_filesystem .file_parameters [current_file ][param_name ].value
411
428
except KeyError as e :
0 commit comments