Skip to content

Commit a0f7fe8

Browse files
committed
BUGFIX: default highlight in light blue regression
1 parent deb02cb commit a0f7fe8

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

MethodicConfigurator/frontend_tkinter_parameter_editor.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,10 @@ def __init__(self, current_file: str, flight_controller: FlightController,
198198
style.map('readonly.TCombobox', fieldbackground=[('readonly', 'white')])
199199
style.map('readonly.TCombobox', selectbackground=[('readonly', 'white')])
200200
style.map('readonly.TCombobox', selectforeground=[('readonly', 'black')])
201+
style.map('default_v.TCombobox', fieldbackground=[('readonly', 'light blue')])
202+
style.map('default_v.TCombobox', selectbackground=[('readonly', 'light blue')])
203+
style.map('default_v.TCombobox', selectforeground=[('readonly', 'black')])
204+
style.configure('default_v.TEntry', fieldbackground="light blue")
201205

202206
self.__create_conf_widgets(version)
203207

MethodicConfigurator/frontend_tkinter_parameter_editor_table.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -221,14 +221,26 @@ def __create_flightcontroller_value(self, fc_parameters, param_name, param_defau
221221
show_tooltip(flightcontroller_value, doc_tooltip)
222222
return flightcontroller_value
223223

224+
def __update_combobox_style_on_selection(self, combobox_widget, param_default):
225+
try:
226+
current_value = float(combobox_widget.get_selected_key())
227+
has_default_value = param_default is not None and is_within_tolerance(current_value, param_default.value)
228+
combobox_widget.configure(style='default_v.TCombobox' if has_default_value else 'readonly.TCombobox')
229+
except ValueError:
230+
logging_info(f'Could not solve the selected {combobox_widget} key to a float value.')
231+
pass
232+
224233
@staticmethod
225234
def __update_new_value_entry_text(new_value_entry: ttk.Entry, value: float, param_default):
235+
if isinstance(new_value_entry, PairTupleCombobox):
236+
return
226237
new_value_entry.delete(0, tk.END)
227238
value_str = format(value, '.6f').rstrip('0').rstrip('.')
228239
new_value_entry.insert(0, value_str)
229-
new_value_background = "light blue" if param_default is not None and \
230-
is_within_tolerance(value, param_default.value) else "white"
231-
new_value_entry.config(background=new_value_background)
240+
if param_default is not None and is_within_tolerance(value, param_default.value):
241+
new_value_entry.configure(style='default_v.TEntry')
242+
else:
243+
new_value_entry.configure(style='TEntry')
232244

233245
def __create_new_value_entry(self, param_name, param, # pylint: disable=too-many-arguments
234246
param_metadata, param_default, doc_tooltip):
@@ -254,13 +266,17 @@ def __create_new_value_entry(self, param_name, param, # pylint: disable=too-man
254266
if param_metadata and 'values' in param_metadata and param_metadata['values'] and \
255267
value_str in param_metadata['values']:
256268
selected_value = param_metadata['values'].get(value_str, None)
269+
has_default_value = param_default is not None and is_within_tolerance(param.value, param_default.value)
257270
new_value_entry = PairTupleCombobox(self.view_port, param_metadata['values'],
258271
value_str, param_name,
259-
style='TCombobox' if present_as_forced else 'readonly.TCombobox')
272+
style='TCombobox' if present_as_forced else \
273+
'default_v.TCombobox' if has_default_value else 'readonly.TCombobox')
260274
new_value_entry.set(selected_value)
261275
font = get_widget_font(new_value_entry)
262276
font['size'] -= 2 if platform_system() == 'Windows' else 1
263277
new_value_entry.config(state='readonly', width=9, font=(font['family'], font['size']))
278+
new_value_entry.bind("<<ComboboxSelected>>",
279+
lambda event: self.__update_combobox_style_on_selection(new_value_entry, param_default))
264280
else:
265281
new_value_entry = ttk.Entry(self.view_port, width=10, justify=tk.RIGHT)
266282
ParameterEditorTable.__update_new_value_entry_text(new_value_entry, param.value, param_default)
@@ -464,8 +480,7 @@ def __on_parameter_value_change(self, event, current_file, param_name):
464480
else:
465481
# Revert to the previous (valid) value
466482
p = old_value
467-
ParameterEditorTable.__update_new_value_entry_text(event.widget, p,
468-
self.local_filesystem.param_default_dict.get(param_name, None))
483+
self.__update_new_value_entry_text(event.widget, p, self.local_filesystem.param_default_dict.get(param_name, None))
469484

470485
def __on_parameter_change_reason_change(self, event, current_file, param_name):
471486
# Get the new value from the Entry widget

0 commit comments

Comments
 (0)