From 9c59fd0dbf64e829aa0290d8114f68e9aabacd6f Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sun, 26 Apr 2020 05:54:19 -0700 Subject: [PATCH] Made Open Containing Folder available for projects and workspace --- IDE/src/ui/ProjectPanel.bf | 61 +++++++++++++++++++++++++++----------- 1 file changed, 43 insertions(+), 18 deletions(-) diff --git a/IDE/src/ui/ProjectPanel.bf b/IDE/src/ui/ProjectPanel.bf index 4d328ab6..871b88f1 100644 --- a/IDE/src/ui/ProjectPanel.bf +++ b/IDE/src/ui/ProjectPanel.bf @@ -1923,12 +1923,51 @@ namespace IDE.ui Menu menu = new Menu(); bool handled = false; + void AddOpenContainingFolder() + { + var item = menu.AddItem("Open Containing Folder"); + item.mOnMenuItemSelected.Add(new (item) => + { + let projectItem = GetSelectedProjectItem(); + String path = scope String(); + if (projectItem == null) + { + path.Set(gApp.mWorkspace.mDir); + } + else if (let projectFolder = projectItem as ProjectFolder) + { + if (projectFolder.mParentFolder == null) + { + path.Set(projectFolder.mProject.mProjectDir); + } + else + projectFolder.GetFullImportPath(path); + } + else + projectItem.mParentFolder.GetFullImportPath(path); + + if (!path.IsWhiteSpace) + { + ProcessStartInfo psi = scope ProcessStartInfo(); + psi.SetFileName(path); + psi.UseShellExecute = true; + psi.SetVerb("Open"); + + var process = scope SpawnedProcess(); + process.Start(psi).IgnoreError(); + } + }); + } + if (projectItem == null) { Menu anItem; if (gApp.mWorkspace.IsInitialized) { + AddOpenContainingFolder(); + menu.AddItem(); + anItem = menu.AddItem("Add New Project..."); anItem.mOnMenuItemSelected.Add(new (item) => { AddNewProject(); }); @@ -1938,6 +1977,7 @@ namespace IDE.ui anItem = menu.AddItem("Add From Installed..."); anItem.mOnMenuItemSelected.Add(new (item) => { mImportInstalledDeferred = true; }); + menu.AddItem(); anItem = menu.AddItem("Properties..."); anItem.mOnMenuItemSelected.Add(new (item) => { ShowWorkspaceProperties(); }); @@ -2027,6 +2067,8 @@ namespace IDE.ui } }); + AddOpenContainingFolder(); + menu.AddItem(); } @@ -2168,24 +2210,7 @@ namespace IDE.ui }); - item = menu.AddItem("Open Containing Folder"); - item.mOnMenuItemSelected.Add(new (item) => - { - let projectItem = GetSelectedProjectItem(); - String path = scope String(); - if (let projectFolder = projectItem as ProjectFolder) - projectFolder.GetFullImportPath(path); - else - projectItem.mParentFolder.GetFullImportPath(path); - - ProcessStartInfo psi = scope ProcessStartInfo(); - psi.SetFileName(path); - psi.UseShellExecute = true; - psi.SetVerb("Open"); - - var process = scope SpawnedProcess(); - process.Start(psi).IgnoreError(); - }); + AddOpenContainingFolder(); menu.AddItem(); }