/trunk/WingMan/WingManForm.cs |
@@ -1,6 +1,7 @@ |
using System; |
using System.Collections.Generic; |
using System.Collections.ObjectModel; |
using System.ComponentModel; |
using System.Drawing; |
using System.IO; |
using System.Linq; |
@@ -52,13 +53,14 @@ |
LocalKeyBindings = new LocalKeyBindings(new List<KeyBinding>()); |
RemoteKeyBindings = new RemoteKeyBindings(new ObservableCollection<RemoteKeyBinding>()); |
|
LocalListBoxBindingSource = new BindingSource |
LocalCheckedListBoxBindingSource = new BindingSource |
{ |
DataSource = LocalKeyBindings.Bindings |
}; |
LocalBindingsListBox.DisplayMember = "DisplayName"; |
LocalBindingsListBox.ValueMember = "Keys"; |
LocalBindingsListBox.DataSource = LocalListBoxBindingSource; |
LocalCheckedListBoxBindingSource.ListChanged += LocalCheckedListBoxBindingSourceOnListChanged; |
LocalBindingsCheckedListBox.DisplayMember = "DisplayName"; |
LocalBindingsCheckedListBox.ValueMember = "Keys"; |
LocalBindingsCheckedListBox.DataSource = LocalCheckedListBoxBindingSource; |
|
KeyBindingsExchange = new KeyBindingsExchange |
{ |
@@ -107,7 +109,7 @@ |
|
private RemoteKeyBindings RemoteKeyBindings { get; } |
|
private BindingSource LocalListBoxBindingSource { get; } |
private BindingSource LocalCheckedListBoxBindingSource { get; } |
|
private BindingSource RemoteBindingsComboBoxSource { get; } |
|
@@ -123,6 +125,25 @@ |
|
public KeySimulator KeySimulator { get; set; } |
|
private void LocalCheckedListBoxBindingSourceOnListChanged(object sender, ListChangedEventArgs e) |
{ |
// Check items |
LocalBindingsCheckedListBox.ItemCheck -= LocalBindingsCheckedListBoxItemCheck; |
|
for (var i = 0; i < LocalKeyBindings.Bindings.Count; ++i) |
switch (LocalKeyBindings.Bindings[i].Enabled) |
{ |
case true: |
LocalBindingsCheckedListBox.SetItemCheckState(i, CheckState.Checked); |
break; |
default: |
LocalBindingsCheckedListBox.SetItemCheckState(i, CheckState.Unchecked); |
break; |
} |
|
LocalBindingsCheckedListBox.ItemCheck += LocalBindingsCheckedListBoxItemCheck; |
} |
|
private void AutoCompletionOnLoadFailed(object sender, AutoCompletionFailedEventArgs args) |
{ |
ActivityTextBox.AppendText( |
@@ -482,12 +503,12 @@ |
string.Equals(binding.Name, LocalNameTextBox.Text, StringComparison.Ordinal))) |
{ |
LocalNameTextBox.BackColor = Color.LightPink; |
LocalBindingsListBox.BackColor = Color.LightPink; |
LocalBindingsCheckedListBox.BackColor = Color.LightPink; |
return; |
} |
|
LocalNameTextBox.BackColor = Color.Empty; |
LocalBindingsListBox.BackColor = Color.Empty; |
LocalBindingsCheckedListBox.BackColor = Color.Empty; |
|
ShowOverlayPanel(); |
|
@@ -509,7 +530,7 @@ |
{ |
LocalKeyBindings.Bindings.Add(new KeyBinding(LocalNameTextBox.Text, MouseKeyCombo)); |
|
LocalListBoxBindingSource.ResetBindings(false); |
LocalCheckedListBoxBindingSource.ResetBindings(false); |
|
MouseKeyApplicationHook.KeyDown -= LocalMouseKeyHookOnKeyDown; |
MouseKeyApplicationHook.KeyUp -= LocalMouseKeyHookOnKeyUp; |
@@ -545,12 +566,12 @@ |
|
private async void LocalBindingsRemoveButtonClick(object sender, EventArgs e) |
{ |
var helmBinding = (KeyBinding) LocalBindingsListBox.SelectedItem; |
var helmBinding = (KeyBinding) LocalBindingsCheckedListBox.SelectedItem; |
if (helmBinding == null) |
return; |
|
LocalKeyBindings.Bindings.Remove(helmBinding); |
LocalListBoxBindingSource.ResetBindings(false); |
LocalCheckedListBoxBindingSource.ResetBindings(false); |
|
await SaveLocalMouseKeyBindings(); |
} |
@@ -678,6 +699,25 @@ |
notifyIcon1.Visible = false; |
} |
|
private async void LocalBindingsCheckedListBoxItemCheck(object sender, ItemCheckEventArgs e) |
{ |
var helmBinding = (KeyBinding) LocalBindingsCheckedListBox.Items[e.Index]; |
if (helmBinding == null) |
return; |
|
switch (e.NewValue) |
{ |
case CheckState.Checked: |
helmBinding.Enabled = true; |
break; |
case CheckState.Unchecked: |
helmBinding.Enabled = false; |
break; |
} |
|
await SaveLocalMouseKeyBindings(); |
} |
|
#region Saving and loading |
|
private async Task SaveLocalMouseKeyBindings() |
@@ -721,7 +761,8 @@ |
foreach (var binding in loadedBindings.Bindings) |
LocalKeyBindings.Bindings.Add(binding); |
|
LocalListBoxBindingSource.ResetBindings(false); |
|
LocalCheckedListBoxBindingSource.ResetBindings(false); |
} |
} |
} |