Changeset 2722


Ignore:
Timestamp:
Feb 17, 2011, 9:52:04 PM (11 years ago)
Author:
sauer
Message:

Wizard: group attribute for inputs (will arrange group members in horizontal orientation)

Location:
trunk/CrypPlugins/Wizard
Files:
2 edited

Legend:

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

    r2678 r2722  
    2727      </description>
    2828    </inputBox>
    29    
    30     <comboBox plugin="TextInput1" property="EncodingSetting" defaultValue="0" alignment="Left" width="100">
     29
     30    <comboBox plugin="TextInput1" property="EncodingSetting" defaultValue="0" alignment="Left" width="100" group="encoding">
    3131      <description lang="en">
    3232        Character Encoding type:
     
    4040      <item content="Big endian unicode" lang="en"/>
    4141    </comboBox>
    42    
    43     <comboBox plugin="TextInput1" property="InputFormatSetting" defaultValue="0" alignment="Center" width="20%">
     42
     43    <comboBox plugin="TextInput1" property="InputFormatSetting" defaultValue="0" alignment="Center" width="20%" group="encoding">
    4444      <description lang="en">
    4545        Input Format:
     
    6464        </description>
    6565      </inputBox>
    66 
    67       <comboBox plugin="TextInput1" property="EncodingSetting" defaultValue="0" alignment="Left" width="100">
    68         <description lang="en">
    69           Character Encoding type:
    70         </description>
    71         <item content="Default system encoding" lang="en"/>
    72         <item content="Unicode" lang="en"/>
    73         <item content="UTF-7" lang="en"/>
    74         <item content="UTF-8" lang="en"/>
    75         <item content="UTF-32" lang="en"/>
    76         <item content="ASCII" lang="en"/>
    77         <item content="Big endian unicode" lang="en"/>
    78       </comboBox>
    79 
    80       <comboBox plugin="TextInput1" property="InputFormatSetting" defaultValue="0" alignment="Center" width="20%">
    81         <description lang="en">
    82           Input Format:
    83         </description>
    84         <item content="Plain text" lang="en"/>
    85         <item content="Hex" lang="en"/>
    86         <item content="Base64" lang="en"/>
    87       </comboBox>
    8866
    8967      <!--<outputBox plugin="CaesarResult" property="CurrentValue" alignment="Stretch" width="80%" visibleLines="2">
  • trunk/CrypPlugins/Wizard/WizardControl.xaml.cs

    r2711 r2722  
    358358            var inputFieldStyle = (Style)FindResource("InputFieldStyle");
    359359
     360            var groups = from input in inputs where input.Attribute("group") != null select input.Attribute("group").Value;
     361            groups = groups.Distinct();
     362
     363            var inputGroups = new List<StackPanel>();
     364            var otherInputs = new List<StackPanel>();
     365
     366            foreach (var group in groups)
     367            {
     368                var sp = new StackPanel();
     369                sp.Orientation = Orientation.Horizontal;
     370                sp.Tag = group;
     371                inputGroups.Add(sp);
     372            }
     373
    360374            foreach (var input in inputs)
    361375            {
    362376                try
    363377                {
     378                    var stack = new StackPanel();
     379                    stack.Margin = new Thickness(2.5, 0, 2.5, 0);
     380
    364381                    var description = new Label();
    365382                    description.Content = FindElementsInElement(input, "description").First().Value.Trim();
    366383                    description.HorizontalAlignment = HorizontalAlignment.Left;
    367384                    description.FontWeight = FontWeights.Bold;
    368                     inputStack.Children.Add(description);
     385                    stack.Children.Add(description);
    369386
    370387                    Control inputElement = CreateInputElement(input, inputFieldStyle, isInput);
     388
     389                    //TODO add controls to same "level" if they have the same group
    371390
    372391                    //Set width:
     
    416435                        }
    417436                    }
     437
     438                    stack.Children.Add(inputElement);
     439
     440                    if (input.Attribute("group") != null && inputGroups.Any())
     441                    {
     442                        var sp = from g in inputGroups where (string)g.Tag == input.Attribute("group").Value select g;
     443                        var group = sp.First();
     444                        group.Children.Add(stack);
     445                    }
     446                    else
     447                    {
     448                        stack.Tag = input;
     449                        otherInputs.Add(stack);
     450                    }
     451
    418452                }
    419453                catch (Exception e)
     
    421455                    GuiLogMessage(string.Format("Error while creating wizard element {0}: {1}", input, e.Message), NotificationLevel.Error);
    422456                }
    423 
    424             }
     457            }
     458
     459            foreach (var input in inputs)
     460            {
     461                if (input.Attribute("group") != null && inputGroups.Any())
     462                {
     463                    var sp = from g in inputGroups where (string)g.Tag == input.Attribute("group").Value select g;
     464                    var group = sp.First();
     465                    if (!inputStack.Children.Contains(group))
     466                        inputStack.Children.Add(group);
     467                }
     468                else
     469                {
     470                    var p = from g in otherInputs where (XElement)g.Tag == input select g;
     471                    var put = p.First();
     472                    inputStack.Children.Add(put);
     473                }
     474            }
     475
    425476        }
    426477
     
    450501                    }
    451502                    inputBox.Style = inputFieldStyle;
    452                     inputStack.Children.Add(inputBox);
     503                    //inputStack.Children.Add(inputBox);
    453504
    454505                    if (input.Attribute("regex") != null)
     
    508559
    509560
    510                     inputStack.Children.Add(comboBox);
     561                    //inputStack.Children.Add(comboBox);
    511562                    element = comboBox;
    512563                    break;
     
    538589                    }
    539590
    540                     inputStack.Children.Add(checkBox);
     591                    //inputStack.Children.Add(checkBox);
    541592                    element = checkBox;
    542593                    break;
     
    560611                    }
    561612                    outputBox.Style = inputFieldStyle;
    562                     inputStack.Children.Add(outputBox);
     613                    //inputStack.Children.Add(outputBox);
    563614
    564615                    if (input.Attribute("regex") != null)
     
    588639
    589640                    cc.Tag = input;
    590                     inputStack.Children.Add(cc);
     641                    //inputStack.Children.Add(cc);
    591642
    592643                    currentPresentations.Add(cc);
     
    10571108        private void SaveControlContent(object o)
    10581109        {
    1059             if (o is TextBox || o is ComboBox || o is CheckBox)
    1060             {
    1061                 Control c = (Control)o;
    1062                 XElement ele = (XElement)c.Tag;
    1063                
    1064                 PluginPropertyValue newEntry = new PluginPropertyValue();
    1065                 if (ele.Attribute("plugin") != null && ele.Attribute("property") != null)
    1066                 {
    1067                     if (o is TextBox)
    1068                     {
    1069                         TextBox textBox = (TextBox)o;
    1070                         newEntry = new PluginPropertyValue()
    1071                                    {
    1072                                        PluginName = ele.Attribute("plugin").Value,
    1073                                        PropertyName = ele.Attribute("property").Value,
    1074                                        Value = textBox.Text
    1075                                    };
    1076                     }
    1077                     else if (o is ComboBox)
    1078                     {
    1079                         ComboBox comboBox = (ComboBox)o;
    1080                         newEntry = new PluginPropertyValue()
    1081                         {
    1082                             PluginName = ele.Attribute("plugin").Value,
    1083                             PropertyName = ele.Attribute("property").Value,
    1084                             Value = comboBox.SelectedIndex
    1085                         };
    1086                     }
    1087                     else if (o is CheckBox)
    1088                     {
    1089                         CheckBox checkBox = (CheckBox)o;
    1090                         if (checkBox.IsChecked != null)
    1091                         {
     1110            var sp = (StackPanel)o;
     1111
     1112            foreach (var input in sp.Children)
     1113            {
     1114                if (input is TextBox || input is ComboBox || input is CheckBox)
     1115                {
     1116                    Control c = (Control)input;
     1117                    XElement ele = (XElement)c.Tag;
     1118
     1119                    PluginPropertyValue newEntry = new PluginPropertyValue();
     1120                    if (ele.Attribute("plugin") != null && ele.Attribute("property") != null)
     1121                    {
     1122                        if (input is TextBox)
     1123                        {
     1124                            TextBox textBox = (TextBox)input;
     1125                            newEntry = new PluginPropertyValue()
     1126                                       {
     1127                                           PluginName = ele.Attribute("plugin").Value,
     1128                                           PropertyName = ele.Attribute("property").Value,
     1129                                           Value = textBox.Text
     1130                                       };
     1131                        }
     1132                        else if (input is ComboBox)
     1133                        {
     1134                            ComboBox comboBox = (ComboBox)input;
    10921135                            newEntry = new PluginPropertyValue()
    10931136                            {
    10941137                                PluginName = ele.Attribute("plugin").Value,
    10951138                                PropertyName = ele.Attribute("property").Value,
    1096                                 Value = (bool)checkBox.IsChecked
     1139                                Value = comboBox.SelectedIndex
    10971140                            };
    10981141                        }
    1099                     }
    1100 
    1101                     var key = GetElementPluginPropertyKey(ele);
    1102                     if (key != null)
    1103                     {
    1104                         if (!propertyValueDict.ContainsKey(key))
    1105                             propertyValueDict.Add(key, newEntry);
    1106                         else
    1107                             propertyValueDict[key] = newEntry;
    1108                     }
    1109                 }
    1110             }
    1111         }
    1112 
    1113         private void DeleteControlContent(object o)
    1114         {
    1115             if (o is TextBox || o is ComboBox || o is CheckBox)
    1116             {
    1117                 Control control = (Control)o;
    1118                 XElement ele = (XElement)control.Tag;
    1119 
    1120                 var key = GetElementPluginPropertyKey(ele);
    1121                 if (key != null && propertyValueDict.ContainsKey(key))
    1122                     propertyValueDict.Remove(key);
    1123             }
    1124         }
    1125 
     1142                        else if (input is CheckBox)
     1143                        {
     1144                            CheckBox checkBox = (CheckBox)input;
     1145                            if (checkBox.IsChecked != null)
     1146                            {
     1147                                newEntry = new PluginPropertyValue()
     1148                                {
     1149                                    PluginName = ele.Attribute("plugin").Value,
     1150                                    PropertyName = ele.Attribute("property").Value,
     1151                                    Value = (bool)checkBox.IsChecked
     1152                                };
     1153                            }
     1154                        }
     1155
     1156                        var key = GetElementPluginPropertyKey(ele);
     1157                        if (key != null)
     1158                        {
     1159                            if (!propertyValueDict.ContainsKey(key))
     1160                                propertyValueDict.Add(key, newEntry);
     1161                            else
     1162                                propertyValueDict[key] = newEntry;
     1163                        }
     1164                    }
     1165                }
     1166                else if (input is StackPanel)
     1167                {
     1168                    StackPanel stack = (StackPanel)input;
     1169                    SaveControlContent(stack);
     1170                }
     1171            }
     1172        }
    11261173
    11271174        private void SetLastContent(object sender, EventArgs e)
Note: See TracChangeset for help on using the changeset viewer.