From b3779b689b80d26dda5b884f3aea3d820c66b4ea Mon Sep 17 00:00:00 2001 From: default0 Date: Thu, 28 Jan 2016 18:56:04 +0100 Subject: [PATCH] Add Reveal in Explorer for Projects Shows the dub.json file in the file manager. --- src/dlangide/ui/commands.d | 2 ++ src/dlangide/ui/frame.d | 8 ++++++++ src/dlangide/ui/wspanel.d | 5 +++-- views/res/i18n/en.ini | 1 + 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/dlangide/ui/commands.d b/src/dlangide/ui/commands.d index 2c36cde..fc0eaa8 100644 --- a/src/dlangide/ui/commands.d +++ b/src/dlangide/ui/commands.d @@ -27,6 +27,7 @@ enum IDEActions : int { RefreshProject, UpdateProjectDependencies, SetStartupProject, + RevealProjectInExplorer, ProjectSettings, RunWithRdmd, @@ -95,6 +96,7 @@ const Action ACTION_PROJECT_BUILD = new Action(IDEActions.BuildProject, "MENU_BU const Action ACTION_PROJECT_REBUILD = new Action(IDEActions.RebuildProject, "MENU_BUILD_PROJECT_REBUILD"c, "run-build-clean", KeyCode.F7, KeyFlag.Control); const Action ACTION_PROJECT_CLEAN = new Action(IDEActions.CleanProject, "MENU_BUILD_PROJECT_CLEAN"c, null); const Action ACTION_PROJECT_SET_STARTUP = new Action(IDEActions.SetStartupProject, "MENU_PROJECT_SET_AS_STARTUP"c, null); +const Action ACTION_PROJECT_REVEAL_IN_EXPLORER = new Action(IDEActions.RevealProjectInExplorer, "MENU_PROJECT_REVEAL_IN_EXPLORER"c); const Action ACTION_PROJECT_SETTINGS = (new Action(IDEActions.ProjectSettings, "MENU_PROJECT_SETTINGS"c, null)).disableByDefault(); const Action ACTION_PROJECT_REFRESH = new Action(IDEActions.RefreshProject, "MENU_PROJECT_REFRESH"c); const Action ACTION_PROJECT_UPDATE_DEPENDENCIES = new Action(IDEActions.UpdateProjectDependencies, "MENU_PROJECT_UPDATE_DEPENDENCIES"c); diff --git a/src/dlangide/ui/frame.d b/src/dlangide/ui/frame.d index c2a358a..578088e 100644 --- a/src/dlangide/ui/frame.d +++ b/src/dlangide/ui/frame.d @@ -743,6 +743,7 @@ class IDEFrame : AppFrame, ProgramExecutionStatusListener, BreakpointListChangeL case IDEActions.RefreshProject: case IDEActions.SetStartupProject: case IDEActions.ProjectSettings: + case IDEActions.RevealProjectInExplorer: // enable when project exists if (currentWorkspace && currentWorkspace.startupProject && !_currentBackgroundOperation) a.state = ACTION_STATE_ENABLED; @@ -867,6 +868,9 @@ class IDEFrame : AppFrame, ProgramExecutionStatusListener, BreakpointListChangeL case IDEActions.RefreshProject: refreshWorkspace(); return true; + case IDEActions.RevealProjectInExplorer: + revealProjectInExplorer(cast(Project)a.objectParam); + return true; case IDEActions.WindowCloseDocument: onTabClose(_tabs.selectedTabId); return true; @@ -1301,6 +1305,10 @@ class IDEFrame : AppFrame, ProgramExecutionStatusListener, BreakpointListChangeL } } + void revealProjectInExplorer(Project project) { + Platform.instance.showInFileManager(project.items.filename); + } + void buildProject(BuildOperation buildOp, Project project, BuildResultListener listener = null) { if (!currentWorkspace) { _logPanel.logLine("No workspace is opened"); diff --git a/src/dlangide/ui/wspanel.d b/src/dlangide/ui/wspanel.d index 1b7b529..958daea 100644 --- a/src/dlangide/ui/wspanel.d +++ b/src/dlangide/ui/wspanel.d @@ -80,13 +80,14 @@ class WorkspacePanel : DockWindow { _projectPopupMenu = new MenuItem(); _projectPopupMenu.add(ACTION_PROJECT_SET_STARTUP, - ACTION_PROJECT_FOLDER_REFRESH, - ACTION_FILE_NEW_SOURCE_FILE, + ACTION_PROJECT_FOLDER_REFRESH, + ACTION_FILE_NEW_SOURCE_FILE, //ACTION_PROJECT_FOLDER_OPEN_ITEM, ACTION_PROJECT_BUILD, ACTION_PROJECT_REBUILD, ACTION_PROJECT_CLEAN, ACTION_PROJECT_UPDATE_DEPENDENCIES, + ACTION_PROJECT_REVEAL_IN_EXPLORER, ACTION_PROJECT_SETTINGS, //ACTION_PROJECT_FOLDER_REMOVE_ITEM ); diff --git a/views/res/i18n/en.ini b/views/res/i18n/en.ini index 2a4a0ce..64b46d6 100644 --- a/views/res/i18n/en.ini +++ b/views/res/i18n/en.ini @@ -93,4 +93,5 @@ MENU_PROJECT_FOLDER_OPEN_ITEM=Open MENU_PROJECT_FOLDER_REMOVE_ITEM=Remove MENU_PROJECT_FOLDER_RENAME_ITEM=Rename... MENU_PROJECT_FOLDER_REFRESH=Refresh +MENU_PROJECT_REVEAL_IN_EXPLORER=Reveal in Explorer