-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathOpenExecutableCommand.cs
More file actions
87 lines (77 loc) · 2.81 KB
/
OpenExecutableCommand.cs
File metadata and controls
87 lines (77 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Windows.Forms;
using CodingWithCalvin.OpenInNotepadPlusPlus.Dialogs;
using CodingWithCalvin.OpenInNotepadPlusPlus.Helpers;
using EnvDTE;
using EnvDTE80;
using Microsoft.VisualStudio.Shell;
namespace CodingWithCalvin.OpenInNotepadPlusPlus.Commands
{
internal sealed class OpenExecutableCommand
{
private readonly Package _package;
private readonly SettingsDialogPage _settings;
private OpenExecutableCommand(Package package, SettingsDialogPage settings)
{
this._package = package;
this._settings = settings;
var commandService = (OleMenuCommandService)
ServiceProvider.GetService(typeof(IMenuCommandService));
if (commandService != null)
{
var menuCommandId = new CommandID(
PackageGuids.guidOpenInNppCmdSet,
PackageIds.OpenInNpp
);
var menuItem = new MenuCommand(OpenPath, menuCommandId);
commandService.AddCommand(menuItem);
}
}
public static OpenExecutableCommand Instance { get; private set; }
private IServiceProvider ServiceProvider => this._package;
public static void Initialize(Package package, SettingsDialogPage settings)
{
Instance = new OpenExecutableCommand(package, settings);
}
private void OpenPath(object sender, EventArgs e)
{
var service = (DTE2)this.ServiceProvider.GetService(typeof(DTE));
try
{
ThreadHelper.ThrowIfNotOnUIThread();
var selectedFilePath = ProjectHelpers.GetSelectedPath(service);
var executablePath = _settings.FolderPath;
if (
!string.IsNullOrEmpty(selectedFilePath) && !string.IsNullOrEmpty(executablePath)
)
{
OpenExecutable(executablePath, selectedFilePath);
}
else
{
MessageBox.Show("Couldn't resolve the folder");
}
}
catch (Exception ex)
{
Logger.Log(ex);
}
}
private static void OpenExecutable(string executablePath, string selectedFilePath)
{
var startInfo = new ProcessStartInfo
{
FileName = $"\"{executablePath}\"",
Arguments = $"\"{selectedFilePath}\"",
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden
};
using (System.Diagnostics.Process.Start(startInfo))
{
//TODO : Should this be empty?
}
}
}
}