mirror of
https://github.com/ShareX/ShareX.git
synced 2024-09-30 01:07:21 +13:00
fixed #2483: Added "Run actions" sub menu to task context menu
This commit is contained in:
parent
20c83136a9
commit
465b31844c
4 changed files with 107 additions and 34 deletions
|
@ -26,6 +26,7 @@ You should have received a copy of the GNU General Public License
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ShareX.HelpersLib
|
||||
{
|
||||
|
@ -133,6 +134,11 @@ public string Run(string inputPath)
|
|||
return inputPath;
|
||||
}
|
||||
|
||||
public async Task<string> RunAsync(string inputPath)
|
||||
{
|
||||
return await Task.Run(() => Run(inputPath));
|
||||
}
|
||||
|
||||
private bool CheckExtension(string path, string extensions)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(path))
|
||||
|
|
44
ShareX/Forms/MainForm.Designer.cs
generated
44
ShareX/Forms/MainForm.Designer.cs
generated
|
@ -274,10 +274,8 @@ private void InitializeComponent()
|
|||
this.timerTraySingleClick = new System.Windows.Forms.Timer(this.components);
|
||||
this.pNews = new System.Windows.Forms.Panel();
|
||||
this.btnCloseNews = new System.Windows.Forms.Button();
|
||||
this.ucNews = new ShareX.NewsListControl();
|
||||
this.pThumbnailView = new System.Windows.Forms.Panel();
|
||||
this.lblThumbnailViewTip = new System.Windows.Forms.Label();
|
||||
this.ucTaskThumbnailView = new ShareX.TaskThumbnailView();
|
||||
this.flpSocialButtons = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.pbPatreonButton = new System.Windows.Forms.PictureBox();
|
||||
this.pbBitcoinButton = new System.Windows.Forms.PictureBox();
|
||||
|
@ -285,6 +283,9 @@ private void InitializeComponent()
|
|||
this.pbDiscordButton = new System.Windows.Forms.PictureBox();
|
||||
this.pbSocialHideButton = new System.Windows.Forms.PictureBox();
|
||||
this.ttMain = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.tsmiRunAction = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ucNews = new ShareX.NewsListControl();
|
||||
this.ucTaskThumbnailView = new ShareX.TaskThumbnailView();
|
||||
((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit();
|
||||
this.scMain.Panel1.SuspendLayout();
|
||||
this.scMain.Panel2.SuspendLayout();
|
||||
|
@ -1000,6 +1001,7 @@ private void InitializeComponent()
|
|||
this.tsmiUploadSelectedFile,
|
||||
this.tsmiDownloadSelectedURL,
|
||||
this.tsmiEditSelectedFile,
|
||||
this.tsmiRunAction,
|
||||
this.tsmiDeleteSelectedItem,
|
||||
this.tsmiDeleteSelectedFile,
|
||||
this.tsmiShortenSelectedURL,
|
||||
|
@ -2172,12 +2174,6 @@ private void InitializeComponent()
|
|||
this.btnCloseNews.UseVisualStyleBackColor = true;
|
||||
this.btnCloseNews.Click += new System.EventHandler(this.btnCloseNews_Click);
|
||||
//
|
||||
// ucNews
|
||||
//
|
||||
this.ucNews.BackColor = System.Drawing.SystemColors.Window;
|
||||
resources.ApplyResources(this.ucNews, "ucNews");
|
||||
this.ucNews.Name = "ucNews";
|
||||
//
|
||||
// pThumbnailView
|
||||
//
|
||||
this.pThumbnailView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(47)))), ((int)(((byte)(56)))));
|
||||
|
@ -2195,15 +2191,6 @@ private void InitializeComponent()
|
|||
this.lblThumbnailViewTip.UseMnemonic = false;
|
||||
this.lblThumbnailViewTip.MouseUp += new System.Windows.Forms.MouseEventHandler(this.LblThumbnailViewTip_MouseUp);
|
||||
//
|
||||
// ucTaskThumbnailView
|
||||
//
|
||||
resources.ApplyResources(this.ucTaskThumbnailView, "ucTaskThumbnailView");
|
||||
this.ucTaskThumbnailView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(47)))), ((int)(((byte)(56)))));
|
||||
this.ucTaskThumbnailView.Name = "ucTaskThumbnailView";
|
||||
this.ucTaskThumbnailView.ThumbnailSize = new System.Drawing.Size(200, 150);
|
||||
this.ucTaskThumbnailView.TitleVisible = true;
|
||||
this.ucTaskThumbnailView.ContextMenuRequested += new ShareX.TaskThumbnailView.TaskViewMouseEventHandler(this.UcTaskView_ContextMenuRequested);
|
||||
//
|
||||
// flpSocialButtons
|
||||
//
|
||||
resources.ApplyResources(this.flpSocialButtons, "flpSocialButtons");
|
||||
|
@ -2272,6 +2259,28 @@ private void InitializeComponent()
|
|||
this.ttMain.ReshowDelay = 100;
|
||||
this.ttMain.Draw += new System.Windows.Forms.DrawToolTipEventHandler(this.TtMain_Draw);
|
||||
//
|
||||
// tsmiRunAction
|
||||
//
|
||||
this.tsmiRunAction.Image = global::ShareX.Properties.Resources.application_terminal;
|
||||
this.tsmiRunAction.Name = "tsmiRunAction";
|
||||
resources.ApplyResources(this.tsmiRunAction, "tsmiRunAction");
|
||||
//
|
||||
// ucNews
|
||||
//
|
||||
this.ucNews.BackColor = System.Drawing.SystemColors.Window;
|
||||
resources.ApplyResources(this.ucNews, "ucNews");
|
||||
this.ucNews.Name = "ucNews";
|
||||
//
|
||||
// ucTaskThumbnailView
|
||||
//
|
||||
resources.ApplyResources(this.ucTaskThumbnailView, "ucTaskThumbnailView");
|
||||
this.ucTaskThumbnailView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(47)))), ((int)(((byte)(56)))));
|
||||
this.ucTaskThumbnailView.Name = "ucTaskThumbnailView";
|
||||
this.ucTaskThumbnailView.ThumbnailSize = new System.Drawing.Size(200, 150);
|
||||
this.ucTaskThumbnailView.TitleLocation = ShareX.ThumbnailTitleLocation.Top;
|
||||
this.ucTaskThumbnailView.TitleVisible = true;
|
||||
this.ucTaskThumbnailView.ContextMenuRequested += new ShareX.TaskThumbnailView.TaskViewMouseEventHandler(this.UcTaskView_ContextMenuRequested);
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AllowDrop = true;
|
||||
|
@ -2573,5 +2582,6 @@ private void InitializeComponent()
|
|||
private System.Windows.Forms.ToolStripSeparator tssThumbnailTitle;
|
||||
private System.Windows.Forms.ToolStripMenuItem tsmiThumbnailTitleTop;
|
||||
private System.Windows.Forms.ToolStripMenuItem tsmiThumbnailTitleBottom;
|
||||
private System.Windows.Forms.ToolStripMenuItem tsmiRunAction;
|
||||
}
|
||||
}
|
|
@ -616,7 +616,7 @@ private void UpdateContextMenu(WorkerTask task = null)
|
|||
|
||||
tsmiStopUpload.Visible = tsmiOpen.Visible = tsmiCopy.Visible = tsmiShowErrors.Visible = tsmiShowResponse.Visible = tsmiSearchImage.Visible =
|
||||
tsmiShowQRCode.Visible = tsmiOCRImage.Visible = tsmiCombineImages.Visible = tsmiUploadSelectedFile.Visible = tsmiDownloadSelectedURL.Visible =
|
||||
tsmiEditSelectedFile.Visible = tsmiDeleteSelectedItem.Visible = tsmiDeleteSelectedFile.Visible = tsmiShortenSelectedURL.Visible =
|
||||
tsmiEditSelectedFile.Visible = tsmiRunAction.Visible = tsmiDeleteSelectedItem.Visible = tsmiDeleteSelectedFile.Visible = tsmiShortenSelectedURL.Visible =
|
||||
tsmiShareSelectedURL.Visible = false;
|
||||
|
||||
if (Program.Settings.TaskViewMode == TaskViewMode.ListView)
|
||||
|
@ -724,6 +724,8 @@ private void UpdateContextMenu(WorkerTask task = null)
|
|||
tsmiUploadSelectedFile.Visible = uim.SelectedItem.IsFileExist;
|
||||
tsmiDownloadSelectedURL.Visible = uim.SelectedItem.IsFileURL;
|
||||
tsmiEditSelectedFile.Visible = uim.SelectedItem.IsImageFile;
|
||||
tsmiRunAction.Visible = uim.SelectedItem.IsFileExist && Program.DefaultTaskSettings.ExternalPrograms.Count > 0;
|
||||
UpdateActionsMenu(uim.SelectedItem.Info.FilePath);
|
||||
tsmiDeleteSelectedItem.Visible = true;
|
||||
tsmiDeleteSelectedFile.Visible = uim.SelectedItem.IsFileExist;
|
||||
tsmiShortenSelectedURL.Visible = uim.SelectedItem.IsURLExist;
|
||||
|
@ -862,6 +864,41 @@ private void CleanCustomClipboardFormats()
|
|||
}
|
||||
}
|
||||
|
||||
private void UpdateActionsMenu(string filePath)
|
||||
{
|
||||
tsmiRunAction.DropDownItems.Clear();
|
||||
|
||||
if (Program.DefaultTaskSettings.ExternalPrograms.Count > 0 && !string.IsNullOrEmpty(filePath) && File.Exists(filePath))
|
||||
{
|
||||
foreach (ExternalProgram action in Program.DefaultTaskSettings.ExternalPrograms)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(action.Name))
|
||||
{
|
||||
string name = action.Name.Truncate(50, "...");
|
||||
ToolStripMenuItem tsmi = new ToolStripMenuItem(name);
|
||||
|
||||
try
|
||||
{
|
||||
using (Icon icon = NativeMethods.GetFileIcon(action.Path, true))
|
||||
{
|
||||
if (icon != null && icon.Width > 0 && icon.Height > 0)
|
||||
{
|
||||
tsmi.Image = icon.ToBitmap();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
DebugHelper.WriteException(e);
|
||||
}
|
||||
|
||||
tsmi.Click += async (sender, e) => await action.RunAsync(filePath);
|
||||
tsmiRunAction.DropDownItems.Add(tsmi);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void AfterApplicationSettingsJobs()
|
||||
{
|
||||
if (Program.Settings.TrayTextMoreInfo)
|
||||
|
@ -1231,17 +1268,19 @@ await Task.Run(() =>
|
|||
try
|
||||
{
|
||||
string title = window.Text.Truncate(50, "...");
|
||||
ToolStripItem tsi = tsmiWindow.DropDownItems.Add(title);
|
||||
tsi.Tag = window;
|
||||
tsi.Click += handlerWindow;
|
||||
ToolStripMenuItem tsmi = new ToolStripMenuItem(title);
|
||||
tsmi.Tag = window;
|
||||
tsmi.Click += handlerWindow;
|
||||
|
||||
using (Icon icon = window.Icon)
|
||||
{
|
||||
if (icon != null && icon.Width > 0 && icon.Height > 0)
|
||||
{
|
||||
tsi.Image = icon.ToBitmap();
|
||||
tsmi.Image = icon.ToBitmap();
|
||||
}
|
||||
}
|
||||
|
||||
tsmiWindow.DropDownItems.Add(tsmi);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
|
|
@ -1146,6 +1146,12 @@
|
|||
<data name="tsmiEditSelectedFile.Text" xml:space="preserve">
|
||||
<value>Edit image...</value>
|
||||
</data>
|
||||
<data name="tsmiRunAction.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>228, 22</value>
|
||||
</data>
|
||||
<data name="tsmiRunAction.Text" xml:space="preserve">
|
||||
<value>Run action</value>
|
||||
</data>
|
||||
<data name="tsmiDeleteSelectedItem.ShortcutKeyDisplayString" xml:space="preserve">
|
||||
<value>Del</value>
|
||||
</data>
|
||||
|
@ -1228,34 +1234,34 @@
|
|||
<value>Hide columns</value>
|
||||
</data>
|
||||
<data name="tsmiImagePreviewShow.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
<value>130, 22</value>
|
||||
</data>
|
||||
<data name="tsmiImagePreviewShow.Text" xml:space="preserve">
|
||||
<value>Show</value>
|
||||
</data>
|
||||
<data name="tsmiImagePreviewHide.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
<value>130, 22</value>
|
||||
</data>
|
||||
<data name="tsmiImagePreviewHide.Text" xml:space="preserve">
|
||||
<value>Hide</value>
|
||||
</data>
|
||||
<data name="tsmiImagePreviewAutomatic.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
<value>130, 22</value>
|
||||
</data>
|
||||
<data name="tsmiImagePreviewAutomatic.Text" xml:space="preserve">
|
||||
<value>Automatic</value>
|
||||
</data>
|
||||
<data name="tssImagePreview.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>177, 6</value>
|
||||
<value>127, 6</value>
|
||||
</data>
|
||||
<data name="tsmiImagePreviewSide.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
<value>130, 22</value>
|
||||
</data>
|
||||
<data name="tsmiImagePreviewSide.Text" xml:space="preserve">
|
||||
<value>Side</value>
|
||||
</data>
|
||||
<data name="tsmiImagePreviewBottom.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
<value>130, 22</value>
|
||||
</data>
|
||||
<data name="tsmiImagePreviewBottom.Text" xml:space="preserve">
|
||||
<value>Bottom</value>
|
||||
|
@ -1267,28 +1273,28 @@
|
|||
<value>Image preview</value>
|
||||
</data>
|
||||
<data name="tsmiThumbnailTitleShow.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
<value>114, 22</value>
|
||||
</data>
|
||||
<data name="tsmiThumbnailTitleShow.Text" xml:space="preserve">
|
||||
<value>Show</value>
|
||||
</data>
|
||||
<data name="tsmiThumbnailTitleHide.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
<value>114, 22</value>
|
||||
</data>
|
||||
<data name="tsmiThumbnailTitleHide.Text" xml:space="preserve">
|
||||
<value>Hide</value>
|
||||
</data>
|
||||
<data name="tssThumbnailTitle.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>177, 6</value>
|
||||
<value>111, 6</value>
|
||||
</data>
|
||||
<data name="tsmiThumbnailTitleTop.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
<value>114, 22</value>
|
||||
</data>
|
||||
<data name="tsmiThumbnailTitleTop.Text" xml:space="preserve">
|
||||
<value>Top</value>
|
||||
</data>
|
||||
<data name="tsmiThumbnailTitleBottom.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
<value>114, 22</value>
|
||||
</data>
|
||||
<data name="tsmiThumbnailTitleBottom.Text" xml:space="preserve">
|
||||
<value>Bottom</value>
|
||||
|
@ -1306,7 +1312,7 @@
|
|||
<value>Switch to thumbnail view</value>
|
||||
</data>
|
||||
<data name="cmsTaskInfo.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>229, 494</value>
|
||||
<value>229, 516</value>
|
||||
</data>
|
||||
<data name=">>cmsTaskInfo.Name" xml:space="preserve">
|
||||
<value>cmsTaskInfo</value>
|
||||
|
@ -1983,6 +1989,9 @@
|
|||
<data name="flpSocialButtons.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="pbPatreonButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="pbPatreonButton.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
|
@ -2181,6 +2190,9 @@
|
|||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>834, 429</value>
|
||||
</data>
|
||||
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>500, 250</value>
|
||||
</data>
|
||||
|
@ -3603,6 +3615,12 @@
|
|||
<data name=">>ttMain.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolTip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>tsmiRunAction.Name" xml:space="preserve">
|
||||
<value>tsmiRunAction</value>
|
||||
</data>
|
||||
<data name=">>tsmiRunAction.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>MainForm</value>
|
||||
</data>
|
||||
|
|
Loading…
Reference in a new issue