From 4738025ec68cec036bd4ca493e3b9a04addf6643 Mon Sep 17 00:00:00 2001 From: morkt Date: Tue, 4 Aug 2015 21:02:16 +0400 Subject: [PATCH] moved AutoCompleteBox extension to separate source file. --- AutoComplete.cs | 94 ++++++++++++++++++++++++++++++++++++++ GARbro.GUI.csproj | 1 + MainWindow.xaml.cs | 69 ++-------------------------- Properties/AssemblyInfo.cs | 4 +- 4 files changed, 100 insertions(+), 68 deletions(-) create mode 100644 AutoComplete.cs diff --git a/AutoComplete.cs b/AutoComplete.cs new file mode 100644 index 00000000..f6ec0af5 --- /dev/null +++ b/AutoComplete.cs @@ -0,0 +1,94 @@ +//! \file AutoComplete.cs +//! \date Tue Aug 04 20:41:22 2015 +//! \brief TextBox that uses filesystem as source for autocomplete. +// +// Copyright (C) 2014-2015 by morkt +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +// IN THE SOFTWARE. +// + +using System; +using System.Collections.Generic; +using System.IO; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; + +namespace GARbro.GUI +{ + /// + /// TextBox that uses filesystem as source for autocomplete. + /// + public class ExtAutoCompleteBox : AutoCompleteBox + { + public delegate void EnterKeyDownEvent (object sender, KeyEventArgs e); + public event EnterKeyDownEvent EnterKeyDown; + + public ExtAutoCompleteBox () + { + this.GotFocus += (s, e) => { IsTextBoxFocused = true; }; + this.LostFocus += (s, e) => { IsTextBoxFocused = false; }; + } + + public bool IsTextBoxFocused + { + get { return (bool)GetValue (HasFocusProperty); } + private set { SetValue (HasFocusProperty, value); } + } + + public static readonly DependencyProperty HasFocusProperty = + DependencyProperty.RegisterAttached ("IsTextBoxFocused", typeof(bool), typeof(ExtAutoCompleteBox), new UIPropertyMetadata()); + + protected override void OnKeyDown (KeyEventArgs e) + { + base.OnKeyDown (e); + if (e.Key == Key.Enter) + RaiseEnterKeyDownEvent (e); + } + + private void RaiseEnterKeyDownEvent (KeyEventArgs e) + { + if (EnterKeyDown != null) + EnterKeyDown (this, e); + } + + protected override void OnPopulating (PopulatingEventArgs e) + { + try + { + var candidates = new List(); + string dirname = Path.GetDirectoryName (this.Text); + if (!string.IsNullOrEmpty (dirname) && Directory.Exists (dirname)) + { + foreach (var dir in Directory.GetDirectories (dirname)) + { + if (dir.StartsWith (dirname, StringComparison.CurrentCultureIgnoreCase)) + candidates.Add (dir); + } + } + this.ItemsSource = candidates; + } + catch + { + // ignore filesystem errors + } + base.OnPopulating (e); + } + } +} diff --git a/GARbro.GUI.csproj b/GARbro.GUI.csproj index 4ace66b7..7a27ffd4 100644 --- a/GARbro.GUI.csproj +++ b/GARbro.GUI.csproj @@ -126,6 +126,7 @@ ArcParameters.xaml + ConvertMedia.xaml diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index a66fd381..f64cd455 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -24,28 +24,25 @@ using System; using System.IO; using System.Collections.Generic; +using System.Collections.Specialized; using System.ComponentModel; +using System.Diagnostics; using System.Globalization; using System.Linq; using System.Text; -using System.Diagnostics; +using System.Text.RegularExpressions; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Input; -using System.Windows.Media; using System.Windows.Threading; -using System.Threading; using Microsoft.VisualBasic.FileIO; using GARbro.GUI.Properties; using GARbro.GUI.Strings; using GameRes; using Rnd.Windows; -using System.Collections.Specialized; -using System.Collections.ObjectModel; using Microsoft.Win32; using NAudio.Wave; -using System.Text.RegularExpressions; namespace GARbro.GUI { @@ -1250,66 +1247,6 @@ namespace GARbro.GUI } } - /// - /// TextBox that uses filesystem as source for autocomplete. - /// - public class ExtAutoCompleteBox : AutoCompleteBox - { - public delegate void EnterKeyDownEvent (object sender, KeyEventArgs e); - public event EnterKeyDownEvent EnterKeyDown; - - public ExtAutoCompleteBox () - { - this.GotFocus += (s, e) => { IsTextBoxFocused = true; }; - this.LostFocus += (s, e) => { IsTextBoxFocused = false; }; - } - - public bool IsTextBoxFocused - { - get { return (bool)GetValue (HasFocusProperty); } - private set { SetValue (HasFocusProperty, value); } - } - - public static readonly DependencyProperty HasFocusProperty = - DependencyProperty.RegisterAttached ("IsTextBoxFocused", typeof(bool), typeof(ExtAutoCompleteBox), new UIPropertyMetadata()); - - protected override void OnKeyDown (KeyEventArgs e) - { - base.OnKeyDown (e); - if (e.Key == Key.Enter) - RaiseEnterKeyDownEvent (e); - } - - private void RaiseEnterKeyDownEvent (KeyEventArgs e) - { - if (EnterKeyDown != null) - EnterKeyDown (this, e); - } - - protected override void OnPopulating (PopulatingEventArgs e) - { - var candidates = new List(); - try - { - string dirname = Path.GetDirectoryName (this.Text); - if (!string.IsNullOrEmpty (dirname) && Directory.Exists (dirname)) - { - foreach (var dir in Directory.GetDirectories (dirname)) - { - if (dir.StartsWith (dirname, StringComparison.CurrentCultureIgnoreCase)) - candidates.Add (dir); - } - } - this.ItemsSource = candidates; - } - catch - { - // ignore filesystem errors - } - base.OnPopulating (e); - } - } - public class SortModeToBooleanConverter : IValueConverter { public object Convert (object value, Type targetType, object parameter, CultureInfo culture) diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index 40dbbe5c..6b7ce57a 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ using System.Windows; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion ("1.1.4.22")] -[assembly: AssemblyFileVersion ("1.1.4.22")] +[assembly: AssemblyVersion ("1.1.4.23")] +[assembly: AssemblyFileVersion ("1.1.4.23")]