@@ -99,7 +99,7 @@ def tab1_tab3_update_plot(fig, fig_canvas_agg, current_tab, gamma: bool, srgb: b
9999 return fig , fig_canvas_agg
100100
101101 # List of events that cause color recalculation
102- tab1_triggers = ('-gamma-' , '-srgb-' , '-brMax-' , '-brMode1-' , '-brMode2-' , '-bitness-' , '-rounding-' , 'tab1_list' , 'tab1_tag_filter ' )
102+ tab1_triggers = ('-gamma-' , '-srgb-' , '-brMax-' , '-brMode1-' , '-brMode2-' , '-bitness-' , '-rounding-' , 'tab1_list' , 'tab1_(re)load ' )
103103 tab3_triggers = ('-gamma-' , '-srgb-' , '-brMax-' , '-bitness-' , '-rounding-' , 'tab3_slider1' , 'tab3_slider2' , 'tab3_slider3' , 'tab3_slider4' )
104104
105105 # Window events loop
@@ -154,12 +154,13 @@ def tab1_tab3_update_plot(fig, fig_canvas_agg, current_tab, gamma: bool, srgb: b
154154 if tab1_obj_name :
155155 window ['tab1_title2' ].update (tab1_obj_name .indexed_name (lang ))
156156 tab1_displayed_namesDB = db .obj_names_dict (objectsDB , values ['tab1_tag_filter' ], values ['tab1_searched' ], lang )
157+ tab1_displayed_names_tuple = tuple (tab1_displayed_namesDB .keys ())
157158 if tab1_obj_name and values ['tab1_searched' ] == '' :
158159 # object name could be not on the list during global search (ValueError) or if no object selected (TypeError)
159- tab1_index = tuple ( tab1_displayed_namesDB . keys ()) .index (tab1_obj_name (lang ))
160- window ['tab1_list' ].update (tuple ( tab1_displayed_namesDB . keys ()) , set_to_index = tab1_index , scroll_to_index = tab1_index )
160+ tab1_index = tab1_displayed_names_tuple .index (tab1_obj_name (lang ))
161+ window ['tab1_list' ].update (tab1_displayed_names_tuple , set_to_index = tab1_index , scroll_to_index = tab1_index )
161162 else :
162- window ['tab1_list' ].update (tuple ( tab1_displayed_namesDB . keys ()) )
163+ window ['tab1_list' ].update (tab1_displayed_names_tuple )
163164 case 'tab3' :
164165 if tab3_obj_name :
165166 window ['tab3_title2' ].update (tab3_obj_name .indexed_name (lang ))
@@ -223,34 +224,43 @@ def tab1_tab3_update_plot(fig, fig_canvas_agg, current_tab, gamma: bool, srgb: b
223224 if values ['-currentTab-' ] == 'tab1' :
224225
225226 if event == 'tab1_(re)load' :
226- # Loading of the spectra database
227227
228+ # Loading of the spectra database
228229 objectsDB , refsDB = db .import_DBs (database_folders )
229230 tagsDB = db .tag_list (objectsDB )
230231 for l in tr .langs .values ():
231232 namesDB |= {l : db .obj_names_dict (objectsDB , tag = 'ALL' , searched = '' , lang = l )}
232233
233234 if not tab1_loaded :
234235 # Setting the default tag on the first loading
235- tab1_loaded = True
236236 tab1_tag = default_tag
237237 window ['tab1_(re)load' ].update (tr .gui_reload [lang ])
238238 else :
239- tab1_tag = values ['tab1_tag_filter' ]
240239 # Handle tha case of a non-existing tag after reloading
240+ tab1_tag = values ['tab1_tag_filter' ]
241241 if tab1_tag not in tagsDB :
242242 tab1_tag = default_tag
243243
244244 window ['tab1_tag_filter' ].update (tab1_tag , values = tagsDB )
245245 tab1_displayed_namesDB = db .obj_names_dict (objectsDB , tab1_tag , values ['tab1_searched' ], lang )
246- window ['tab1_list' ].update (values = tuple (tab1_displayed_namesDB .keys ()))
246+ tab1_displayed_names_tuple = tuple (tab1_displayed_namesDB .keys ())
247+ if tab1_loaded and tab1_obj_name and tab1_obj_name (lang ) in tab1_displayed_names_tuple :
248+ tab1_index = tab1_displayed_names_tuple .index (tab1_obj_name (lang ))
249+ window ['tab1_list' ].update (values = tab1_displayed_names_tuple , set_to_index = tab1_index , scroll_to_index = tab1_index )
250+ else :
251+ window ['tab1_list' ].update (values = tab1_displayed_names_tuple )
252+
253+ tab1_loaded = True
247254
248- elif event in tab1_triggers and values ['tab1_list' ] != []:
255+ if event in tab1_triggers and values ['tab1_list' ] != []:
249256
250257 # for green Dinkinesh Easter egg
251258 last_click_was_Dinkinesh = event == 'tab1_list' and tab1_spectrum is not None and tab1_spectrum .name .name () == 'Dinkinesh'
252259
253- tab1_obj_name = namesDB [lang ][values ['tab1_list' ][0 ]]
260+ try :
261+ tab1_obj_name = namesDB [lang ][values ['tab1_list' ][0 ]]
262+ except KeyError :
263+ continue
254264 window ['tab1_title2' ].update (tab1_obj_name .indexed_name (lang ))
255265
256266 # Spectral data import and processing
@@ -286,7 +296,6 @@ def tab1_tab3_update_plot(fig, fig_canvas_agg, current_tab, gamma: bool, srgb: b
286296 else :
287297 window ['tab1_convolved' ].update (sigfig_round (tab1_value , uncertainty = tab1_sd , warn = False ))
288298
289-
290299 # Green Dinkinesh Easter egg (added by request)
291300 # There was a bug in TCT v3.3 caused by upper limit of uint16 when squaring nm for AB calibration
292301 if last_click_was_Dinkinesh and tab1_spectrum .name .name () == 'Dinkinesh' :
0 commit comments