Changeset 2528


Ignore:
Timestamp:
Jan 30, 2011, 6:33:46 PM (11 years ago)
Author:
sauer
Message:

Wizard:

  • input attributes added (size, alignment)
  • summary page configuration
Location:
trunk/CrypPlugins/Wizard
Files:
3 edited

Legend:

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

    r2521 r2528  
    1212
    1313  <!-- Caesar input -->
    14   <input id ="Caesar" image="Caesar">
     14  <input image="Caesar">
    1515    <name lang="en" >Caesar</name>
    1616    <description lang="en" >
     
    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!">
     23    <inputBox plugin="TextInput1" property="Text" defaultValue="Input your Message here!" alignment="Right" width="80%" visibleLines="10">
    2424      <description lang="en">
    2525        Message to encrypt:
     
    2727    </inputBox>
    2828   
    29     <comboBox plugin="TextInput1" property="EncodingSetting" defaultValue="0">
     29    <comboBox plugin="TextInput1" property="EncodingSetting" defaultValue="0" alignment="Left" width="100">
    3030      <description lang="en">
    3131        Character Encoding type:
     
    4040    </comboBox>
    4141   
    42     <comboBox plugin="TextInput1" property="InputFormatSetting" defaultValue="0">
     42    <comboBox plugin="TextInput1" property="InputFormatSetting" defaultValue="0" alignment="Center" width="20%">
    4343      <description lang="en">
    4444        Input Format:
     
    4848      <item content="Base64" lang="en"/>
    4949    </comboBox>
    50    
    51     <loadSample file="WorkspaceManagerSamples\Caesar_Sample.cwm" title="W_Caesar_Sample"/>
     50
     51    <output>
     52      <name lang="en">Summary</name>
     53      <description lang="en" >
     54        Bla bla.
     55      </description>
     56
     57      <inputBox plugin="TextInput1" property="Text" alignment="Right" width="80%" visibleLines="10">
     58        <description lang="en">
     59          Message to encrypt:
     60        </description>
     61      </inputBox>
     62
     63      <comboBox plugin="TextInput1" property="EncodingSetting" defaultValue="0" alignment="Left" width="100">
     64        <description lang="en">
     65          Character Encoding type:
     66        </description>
     67        <item content="Default system encoding" lang="en"/>
     68        <item content="Unicode" lang="en"/>
     69        <item content="UTF-7" lang="en"/>
     70        <item content="UTF-8" lang="en"/>
     71        <item content="UTF-32" lang="en"/>
     72        <item content="ASCII" lang="en"/>
     73        <item content="Big endian unicode" lang="en"/>
     74      </comboBox>
     75
     76      <comboBox plugin="TextInput1" property="InputFormatSetting" defaultValue="0" alignment="Center" width="20%">
     77        <description lang="en">
     78          Input Format:
     79        </description>
     80        <item content="Plain text" lang="en"/>
     81        <item content="Hex" lang="en"/>
     82        <item content="Base64" lang="en"/>
     83      </comboBox>
     84     
     85      <loadSample file="WorkspaceManagerSamples\Caesar_Sample.cwm" title="W_Caesar_Sample"/>
     86    </output>
    5287   
    5388  </input>
  • trunk/CrypPlugins/Wizard/WizardControl.xaml

    r2496 r2528  
    5252                </EventTrigger>
    5353            </Style.Triggers>
     54        </Style>
     55
     56        <Style x:Key="InputFieldStyle" TargetType="FrameworkElement">
     57            <Setter Property="Margin" Value="20, 3, 0, 10"/>
    5458        </Style>
    5559       
  • trunk/CrypPlugins/Wizard/WizardControl.xaml.cs

    r2523 r2528  
    111111        }
    112112
     113        #region WidthConverter
     114
     115        [ValueConversion(typeof(Double), typeof(Double))]
     116        private class WidthConverter : IValueConverter
     117        {
     118            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
     119            {
     120                return (double)value * (double)parameter;
     121            }
     122
     123            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
     124            {
     125                throw new NotImplementedException();
     126            }
     127        }
     128
     129        private WidthConverter widthConverter = new WidthConverter();
     130
     131        #endregion
     132
    113133        private void SetupPage(XElement element)
    114134        {
     
    143163
    144164
    145             if (element.Name == "input")
     165            if (element.Name == "input" || element.Name == "output")
    146166            {
    147167                categoryGrid.Visibility = Visibility.Hidden;
     
    152172                inputs = inputs.Union(element.Elements("checkBox"));
    153173                inputStack.Children.Clear();
    154                
    155                 foreach (var input in inputs)
    156                 {
    157                     var description = new Label();
    158                     description.Content = FindElementsInElement(input, "description").First().Value;
    159                     inputStack.Children.Add(description);
    160 
    161                     if (input.Name == "inputBox")
    162                     {
    163                         var textBox = new TextBox();
    164                         textBox.Tag = input;
    165                         textBox.MinLines = 4;
    166                         inputStack.Children.Add(textBox);
    167                         if (propertyValueDict.ContainsKey(GetElementID(input)))
    168                             textBox.Text = (string)propertyValueDict[GetElementID(input)].Value;
    169                         else if (input.Attribute("defaultValue") != null)
    170                             textBox.Text = input.Attribute("defaultValue").Value;
    171                     }
    172                     else if (input.Name == "comboBox")
    173                     {
    174                         ComboBox cb = new ComboBox();
    175                         cb.Tag = input;
    176 
    177                         var items = FindElementsInElement(input, "item");
    178                         foreach (var item in items)
    179                         {
    180                             ComboBoxItem cbi = new ComboBoxItem();
    181                             if (item.Attribute("content") != null)
    182                                 cbi.Content = item.Attribute("content").Value;
    183                             cb.Items.Add(cbi);
    184                         }
    185 
    186                        
    187                         if (propertyValueDict.ContainsKey(GetElementID(input)))
    188                         {
    189                             if (propertyValueDict[GetElementID(input)].Value is int)
    190                             {
    191                                 ComboBoxItem cbi = (ComboBoxItem)cb.Items.GetItemAt((int)propertyValueDict[GetElementID(input)].Value);
    192                                 cbi.IsSelected = true;
    193                             }
    194                         }
    195                         else if (input.Attribute("defaultValue") != null)
    196                         {
    197                             int i = 0;
    198                             if (Int32.TryParse(input.Attribute("defaultValue").Value, out i))
    199                             {
    200                                 ComboBoxItem cbi = (ComboBoxItem)cb.Items.GetItemAt(i);
    201                                 cbi.IsSelected = true;
    202                             }
    203                         }
    204 
    205                         inputStack.Children.Add(cb);
    206                     }
    207                     else if (input.Name == "checkBox")
    208                     {
    209                         CheckBox cb = new CheckBox();
    210                         cb.Tag = input;
    211 
    212                         if (input.Attribute("content") != null)
    213                             cb.Content = input.Attribute("content").Value;
    214                         if (propertyValueDict.ContainsKey(GetElementID(input)))
    215                         {
    216                             string value = (string)propertyValueDict[GetElementID(input)].Value;
    217                             if (value.ToLower() == "true")
    218                                 cb.IsChecked = true;
    219                             else
    220                                 cb.IsChecked = false;
    221                         }
    222                         else if (input.Attribute("defaultValue") != null)
    223                         {
    224                             string value = input.Attribute("defaultValue").Value;
    225                             if (value.ToLower() == "true")
    226                                 cb.IsChecked = true;
    227                             else
    228                                 cb.IsChecked = false;
    229                         }
    230 
    231                         inputStack.Children.Add(cb);
    232                     }
    233                 }
    234 
    235                 var next = element.Element("input");
    236                 if (next != null)
    237                     inputPanel.Tag = next;
    238                 else
     174
     175                FillInputStack(inputs, element.Name.ToString());
     176
     177                inputPanel.Tag = element.Element("input");
     178                if (inputPanel.Tag == null)
    239179                    inputPanel.Tag = element.Element("category");
    240180                if (inputPanel.Tag == null)
    241181                    inputPanel.Tag = element.Element("loadSample");
     182                if (inputPanel.Tag == null)
     183                    inputPanel.Tag = element.Element("output");
    242184
    243185                if (inputPanel.Tag != null)
     
    249191                    choicePath.RemoveAt(choicePath.IndexOf(choicePath.Last()));
    250192            }
    251 
    252193            else if (element.Name == "category")
    253194            {
     
    259200
    260201                //generate radio buttons
    261                 IEnumerable<XElement> categories = element.Elements("category");
    262                 IEnumerable<XElement> inputs = element.Elements("input");
    263                 IEnumerable<XElement> loadSamples = element.Elements("loadSamples");
     202                var options = element.Elements("category");
     203                var inputs = element.Elements("input");
     204                var loadSamples = element.Elements("loadSamples");
     205                var outputs = element.Elements("output");
    264206
    265207                if (inputs.Any())
    266                     categories = categories.Union(inputs);
     208                    options = options.Union(inputs);
    267209                if (loadSamples.Any())
    268                     categories = categories.Union(loadSamples);
    269 
    270                 if (categories.Any())
     210                    options = options.Union(loadSamples);
     211                if (outputs.Any())
     212                    options = options.Union(outputs);
     213
     214                if (options.Any())
    271215                {
    272216                    bool isSelected = false;
    273217
    274                     foreach (XElement ele in categories)
     218                    foreach (XElement ele in options)
    275219                    {
    276220                        Border border = new Border();
     
    335279            }
    336280
     281        }
     282
     283        private void FillInputStack(IEnumerable<XElement> inputs, string type)
     284        {
     285            var inputFieldStyle = (Style)FindResource("InputFieldStyle");
     286
     287            foreach (var input in inputs)
     288            {
     289                try
     290                {
     291                    var description = new Label();
     292                    description.Content = FindElementsInElement(input, "description").First().Value.Trim();
     293                    description.HorizontalAlignment = HorizontalAlignment.Left;
     294                    description.FontWeight = FontWeights.Bold;
     295                    inputStack.Children.Add(description);
     296
     297                    bool isInput = (type == "input");
     298
     299                    Control inputElement = CreateInputElement(input, inputFieldStyle, isInput);
     300
     301                    //Set width:
     302                    if (inputElement != null && input.Attribute("width") != null)
     303                    {
     304                        string width = input.Attribute("width").Value.Trim();
     305                        if (width.EndsWith("%"))
     306                        {
     307                            double percentage;
     308                            if (Double.TryParse(width.Substring(0, width.Length - 1), out percentage))
     309                            {
     310                                percentage /= 100;
     311                                Binding binding = new Binding("ActualWidth");
     312                                binding.Source = inputStack;
     313                                binding.Converter = widthConverter;
     314                                binding.ConverterParameter = percentage;
     315                                inputElement.SetBinding(FrameworkElement.WidthProperty, binding);
     316                            }
     317                        }
     318                        else
     319                        {
     320                            double widthValue;
     321                            if (Double.TryParse(width, out widthValue))
     322                            {
     323                                inputElement.Width = widthValue;
     324                            }
     325                        }
     326                    }
     327
     328                    //Set alignment
     329                    if (inputElement != null && input.Attribute("alignment") != null)
     330                    {
     331                        switch (input.Attribute("alignment").Value.Trim().ToLower())
     332                        {
     333                            case "right":
     334                                inputElement.HorizontalAlignment = HorizontalAlignment.Right;
     335                                break;
     336                            case "left":
     337                                inputElement.HorizontalAlignment = HorizontalAlignment.Left;
     338                                break;
     339                            case "center":
     340                                inputElement.HorizontalAlignment = HorizontalAlignment.Center;
     341                                break;
     342                            case "stretch":
     343                                inputElement.HorizontalAlignment = HorizontalAlignment.Stretch;
     344                                break;
     345                        }
     346                    }
     347                }
     348                catch (Exception e)
     349                {
     350                    GuiLogMessage(string.Format("Error while creating wizard element {0}: {1}", input, e.Message), NotificationLevel.Error);
     351                }
     352
     353            }
     354        }
     355
     356        private Control CreateInputElement(XElement input, Style inputFieldStyle, bool isInput)
     357        {
     358            Control element = null;
     359
     360            if (input.Name == "inputBox")
     361            {
     362                var textBox = new TextBox();
     363                textBox.Tag = input;
     364                textBox.AcceptsReturn = true;
     365                if (input.Attribute("visibleLines") != null)
     366                {
     367                    int visibleLines;
     368                    if (Int32.TryParse(input.Attribute("visibleLines").Value.Trim(), out visibleLines))
     369                    {
     370                        textBox.MinLines = visibleLines;
     371                        textBox.MaxLines = visibleLines;
     372                    }
     373                }
     374                textBox.Style = inputFieldStyle;
     375                inputStack.Children.Add(textBox);
     376
     377                if (isInput)
     378                {
     379                    if (propertyValueDict.ContainsKey(GetElementID(input)))
     380                        textBox.Text = (string) propertyValueDict[GetElementID(input)].Value;
     381                    else if (input.Attribute("defaultValue") != null)
     382                        textBox.Text = input.Attribute("defaultValue").Value.Trim();
     383                }
     384                else
     385                {
     386                    if (input.Attribute("plugin") != null && input.Attribute("property") != null)
     387                    {
     388                        var plugin = input.Attribute("plugin").Value;
     389                        var property = input.Attribute("property").Value;
     390                        foreach (var e in propertyValueDict.Values)
     391                        {
     392                            if (e.PluginName == plugin && e.PropertyName == property)
     393                                textBox.Text = (String)e.Value;
     394                        }
     395                    }
     396                }
     397                element = textBox;
     398            }
     399            else if (input.Name == "comboBox")
     400            {
     401                ComboBox cb = new ComboBox();
     402                cb.Style = inputFieldStyle;
     403                cb.Tag = input;
     404
     405                var items = FindElementsInElement(input, "item");
     406                foreach (var item in items)
     407                {
     408                    ComboBoxItem cbi = new ComboBoxItem();
     409                    if (item.Attribute("content") != null)
     410                        cbi.Content = item.Attribute("content").Value;
     411                    cb.Items.Add(cbi);
     412                }
     413
     414                if (isInput)
     415                {
     416                    if (propertyValueDict.ContainsKey(GetElementID(input)))
     417                    {
     418                        if (propertyValueDict[GetElementID(input)].Value is int)
     419                        {
     420                            ComboBoxItem cbi =
     421                                (ComboBoxItem) cb.Items.GetItemAt((int) propertyValueDict[GetElementID(input)].Value);
     422                            cbi.IsSelected = true;
     423                        }
     424                    }
     425                    else if (input.Attribute("defaultValue") != null)
     426                    {
     427                        int i = 0;
     428                        if (Int32.TryParse(input.Attribute("defaultValue").Value.Trim(), out i))
     429                        {
     430                            ComboBoxItem cbi = (ComboBoxItem) cb.Items.GetItemAt(i);
     431                            cbi.IsSelected = true;
     432                        }
     433                    }
     434                }
     435                else
     436                {
     437                    if (input.Attribute("plugin") != null && input.Attribute("property") != null)
     438                    {
     439                        var plugin = input.Attribute("plugin").Value;
     440                        var property = input.Attribute("property").Value;
     441                        foreach (var e in propertyValueDict.Values)
     442                        {
     443                            if (e.PluginName == plugin && e.PropertyName == property)
     444                                cb.SelectedIndex = (int) e.Value;
     445                        }
     446                    }
     447                }
     448
     449                inputStack.Children.Add(cb);
     450                element = cb;
     451            }
     452            else if (input.Name == "checkBox")
     453            {
     454                CheckBox cb = new CheckBox();
     455                cb.Tag = input;
     456                cb.Style = inputFieldStyle;
     457
     458                if (input.Attribute("content") != null)
     459                    cb.Content = input.Attribute("content").Value;
     460
     461                if (isInput)
     462                {
     463                    if (propertyValueDict.ContainsKey(GetElementID(input)))
     464                    {
     465                        string value = (string) propertyValueDict[GetElementID(input)].Value;
     466                        if (value.ToLower() == "true")
     467                            cb.IsChecked = true;
     468                        else
     469                            cb.IsChecked = false;
     470                    }
     471                    else if (input.Attribute("defaultValue") != null)
     472                    {
     473                        string value = input.Attribute("defaultValue").Value;
     474                        if (value.ToLower() == "true")
     475                            cb.IsChecked = true;
     476                        else
     477                            cb.IsChecked = false;
     478                    }
     479                }
     480                else
     481                {
     482                    if (input.Attribute("plugin") != null && input.Attribute("property") != null)
     483                    {
     484                        var plugin = input.Attribute("plugin").Value;
     485                        var property = input.Attribute("property").Value;
     486                        foreach (var e in propertyValueDict.Values)
     487                        {
     488                            if (e.PluginName == plugin && e.PropertyName == property)
     489                                cb.IsChecked = (bool)e.Value;
     490                        }
     491                    }
     492                }
     493
     494                inputStack.Children.Add(cb);
     495                element = cb;
     496            }
     497
     498            if (!isInput)
     499                element.IsEnabled = false;
     500
     501            return element;
    337502        }
    338503
     
    567732            else if (inputPanel.IsVisible)
    568733            {
    569                 foreach (var child in inputStack.Children)
    570                 {
    571                     DeleteControlContent(child);
    572                 }
     734                //foreach (var child in inputStack.Children)
     735                //{
     736                //    DeleteControlContent(child);
     737                //}
    573738
    574739                ele = (XElement) inputPanel.Tag;
Note: See TracChangeset for help on using the changeset viewer.