diff --git a/AutoTypeSearch/AutoTypeSearch.csproj b/AutoTypeSearch/AutoTypeSearch.csproj index e763fc4..786cffd 100755 --- a/AutoTypeSearch/AutoTypeSearch.csproj +++ b/AutoTypeSearch/AutoTypeSearch.csproj @@ -46,7 +46,7 @@ False - C:\Program Files (x86)\KeePass Password Safe 2\KeePass.exe + ..\keepass_portable\KeePass.exe diff --git a/AutoTypeSearch/AutoTypeSearch.csproj b/AutoTypeSearch/AutoTypeSearch.csproj index e763fc4..786cffd 100755 --- a/AutoTypeSearch/AutoTypeSearch.csproj +++ b/AutoTypeSearch/AutoTypeSearch.csproj @@ -46,7 +46,7 @@ False - C:\Program Files (x86)\KeePass Password Safe 2\KeePass.exe + ..\keepass_portable\KeePass.exe diff --git a/AutoTypeSearch/Options.Designer.cs b/AutoTypeSearch/Options.Designer.cs index 56e5d3e..305d8e4 100755 --- a/AutoTypeSearch/Options.Designer.cs +++ b/AutoTypeSearch/Options.Designer.cs @@ -280,7 +280,7 @@ this.mShowSearchGroup.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.mShowSearchGroup.Name = "mShowSearchGroup"; this.mShowSearchGroup.Padding = new System.Windows.Forms.Padding(5, 6, 5, 6); - this.mShowSearchGroup.Size = new System.Drawing.Size(436, 228); + this.mShowSearchGroup.Size = new System.Drawing.Size(368, 228); this.mShowSearchGroup.TabIndex = 0; this.mShowSearchGroup.TabStop = false; this.mShowSearchGroup.Text = "Show search window"; @@ -352,6 +352,7 @@ this.mAdditionalSequenceDelete.Size = new System.Drawing.Size(29, 30); this.mAdditionalSequenceDelete.TabIndex = 11; this.mAdditionalSequenceDelete.UseVisualStyleBackColor = true; + this.mAdditionalSequenceDelete.Click += new System.EventHandler(this.mAdditionalSequenceDelete_Click); // // mAdditionalSequenceEdit // @@ -360,6 +361,7 @@ this.mAdditionalSequenceEdit.Name = "mAdditionalSequenceEdit"; this.mAdditionalSequenceEdit.Size = new System.Drawing.Size(100, 31); this.mAdditionalSequenceEdit.TabIndex = 10; + this.mAdditionalSequenceEdit.KeyDown += new System.Windows.Forms.KeyEventHandler(this.mAdditionalSequenceEdit_KeyDown); this.mAdditionalSequenceEdit.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.mAdditionalSequenceEdit_KeyPress); this.mAdditionalSequenceEdit.Leave += new System.EventHandler(this.mAdditionalSequenceEdit_Leave); // diff --git a/AutoTypeSearch/AutoTypeSearch.csproj b/AutoTypeSearch/AutoTypeSearch.csproj index e763fc4..786cffd 100755 --- a/AutoTypeSearch/AutoTypeSearch.csproj +++ b/AutoTypeSearch/AutoTypeSearch.csproj @@ -46,7 +46,7 @@ False - C:\Program Files (x86)\KeePass Password Safe 2\KeePass.exe + ..\keepass_portable\KeePass.exe diff --git a/AutoTypeSearch/Options.Designer.cs b/AutoTypeSearch/Options.Designer.cs index 56e5d3e..305d8e4 100755 --- a/AutoTypeSearch/Options.Designer.cs +++ b/AutoTypeSearch/Options.Designer.cs @@ -280,7 +280,7 @@ this.mShowSearchGroup.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.mShowSearchGroup.Name = "mShowSearchGroup"; this.mShowSearchGroup.Padding = new System.Windows.Forms.Padding(5, 6, 5, 6); - this.mShowSearchGroup.Size = new System.Drawing.Size(436, 228); + this.mShowSearchGroup.Size = new System.Drawing.Size(368, 228); this.mShowSearchGroup.TabIndex = 0; this.mShowSearchGroup.TabStop = false; this.mShowSearchGroup.Text = "Show search window"; @@ -352,6 +352,7 @@ this.mAdditionalSequenceDelete.Size = new System.Drawing.Size(29, 30); this.mAdditionalSequenceDelete.TabIndex = 11; this.mAdditionalSequenceDelete.UseVisualStyleBackColor = true; + this.mAdditionalSequenceDelete.Click += new System.EventHandler(this.mAdditionalSequenceDelete_Click); // // mAdditionalSequenceEdit // @@ -360,6 +361,7 @@ this.mAdditionalSequenceEdit.Name = "mAdditionalSequenceEdit"; this.mAdditionalSequenceEdit.Size = new System.Drawing.Size(100, 31); this.mAdditionalSequenceEdit.TabIndex = 10; + this.mAdditionalSequenceEdit.KeyDown += new System.Windows.Forms.KeyEventHandler(this.mAdditionalSequenceEdit_KeyDown); this.mAdditionalSequenceEdit.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.mAdditionalSequenceEdit_KeyPress); this.mAdditionalSequenceEdit.Leave += new System.EventHandler(this.mAdditionalSequenceEdit_Leave); // diff --git a/AutoTypeSearch/Options.cs b/AutoTypeSearch/Options.cs index f3589aa..8c4609a 100755 --- a/AutoTypeSearch/Options.cs +++ b/AutoTypeSearch/Options.cs @@ -2,6 +2,7 @@ using System.Configuration; using System.Diagnostics; using System.Drawing; +using System.IO; using System.Linq; using System.Net.NetworkInformation; using System.Windows.Forms; @@ -33,7 +34,7 @@ // Read options mShowOnFailedSearch.Checked = Settings.Default.ShowOnFailedAutoType; - + if (NativeLib.IsUnix()) { mShowOnHotKey.Enabled = false; @@ -55,7 +56,7 @@ mSearchInNotes.Checked = Settings.Default.SearchNotes; mSearchInTags.Checked = Settings.Default.SearchTags; mSearchInOtherFields.Checked = Settings.Default.SearchCustomFields; - + mCaseSensitive.Checked = Settings.Default.CaseSensitive; mExcludeExpired.Checked = Settings.Default.ExcludeExpired; mResolveReferences.Checked = Settings.Default.ResolveReferences; @@ -68,7 +69,7 @@ mAdditionalSequences.BeginUpdate(); mAdditionalSequences.Items.Clear(); - + if (Settings.Default.AdditionalCustomSequences != null) { foreach (string s in Settings.Default.AdditionalCustomSequences) @@ -78,13 +79,13 @@ } SetNewSequenceItem(); - + mAdditionalSequences.EndUpdate(); } private void SetNewSequenceItem() { - mNewSequenceIndex = mAdditionalSequences.Items.Add("new sequence"); + mNewSequenceIndex = mAdditionalSequences.Items.Add("+ new sequence"); Control control = mAdditionalSequences.Items[mNewSequenceIndex] as Control; if (control != null) { @@ -122,6 +123,15 @@ Settings.Default.AlternativeAction = (Actions)mAlternativeAction.SelectedIndex; Settings.Default.ShowHotKey = ShowHotKey; + Settings.Default.AdditionalCustomSequences = new System.Collections.Specialized.StringCollection(); + for (int i = 0; i < mAdditionalSequences.Items.Count; i++) + { + if (i != mNewSequenceIndex) + { + Settings.Default.AdditionalCustomSequences.Add(mAdditionalSequences.Items[i].ToString()); + } + } + ApplyHotKey(); } @@ -236,6 +246,7 @@ private bool mAdditionalSequenceEditing = false; private IButtonControl mOldOptionsAcceptButton; + private IButtonControl mOldOptionsCancelButton; private int mSavedOldOptionsAcceptButton = 0; private void CreateAdditionalSequenceEditBox(object sender) @@ -279,7 +290,10 @@ if (sOptionsForm != null && mSavedOldOptionsAcceptButton == 1) { mOldOptionsAcceptButton = sOptionsForm.AcceptButton; + mOldOptionsCancelButton = sOptionsForm.CancelButton; + sOptionsForm.AcceptButton = null; + sOptionsForm.CancelButton = null; } } @@ -291,6 +305,7 @@ if (sOptionsForm != null && mSavedOldOptionsAcceptButton == 0) { sOptionsForm.AcceptButton = mOldOptionsAcceptButton; + sOptionsForm.CancelButton = mOldOptionsCancelButton; } } } @@ -303,10 +318,12 @@ FinishEditingAdditionalSequenceItem(); } } - - private void FinishEditingAdditionalSequenceItem() + + private bool mLeavingAdditionalSequenceEditing = false; + private void FinishEditingAdditionalSequenceItem(bool accepted = true) { - if (!mAdditionalSequenceEditing) return; + if (!mAdditionalSequenceEditing || mLeavingAdditionalSequenceEditing) return; + mLeavingAdditionalSequenceEditing = true; mAdditionalSequences.BeginUpdate(); @@ -318,7 +335,7 @@ { mAdditionalSequences.Items.RemoveAt(mEditedSequenceIndex); } - else + else if (accepted) { mAdditionalSequences.Items[mEditedSequenceIndex] = mAdditionalSequenceEdit.Text; } @@ -331,7 +348,10 @@ RestoreFormAcceptButton(); + SetDeleteSequenceButton(); + mAdditionalSequenceEditing = false; + mLeavingAdditionalSequenceEditing = false; } private void mAdditionalSequenceEdit_Leave(object sender, EventArgs e) @@ -380,15 +400,36 @@ { CreateAdditionalSequenceEditBox(sender); } + else if (e.KeyCode == Keys.Delete) + { + RemoveAdditionalSequence(); + } } + private void RemoveAdditionalSequence() + { + int selected = mAdditionalSequences.SelectedIndex; + if (selected >= 0 && selected < mAdditionalSequences.Items.Count && selected != mNewSequenceIndex) + { + mAdditionalSequences.Items.RemoveAt(selected); + mNewSequenceIndex--; + } + } + + private bool mAdditionalSequencesFocused = false; private void mAdditionalSequences_Enter(object sender, EventArgs e) { + if (mAdditionalSequencesFocused) return; + mAdditionalSequencesFocused = true; + SaveFormAcceptButton(); } private void mAdditionalSequences_Leave(object sender, EventArgs e) { + if (!mAdditionalSequencesFocused) return; + mAdditionalSequencesFocused = false; + RestoreFormAcceptButton(); } @@ -406,5 +447,34 @@ } e.DrawFocusRectangle(); } + + private void mAdditionalSequenceEdit_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Up) + { + FinishEditingAdditionalSequenceItem(); + if (mAdditionalSequences.SelectedIndex > 0) + { + mAdditionalSequences.SelectedIndex--; + } + } + else if (e.KeyCode == Keys.Down) + { + FinishEditingAdditionalSequenceItem(); + if (mAdditionalSequences.SelectedIndex < mAdditionalSequences.Items.Count - 1) + { + mAdditionalSequences.SelectedIndex++; + } + } + else if (e.KeyCode == Keys.Escape) + { + FinishEditingAdditionalSequenceItem(false); + } + } + + private void mAdditionalSequenceDelete_Click(object sender, EventArgs e) + { + RemoveAdditionalSequence(); + } } } diff --git a/AutoTypeSearch/AutoTypeSearch.csproj b/AutoTypeSearch/AutoTypeSearch.csproj index e763fc4..786cffd 100755 --- a/AutoTypeSearch/AutoTypeSearch.csproj +++ b/AutoTypeSearch/AutoTypeSearch.csproj @@ -46,7 +46,7 @@ False - C:\Program Files (x86)\KeePass Password Safe 2\KeePass.exe + ..\keepass_portable\KeePass.exe diff --git a/AutoTypeSearch/Options.Designer.cs b/AutoTypeSearch/Options.Designer.cs index 56e5d3e..305d8e4 100755 --- a/AutoTypeSearch/Options.Designer.cs +++ b/AutoTypeSearch/Options.Designer.cs @@ -280,7 +280,7 @@ this.mShowSearchGroup.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.mShowSearchGroup.Name = "mShowSearchGroup"; this.mShowSearchGroup.Padding = new System.Windows.Forms.Padding(5, 6, 5, 6); - this.mShowSearchGroup.Size = new System.Drawing.Size(436, 228); + this.mShowSearchGroup.Size = new System.Drawing.Size(368, 228); this.mShowSearchGroup.TabIndex = 0; this.mShowSearchGroup.TabStop = false; this.mShowSearchGroup.Text = "Show search window"; @@ -352,6 +352,7 @@ this.mAdditionalSequenceDelete.Size = new System.Drawing.Size(29, 30); this.mAdditionalSequenceDelete.TabIndex = 11; this.mAdditionalSequenceDelete.UseVisualStyleBackColor = true; + this.mAdditionalSequenceDelete.Click += new System.EventHandler(this.mAdditionalSequenceDelete_Click); // // mAdditionalSequenceEdit // @@ -360,6 +361,7 @@ this.mAdditionalSequenceEdit.Name = "mAdditionalSequenceEdit"; this.mAdditionalSequenceEdit.Size = new System.Drawing.Size(100, 31); this.mAdditionalSequenceEdit.TabIndex = 10; + this.mAdditionalSequenceEdit.KeyDown += new System.Windows.Forms.KeyEventHandler(this.mAdditionalSequenceEdit_KeyDown); this.mAdditionalSequenceEdit.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.mAdditionalSequenceEdit_KeyPress); this.mAdditionalSequenceEdit.Leave += new System.EventHandler(this.mAdditionalSequenceEdit_Leave); // diff --git a/AutoTypeSearch/Options.cs b/AutoTypeSearch/Options.cs index f3589aa..8c4609a 100755 --- a/AutoTypeSearch/Options.cs +++ b/AutoTypeSearch/Options.cs @@ -2,6 +2,7 @@ using System.Configuration; using System.Diagnostics; using System.Drawing; +using System.IO; using System.Linq; using System.Net.NetworkInformation; using System.Windows.Forms; @@ -33,7 +34,7 @@ // Read options mShowOnFailedSearch.Checked = Settings.Default.ShowOnFailedAutoType; - + if (NativeLib.IsUnix()) { mShowOnHotKey.Enabled = false; @@ -55,7 +56,7 @@ mSearchInNotes.Checked = Settings.Default.SearchNotes; mSearchInTags.Checked = Settings.Default.SearchTags; mSearchInOtherFields.Checked = Settings.Default.SearchCustomFields; - + mCaseSensitive.Checked = Settings.Default.CaseSensitive; mExcludeExpired.Checked = Settings.Default.ExcludeExpired; mResolveReferences.Checked = Settings.Default.ResolveReferences; @@ -68,7 +69,7 @@ mAdditionalSequences.BeginUpdate(); mAdditionalSequences.Items.Clear(); - + if (Settings.Default.AdditionalCustomSequences != null) { foreach (string s in Settings.Default.AdditionalCustomSequences) @@ -78,13 +79,13 @@ } SetNewSequenceItem(); - + mAdditionalSequences.EndUpdate(); } private void SetNewSequenceItem() { - mNewSequenceIndex = mAdditionalSequences.Items.Add("new sequence"); + mNewSequenceIndex = mAdditionalSequences.Items.Add("+ new sequence"); Control control = mAdditionalSequences.Items[mNewSequenceIndex] as Control; if (control != null) { @@ -122,6 +123,15 @@ Settings.Default.AlternativeAction = (Actions)mAlternativeAction.SelectedIndex; Settings.Default.ShowHotKey = ShowHotKey; + Settings.Default.AdditionalCustomSequences = new System.Collections.Specialized.StringCollection(); + for (int i = 0; i < mAdditionalSequences.Items.Count; i++) + { + if (i != mNewSequenceIndex) + { + Settings.Default.AdditionalCustomSequences.Add(mAdditionalSequences.Items[i].ToString()); + } + } + ApplyHotKey(); } @@ -236,6 +246,7 @@ private bool mAdditionalSequenceEditing = false; private IButtonControl mOldOptionsAcceptButton; + private IButtonControl mOldOptionsCancelButton; private int mSavedOldOptionsAcceptButton = 0; private void CreateAdditionalSequenceEditBox(object sender) @@ -279,7 +290,10 @@ if (sOptionsForm != null && mSavedOldOptionsAcceptButton == 1) { mOldOptionsAcceptButton = sOptionsForm.AcceptButton; + mOldOptionsCancelButton = sOptionsForm.CancelButton; + sOptionsForm.AcceptButton = null; + sOptionsForm.CancelButton = null; } } @@ -291,6 +305,7 @@ if (sOptionsForm != null && mSavedOldOptionsAcceptButton == 0) { sOptionsForm.AcceptButton = mOldOptionsAcceptButton; + sOptionsForm.CancelButton = mOldOptionsCancelButton; } } } @@ -303,10 +318,12 @@ FinishEditingAdditionalSequenceItem(); } } - - private void FinishEditingAdditionalSequenceItem() + + private bool mLeavingAdditionalSequenceEditing = false; + private void FinishEditingAdditionalSequenceItem(bool accepted = true) { - if (!mAdditionalSequenceEditing) return; + if (!mAdditionalSequenceEditing || mLeavingAdditionalSequenceEditing) return; + mLeavingAdditionalSequenceEditing = true; mAdditionalSequences.BeginUpdate(); @@ -318,7 +335,7 @@ { mAdditionalSequences.Items.RemoveAt(mEditedSequenceIndex); } - else + else if (accepted) { mAdditionalSequences.Items[mEditedSequenceIndex] = mAdditionalSequenceEdit.Text; } @@ -331,7 +348,10 @@ RestoreFormAcceptButton(); + SetDeleteSequenceButton(); + mAdditionalSequenceEditing = false; + mLeavingAdditionalSequenceEditing = false; } private void mAdditionalSequenceEdit_Leave(object sender, EventArgs e) @@ -380,15 +400,36 @@ { CreateAdditionalSequenceEditBox(sender); } + else if (e.KeyCode == Keys.Delete) + { + RemoveAdditionalSequence(); + } } + private void RemoveAdditionalSequence() + { + int selected = mAdditionalSequences.SelectedIndex; + if (selected >= 0 && selected < mAdditionalSequences.Items.Count && selected != mNewSequenceIndex) + { + mAdditionalSequences.Items.RemoveAt(selected); + mNewSequenceIndex--; + } + } + + private bool mAdditionalSequencesFocused = false; private void mAdditionalSequences_Enter(object sender, EventArgs e) { + if (mAdditionalSequencesFocused) return; + mAdditionalSequencesFocused = true; + SaveFormAcceptButton(); } private void mAdditionalSequences_Leave(object sender, EventArgs e) { + if (!mAdditionalSequencesFocused) return; + mAdditionalSequencesFocused = false; + RestoreFormAcceptButton(); } @@ -406,5 +447,34 @@ } e.DrawFocusRectangle(); } + + private void mAdditionalSequenceEdit_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Up) + { + FinishEditingAdditionalSequenceItem(); + if (mAdditionalSequences.SelectedIndex > 0) + { + mAdditionalSequences.SelectedIndex--; + } + } + else if (e.KeyCode == Keys.Down) + { + FinishEditingAdditionalSequenceItem(); + if (mAdditionalSequences.SelectedIndex < mAdditionalSequences.Items.Count - 1) + { + mAdditionalSequences.SelectedIndex++; + } + } + else if (e.KeyCode == Keys.Escape) + { + FinishEditingAdditionalSequenceItem(false); + } + } + + private void mAdditionalSequenceDelete_Click(object sender, EventArgs e) + { + RemoveAdditionalSequence(); + } } } diff --git a/AutoTypeSearch/copy.bat b/AutoTypeSearch/copy.bat new file mode 100644 index 0000000..7de3a4f --- /dev/null +++ b/AutoTypeSearch/copy.bat @@ -0,0 +1,3 @@ +taskkill /IM keepass.exe /F +copy /Y "obj\Debug\AutoTypeSearch.dll" "..\keepass_portable\" +copy /Y "obj\Debug\AutoTypeSearch.pdb" "..\keepass_portable\" diff --git a/AutoTypeSearch/AutoTypeSearch.csproj b/AutoTypeSearch/AutoTypeSearch.csproj index e763fc4..786cffd 100755 --- a/AutoTypeSearch/AutoTypeSearch.csproj +++ b/AutoTypeSearch/AutoTypeSearch.csproj @@ -46,7 +46,7 @@ False - C:\Program Files (x86)\KeePass Password Safe 2\KeePass.exe + ..\keepass_portable\KeePass.exe diff --git a/AutoTypeSearch/Options.Designer.cs b/AutoTypeSearch/Options.Designer.cs index 56e5d3e..305d8e4 100755 --- a/AutoTypeSearch/Options.Designer.cs +++ b/AutoTypeSearch/Options.Designer.cs @@ -280,7 +280,7 @@ this.mShowSearchGroup.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); this.mShowSearchGroup.Name = "mShowSearchGroup"; this.mShowSearchGroup.Padding = new System.Windows.Forms.Padding(5, 6, 5, 6); - this.mShowSearchGroup.Size = new System.Drawing.Size(436, 228); + this.mShowSearchGroup.Size = new System.Drawing.Size(368, 228); this.mShowSearchGroup.TabIndex = 0; this.mShowSearchGroup.TabStop = false; this.mShowSearchGroup.Text = "Show search window"; @@ -352,6 +352,7 @@ this.mAdditionalSequenceDelete.Size = new System.Drawing.Size(29, 30); this.mAdditionalSequenceDelete.TabIndex = 11; this.mAdditionalSequenceDelete.UseVisualStyleBackColor = true; + this.mAdditionalSequenceDelete.Click += new System.EventHandler(this.mAdditionalSequenceDelete_Click); // // mAdditionalSequenceEdit // @@ -360,6 +361,7 @@ this.mAdditionalSequenceEdit.Name = "mAdditionalSequenceEdit"; this.mAdditionalSequenceEdit.Size = new System.Drawing.Size(100, 31); this.mAdditionalSequenceEdit.TabIndex = 10; + this.mAdditionalSequenceEdit.KeyDown += new System.Windows.Forms.KeyEventHandler(this.mAdditionalSequenceEdit_KeyDown); this.mAdditionalSequenceEdit.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.mAdditionalSequenceEdit_KeyPress); this.mAdditionalSequenceEdit.Leave += new System.EventHandler(this.mAdditionalSequenceEdit_Leave); // diff --git a/AutoTypeSearch/Options.cs b/AutoTypeSearch/Options.cs index f3589aa..8c4609a 100755 --- a/AutoTypeSearch/Options.cs +++ b/AutoTypeSearch/Options.cs @@ -2,6 +2,7 @@ using System.Configuration; using System.Diagnostics; using System.Drawing; +using System.IO; using System.Linq; using System.Net.NetworkInformation; using System.Windows.Forms; @@ -33,7 +34,7 @@ // Read options mShowOnFailedSearch.Checked = Settings.Default.ShowOnFailedAutoType; - + if (NativeLib.IsUnix()) { mShowOnHotKey.Enabled = false; @@ -55,7 +56,7 @@ mSearchInNotes.Checked = Settings.Default.SearchNotes; mSearchInTags.Checked = Settings.Default.SearchTags; mSearchInOtherFields.Checked = Settings.Default.SearchCustomFields; - + mCaseSensitive.Checked = Settings.Default.CaseSensitive; mExcludeExpired.Checked = Settings.Default.ExcludeExpired; mResolveReferences.Checked = Settings.Default.ResolveReferences; @@ -68,7 +69,7 @@ mAdditionalSequences.BeginUpdate(); mAdditionalSequences.Items.Clear(); - + if (Settings.Default.AdditionalCustomSequences != null) { foreach (string s in Settings.Default.AdditionalCustomSequences) @@ -78,13 +79,13 @@ } SetNewSequenceItem(); - + mAdditionalSequences.EndUpdate(); } private void SetNewSequenceItem() { - mNewSequenceIndex = mAdditionalSequences.Items.Add("new sequence"); + mNewSequenceIndex = mAdditionalSequences.Items.Add("+ new sequence"); Control control = mAdditionalSequences.Items[mNewSequenceIndex] as Control; if (control != null) { @@ -122,6 +123,15 @@ Settings.Default.AlternativeAction = (Actions)mAlternativeAction.SelectedIndex; Settings.Default.ShowHotKey = ShowHotKey; + Settings.Default.AdditionalCustomSequences = new System.Collections.Specialized.StringCollection(); + for (int i = 0; i < mAdditionalSequences.Items.Count; i++) + { + if (i != mNewSequenceIndex) + { + Settings.Default.AdditionalCustomSequences.Add(mAdditionalSequences.Items[i].ToString()); + } + } + ApplyHotKey(); } @@ -236,6 +246,7 @@ private bool mAdditionalSequenceEditing = false; private IButtonControl mOldOptionsAcceptButton; + private IButtonControl mOldOptionsCancelButton; private int mSavedOldOptionsAcceptButton = 0; private void CreateAdditionalSequenceEditBox(object sender) @@ -279,7 +290,10 @@ if (sOptionsForm != null && mSavedOldOptionsAcceptButton == 1) { mOldOptionsAcceptButton = sOptionsForm.AcceptButton; + mOldOptionsCancelButton = sOptionsForm.CancelButton; + sOptionsForm.AcceptButton = null; + sOptionsForm.CancelButton = null; } } @@ -291,6 +305,7 @@ if (sOptionsForm != null && mSavedOldOptionsAcceptButton == 0) { sOptionsForm.AcceptButton = mOldOptionsAcceptButton; + sOptionsForm.CancelButton = mOldOptionsCancelButton; } } } @@ -303,10 +318,12 @@ FinishEditingAdditionalSequenceItem(); } } - - private void FinishEditingAdditionalSequenceItem() + + private bool mLeavingAdditionalSequenceEditing = false; + private void FinishEditingAdditionalSequenceItem(bool accepted = true) { - if (!mAdditionalSequenceEditing) return; + if (!mAdditionalSequenceEditing || mLeavingAdditionalSequenceEditing) return; + mLeavingAdditionalSequenceEditing = true; mAdditionalSequences.BeginUpdate(); @@ -318,7 +335,7 @@ { mAdditionalSequences.Items.RemoveAt(mEditedSequenceIndex); } - else + else if (accepted) { mAdditionalSequences.Items[mEditedSequenceIndex] = mAdditionalSequenceEdit.Text; } @@ -331,7 +348,10 @@ RestoreFormAcceptButton(); + SetDeleteSequenceButton(); + mAdditionalSequenceEditing = false; + mLeavingAdditionalSequenceEditing = false; } private void mAdditionalSequenceEdit_Leave(object sender, EventArgs e) @@ -380,15 +400,36 @@ { CreateAdditionalSequenceEditBox(sender); } + else if (e.KeyCode == Keys.Delete) + { + RemoveAdditionalSequence(); + } } + private void RemoveAdditionalSequence() + { + int selected = mAdditionalSequences.SelectedIndex; + if (selected >= 0 && selected < mAdditionalSequences.Items.Count && selected != mNewSequenceIndex) + { + mAdditionalSequences.Items.RemoveAt(selected); + mNewSequenceIndex--; + } + } + + private bool mAdditionalSequencesFocused = false; private void mAdditionalSequences_Enter(object sender, EventArgs e) { + if (mAdditionalSequencesFocused) return; + mAdditionalSequencesFocused = true; + SaveFormAcceptButton(); } private void mAdditionalSequences_Leave(object sender, EventArgs e) { + if (!mAdditionalSequencesFocused) return; + mAdditionalSequencesFocused = false; + RestoreFormAcceptButton(); } @@ -406,5 +447,34 @@ } e.DrawFocusRectangle(); } + + private void mAdditionalSequenceEdit_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Up) + { + FinishEditingAdditionalSequenceItem(); + if (mAdditionalSequences.SelectedIndex > 0) + { + mAdditionalSequences.SelectedIndex--; + } + } + else if (e.KeyCode == Keys.Down) + { + FinishEditingAdditionalSequenceItem(); + if (mAdditionalSequences.SelectedIndex < mAdditionalSequences.Items.Count - 1) + { + mAdditionalSequences.SelectedIndex++; + } + } + else if (e.KeyCode == Keys.Escape) + { + FinishEditingAdditionalSequenceItem(false); + } + } + + private void mAdditionalSequenceDelete_Click(object sender, EventArgs e) + { + RemoveAdditionalSequence(); + } } } diff --git a/AutoTypeSearch/copy.bat b/AutoTypeSearch/copy.bat new file mode 100644 index 0000000..7de3a4f --- /dev/null +++ b/AutoTypeSearch/copy.bat @@ -0,0 +1,3 @@ +taskkill /IM keepass.exe /F +copy /Y "obj\Debug\AutoTypeSearch.dll" "..\keepass_portable\" +copy /Y "obj\Debug\AutoTypeSearch.pdb" "..\keepass_portable\" diff --git a/AutoTypeSearch/install.bat b/AutoTypeSearch/install.bat index b537637..6a451f5 100755 --- a/AutoTypeSearch/install.bat +++ b/AutoTypeSearch/install.bat @@ -1,4 +1,4 @@ taskkill /IM keepass.exe /F -copy /Y "obj\Debug\AutoTypeSearch.dll" "c:\Program Files (x86)\KeePass Password Safe 2\" -copy /Y "obj\Debug\AutoTypeSearch.pdb" "c:\Program Files (x86)\KeePass Password Safe 2\" -runas /user:Mark /savecred "cmd /C start \"\" \"c:\Program Files (x86)\KeePass Password Safe 2\keepass.exe\"" \ No newline at end of file +copy /Y "obj\Debug\AutoTypeSearch.dll" "..\keepass_portable\" +copy /Y "obj\Debug\AutoTypeSearch.pdb" "..\keepass_portable\" +runas /user:Mark /savecred "cmd /C start \"\" \"c:\Projects\AutoTypeSearch\keepass_portable\KeePass.exe\""