mirror of
https://github.com/ShareX/ShareX.git
synced 2024-09-29 17:02:05 +13:00
#3270: Interim commit for "Edit with ShareX" context menu entry
This commit is contained in:
parent
aa315e7660
commit
051672da42
4 changed files with 122 additions and 17 deletions
10
ShareX/Forms/ApplicationSettingsForm.Designer.cs
generated
10
ShareX/Forms/ApplicationSettingsForm.Designer.cs
generated
|
@ -141,6 +141,7 @@ private void InitializeComponent()
|
|||
this.tpAdvanced = new System.Windows.Forms.TabPage();
|
||||
this.pgSettings = new System.Windows.Forms.PropertyGrid();
|
||||
this.tttvMain = new ShareX.HelpersLib.TabToTreeView();
|
||||
this.cbEditWithShareX = new System.Windows.Forms.CheckBox();
|
||||
this.tcSettings.SuspendLayout();
|
||||
this.tpGeneral.SuspendLayout();
|
||||
this.tpIntegration.SuspendLayout();
|
||||
|
@ -392,6 +393,7 @@ private void InitializeComponent()
|
|||
//
|
||||
// gbWindows
|
||||
//
|
||||
this.gbWindows.Controls.Add(this.cbEditWithShareX);
|
||||
this.gbWindows.Controls.Add(this.cbStartWithWindows);
|
||||
this.gbWindows.Controls.Add(this.cbSendToMenu);
|
||||
this.gbWindows.Controls.Add(this.cbShellContextMenu);
|
||||
|
@ -1020,6 +1022,13 @@ private void InitializeComponent()
|
|||
this.tttvMain.TreeViewSize = 175;
|
||||
this.tttvMain.TabChanged += new ShareX.HelpersLib.TabToTreeView.TabChangedEventHandler(this.tttvMain_TabChanged);
|
||||
//
|
||||
// cbEditWithShareX
|
||||
//
|
||||
resources.ApplyResources(this.cbEditWithShareX, "cbEditWithShareX");
|
||||
this.cbEditWithShareX.Name = "cbEditWithShareX";
|
||||
this.cbEditWithShareX.UseVisualStyleBackColor = true;
|
||||
this.cbEditWithShareX.CheckedChanged += new System.EventHandler(this.cbEditWithShareX_CheckedChanged);
|
||||
//
|
||||
// ApplicationSettingsForm
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
|
@ -1191,5 +1200,6 @@ private void InitializeComponent()
|
|||
private System.Windows.Forms.CheckBox cbChromeExtensionSupport;
|
||||
private System.Windows.Forms.CheckBox cbFirefoxAddonSupport;
|
||||
private System.Windows.Forms.Button btnResetSettings;
|
||||
private System.Windows.Forms.CheckBox cbEditWithShareX;
|
||||
}
|
||||
}
|
|
@ -140,6 +140,7 @@ private void UpdateControls()
|
|||
gbFirefox.Visible = false;
|
||||
#else
|
||||
cbShellContextMenu.Checked = IntegrationHelpers.CheckShellContextMenuButton();
|
||||
cbEditWithShareX.Checked = IntegrationHelpers.CheckEditShellContextMenuButton();
|
||||
cbSendToMenu.Checked = IntegrationHelpers.CheckSendToMenuButton();
|
||||
cbChromeExtensionSupport.Checked = IntegrationHelpers.CheckChromeExtensionSupport();
|
||||
btnChromeOpenExtensionPage.Enabled = cbChromeExtensionSupport.Checked;
|
||||
|
@ -427,6 +428,14 @@ private void cbShellContextMenu_CheckedChanged(object sender, EventArgs e)
|
|||
}
|
||||
}
|
||||
|
||||
private void cbEditWithShareX_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (ready)
|
||||
{
|
||||
IntegrationHelpers.CreateEditShellContextMenuButton(cbEditWithShareX.Checked);
|
||||
}
|
||||
}
|
||||
|
||||
private void cbSendToMenu_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (ready)
|
||||
|
|
|
@ -415,7 +415,7 @@
|
|||
<value>btnLanguages</value>
|
||||
</data>
|
||||
<data name=">>btnLanguages.Type" xml:space="preserve">
|
||||
<value>ShareX.HelpersLib.MenuButton, ShareX.HelpersLib, Version=12.1.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
<value>ShareX.HelpersLib.MenuButton, ShareX.HelpersLib, Version=12.1.1.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>btnLanguages.Parent" xml:space="preserve">
|
||||
<value>tpGeneral</value>
|
||||
|
@ -655,7 +655,7 @@
|
|||
<value>1</value>
|
||||
</data>
|
||||
<data name="gbFirefox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 216</value>
|
||||
<value>8, 240</value>
|
||||
</data>
|
||||
<data name="gbFirefox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>536, 88</value>
|
||||
|
@ -706,7 +706,7 @@
|
|||
<value>0</value>
|
||||
</data>
|
||||
<data name="gbSteam.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 312</value>
|
||||
<value>8, 336</value>
|
||||
</data>
|
||||
<data name="gbSteam.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>536, 56</value>
|
||||
|
@ -781,7 +781,7 @@
|
|||
<value>1</value>
|
||||
</data>
|
||||
<data name="gbChrome.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 120</value>
|
||||
<value>8, 144</value>
|
||||
</data>
|
||||
<data name="gbChrome.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>536, 88</value>
|
||||
|
@ -804,6 +804,36 @@
|
|||
<data name=">>gbChrome.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="cbEditWithShareX.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="cbEditWithShareX.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="cbEditWithShareX.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>16, 72</value>
|
||||
</data>
|
||||
<data name="cbEditWithShareX.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>343, 17</value>
|
||||
</data>
|
||||
<data name="cbEditWithShareX.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="cbEditWithShareX.Text" xml:space="preserve">
|
||||
<value>Show "Edit with ShareX" button in Windows Explorer context menu</value>
|
||||
</data>
|
||||
<data name=">>cbEditWithShareX.Name" xml:space="preserve">
|
||||
<value>cbEditWithShareX</value>
|
||||
</data>
|
||||
<data name=">>cbEditWithShareX.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>cbEditWithShareX.Parent" xml:space="preserve">
|
||||
<value>gbWindows</value>
|
||||
</data>
|
||||
<data name=">>cbEditWithShareX.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="cbStartWithWindows.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
|
@ -829,7 +859,7 @@
|
|||
<value>gbWindows</value>
|
||||
</data>
|
||||
<data name=">>cbStartWithWindows.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="cbSendToMenu.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
|
@ -838,7 +868,7 @@
|
|||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="cbSendToMenu.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>16, 72</value>
|
||||
<value>16, 96</value>
|
||||
</data>
|
||||
<data name="cbSendToMenu.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>181, 17</value>
|
||||
|
@ -859,7 +889,7 @@
|
|||
<value>gbWindows</value>
|
||||
</data>
|
||||
<data name=">>cbSendToMenu.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="cbShellContextMenu.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
|
@ -889,13 +919,13 @@
|
|||
<value>gbWindows</value>
|
||||
</data>
|
||||
<data name=">>cbShellContextMenu.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="gbWindows.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 8</value>
|
||||
</data>
|
||||
<data name="gbWindows.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>536, 104</value>
|
||||
<value>536, 128</value>
|
||||
</data>
|
||||
<data name="gbWindows.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
|
@ -1717,7 +1747,7 @@
|
|||
<value>lvClipboardFormats</value>
|
||||
</data>
|
||||
<data name=">>lvClipboardFormats.Type" xml:space="preserve">
|
||||
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=12.1.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=12.1.1.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>lvClipboardFormats.Parent" xml:space="preserve">
|
||||
<value>gbClipboardFormats</value>
|
||||
|
@ -1828,7 +1858,7 @@
|
|||
<value>lvSecondaryImageUploaders</value>
|
||||
</data>
|
||||
<data name=">>lvSecondaryImageUploaders.Type" xml:space="preserve">
|
||||
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=12.1.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=12.1.1.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>lvSecondaryImageUploaders.Parent" xml:space="preserve">
|
||||
<value>gbSecondaryImageUploaders</value>
|
||||
|
@ -1882,7 +1912,7 @@
|
|||
<value>lvSecondaryFileUploaders</value>
|
||||
</data>
|
||||
<data name=">>lvSecondaryFileUploaders.Type" xml:space="preserve">
|
||||
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=12.1.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=12.1.1.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>lvSecondaryFileUploaders.Parent" xml:space="preserve">
|
||||
<value>gbSecondaryFileUploaders</value>
|
||||
|
@ -1936,7 +1966,7 @@
|
|||
<value>lvSecondaryTextUploaders</value>
|
||||
</data>
|
||||
<data name=">>lvSecondaryTextUploaders.Type" xml:space="preserve">
|
||||
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=12.1.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=12.1.1.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>lvSecondaryTextUploaders.Parent" xml:space="preserve">
|
||||
<value>gbSecondaryTextUploaders</value>
|
||||
|
@ -2920,7 +2950,7 @@
|
|||
<value>tttvMain</value>
|
||||
</data>
|
||||
<data name=">>tttvMain.Type" xml:space="preserve">
|
||||
<value>ShareX.HelpersLib.TabToTreeView, ShareX.HelpersLib, Version=12.1.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
<value>ShareX.HelpersLib.TabToTreeView, ShareX.HelpersLib, Version=12.1.1.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>tttvMain.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
|
|
|
@ -44,17 +44,22 @@ public static class IntegrationHelpers
|
|||
|
||||
private static readonly string ShellExtMenuFiles = @"Software\Classes\*\shell\" + ApplicationName;
|
||||
private static readonly string ShellExtMenuFilesCmd = ShellExtMenuFiles + @"\command";
|
||||
|
||||
private static readonly string ShellExtMenuDirectory = @"Software\Classes\Directory\shell\" + ApplicationName;
|
||||
private static readonly string ShellExtMenuDirectoryCmd = ShellExtMenuDirectory + @"\command";
|
||||
|
||||
private static readonly string ShellExtMenuFolders = @"Software\Classes\Folder\shell\" + ApplicationName;
|
||||
private static readonly string ShellExtMenuFoldersCmd = ShellExtMenuFolders + @"\command";
|
||||
|
||||
private static readonly string ShellExtDesc = Resources.IntegrationHelpers_UploadWithShareX;
|
||||
private static readonly string ShellExtIcon = ApplicationPath + ",0";
|
||||
private static readonly string ShellExtPath = ApplicationPath + " \"%1\"";
|
||||
|
||||
private static readonly string ShellExtEditMenuJpeg = @"Software\Classes\.jpg\shell\" + ApplicationName;
|
||||
private static readonly string ShellExtEditMenuJpegCmd = ShellExtEditMenuJpeg + @"\command";
|
||||
private static readonly string ShellExtEditMenuPng = @"Software\Classes\.png\shell\" + ApplicationName;
|
||||
private static readonly string ShellExtEditMenuPngCmd = ShellExtEditMenuPng + @"\command";
|
||||
private static readonly string ShellExtEditDesc = "Edit with ShareX"; // TODO: Translate
|
||||
private static readonly string ShellExtEditIcon = ApplicationPath + ",0";
|
||||
private static readonly string ShellExtEditPath = ApplicationPath + " -ImageEditor \"%1\"";
|
||||
|
||||
private static readonly string ShellCustomUploaderExtensionPath = @"Software\Classes\.sxcu";
|
||||
private static readonly string ShellCustomUploaderExtensionValue = "ShareX.sxcu";
|
||||
private static readonly string ShellCustomUploaderAssociatePath = @"Software\Classes\" + ShellCustomUploaderExtensionValue;
|
||||
|
@ -119,6 +124,57 @@ private static void UnregisterShellContextMenuButton()
|
|||
RegistryHelpers.RemoveRegistry(ShellExtMenuFolders, true);
|
||||
}
|
||||
|
||||
public static bool CheckEditShellContextMenuButton()
|
||||
{
|
||||
try
|
||||
{
|
||||
return RegistryHelpers.CheckRegistry(ShellExtEditMenuJpegCmd, null, ShellExtEditPath) && RegistryHelpers.CheckRegistry(ShellExtEditMenuPngCmd, null, ShellExtEditPath);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
DebugHelper.WriteException(e);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void CreateEditShellContextMenuButton(bool create)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (create)
|
||||
{
|
||||
UnregisterEditShellContextMenuButton();
|
||||
RegisterEditShellContextMenuButton();
|
||||
}
|
||||
else
|
||||
{
|
||||
UnregisterEditShellContextMenuButton();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
DebugHelper.WriteException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static void RegisterEditShellContextMenuButton()
|
||||
{
|
||||
RegistryHelpers.CreateRegistry(ShellExtEditMenuJpeg, ShellExtEditDesc);
|
||||
RegistryHelpers.CreateRegistry(ShellExtEditMenuJpeg, "Icon", ShellExtEditIcon);
|
||||
RegistryHelpers.CreateRegistry(ShellExtEditMenuJpegCmd, ShellExtEditPath);
|
||||
|
||||
RegistryHelpers.CreateRegistry(ShellExtEditMenuPng, ShellExtEditDesc);
|
||||
RegistryHelpers.CreateRegistry(ShellExtEditMenuPng, "Icon", ShellExtEditIcon);
|
||||
RegistryHelpers.CreateRegistry(ShellExtEditMenuPngCmd, ShellExtEditPath);
|
||||
}
|
||||
|
||||
private static void UnregisterEditShellContextMenuButton()
|
||||
{
|
||||
RegistryHelpers.RemoveRegistry(ShellExtEditMenuJpeg, true);
|
||||
RegistryHelpers.RemoveRegistry(ShellExtEditMenuPng, true);
|
||||
}
|
||||
|
||||
public static bool CheckCustomUploaderExtension()
|
||||
{
|
||||
try
|
||||
|
|
Loading…
Reference in a new issue