@@ -391,37 +391,47 @@ void MainFrameDerived::OnOpenWith(wxCommandEvent& event){
391
391
@param index the integer representing which project in the projects Vector to load
392
392
*/
393
393
void MainFrameDerived::OpenProject (const long & index){
394
- // get the project
395
- project p = projects[index ];
396
-
397
- for (const auto & path : installPaths) {
398
- auto editorPath = path / p.version / executable;
399
-
400
- // check that the unity editor exists at that location
401
- if (filesystem::exists (editorPath)) {
402
-
403
- string cmd = " \" " + editorPath.string () + " \" -projectpath \" " + p.path .string () + " \" " ;
394
+ // get the project
395
+ project p = projects[index ];
404
396
405
- // start the process
406
- launch_process (cmd);
397
+ if (!std::filesystem::exists (p.path )) {
398
+ wxMessageBox (" Cannot open project at " + p.path .string () + " because it could not be found." , " Cannot Open Project" , wxOK | wxICON_ERROR);
399
+ return ;
400
+ }
407
401
408
- return ;
409
- }
402
+ for (const auto & editor : editors) {
403
+ if (editor.name .find (p.version ) == std::string::npos)
404
+ continue ;
405
+
406
+ auto editorPath = editor.executablePath ();
407
+ // check that the unity editor exists at that location
408
+ if (filesystem::exists (editorPath)) {
409
+
410
+ string cmd = " \" " + editorPath.string () + " \" -projectpath \" " + p.path .string () + " \" " ;
411
+
412
+ // start the process
413
+ launch_process (cmd);
414
+
415
+ return ;
416
+ }
417
+ }
410
418
#if __APPLE__
411
- else if (filesystem::exists (path / executable)) {
412
- // mac unlabeled version
413
- auto unlabeledPath = path / executable;
414
- char buffer[16 ];
415
- auto unlabeledPathInfo = path / " Unity.app" / " Contents" / " Info.plist" ;
416
- getCFBundleVersionFromPlist (unlabeledPathInfo.string ().c_str (), buffer, sizeof (buffer));
417
- if (p.version == buffer) {
418
- string cmd = " \" " + unlabeledPath.string () + " \" -projectpath \" " + p.path .string () + " \" " ;
419
- launch_process (cmd);
420
- return ;
421
- }
422
- }
423
- #endif
424
- }
419
+ for (const auto & path : installPaths) {
420
+ if (filesystem::exists (path / executable)) {
421
+ // mac unlabeled version
422
+ auto unlabeledPath = path / executable;
423
+ char buffer[16 ];
424
+ auto unlabeledPathInfo = path / " Unity.app" / " Contents" / " Info.plist" ;
425
+ getCFBundleVersionFromPlist (unlabeledPathInfo.string ().c_str (), buffer, sizeof (buffer));
426
+ if (p.version == buffer) {
427
+ string cmd = " \" " + unlabeledPath.string () + " \" -projectpath \" " + p.path .string () + " \" " ;
428
+ launch_process (cmd);
429
+ return ;
430
+ }
431
+ }
432
+ #endif
433
+ }
434
+
425
435
// prompt the user to choose a new editor because we couldn't locate one
426
436
wxCommandEvent evt;
427
437
MainFrameDerived::OnOpenWith (evt);
0 commit comments