@@ -138,6 +138,7 @@ def __init__(self, app):
138138 self .show_metrics = False
139139 self .show_render_settings = False
140140 self .side_panel_visible = True
141+ self .load_file_lock = False
141142
142143 self .app = app
143144
@@ -200,6 +201,21 @@ def draw_loading(self):
200201 ImGui .Text ("Loading.. " )
201202 ImGui .End ()
202203
204+ def reload (self ):
205+ if app .infile :
206+ app .restart = True
207+ app .getRoot ().queueEndRendering ()
208+
209+ def load_file (self ):
210+ # Avoid recursive calling, which might block the window manager
211+ if self .load_file_lock :
212+ return
213+ else :
214+ self .load_file_lock = True
215+ app .infile = askopenfilename (app .filedir )
216+ self .load_file_lock = False
217+ self .reload ()
218+
203219 def preRenderTargetUpdate (self , evt ):
204220 if not self .app .cam .getViewport ().getOverlaysEnabled ():
205221 return
@@ -215,11 +231,10 @@ def preRenderTargetUpdate(self, evt):
215231 if ImGui .BeginMainMenuBar ():
216232
217233 if ImGui .BeginMenu ("File" ):
218- if ImGui .MenuItem ("Open File" ):
219- app .infile = askopenfilename (app .filedir )
220- if app .infile :
221- app .restart = True
222- app .getRoot ().queueEndRendering ()
234+ if ImGui .MenuItem ("Open File" , "F1" ):
235+ self .load_file ()
236+ if ImGui .MenuItem ("ReLoad File" , "F5" ):
237+ self .reload ()
223238 if ImGui .MenuItem ("Renderer Settings" ):
224239 self .show_render_settings = True
225240 if ImGui .MenuItem ("Save Screenshot" , "P" ):
@@ -455,6 +470,10 @@ def keyPressed(self, evt):
455470 self ._save_screenshot ()
456471 elif evt .keysym .sym == ord ("w" ):
457472 self ._toggle_wireframe_mode ()
473+ elif evt .keysym .sym == OgreBites .SDLK_F1 :
474+ self .gui .load_file ()
475+ elif evt .keysym .sym == OgreBites .SDLK_F5 :
476+ self .gui .reload ()
458477
459478 return True
460479
0 commit comments