mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-21 18:52:36 +01:00
Allow custom shortcuts for plugins
This commit is contained in:
parent
5f150f0b45
commit
6bfd9fca20
@ -6,6 +6,7 @@
|
||||
* ASSA override tag helper (shortcut + custom templates)
|
||||
* ASSA set/get position
|
||||
* ASSA plugin support
|
||||
* Allow custom shortcuts for plugins
|
||||
* Shortcuts for video contrast/brightness (mpv only)
|
||||
* Waveform "Right-click + Ctrl" will toggle select of a subtitle
|
||||
* Waveform "Right-click + Shift" will select a range of subtitles
|
||||
|
8
src/libse/Common/PluginShortcut.cs
Normal file
8
src/libse/Common/PluginShortcut.cs
Normal file
@ -0,0 +1,8 @@
|
||||
namespace Nikse.SubtitleEdit.Core.Common
|
||||
{
|
||||
public class PluginShortcut
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string Shortcut { get; set; }
|
||||
}
|
||||
}
|
@ -1867,6 +1867,7 @@ $HorzAlign = Center
|
||||
|
||||
public class Shortcuts
|
||||
{
|
||||
public List<PluginShortcut> PluginShortcuts { get; set; }
|
||||
public string GeneralGoToFirstSelectedLine { get; set; }
|
||||
public string GeneralGoToNextEmptyLine { get; set; }
|
||||
public string GeneralMergeSelectedLines { get; set; }
|
||||
@ -2154,6 +2155,7 @@ $HorzAlign = Center
|
||||
|
||||
public Shortcuts()
|
||||
{
|
||||
PluginShortcuts = new List<PluginShortcut>();
|
||||
GeneralGoToFirstSelectedLine = "Control+L";
|
||||
GeneralMergeSelectedLines = "Control+Shift+M";
|
||||
GeneralToggleTranslationMode = "Control+Shift+O";
|
||||
@ -6532,6 +6534,18 @@ $HorzAlign = Center
|
||||
node = doc.DocumentElement.SelectSingleNode("Shortcuts");
|
||||
if (node != null)
|
||||
{
|
||||
foreach (XmlNode pluginNode in node.SelectNodes("Plugins/Plugin"))
|
||||
{
|
||||
var nameNode = pluginNode.SelectSingleNode("Name");
|
||||
var shortcutNode = pluginNode.SelectSingleNode("Shortcut");
|
||||
if (nameNode != null && shortcutNode != null)
|
||||
{
|
||||
var name = nameNode.InnerText;
|
||||
var shortcut = shortcutNode.InnerText;
|
||||
shortcuts.PluginShortcuts.Add(new PluginShortcut { Name = name, Shortcut = shortcut });
|
||||
}
|
||||
}
|
||||
|
||||
subNode = node.SelectSingleNode("GeneralGoToFirstSelectedLine");
|
||||
if (subNode != null)
|
||||
{
|
||||
@ -9042,6 +9056,17 @@ $HorzAlign = Center
|
||||
internal static void WriteShortcuts(Shortcuts shortcuts, XmlWriter textWriter)
|
||||
{
|
||||
textWriter.WriteStartElement("Shortcuts", string.Empty);
|
||||
|
||||
textWriter.WriteStartElement("Plugins", string.Empty);
|
||||
foreach (var shortcut in shortcuts.PluginShortcuts)
|
||||
{
|
||||
textWriter.WriteStartElement("Plugin");
|
||||
textWriter.WriteElementString("Name", shortcut.Name);
|
||||
textWriter.WriteElementString("Shortcut", shortcut.Shortcut);
|
||||
textWriter.WriteEndElement();
|
||||
}
|
||||
textWriter.WriteEndElement();
|
||||
|
||||
textWriter.WriteElementString("GeneralGoToFirstSelectedLine", shortcuts.GeneralGoToFirstSelectedLine);
|
||||
textWriter.WriteElementString("GeneralGoToNextEmptyLine", shortcuts.GeneralGoToNextEmptyLine);
|
||||
textWriter.WriteElementString("GeneralMergeSelectedLines", shortcuts.GeneralMergeSelectedLines);
|
||||
|
@ -5310,6 +5310,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
mediaPlayer.VideoPlayerContainerResize(null, null);
|
||||
ShowLineInformationListView();
|
||||
ShowSourceLineNumber();
|
||||
LoadPlugins();
|
||||
}
|
||||
|
||||
private void SetAudioVisualizerSettings()
|
||||
@ -22825,6 +22826,12 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
item.ShortcutKeys = UiUtil.GetKeys(shortcut);
|
||||
}
|
||||
|
||||
var shortcutCustom = Configuration.Settings.Shortcuts.PluginShortcuts.FirstOrDefault(p => p.Name == name);
|
||||
if (shortcutCustom != null)
|
||||
{
|
||||
item.ShortcutKeys = UiUtil.GetKeys(shortcutCustom.Shortcut);
|
||||
}
|
||||
|
||||
if (actionType.Equals("File", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
AddSeparator(fileMenuItems.Count, fileToolStripMenuItem, 2);
|
||||
|
@ -464,75 +464,75 @@
|
||||
<data name="toolStripButtonAssStyleManager.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOgSURBVFhH7VddSBRRFJ5+7BcqDCtD996ZKbWlqJAgCAoh
|
||||
oigIeikRpAikcNe5M1IIEdtTRA89BEEG0VOaO4OWIEE9WL0VYUQiEkU/M7tREj2kRURO59SxxnvVdv15
|
||||
64OPZeZ8956Pc++ce1f7j8ng0b6953xbdESZscXVUNNmkWTm4DFWkVpXNuxbyTDjiNEUYhfJZg6uGbvs
|
||||
mTzsObBfMRA41m2SzQzaK1Yvv27yITTQtXG9YqDZEcPZxsY4yacfnslOYfIR9tZUKyayjrhC8ulFOh6f
|
||||
d8Pk2aiBu1u3KAYyztEv2WSyiIZNH9Imr40mR94wS94HtvVMNgFVOE3Dpg+ezntkA67JzsDGOywbCCzr
|
||||
3fNkcj4NnTpg7avk5MCvLbq+EhNhQsWE3XCEhk8daYN1jmHgKoW1AEouG4DG9JTCU0OrrpdBsh/R5CmT
|
||||
D7fp+gaSaLjpcPPJJgIhdpJk8nANfimaHAlrf4fCfwBVuKIYcKwuCk8ObSUlhZ7BBxUDBttDkj/ABoSN
|
||||
KGqg2bbg2akgSf7wDNakJud94x062IqjBpBQmcsUzg/NlZUFrs4D2QCwjiQK8DCSDfQ7Yihoql9OktyR
|
||||
1mM1cnKXsQFYloUkUYCVCWyhNCaozCmS5A7X5I9lA9cY+95q8k8TsXvHjm+qgfpsbyo1j6b+NzzOt8vJ
|
||||
c2X7WjN8XX98lAGkb1u1NP2/kdZ5x1iT58qHe3crBjKW1UPTT4z2NaUmlH9U48mXt+LloS8aFBO+nayi
|
||||
NOPD1dlFZdJY7AP0gyf58Fn1wUA2kLEbOinN2OhgbBnc+T7LBlxd30eSnPHWtjfIjQk26I/AccpIogKc
|
||||
n5CTe2Zpf0rTZpMkL/hC3IkaQPqWdYnCowHu5kKyN4oBnR0nSd7INlp7ZAMvjh0bhOoUkuQv4Mg9pCQ3
|
||||
+MfO4uJFJMkbYRjO8h3RJ5uAd00k+Qu4bj+UDUDfP0vhSSPbKOpkA4GTCMK6ugKS4NrHtsnJvaKibzfL
|
||||
S1eTJAo8iMajAij3wleJxIBs4q0jakjya/OdhDtft2vE7qWN2P02gz1o0dl5CC0GLgHimq0AFgNLgDEg
|
||||
A3L6xWd8j3HUoX4pEMcveNmQsH07cR/OhHtwU+pGwmX2AsQU4G7H0uCBM5J4JRAn14H4CeEfD7wNbQJu
|
||||
pl98xvcYN4ClwFVAPAVxHtxHeBbk9TWNlBUHzQGiMZwEiTfeBRHiMxJjqJsLxHHIMZfmNzTtJ5ObTR3V
|
||||
76r1AAAAAElFTkSuQmCC
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOhSURBVFhH7VdJaBRBFG2XuIKKIWokmaru1hiDoiKCIBgC
|
||||
IoYEBC8qAVGEoGQmXd1BCYiMJxEPHgRxAfFklukm0UAQ4iHRmyIRUSSI4tI9IxrEg0YJYtr/9Uc7VVlm
|
||||
stx88Bi6/6v6j1/Vv2q0/5gMHlZXnfNt0R5l2hbXQ02bRZKZg8dYaXJ9yZBvJcK0I0ZSiN0kmzm4ZuyK
|
||||
Z/Kwd99exUDgWHdINjNoK12df9PkA2igc9MGxcBlRwxlGhrKSD798Ex2CpMP81nNQcVExhHXSD69SJWV
|
||||
zWsxeSZq4O72bYqBtHP0WyaRKKBh04eUyQ9FkyNbzKIPgW09lU1AFU7TsOmDp/Ne2YBrsjOw8Q7LBgLL
|
||||
ev8ikZhPQ6cOWPsKOTnwe5Our8REmFAxYdcfoeFTR8pgHaMYuE5hLYCSywagMT2h8NTQrOslkOxnNHnS
|
||||
5EOtur6RJBpuOtx8solAiF0kmTxcg1+KJkfC2ndR+C+gCtcUA47VSeHJobWoaLln8K+KAYNVkuQvsAFh
|
||||
I4oauGxb8OyUkiR3eAZrVJPz52MdOtiKowaQUJkrFM4NV7duzXN1HsgGgLUkUYCHkWygzxEDQWNdPkmy
|
||||
R0qP1cjJXcb6YVkWkkQBViawhdKYoDKnSJI9XJM/kg3cYOxHs8k/j8fu8vJB1UBd5lkyOY+mnhge5zvl
|
||||
5Nmyba0Zvqk7PsIA0retQzT9xEjpvH20ybPlg6o9ioG0ZfXS9OOjbU2xCeUf0Xhy5e2ydaEv6hUTvp2o
|
||||
oDRjw9XZRWXSWOwj9IPHufDpwf2BbCBt13dQmtHRztgyuPN9kQ24ul5NkqzxzrY3yo0JNujPwHFKSKIC
|
||||
nJ+Qk3tmcV9S02aTJCf4QnRFDSB9y7pE4ZEAd3Mh2VvFgM6OkyRnZBqsStnAy2PHvkJ1lpPkH+DIPaAk
|
||||
N/injsLCRSTJGWEYzvId8Vw2Ae8aSfIPcN1+IBuAvn+WwpNGpkHUygYCJx6EtbV5JMG1j+2Qk3sFBYO3
|
||||
1hWvJkkUeBCNRQVQ7oWv4/F+2cQ7R9SQ5PfmOwl3vm7XiPWkjNi9VoPdb9LZeQgtBi4B4pqtABYCi4Ax
|
||||
IANy+sVnfI9x1KF+KRDHL3hVH7d9O34PzoQeuCl1I+EyewFiCnC3Y2nwwBlOvBKIk+tA/ITwjwfehjYD
|
||||
t9AvPuN7jBvAYuAqIJ6COA/uIzwLcvqahsuKg+YA0RhOgsQb74II8RmJMdTNBeI45KhL8wea9gtNs00V
|
||||
XGTOvwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButtonAssProperties.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQcSURBVFhH1VddaFNnGI6zuKkMZII/WM1JMigqBRlTrD+0
|
||||
TjaYIHq1iyHUgmNSiOc0or2oNmwg9qJORO2oq+t+tNYmtsVWW/on7Vqr2B+NsbZpkjY5OUnbXNgLwQtd
|
||||
P9/n5LSUePLHyY0PPHznfb/ve9/n+090HyUYY0ukUKj40fCI+/Gz5xOSFPqFfEuVam0IhUKc1+evezHm
|
||||
eRCTLu+T6qZu9vudDnatsYtVNnSykXH3sGpbhZ5JsT4cDmcpaWJDlKQ/rVWNrLjCFpcXb7UyEnuR+GuF
|
||||
vUO1zWKevVbPIEJJExvUqEEtQDTL/m1moig2isFgzW8kRq1NNDETSprYSFYAeO6vJnb+n2bVOjWmJMDW
|
||||
3s9aegfTQsRKWUAZjaz85v20ELFSFoBdXtv2MC1ErJQFDDpdo9PT09vSQcRKWcDAC9ew4tIMxPp4BdBZ
|
||||
z5yamqoiVoPBYPDs/HciUtsDiKFJAAU6jOsWvtI/GhjZcgk7ESECMTQJoFFsH3K4wj39zle9RAo6gBJ2
|
||||
IlLfM4ihSUA6oEkAnlk6Snvo0clTyC36zqO6XVar9RO5cwxoEoCN1NI3xP6+18NqWnuZ0+l8hxI22PHo
|
||||
KYMItO39dl+7ZBFYpUWY8xcVZcMHaBJAozxY3/WYXba1scr6TnkTooQNNvU8YTMzM3sbDIZs65eGOc/P
|
||||
PzGIEC1ClRyQoEmAJEkrKOkREnKURppP9l6UsEGq+5GWaZndxF0nsr4tW95BgMTzb0InT65BDE0CkkGN
|
||||
wbCWkr+BgLtbN5eQgFcQESjiS1HvHPU8LKm8w1we3325QzxEC6DRbhvzeDuhHqQ9cR3lqHuyi+p2o43d
|
||||
yJUiud20frYxK+tzSRAuyAJ4PuQymz+lPrliIHCDZmwH2seFyh44irWGb/FFhGeWvoVqvf4zm2nDFATY
|
||||
jFy53IfnuYn8/LeRWThRAF/SUBGw4/moZxD2wMj4MNl2lI6X7iH6/qbOqC9AchLy1s5xejkIgZLXyQIs
|
||||
/FOm0y1R3ImRyh5AYLtp0zMIqDVlTtNSXJlnZ87ONgiIiLDsV7okRioCbMZN+yNrr86xgnxZgF/gm5Qu
|
||||
iZGSABPXjERUThBvRbP/++9aIeBBbu7/gVN84v8EwIIA57iXNtnhKB6idefQ7jbHZVlN3Jwi4Ae5cxSY
|
||||
1Zrhswi+yFLwVxV3fMwLuEI7H89wNP9zOGdJxEpKWhGZ6o0+GmGG0v0DUPLTEOA+fvw1Xc9fKO7Y8AcC
|
||||
l2pa+xbu+mj2ORzhusLCdbVG7mWtXi9WcRuLqdtqIm69dcT1Sgl7dcm+HL1XOOGeNJv9k4L5GPninwi6
|
||||
VjNoqnNolAsv3jzp11Fed3c3EiwnriIiEY4e1hePz1fEr5USNvyoX0tEe/TDbCV/LJMEAsZiHOh07wHz
|
||||
C/iYmdCxWgAAAABJRU5ErkJggg==
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQdSURBVFhH1VddTFNnGC5Kpm5ZsmjiT4b2tDUhczExxhnZ
|
||||
ZkCNS1yyzCsvzBIg0cyY1HOocVygNFuyjAuUGB0GxTF1Q0bLTwZTgoABQTTyo6UglLbQnp4W6IVcLPFC
|
||||
5fN9Tg+E1NO/nN74JE++877f973v8/23uvcSjLEMKRQqfjQ85n78bGRKkkI/k2+lUq0NoVCI8/r89aMT
|
||||
nvsx6fI+qWnpZlcaOtjV5i5W1dTJxibdw6ptFXqmxcZwOJytpIkNUZL+sFY3s+JKW1xW3G5jJLaC+Eul
|
||||
vUO1zXKeu9rIIEJJExvUqEktQDTLbrUyURSbxWCw9gKJUWsTTcyEkiY2khUA/vpnC/vtZqtqnRpTEmC7
|
||||
18/u9g6mhYiVsoAyGln533fSQsRKWQB2eV37w7QQsVIWMOh0jc/Ozu5IBxErZQEDo65hxaUZiPX+CqCz
|
||||
njUzM1NNrAGDweC5xe9EpLbfIoYmARToMK5b+EqvNTGy5RJ2IkIEYmgSQKP4YsjhCvf0O1/0EinoAErY
|
||||
iUh9zyKGJgHpgCYBeGbpKH1Nj06eQm7Zdx7VfWm1WlfInWNAkwBspLt9Q+zGfz2stq2XOZ3O1yhhgx2P
|
||||
njKIQNveg/vuSRaBXbEIC/6iou3wAZoE0Ci/a+x6zC7Z2llVY6e8CVHCBlt6nrC5ubm9TQbDdutWw4Ln
|
||||
x+MMIkSLUC0HJGgSIEnSh5T0BxJSQCPNJ3svStgg1R2lZfrAbuKuE1nftm2vIUDi+Zeh06fXI4YmAcmg
|
||||
1mDYQMlfQsC/n39WQgJeQESgiC9FvXPc87CkqoG5PL47cod4iBZAo90x4fF2Qj1Ie+I6ynH3dBfVfYU2
|
||||
diNXiuR206b55uzsjyVBOC8L4PmQy2xeRX1yxUDgL5qx3WgfFyp7oABrDd/yiwjPLH0LNXr9apvp0xkI
|
||||
sBm5crkPz3NT+fmvIrNwqhC+pKEiYPfIuGcQ9sDY5DDZdpSO5+4h+t5fb9QXIjkJeWXnOL0chEDJ62UB
|
||||
Fv4p0+kyFHdipLIHENhu2vIMAupMWbO0FJcX2Zmzpx0CIiIsB5QuiZGKAJtxy4HI2qtzojBfFuAX+Bal
|
||||
S2KkJMDEtSIRlVPE29HsP/RNGwTcz819EzjDJ/5PACwJcE56aZMdjuL3tO4c2v3DcdlWE7egCDgid44C
|
||||
s1ozfRbBF1kK/nfFHR+LAi7TzsczHM0HDuc8ifiIklZGpnqzj0aYqXR/B5T8JwhwnzjxP13PaxV3bPgD
|
||||
gYu1bX1Ld300+xyOcP3JkxvrjNzzOr1erOY2F1O3dUTcehuJm5QS9rqSfTl6r3DKPW02+6cF8zHyxT8R
|
||||
dK1m0lTn0CiXXrxF0q+jvO7ubiRYQ/yEiEQ4elhfPD47ibuUEjb8qN9ARHv0w2wlfyyTBALGYhzodG8B
|
||||
5Jf4lhFspHAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButtonAssAttachments.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButtonNetflixQualityCheck.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
@ -775,7 +775,7 @@
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2
|
||||
CAAAAk1TRnQBSQFMAgEBAgEAAYQBKgGEASoBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
CAAAAk1TRnQBSQFMAgEBAgEAAZQBKgGUASoBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
|
@ -45,6 +45,7 @@ namespace Nikse.SubtitleEdit.Forms.Options
|
||||
private bool _oldListViewShowWpm;
|
||||
private readonly Dictionary<ShortcutHelper, string> _newShortcuts = new Dictionary<ShortcutHelper, string>();
|
||||
private List<RulesProfile> _rulesProfiles;
|
||||
private List<PluginShortcut> _pluginShortcuts;
|
||||
|
||||
private class ComboBoxLanguage
|
||||
{
|
||||
@ -76,14 +77,16 @@ namespace Nikse.SubtitleEdit.Forms.Options
|
||||
|
||||
public class ShortcutHelper
|
||||
{
|
||||
public ShortcutHelper(PropertyInfo shortcut, bool isMenuItem)
|
||||
public ShortcutHelper(PropertyInfo shortcut, bool isMenuItem, bool isPlugin = false)
|
||||
{
|
||||
Shortcut = shortcut;
|
||||
IsMenuItem = isMenuItem;
|
||||
IsPlugin = isPlugin;
|
||||
}
|
||||
|
||||
public PropertyInfo Shortcut { get; set; }
|
||||
public bool IsMenuItem { get; set; }
|
||||
public bool IsPlugin { get; set; }
|
||||
}
|
||||
|
||||
private static string GetRelativePath(string fileName)
|
||||
@ -1543,6 +1546,8 @@ namespace Nikse.SubtitleEdit.Forms.Options
|
||||
AddNode(audioVisualizerNode, language.GoBack1Second, nameof(Configuration.Settings.Shortcuts.Waveform1000MsLeft));
|
||||
AddNode(audioVisualizerNode, language.GoForward1Second, nameof(Configuration.Settings.Shortcuts.Waveform1000MsRight));
|
||||
_shortcuts.Nodes.Add(audioVisualizerNode);
|
||||
|
||||
LoadPluginsShortcuts();
|
||||
}
|
||||
|
||||
private void ShowShortcutsTreeView()
|
||||
@ -2061,9 +2066,13 @@ namespace Nikse.SubtitleEdit.Forms.Options
|
||||
gs.FFmpegLocation = textBoxFFmpegPath.Text;
|
||||
|
||||
// save shortcuts
|
||||
Configuration.Settings.Shortcuts.PluginShortcuts = _pluginShortcuts;
|
||||
foreach (var kvp in _newShortcuts)
|
||||
{
|
||||
kvp.Key.Shortcut.SetValue(Configuration.Settings.Shortcuts, kvp.Value, null);
|
||||
if (!kvp.Key.IsPlugin)
|
||||
{
|
||||
kvp.Key.Shortcut.SetValue(Configuration.Settings.Shortcuts, kvp.Value, null);
|
||||
}
|
||||
}
|
||||
|
||||
Configuration.Settings.Save();
|
||||
@ -2628,6 +2637,42 @@ namespace Nikse.SubtitleEdit.Forms.Options
|
||||
section.Visible = true;
|
||||
}
|
||||
|
||||
private void LoadPluginsShortcuts()
|
||||
{
|
||||
if (_pluginShortcuts == null)
|
||||
{
|
||||
_pluginShortcuts = Configuration.Settings.Shortcuts.PluginShortcuts.Select(p => new PluginShortcut { Name = p.Name, Shortcut = p.Shortcut }).ToList();
|
||||
}
|
||||
|
||||
var pluginsNode = new ShortcutNode(LanguageSettings.Current.PluginsGet.Title);
|
||||
foreach (var pluginFileName in Directory.GetFiles(Configuration.PluginsDirectory, "*.DLL"))
|
||||
{
|
||||
Main.GetPropertiesAndDoAction(pluginFileName, out var name, out _, out var version, out var description, out var actionType, out _, out var mi);
|
||||
if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(actionType) && mi != null)
|
||||
{
|
||||
var text = GetPluginShortcutText(name);
|
||||
var shortcutNode = new ShortcutNode(text)
|
||||
{
|
||||
Text = text,
|
||||
ShortcutText = name,
|
||||
Shortcut = new ShortcutHelper(null, true, true),
|
||||
};
|
||||
pluginsNode.Nodes.Add(shortcutNode);
|
||||
}
|
||||
}
|
||||
|
||||
if (pluginsNode.Nodes.Count > 0)
|
||||
{
|
||||
_shortcuts.Nodes.Add(pluginsNode);
|
||||
}
|
||||
}
|
||||
|
||||
private string GetPluginShortcutText(string name)
|
||||
{
|
||||
var shortcut = _pluginShortcuts.FirstOrDefault(p => p.Name == name);
|
||||
return shortcut == null ? $"{name} [{LanguageSettings.Current.General.None}]" : $"{name} [{shortcut.Shortcut}]";
|
||||
}
|
||||
|
||||
private void ListBoxKeyDownSearch(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Escape ||
|
||||
@ -2998,11 +3043,26 @@ namespace Nikse.SubtitleEdit.Forms.Options
|
||||
var shortcutText = GetCurrentShortcutText();
|
||||
var existsIn = new StringBuilder();
|
||||
var sh = (ShortcutHelper)treeViewShortcuts.SelectedNode.Tag;
|
||||
|
||||
if (sh.IsPlugin)
|
||||
{
|
||||
var cleanShortcut = shortcutText.RemoveChar('[').RemoveChar(']');
|
||||
var existingShortCut = _pluginShortcuts.FirstOrDefault(p => p.Name == text);
|
||||
if (existingShortCut == null)
|
||||
{
|
||||
_pluginShortcuts.Add(new PluginShortcut { Name = text, Shortcut = cleanShortcut });
|
||||
}
|
||||
else
|
||||
{
|
||||
existingShortCut.Shortcut = cleanShortcut;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (ShortcutNode parent in _shortcuts.Nodes)
|
||||
{
|
||||
foreach (ShortcutNode subNode in parent.Nodes)
|
||||
{
|
||||
if (sh != null && subNode.Shortcut.Shortcut.Name == sh.Shortcut.Name)
|
||||
if (sh != null && !sh.IsPlugin && subNode.Shortcut.Shortcut.Name == sh.Shortcut.Name)
|
||||
{
|
||||
subNode.Text = text + " " + shortcutText;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user