aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineLoginView.xaml.cs
blob: c5161b477314a02026503e7b90d6e5392999f3dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Tango.MachineStudio.UI.Views
{
    /// <summary>
    /// Interaction logic for MachineLoginView.xaml
    /// </summary>
    public partial class MachineLoginView : UserControl
    {
        public MachineLoginView()
        {
            InitializeComponent();

            this.Loaded += MachineLoginView_Loaded;
        }

        private void MachineLoginView_Loaded(object sender, RoutedEventArgs e)
        {
            txtPass.Focusable = true;
            txtPass.Focus();
            txtPass.Password = String.Empty;
            Password = String.Empty;
        }

        public String Password
        {
            get { return (String)GetValue(PasswordProperty); }
            set { SetValue(PasswordProperty, value); }
        }
        public static readonly DependencyProperty PasswordProperty =
            DependencyProperty.Register("Password", typeof(String), typeof(MachineLoginView), new PropertyMetadata(null));

        private void txtPass_PasswordChanged(object sender, RoutedEventArgs e)
        {
            Password = txtPass.Password;
        }
    }
}
ass="n">pos, 2); } return new SimpleSegment(pos, 1); } return SimpleSegment.Invalid; } /// <summary> /// Gets the location of the next new line character, or SimpleSegment.Invalid /// if none is found. /// </summary> internal static SimpleSegment NextNewLine(ITextSource text, int offset) { int textLength = text.TextLength; int pos = text.IndexOfAny(newline, offset, textLength - offset); if (pos >= 0) { if (text.GetCharAt(pos) == '\r') { if (pos + 1 < textLength && text.GetCharAt(pos + 1) == '\n') return new SimpleSegment(pos, 2); } return new SimpleSegment(pos, 1); } return SimpleSegment.Invalid; } } partial class TextUtilities { /// <summary> /// Finds the next new line character starting at offset. /// </summary> /// <param name="text">The text source to search in.</param> /// <param name="offset">The starting offset for the search.</param> /// <param name="newLineType">The string representing the new line that was found, or null if no new line was found.</param> /// <returns>The position of the first new line starting at or after <paramref name="offset"/>, /// or -1 if no new line was found.</returns> public static int FindNextNewLine(ITextSource text, int offset, out string newLineType) { if (text == null) throw new ArgumentNullException("text"); if (offset < 0 || offset > text.TextLength) throw new ArgumentOutOfRangeException("offset", offset, "offset is outside of text source"); SimpleSegment s = NewLineFinder.NextNewLine(text, offset); if (s == SimpleSegment.Invalid) { newLineType = null; return -1; } else { if (s.Length == 2) { newLineType = "\r\n"; } else if (text.GetCharAt(s.Offset) == '\n') { newLineType = "\n"; } else { newLineType = "\r"; } return s.Offset; } } /// <summary> /// Gets whether the specified string is a newline sequence. /// </summary> public static bool IsNewLine(string newLine) { return newLine == "\r\n" || newLine == "\n" || newLine == "\r"; } /// <summary> /// Normalizes all new lines in <paramref name="input"/> to be <paramref name="newLine"/>. /// </summary> public static string NormalizeNewLines(string input, string newLine) { if (input == null) return null; if (!IsNewLine(newLine)) throw new ArgumentException("newLine must be one of the known newline sequences"); SimpleSegment ds = NewLineFinder.NextNewLine(input, 0); if (ds == SimpleSegment.Invalid) // text does not contain any new lines return input; StringBuilder b = new StringBuilder(input.Length); int lastEndOffset = 0; do { b.Append(input, lastEndOffset, ds.Offset - lastEndOffset); b.Append(newLine); lastEndOffset = ds.EndOffset; ds = NewLineFinder.NextNewLine(input, lastEndOffset); } while (ds != SimpleSegment.Invalid); // remaining string (after last newline) b.Append(input, lastEndOffset, input.Length - lastEndOffset); return b.ToString(); } /// <summary> /// Gets the newline sequence used in the document at the specified line. /// </summary> public static string GetNewLineFromDocument(TextDocument document, int lineNumber) { DocumentLine line = document.GetLineByNumber(lineNumber); if (line.DelimiterLength == 0) { // at the end of the document, there's no line delimiter, so use the delimiter // from the previous line line = line.PreviousLine; if (line == null) return Environment.NewLine; } return document.GetText(line.Offset + line.Length, line.DelimiterLength); } } }