@@ -165,10 +165,22 @@ def add_recent_project(self, path: Path) -> None:
165165 self .save_key ("opened_recent" , [str (p ) for p in recent_projects ])
166166 self .update_recent_projects ()
167167
168- def open_project (self ) -> None :
168+ def open_project (self , path : Path ) -> None :
169169 """
170170 Open a project.
171171
172+ :param path: The path to the .cpypmconfig file.
173+ :return: None.
174+ """
175+ logger .debug (f"Opening project at path { repr (path )} " )
176+ self .cpypmconfig_path = path
177+ self .update_main_gui ()
178+ self .add_recent_project (path )
179+
180+ def open_project_dialog (self ) -> None :
181+ """
182+ Open a project with a dialog to select a file.
183+
172184 :return: None.
173185 """
174186 logger .debug ("Opening project..." )
@@ -180,9 +192,7 @@ def open_project(self) -> None:
180192 if path :
181193 path = Path (path )
182194 logger .debug (f"Returned valid path! Path is { repr (path )} " )
183- self .cpypmconfig_path = path
184- self .update_main_gui ()
185- self .add_recent_project (path )
195+ self .open_project (path )
186196 else :
187197 logger .debug ("User canceled opening project!" )
188198
@@ -429,8 +439,16 @@ def update_recent_projects(self) -> None:
429439 if self .recent_projects is None :
430440 self .recent_projects = []
431441 self .recent_projects = [Path (p ) for p in self .recent_projects ]
442+ temp = []
443+ for path in self .recent_projects :
444+ temp .append (path )
445+ self .recent_projects = []
446+ for path in temp :
447+ if path .exists ():
448+ self .recent_projects .append (path )
432449 for path in self .recent_projects :
433- self .opened_recent_menu .add_command (label = str (path ), command = None )
450+ # TODO: Fix opening last one
451+ self .opened_recent_menu .add_command (label = str (path ), command = lambda : self .open_project (path ))
434452 if len (self .recent_projects ) == 0 :
435453 self .opened_recent_menu .add_command (label = "No recent projects!" , state = tk .DISABLED )
436454
@@ -443,7 +461,7 @@ def create_file_menu(self) -> None:
443461 self .file_menu = tk .Menu (self .menu_bar )
444462 self .menu_bar .add_cascade (menu = self .file_menu , label = "File" , underline = 0 )
445463 self .file_menu .add_command (label = "New..." , command = self .open_create_new_project , underline = 0 )
446- self .file_menu .add_command (label = "Open..." , command = self .open_project , underline = 0 )
464+ self .file_menu .add_command (label = "Open..." , command = self .open_project_dialog , underline = 0 )
447465 # TODO: Add open recent
448466 self .opened_recent_menu = tk .Menu (self .file_menu )
449467 self .file_menu .add_cascade (label = "Open recent" , menu = self .opened_recent_menu , underline = 5 )
0 commit comments