Added the FEATURE-998 also to the open last file context menu.

This commit is contained in:
Robin 2017-01-12 21:26:30 +01:00
commit 96b92df495
3 changed files with 58 additions and 38 deletions

View file

@ -1321,30 +1321,7 @@ namespace Greenshot {
} }
} }
if (path != null) { ExplorerHelper.OpenInExplorer(path);
try {
// Check if path is a directory
if (Directory.Exists(path))
{
using (Process.Start(path))
{
}
}
// Check if path is a file
else if (File.Exists(path))
{
// Start the explorer process and select the file
using (var explorer = Process.Start("explorer.exe", $"/select,\"{path}\""))
{
explorer?.WaitForInputIdle(500);
}
}
} catch (Exception ex) {
// Make sure we show what we tried to open in the exception
ex.Data.Add("path", path);
throw;
}
}
break; break;
case ClickActions.OPEN_LAST_IN_EDITOR: case ClickActions.OPEN_LAST_IN_EDITOR:
if (File.Exists(_conf.OutputFileAsFullpath)) { if (File.Exists(_conf.OutputFileAsFullpath)) {
@ -1381,7 +1358,7 @@ namespace Greenshot {
} }
LOG.Debug("DoubleClick was called! Starting: " + path); LOG.Debug("DoubleClick was called! Starting: " + path);
try { try {
Process.Start(path); ExplorerHelper.OpenInExplorer(path);
} catch (Exception ex) { } catch (Exception ex) {
// Make sure we show what we tried to open in the exception // Make sure we show what we tried to open in the exception
ex.Data.Add("path", path); ex.Data.Add("path", path);

View file

@ -512,22 +512,14 @@ namespace Greenshot.Helpers {
string errorMessage = null; string errorMessage = null;
var path = Path.GetDirectoryName(surface.LastSaveFullPath); var path = Path.GetDirectoryName(surface.LastSaveFullPath);
try { try {
if (path != null) ExplorerHelper.OpenInExplorer(path);
{ }
var processStartInfo = new ProcessStartInfo("explorer.exe") catch (Exception ex)
{ {
Arguments = path,
UseShellExecute = false
};
using (var process = new Process()) {
process.StartInfo = processStartInfo;
process.Start();
}
}
} catch (Exception ex) {
errorMessage = ex.Message; errorMessage = ex.Message;
} }
// Added fallback for when the explorer can't be found // Added fallback for when the explorer can't be found
// TODO: Check if this makes sense
if (errorMessage != null) { if (errorMessage != null) {
try { try {
string windowsPath = Environment.GetEnvironmentVariable("SYSTEMROOT"); string windowsPath = Environment.GetEnvironmentVariable("SYSTEMROOT");

View file

@ -0,0 +1,51 @@
using System;
using System.Diagnostics;
using System.IO;
namespace GreenshotPlugin.Core
{
/// <summary>
/// Simple utility for the explorer
/// </summary>
public static class ExplorerHelper
{
/// <summary>
/// Open the path in the windows explorer.
/// If the path is a directory, it will just open the explorer with that directory.
/// If the path is a file, the explorer is opened with the directory and the file is selected.
/// </summary>
/// <param name="path">Path to file or directory</param>
public static void OpenInExplorer(string path)
{
if (path == null)
{
return;
}
try
{
// Check if path is a directory
if (Directory.Exists(path))
{
using (Process.Start(path))
{
}
}
// Check if path is a file
else if (File.Exists(path))
{
// Start the explorer process and select the file
using (var explorer = Process.Start("explorer.exe", $"/select,\"{path}\""))
{
explorer?.WaitForInputIdle(500);
}
}
}
catch (Exception ex)
{
// Make sure we show what we tried to open in the exception
ex.Data.Add("path", path);
throw;
}
}
}
}