Changeset 2530


Ignore:
Timestamp:
Jan 30, 2011, 7:11:32 PM (10 years ago)
Author:
sauer
Message:

Wizard: added regex filter for text boxes

Location:
trunk/CrypPlugins/Wizard
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/Wizard/Config/EnDeCrypt/wizard.config.classicEnDe.xml

    r2528 r2530  
    2121    <desc lang="en" >Here, you can enter the message to encrypt and select input format and encodings.</desc>
    2222   
    23     <inputBox plugin="TextInput1" property="Text" defaultValue="Input your Message here!" alignment="Right" width="80%" visibleLines="10">
     23    <inputBox plugin="TextInput1" property="Text" defaultValue="Input your Message here!" alignment="Right" width="80%" visibleLines="10"
     24              regex="[a-zA-Z0-9][a-zA-Z0-9]-[a-zA-Z0-9][a-zA-Z0-9]-[a-zA-Z0-9][a-zA-Z0-9]">
    2425      <description lang="en">
    2526        Message to encrypt:
  • trunk/CrypPlugins/Wizard/WizardControl.xaml

    r2528 r2530  
    5656        <Style x:Key="InputFieldStyle" TargetType="FrameworkElement">
    5757            <Setter Property="Margin" Value="20, 3, 0, 10"/>
     58        </Style>
     59       
     60        <Style x:Key="TextInputInvalid" TargetType="Control">
     61            <Setter Property="BorderBrush" Value="Red"/>
     62            <Setter Property="BorderThickness" Value="5"/>
    5863        </Style>
    5964       
  • trunk/CrypPlugins/Wizard/WizardControl.xaml.cs

    r2528 r2530  
    33using System.Linq;
    44using System.Text;
     5using System.Text.RegularExpressions;
    56using System.Windows;
    67using System.Windows.Controls;
     
    3839        private XElement wizardConfigXML;
    3940        private Dictionary<string, PluginPropertyValue> propertyValueDict = new Dictionary<string, PluginPropertyValue>();
     41        private HashSet<TextBox> boxesWithWrongContent = new HashSet<TextBox>();
    4042
    4143        internal event OpenTabHandler OnOpenTab;
     
    150152            }
    151153
    152             nextButton.IsEnabled = false;
     154            //nextButton.IsEnabled = false;
    153155
    154156            //set headline
     
    172174                inputs = inputs.Union(element.Elements("checkBox"));
    173175                inputStack.Children.Clear();
    174 
    175                 FillInputStack(inputs, element.Name.ToString());
    176176
    177177                inputPanel.Tag = element.Element("input");
     
    183183                    inputPanel.Tag = element.Element("output");
    184184
    185                 if (inputPanel.Tag != null)
    186                     nextButton.IsEnabled = true;
     185                //if (inputPanel.Tag != null)
     186                //    nextButton.IsEnabled = true;
     187
     188                FillInputStack(inputs, element.Name.ToString());
    187189
    188190                string id = GetElementID((XElement)inputPanel.Tag);
     
    266268                            rb.IsChecked = true;
    267269                            isSelected = true;
    268                             nextButton.IsEnabled = true;
     270                            //nextButton.IsEnabled = true;
    269271                        }
    270272                    }
     
    377379                if (isInput)
    378380                {
     381                    if (input.Attribute("regex") != null)
     382                    {
     383                        var regex = new Regex(input.Attribute("regex").Value, RegexOptions.Compiled);
     384
     385                        textBox.TextChanged += delegate
     386                        {
     387                            CheckRegex(textBox, regex);
     388                        };
     389                    }
     390
    379391                    if (propertyValueDict.ContainsKey(GetElementID(input)))
    380392                        textBox.Text = (string) propertyValueDict[GetElementID(input)].Value;
     
    395407                    }
    396408                }
     409
    397410                element = textBox;
    398411            }
     
    500513
    501514            return element;
     515        }
     516
     517        private void CheckRegex(TextBox textBox, Regex regex)
     518        {
     519            var match = regex.Match(textBox.Text);
     520            if (!match.Success || match.Index != 0 || match.Length != textBox.Text.Length)
     521            {
     522                textBox.Style = (Style) FindResource("TextInputInvalid");
     523                GuiLogMessage(string.Format("Content of textbox does not fit regular expression {0}.", regex.ToString()), NotificationLevel.Error);
     524                boxesWithWrongContent.Add(textBox);
     525                nextButton.IsEnabled = false;
     526            }
     527            else
     528            {
     529                textBox.Style = null;
     530                boxesWithWrongContent.Remove(textBox);
     531                if (boxesWithWrongContent.Count == 0)
     532                    nextButton.IsEnabled = true;
     533            }
    502534        }
    503535
     
    736768                //    DeleteControlContent(child);
    737769                //}
     770                boxesWithWrongContent.Clear();
    738771
    739772                ele = (XElement) inputPanel.Tag;
Note: See TracChangeset for help on using the changeset viewer.