From d3a2b4c0023ea7912fbced39e087ca412c5c152b Mon Sep 17 00:00:00 2001 From: cxl Date: Fri, 9 Sep 2011 12:26:08 +0000 Subject: [PATCH] ide: Open file directory, open package directory git-svn-id: svn://ultimatepp.org/upp/trunk@3845 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/ide/Build.cpp | 6 +----- uppsrc/ide/Common/ComDlg.cpp | 9 +++++++++ uppsrc/ide/Common/Common.h | 2 ++ uppsrc/ide/UppDlg.h | 3 +++ uppsrc/ide/UppWspc.cpp | 13 +++++++++++++ uppsrc/ide/ide.key | 3 +++ uppsrc/ide/idebar.cpp | 5 ++++- 7 files changed, 35 insertions(+), 6 deletions(-) diff --git a/uppsrc/ide/Build.cpp b/uppsrc/ide/Build.cpp index 4e73f76d0..aa274e05d 100644 --- a/uppsrc/ide/Build.cpp +++ b/uppsrc/ide/Build.cpp @@ -188,9 +188,5 @@ void Ide::CreateMakefile() void Ide::OpenOutputFolder() { - #if defined(PLATFORM_WIN32) - LaunchWebBrowser(GetFileFolder(target)); - #else - system("xdg-open " + GetFileFolder(target) + " &"); - #endif + ShellOpenFolder(GetFileFolder(target)); } diff --git a/uppsrc/ide/Common/ComDlg.cpp b/uppsrc/ide/Common/ComDlg.cpp index 28909310f..7a07c58b5 100644 --- a/uppsrc/ide/Common/ComDlg.cpp +++ b/uppsrc/ide/Common/ComDlg.cpp @@ -147,3 +147,12 @@ FileSel& OutputFs() { fsp->Multi(); return *fsp; } + +void ShellOpenFolder(const String& dir) +{ + #if defined(PLATFORM_WIN32) + LaunchWebBrowser(dir); + #else + system("xdg-open " + dir + " &"); + #endif +} \ No newline at end of file diff --git a/uppsrc/ide/Common/Common.h b/uppsrc/ide/Common/Common.h index 99c6d6d0a..d16c1d256 100644 --- a/uppsrc/ide/Common/Common.h +++ b/uppsrc/ide/Common/Common.h @@ -27,6 +27,8 @@ FileSel& AnyPackageFs(); FileSel& BasedSourceFs(); FileSel& OutputFs(); +void ShellOpenFolder(const String& dir); + Image IdeFileImage(const String& filename, bool fast = false, bool include_path = false); bool FinishSave(String tmpfile, String outfile); diff --git a/uppsrc/ide/UppDlg.h b/uppsrc/ide/UppDlg.h index 396beab7d..38addd290 100644 --- a/uppsrc/ide/UppDlg.h +++ b/uppsrc/ide/UppDlg.h @@ -190,8 +190,11 @@ struct WorkspaceWork { void ShowFile(int pi); String GetActivePackage() const { return package.GetCurrentName(); } + String GetActivePackagePath() const { return PackagePath(package.GetCurrentName()); } String GetActiveFileName() const; String GetActiveFilePath() const; + void OpenFileFolder(); + void OpenPackageFolder(); bool IsActiveFile() const; Package::File& ActiveFile(); String FileName(int i) const; diff --git a/uppsrc/ide/UppWspc.cpp b/uppsrc/ide/UppWspc.cpp index 7d3d56809..c031ef5bf 100644 --- a/uppsrc/ide/UppWspc.cpp +++ b/uppsrc/ide/UppWspc.cpp @@ -710,6 +710,15 @@ void WorkspaceWork::SpecialFileMenu(Bar& menu) #endif menu.Add("Import directory tree sources..", THISBACK(Import)); } +void WorkspaceWork::OpenFileFolder() +{ + ShellOpenFolder(GetFileDirectory(GetActiveFilePath())); +} + +void WorkspaceWork::OpenPackageFolder() +{ + ShellOpenFolder(GetFileDirectory(GetActivePackagePath())); +} void WorkspaceWork::FileMenu(Bar& menu) { @@ -741,6 +750,8 @@ void WorkspaceWork::FileMenu(Bar& menu) menu.Add(filelist.IsCursor() && !sel, "Delete", THISBACK(DelFile)) .Help("Remove file / topic group reference from package & delete file / folder on disk"); menu.Separator(); + menu.Add("Open File Directory",THISBACK(OpenFileFolder)); + menu.Separator(); menu.Add(filelist.GetCursor() > 0, "Move up", THISBACK1(MoveFile, -1)) .Key(organizer ? K_CTRL_UP : K_SHIFT_CTRL_UP) .Help("Move current file one position towards package beginning"); @@ -866,6 +877,8 @@ void WorkspaceWork::PackageMenu(Bar& menu) .Check(actual.optimize_speed); menu.Separator(); BuildPackageMenu(menu); + menu.Separator(); + menu.Add("Open Package Directory",THISBACK(OpenPackageFolder)); } } } diff --git a/uppsrc/ide/ide.key b/uppsrc/ide/ide.key index 9a5b05f34..3b5f76e29 100644 --- a/uppsrc/ide/ide.key +++ b/uppsrc/ide/ide.key @@ -75,6 +75,9 @@ KEY(CONDBREAKPOINT, "Conditional breakpoint..", K_ALT_F9) KEY(CLEARBREAKPOINTS, "Clear all breakpoints", K_CTRL_F9|K_SHIFT) KEY(OPENLOG, "View the logfile", K_ALT_L) +KEY(OPENFILEDIR, "Open file directory", 0) +KEY(OPENOUTDIR, "Open output directory", 0) + KEY(TOGGLEBROWSER, "Show Browser++", K_CTRL_B) KEY(NAVIGATOR, "Navigator bar", K_CTRL_N) KEY(SEARCHTOPICS, "Search word in Help & Topics", K_CTRL_F1) diff --git a/uppsrc/ide/idebar.cpp b/uppsrc/ide/idebar.cpp index af2f7acc5..1da7db0c2 100644 --- a/uppsrc/ide/idebar.cpp +++ b/uppsrc/ide/idebar.cpp @@ -81,6 +81,9 @@ void Ide::File(Bar& menu) { menu.Add(split, AK_SWAP, THISBACK(SwapEditors)); menu.MenuSeparator(); + + menu.Add(AK_OPENFILEDIR, THISBACK(OpenFileFolder)); + menu.MenuSeparator(); menu.Add(AK_STATISTICS, THISBACK(Statistics)) .Help("Display various statistics"); @@ -455,7 +458,7 @@ void Ide::BuildMenu(Bar& menu) { + "according to console pane"); #if defined(PLATFORM_WIN32) || defined(PLATFORM_POSIX) menu.MenuSeparator(); - menu.Add(!IsNull(target), "Open output directory", THISBACK(OpenOutputFolder)); + menu.Add(!IsNull(target), AK_OPENOUTDIR, THISBACK(OpenOutputFolder)); #endif }