te
This commit is contained in:
parent
01151e679b
commit
57b2f0400e
265 changed files with 22828 additions and 6 deletions
133
Unused/Decal.Adapter.Wrappers/HotkeySystem.cs
Normal file
133
Unused/Decal.Adapter.Wrappers/HotkeySystem.cs
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Runtime.InteropServices;
|
||||
using Decal.Interop.DHS;
|
||||
|
||||
namespace Decal.Adapter.Wrappers;
|
||||
|
||||
[CLSCompliant(true)]
|
||||
public class HotkeySystem : MarshalByRefObject, IDisposable
|
||||
{
|
||||
private Decal.Interop.DHS.HotkeySystem myHKS;
|
||||
|
||||
private bool isDisposed;
|
||||
|
||||
private EventHandler<HotkeyEventArgs> mHotkey;
|
||||
|
||||
[CLSCompliant(false)]
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public Decal.Interop.DHS.HotkeySystem Underlying => myHKS;
|
||||
|
||||
public event EventHandler<HotkeyEventArgs> Hotkey
|
||||
{
|
||||
add
|
||||
{
|
||||
mHotkey = (EventHandler<HotkeyEventArgs>)Delegate.Combine(mHotkey, value);
|
||||
}
|
||||
remove
|
||||
{
|
||||
mHotkey = (EventHandler<HotkeyEventArgs>)Delegate.Remove(mHotkey, value);
|
||||
}
|
||||
}
|
||||
|
||||
internal HotkeySystem(Decal.Interop.DHS.HotkeySystem hks)
|
||||
{
|
||||
myHKS = hks;
|
||||
myHKS.HotkeyEvent += myHKS_HotkeyEvent;
|
||||
}
|
||||
|
||||
~HotkeySystem()
|
||||
{
|
||||
Dispose(disposing: false);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Dispose(disposing: true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
protected virtual void Dispose(bool disposing)
|
||||
{
|
||||
if (!isDisposed && disposing && myHKS != null)
|
||||
{
|
||||
myHKS.HotkeyEvent -= myHKS_HotkeyEvent;
|
||||
}
|
||||
if (myHKS != null)
|
||||
{
|
||||
Marshal.ReleaseComObject(myHKS);
|
||||
}
|
||||
isDisposed = true;
|
||||
}
|
||||
|
||||
public void AddHotkey(string szPlugin, HotkeyWrapper hotkey)
|
||||
{
|
||||
if (hotkey == null)
|
||||
{
|
||||
throw new ArgumentNullException("hotkey");
|
||||
}
|
||||
AddHotkey(szPlugin, hotkey.Underlying);
|
||||
}
|
||||
|
||||
public void AddHotkey(string szPlugin, string szTitle, string szDescription)
|
||||
{
|
||||
Hotkey hotkey = new HotkeyClass();
|
||||
hotkey.EventTitle = szTitle;
|
||||
hotkey.EventDescription = szDescription;
|
||||
AddHotkey(szPlugin, hotkey);
|
||||
Marshal.ReleaseComObject(hotkey);
|
||||
}
|
||||
|
||||
public void AddHotkey(string plugin, string title, string description, int virtualKey, bool altState, bool controlState, bool shiftState)
|
||||
{
|
||||
Hotkey hotkey = new HotkeyClass();
|
||||
hotkey.EventTitle = title;
|
||||
hotkey.EventDescription = description;
|
||||
hotkey.VirtualKey = virtualKey;
|
||||
hotkey.AltState = altState;
|
||||
hotkey.ControlState = controlState;
|
||||
hotkey.ShiftState = shiftState;
|
||||
AddHotkey(plugin, hotkey);
|
||||
Marshal.ReleaseComObject(hotkey);
|
||||
}
|
||||
|
||||
private void AddHotkey(string szPlugin, Hotkey hotkey)
|
||||
{
|
||||
if (hotkey == null)
|
||||
{
|
||||
throw new ArgumentNullException("hotkey");
|
||||
}
|
||||
myHKS.AddHotkey(szPlugin, hotkey);
|
||||
}
|
||||
|
||||
public void DeleteHotkey(string plugin, string hotkeyName)
|
||||
{
|
||||
myHKS.DeleteHotkey(plugin, hotkeyName);
|
||||
}
|
||||
|
||||
public bool Exists(string hotkeyName)
|
||||
{
|
||||
return myHKS.QueryHotkey(hotkeyName);
|
||||
}
|
||||
|
||||
public HotkeyWrapper GetHotkey(string plugin, string hotkeyName)
|
||||
{
|
||||
Hotkey hotkey = myHKS.QueryHotkeyEx(plugin, hotkeyName);
|
||||
HotkeyWrapper result = null;
|
||||
if (hotkey != null)
|
||||
{
|
||||
result = new HotkeyWrapper(hotkey);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void myHKS_HotkeyEvent(string szTitle, ref bool Eat)
|
||||
{
|
||||
if (mHotkey != null)
|
||||
{
|
||||
HotkeyEventArgs e = new HotkeyEventArgs(szTitle, Eat);
|
||||
mHotkey(this, e);
|
||||
Eat = e.Eat;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue