diff --git a/GreenshotExternalCommandPlugin/ExternalCommandPlugin.cs b/GreenshotExternalCommandPlugin/ExternalCommandPlugin.cs index 13d1868d1..9389705b8 100644 --- a/GreenshotExternalCommandPlugin/ExternalCommandPlugin.cs +++ b/GreenshotExternalCommandPlugin/ExternalCommandPlugin.cs @@ -29,134 +29,158 @@ using GreenshotPlugin.IniFile; using GreenshotPlugin.Interfaces; using GreenshotPlugin.Interfaces.Plugin; -namespace GreenshotExternalCommandPlugin { - /// - /// An Plugin to run commands after an image was written - /// +namespace GreenshotExternalCommandPlugin +{ + /// + /// An Plugin to run commands after an image was written + /// [Plugin("ExternalCommand", true)] - public class ExternalCommandPlugin : IGreenshotPlugin { - private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(ExternalCommandPlugin)); - private static readonly CoreConfiguration CoreConfig = IniConfig.GetIniSection(); - private static readonly ExternalCommandConfiguration ExternalCommandConfig = IniConfig.GetIniSection(); - private ToolStripMenuItem _itemPlugInRoot; + public class ExternalCommandPlugin : IGreenshotPlugin + { + private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(ExternalCommandPlugin)); + private static readonly CoreConfiguration CoreConfig = IniConfig.GetIniSection(); + private static readonly ExternalCommandConfiguration ExternalCommandConfig = IniConfig.GetIniSection(); + private ToolStripMenuItem _itemPlugInRoot; - public void Dispose() { - Dispose(true); - GC.SuppressFinalize(this); - } + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } - protected virtual void Dispose(bool disposing) + protected virtual void Dispose(bool disposing) { if (!disposing) return; if (_itemPlugInRoot == null) return; _itemPlugInRoot.Dispose(); _itemPlugInRoot = null; } - private IEnumerable Destinations() { - foreach(string command in ExternalCommandConfig.Commands) { - yield return new ExternalCommandDestination(command); - } - } + private IEnumerable Destinations() + { + foreach (string command in ExternalCommandConfig.Commands) + { + yield return new ExternalCommandDestination(command); + } + } - /// - /// Check and eventually fix the command settings - /// - /// - /// false if the command is not correctly configured - private bool IsCommandValid(string command) { - if (!ExternalCommandConfig.RunInbackground.ContainsKey(command)) { - Log.WarnFormat("Found missing runInbackground for {0}", command); - // Fix it - ExternalCommandConfig.RunInbackground.Add(command, true); - } - if (!ExternalCommandConfig.Argument.ContainsKey(command)) { - Log.WarnFormat("Found missing argument for {0}", command); - // Fix it - ExternalCommandConfig.Argument.Add(command, "{0}"); - } - if (!ExternalCommandConfig.Commandline.ContainsKey(command)) { - Log.WarnFormat("Found missing commandline for {0}", command); - return false; - } - string commandline = FilenameHelper.FillVariables(ExternalCommandConfig.Commandline[command], true); - commandline = FilenameHelper.FillCmdVariables(commandline, true); + /// + /// Check and eventually fix the command settings + /// + /// + /// false if the command is not correctly configured + private bool IsCommandValid(string command) + { + if (!ExternalCommandConfig.RunInbackground.ContainsKey(command)) + { + Log.WarnFormat("Found missing runInbackground for {0}", command); + // Fix it + ExternalCommandConfig.RunInbackground.Add(command, true); + } + if (!ExternalCommandConfig.Argument.ContainsKey(command)) + { + Log.WarnFormat("Found missing argument for {0}", command); + // Fix it + ExternalCommandConfig.Argument.Add(command, "{0}"); + } + if (!ExternalCommandConfig.Commandline.ContainsKey(command)) + { + Log.WarnFormat("Found missing commandline for {0}", command); + return false; + } + string commandline = FilenameHelper.FillVariables(ExternalCommandConfig.Commandline[command], true); + commandline = FilenameHelper.FillCmdVariables(commandline, true); - if (!File.Exists(commandline)) { - Log.WarnFormat("Found 'invalid' commandline {0} for command {1}", ExternalCommandConfig.Commandline[command], command); - return false; - } + if (!File.Exists(commandline)) + { + Log.WarnFormat("Found 'invalid' commandline {0} for command {1}", ExternalCommandConfig.Commandline[command], command); + return false; + } + return true; + } + /// + /// Implementation of the IGreenshotPlugin.Initialize + /// + public virtual bool Initialize() + { + Log.DebugFormat("Initialize called"); + + var commandsToDelete = new List(); + // Check configuration + foreach (string command in ExternalCommandConfig.Commands) + { + if (!IsCommandValid(command)) + { + commandsToDelete.Add(command); + } + } + // cleanup + foreach (string command in commandsToDelete) + { + ExternalCommandConfig.Delete(command); + } SimpleServiceProvider.Current.AddService(Destinations()); - return true; - } - /// - /// Implementation of the IGreenshotPlugin.Initialize - /// - public virtual bool Initialize() { - Log.DebugFormat("Initialize called"); - List commandsToDelete = new List(); - // Check configuration - foreach(string command in ExternalCommandConfig.Commands) { - if (!IsCommandValid(command)) { - commandsToDelete.Add(command); - } - } - - // cleanup - foreach (string command in commandsToDelete) { - ExternalCommandConfig.Delete(command); - } - - _itemPlugInRoot = new ToolStripMenuItem(); + _itemPlugInRoot = new ToolStripMenuItem(); _itemPlugInRoot.Click += ConfigMenuClick; - OnIconSizeChanged(this, new PropertyChangedEventArgs("IconSize")); - OnLanguageChanged(this, null); + OnIconSizeChanged(this, new PropertyChangedEventArgs("IconSize")); + OnLanguageChanged(this, null); - PluginUtils.AddToContextMenu(_itemPlugInRoot); - Language.LanguageChanged += OnLanguageChanged; - CoreConfig.PropertyChanged += OnIconSizeChanged; - return true; - } + PluginUtils.AddToContextMenu(_itemPlugInRoot); + Language.LanguageChanged += OnLanguageChanged; + CoreConfig.PropertyChanged += OnIconSizeChanged; + return true; + } - /// - /// Fix icon reference - /// - /// - /// - private void OnIconSizeChanged(object sender, PropertyChangedEventArgs e) { - if (e.PropertyName == "IconSize") { - try { - string exePath = PluginUtils.GetExePath("cmd.exe"); - if (exePath != null && File.Exists(exePath)) { - _itemPlugInRoot.Image = PluginUtils.GetCachedExeIcon(exePath, 0); - } - } catch (Exception ex) { - Log.Warn("Couldn't get the cmd.exe image", ex); - } - } - } + /// + /// Fix icon reference + /// + /// + /// + private void OnIconSizeChanged(object sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == "IconSize") + { + try + { + string exePath = PluginUtils.GetExePath("cmd.exe"); + if (exePath != null && File.Exists(exePath)) + { + _itemPlugInRoot.Image = PluginUtils.GetCachedExeIcon(exePath, 0); + } + } + catch (Exception ex) + { + Log.Warn("Couldn't get the cmd.exe image", ex); + } + } + } - private void OnLanguageChanged(object sender, EventArgs e) { - if (_itemPlugInRoot != null) { - _itemPlugInRoot.Text = Language.GetString("externalcommand", "contextmenu_configure"); - } - } + private void OnLanguageChanged(object sender, EventArgs e) + { + if (_itemPlugInRoot != null) + { + _itemPlugInRoot.Text = Language.GetString("externalcommand", "contextmenu_configure"); + } + } - public virtual void Shutdown() { - Log.Debug("Shutdown"); - } + public virtual void Shutdown() + { + Log.Debug("Shutdown"); + } - private void ConfigMenuClick(object sender, EventArgs eventArgs) { - Configure(); - } + private void ConfigMenuClick(object sender, EventArgs eventArgs) + { + Configure(); + } - /// - /// Implementation of the IPlugin.Configure - /// - public virtual void Configure() { - Log.Debug("Configure called"); - new SettingsForm().ShowDialog(); - } - } + /// + /// Implementation of the IPlugin.Configure + /// + public virtual void Configure() + { + Log.Debug("Configure called"); + new SettingsForm().ShowDialog(); + } + } } \ No newline at end of file