WingMan

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 36  →  ?path2? @ 37
/trunk/WingMan/WingManForm.cs
@@ -6,10 +6,12 @@
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Gma.System.MouseKeyHook;
using Microsoft.Win32;
using MQTTnet.Extensions.ManagedClient;
using MQTTnet.Server;
using WingMan.AutoCompletion;
@@ -142,6 +144,25 @@
private static TabControl DetachedTabControl { get; set; }
private static Form DetachedForm { get; set; }
 
/// <inheritdoc />
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
FormCancellationTokenSource?.Dispose();
FormCancellationTokenSource = null;
 
if (disposing && components != null)
{
components.Dispose();
components = null;
}
 
base.Dispose(disposing);
}
 
private void RemoteBindingsComboBoxSourceOnListChanged(object sender, ListChangedEventArgs e)
{
UpdateRemoteBindingsListBox();
@@ -193,25 +214,6 @@
$"{Strings.Failed_saving_autocomplete_source} : {args.Name} : {args.Exception.Message}{Environment.NewLine}");
}
 
/// <inheritdoc />
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
FormCancellationTokenSource?.Dispose();
FormCancellationTokenSource = null;
 
if (disposing && components != null)
{
components.Dispose();
components = null;
}
 
base.Dispose(disposing);
}
 
private void OnMouseKeyBindingExecuting(object sender, KeyBindingExecutingEventArgs args)
{
ActivityTextBox.AppendText(
@@ -651,11 +653,29 @@
 
private async void WingManFormOnLoad(object sender, EventArgs e)
{
await LoadLocalMouseKeyBindings();
using (var key = Registry.CurrentUser.OpenSubKey
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
switch (key.GetValue(Name) == null)
{
case true:
windowsStartupCheckBox.Checked = false;
break;
default:
windowsStartupCheckBox.Checked = true;
break;
}
}
 
await LoadRemoteMouseKeyBindings();
await LoadLocalKeyBindings();
 
await LoadRemoteKeyBindings();
}
 
private void WingManFormOnClosing(object sender, FormClosingEventArgs e)
{
}
 
private void RemoteBindingsBindButtonClicked(object sender, EventArgs e)
{
if (string.IsNullOrEmpty((string) RemoteBindingsListBox.SelectedItem))
@@ -859,6 +879,82 @@
DetachedForm.FormClosing -= DetachedFormOnFormClosing;
}
 
private void LocalBindingsLoadButtonClicked(object sender, EventArgs e)
{
loadLocalBindingsDialog.ShowDialog();
}
 
private void LocalBindingsSaveButtonClicked(object sender, EventArgs e)
{
saveLocalBindingsDialog.ShowDialog();
}
 
private async void SaveLocalBindingsDialogOk(object sender, CancelEventArgs e)
{
using (var localBindingsStream = saveLocalBindingsDialog.OpenFile())
{
using (var memoryStream = new MemoryStream())
{
LocalKeyBindings.XmlSerializer.Serialize(memoryStream, LocalKeyBindings);
 
memoryStream.Position = 0L;
 
await memoryStream.CopyToAsync(localBindingsStream);
}
}
}
 
private async void LoadLocalBindingsDialogOk(object sender, CancelEventArgs e)
{
using (var localBindingsStream = loadLocalBindingsDialog.OpenFile())
{
var loadedBindings = (LocalKeyBindings) LocalKeyBindings.XmlSerializer.Deserialize(localBindingsStream);
 
LocalKeyBindings.Bindings.Clear();
 
foreach (var binding in loadedBindings.Bindings)
LocalKeyBindings.Bindings.Add(binding);
 
LocalCheckedListBoxBindingSource.ResetBindings(false);
}
 
await SaveLocalMouseKeyBindings();
}
 
private void SettingsWindowsStartupCheckboxCheckedChanged(object sender, EventArgs e)
{
try
{
switch (((CheckBox) sender).Checked)
{
case true:
using (var key = Registry.CurrentUser.OpenSubKey
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
key.SetValue(Name, Assembly.GetEntryAssembly().Location);
}
 
break;
default:
using (var key = Registry.CurrentUser.OpenSubKey
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
key.DeleteValue(Name, false);
}
 
break;
}
 
ActivityTextBox.AppendText(
$"{Strings.Application_Windows_startup_changed}{Environment.NewLine}");
}
catch
{
ActivityTextBox.AppendText(
$"{Strings.Could_not_change_Windows_startup}{Environment.NewLine}");
}
}
 
#region Saving and loading
 
private async Task SaveLocalMouseKeyBindings()
@@ -884,7 +980,7 @@
}
}
 
private async Task LoadLocalMouseKeyBindings()
private async Task LoadLocalKeyBindings()
{
try
{
@@ -902,7 +998,6 @@
foreach (var binding in loadedBindings.Bindings)
LocalKeyBindings.Bindings.Add(binding);
 
 
LocalCheckedListBoxBindingSource.ResetBindings(false);
}
}
@@ -937,7 +1032,7 @@
}
}
 
private async Task LoadRemoteMouseKeyBindings()
private async Task LoadRemoteKeyBindings()
{
try
{