Changeset 8674


Ignore:
Timestamp:
Feb 24, 2020, 4:17:49 PM (2 years ago)
Author:
kopal
Message:

WorkspaceManager:

  • some cleanup of code

WorkspaceManagerModel:

  • fixed a bug: Now, loading of single/double values with CT2 set to German language works perfectly
Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/WorkspaceManager/View/Visuals/SettingsVisual.xaml.cs

    r8465 r8674  
    88using System.Windows.Media;
    99using Cryptool.PluginBase;
    10 
    1110using Microsoft.Win32;
    1211using System.Collections.ObjectModel;
     
    104103                }
    105104
    106                 else
    107                 {
    108                     //MyScrollViewer.Margin = new Thickness(-5, -5, -5, -5);
    109 
    110                 }
    111 
    112105                drawList(this.entgrou);
    113106
     
    116109                DispatchTaskPaneAttributeChanges(pluginSettingsContainer.CurrentTaskPaneAttributes);
    117110            }
    118 
    119111            else
    120112            {
     
    125117                noSettings = true;
    126118            }
    127 
    128119        }
    129120
     
    182173                }
    183174                if (tbI != null)
     175                {
    184176                    tbC.Items.Remove(tbI);
     177                }
    185178            }
    186179        }
     
    243236            Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    244237            {
    245 
    246 
    247238                foreach (List<ControlEntry> cel in entgrou.entryList)
    248239                {
     
    289280                    }
    290281                }
    291 
    292282            }, null);
    293 
    294         }
    295 
     283        }
    296284
    297285        List<String> groups = new List<String>();
    298 
    299 
    300286
    301287        public static double getComboBoxMaxSize(ComboBox child)
     
    317303        }
    318304
    319 
    320        
    321305        private void drawList(EntryGroup entgrou)
    322306        {
     
    528512        private EntryGroup createContentSettings(IPlugin plugin)
    529513        {
    530             EntryGroup entgrou = new EntryGroup();         
     514            EntryGroup entgrou = new EntryGroup();
    531515            foreach (TaskPaneAttribute tpa in plugin.Settings.GetSettingsProperties(plugin))
    532516            {
     
    551535
    552536                SettingsFormatAttribute sfa = plugin.Settings.GetSettingsFormat(tpa.PropertyName);
    553                 if(sfa!=null)
    554                 if (!groups.Contains(sfa.VerticalGroup))
    555                 {
    556                     groups.Add(sfa.VerticalGroup);
    557                 }
     537                if (sfa != null)
     538                    if (!groups.Contains(sfa.VerticalGroup))
     539                    {
     540                        groups.Add(sfa.VerticalGroup);
     541                    }
    558542
    559543                Binding dataBinding = new Binding(tpa.PropertyName);
     
    561545                dataBinding.Mode = BindingMode.TwoWay;
    562546                dataBinding.Source = plugin.Settings;
    563                
     547
    564548                bool b = (bcv.Model.GetOutputConnectors().Union(bcv.Model.GetInputConnectors())).Any(x => tpa.PropertyName == x.GetName());
    565                     switch (tpa.ControlType)
    566                     {
    567                         #region TextBox
    568                         case ControlType.TextBox:
    569 
    570                             TextBox textbox = new TextBox();
    571                             textbox.Tag = tpa.ToolTip;
    572                             textbox.ToolTip = tpa.ToolTip;
    573                             textbox.MouseEnter += Control_MouseEnter;                                                       
    574                             if (tpa.RegularExpression != null && tpa.RegularExpression != string.Empty)
    575                             {
    576                                 ControlTemplate validationTemplate = Application.Current.Resources["validationTemplate"] as ControlTemplate;
    577                                 RegExRule regExRule = new RegExRule();
    578                                 regExRule.RegExValue = tpa.RegularExpression;
    579                                 Validation.SetErrorTemplate(textbox, validationTemplate);
    580                                 dataBinding.ValidationRules.Add(regExRule);
    581                                 dataBinding.NotifyOnValidationError = true;
    582                             }
    583                             textbox.SetBinding(TextBox.TextProperty, dataBinding);
    584                             textbox.TextWrapping = TextWrapping.Wrap;
    585                             entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(textbox, tpa, sfa, b, bcv.Model));
    586                             break;
    587 
    588                         #endregion TextBox
    589 
    590                         # region NumericUpDown
    591                         case ControlType.NumericUpDown:
    592                             if (tpa.ValidationType == ValidationType.RangeInteger)
    593                             {
    594                                 IntegerUpDown intInput = new IntegerUpDown();                               
    595                                 intInput.SelectAllOnGotFocus = true;
    596                                 intInput.Tag = tpa.ToolTip;
    597                                 intInput.ToolTip = tpa.ToolTip;
    598                                 intInput.MouseEnter += Control_MouseEnter;
    599                                 intInput.Maximum = tpa.IntegerMaxValue;
    600                                 intInput.Minimum = tpa.IntegerMinValue;
    601                                 string s = tpa.IntegerMaxValue + "";
    602                                 FormattedText ft = new FormattedText(s, CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight, new Typeface(intInput.FontFamily, intInput.FontStyle, intInput.FontWeight, intInput.FontStretch), intInput.FontSize, Brushes.Black);
    603                                 intInput.MaxWidth = ft.WidthIncludingTrailingWhitespace + 30;
    604                                 intInput.Width = ft.WidthIncludingTrailingWhitespace + 30;
    605                                 intInput.SetBinding(IntegerUpDown.ValueProperty, dataBinding);
    606                                 entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(intInput, tpa, sfa, b, bcv.Model));
    607                                 intInput.IsEnabled = true;                                                             
    608                             }
    609                             else if (tpa.ValidationType == ValidationType.RangeDouble)
    610                             {
    611                                 DoubleUpDown doubleInput = new DoubleUpDown();
    612                                 doubleInput.SelectAllOnGotFocus = true;
    613                                 doubleInput.Tag = tpa.ToolTip;
    614                                 doubleInput.ToolTip = tpa.ToolTip;
    615                                 doubleInput.MouseEnter += Control_MouseEnter;
    616                                 doubleInput.Maximum = tpa.DoubleMaxValue;
    617                                 doubleInput.Minimum = tpa.DoubleMinValue;
    618                                 doubleInput.Increment = tpa.DoubleIncrement;
    619                                 string s = double.MaxValue + "";
    620                                 FormattedText ft = new FormattedText(s, CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight, new Typeface(doubleInput.FontFamily, doubleInput.FontStyle, doubleInput.FontWeight, doubleInput.FontStretch), doubleInput.FontSize, Brushes.Black);
    621                                 doubleInput.MaxWidth = ft.WidthIncludingTrailingWhitespace + 30;
    622                                 doubleInput.Width = ft.WidthIncludingTrailingWhitespace + 30;
    623                                 doubleInput.SetBinding(DoubleUpDown.ValueProperty, dataBinding);
    624                                 entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(doubleInput, tpa, sfa, b, bcv.Model));
    625                                 doubleInput.IsEnabled = true;
    626                             }
    627                             break;
    628                         # endregion NumericUpDown
    629 
    630                         # region ComboBox
    631                         case ControlType.ComboBox:
    632                             ComboBox comboBox = new ComboBox();
    633    
    634                             comboBox.Tag = tpa.ToolTip;
    635                             comboBox.MouseEnter += Control_MouseEnter;
    636 
    637                             object value = plugin.Settings.GetType().GetProperty(tpa.PropertyName).GetValue(plugin.Settings, null);
    638                             bool isEnum = value is Enum;
    639 
    640                             if (isEnum) // use generic enum<->int converter
    641                                 dataBinding.Converter = EnumToIntConverter.GetInstance();
    642                            
    643                            
    644 
    645                             if (tpa.ControlValues != null) // show manually passed entries in ComboBox
    646                                 comboBox.ItemsSource = tpa.ControlValues;
    647                              else if (isEnum) // show automatically derived enum entries in ComboBox
    648                                comboBox.ItemsSource = Enum.GetValues(value.GetType());
    649                             else // nothing to show
    650                                 GuiLogMessage("No ComboBox entries given", NotificationLevel.Error);
    651                             comboBox.ToolTip = tpa.ToolTip;
    652                             comboBox.SetBinding(ComboBox.SelectedIndexProperty, dataBinding);
    653                             //controlList.Add(new ControlEntry(comboBox, tpa, sfa));
    654                             entgrou.AddNewEntry(tpa.GroupName,new ControlEntry(comboBox, tpa, sfa, b, bcv.Model));
    655                             break;
     549                switch (tpa.ControlType)
     550                {
     551                    #region TextBox
     552                    case ControlType.TextBox:
     553
     554                        TextBox textbox = new TextBox();
     555                        textbox.Tag = tpa.ToolTip;
     556                        textbox.ToolTip = tpa.ToolTip;
     557                        textbox.MouseEnter += Control_MouseEnter;
     558                        if (tpa.RegularExpression != null && tpa.RegularExpression != string.Empty)
     559                        {
     560                            ControlTemplate validationTemplate = Application.Current.Resources["validationTemplate"] as ControlTemplate;
     561                            RegExRule regExRule = new RegExRule();
     562                            regExRule.RegExValue = tpa.RegularExpression;
     563                            Validation.SetErrorTemplate(textbox, validationTemplate);
     564                            dataBinding.ValidationRules.Add(regExRule);
     565                            dataBinding.NotifyOnValidationError = true;
     566                        }
     567                        textbox.SetBinding(TextBox.TextProperty, dataBinding);
     568                        textbox.TextWrapping = TextWrapping.Wrap;
     569                        entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(textbox, tpa, sfa, b, bcv.Model));
     570                        break;
     571
     572                    #endregion TextBox
     573
     574                    #region NumericUpDown
     575                    case ControlType.NumericUpDown:
     576                        if (tpa.ValidationType == ValidationType.RangeInteger)
     577                        {
     578                            IntegerUpDown intInput = new IntegerUpDown();
     579                            intInput.SelectAllOnGotFocus = true;
     580                            intInput.Tag = tpa.ToolTip;
     581                            intInput.ToolTip = tpa.ToolTip;
     582                            intInput.MouseEnter += Control_MouseEnter;
     583                            intInput.Maximum = tpa.IntegerMaxValue;
     584                            intInput.Minimum = tpa.IntegerMinValue;
     585                            string s = tpa.IntegerMaxValue + "";
     586                            FormattedText ft = new FormattedText(s, CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight, new Typeface(intInput.FontFamily, intInput.FontStyle, intInput.FontWeight, intInput.FontStretch), intInput.FontSize, Brushes.Black);
     587                            intInput.MaxWidth = ft.WidthIncludingTrailingWhitespace + 30;
     588                            intInput.Width = ft.WidthIncludingTrailingWhitespace + 30;
     589                            intInput.SetBinding(IntegerUpDown.ValueProperty, dataBinding);
     590                            entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(intInput, tpa, sfa, b, bcv.Model));
     591                            intInput.IsEnabled = true;
     592                        }
     593                        else if (tpa.ValidationType == ValidationType.RangeDouble)
     594                        {
     595                            DoubleUpDown doubleInput = new DoubleUpDown();
     596                            doubleInput.SelectAllOnGotFocus = true;
     597                            doubleInput.Tag = tpa.ToolTip;
     598                            doubleInput.ToolTip = tpa.ToolTip;
     599                            doubleInput.MouseEnter += Control_MouseEnter;
     600                            doubleInput.Maximum = tpa.DoubleMaxValue;
     601                            doubleInput.Minimum = tpa.DoubleMinValue;
     602                            doubleInput.Increment = tpa.DoubleIncrement;
     603                            string s = double.MaxValue + "";
     604                            FormattedText ft = new FormattedText(s, CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight, new Typeface(doubleInput.FontFamily, doubleInput.FontStyle, doubleInput.FontWeight, doubleInput.FontStretch), doubleInput.FontSize, Brushes.Black);
     605                            doubleInput.MaxWidth = ft.WidthIncludingTrailingWhitespace + 30;
     606                            doubleInput.Width = ft.WidthIncludingTrailingWhitespace + 30;
     607                            doubleInput.SetBinding(DoubleUpDown.ValueProperty, dataBinding);
     608                            entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(doubleInput, tpa, sfa, b, bcv.Model));
     609                            doubleInput.IsEnabled = true;
     610                        }
     611                        break;
     612                    #endregion NumericUpDown
     613
     614                    #region ComboBox
     615                    case ControlType.ComboBox:
     616                        ComboBox comboBox = new ComboBox();
     617
     618                        comboBox.Tag = tpa.ToolTip;
     619                        comboBox.MouseEnter += Control_MouseEnter;
     620
     621                        object value = plugin.Settings.GetType().GetProperty(tpa.PropertyName).GetValue(plugin.Settings, null);
     622                        bool isEnum = value is Enum;
     623
     624                        if (isEnum) // use generic enum<->int converter
     625                            dataBinding.Converter = EnumToIntConverter.GetInstance();
     626
     627
     628
     629                        if (tpa.ControlValues != null) // show manually passed entries in ComboBox
     630                        {
     631                            comboBox.ItemsSource = tpa.ControlValues;
     632                        }
     633                        else if (isEnum) // show automatically derived enum entries in ComboBox
     634                        {
     635                            comboBox.ItemsSource = Enum.GetValues(value.GetType());
     636                        }
     637                        else // nothing to show
     638                        {
     639                            GuiLogMessage("No ComboBox entries given", NotificationLevel.Error);
     640                        }
     641                        comboBox.ToolTip = tpa.ToolTip;
     642                        comboBox.SetBinding(ComboBox.SelectedIndexProperty, dataBinding);
     643                        //controlList.Add(new ControlEntry(comboBox, tpa, sfa));
     644                        entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(comboBox, tpa, sfa, b, bcv.Model));
     645                        break;
    656646
    657647                    #endregion ComboBox
    658648
    659649                    #region LanguageSelector
    660                     case ControlType.LanguageSelector:
    661                         {
    662                             ComboBox comboBox1 = new ComboBox();
    663 
    664                             comboBox1.Tag = tpa.ToolTip;
    665                             comboBox1.MouseEnter += Control_MouseEnter;
    666                             comboBox1.ItemsSource = Cryptool.PluginBase.Utils.LanguageStatistics.SupportedLanguages;
    667                             comboBox1.ToolTip = tpa.ToolTip;
    668                             comboBox1.SetBinding(ComboBox.SelectedIndexProperty, dataBinding);
    669                             entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(comboBox1, tpa, sfa, b, bcv.Model));
    670                             break;
    671                         }
    672 
     650                    case ControlType.LanguageSelector:                       
     651                        ComboBox comboBox1 = new ComboBox();
     652                        comboBox1.Tag = tpa.ToolTip;
     653                        comboBox1.MouseEnter += Control_MouseEnter;
     654                        comboBox1.ItemsSource = Cryptool.PluginBase.Utils.LanguageStatistics.SupportedLanguages;
     655                        comboBox1.ToolTip = tpa.ToolTip;
     656                        comboBox1.SetBinding(ComboBox.SelectedIndexProperty, dataBinding);
     657                        entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(comboBox1, tpa, sfa, b, bcv.Model));
     658                        break;                       
    673659                    #endregion LanguageSelector
    674660
    675661                    #region RadioButton
    676662                    case ControlType.RadioButton:
    677                             if (!dicRadioButtons.ContainsKey(plugin.Settings))
    678                             {
    679                                 dicRadioButtons.Add(plugin.Settings, new Dictionary<string, List<RadioButton>>());
    680                             }
    681                             List<RadioButton> list = new List<RadioButton>();
    682                             StackPanel panelRadioButtons = new StackPanel();
    683 
    684                             panelRadioButtons.ToolTip = tpa.ToolTip;
    685                             panelRadioButtons.MouseEnter += Control_MouseEnter;
    686                             panelRadioButtons.Margin = CONTROL_DEFAULT_MARGIN;
    687 
    688                             string groupNameExtension = Guid.NewGuid().ToString();
    689                            
    690                             for (int i = 0; i < tpa.ControlValues.Length; i++)
    691                                 {
    692                                     RadioButton radio = new RadioButton();
    693                                     radio.IsChecked = false;
    694                                    
    695                                     string stringValue = tpa.ControlValues[i];
    696 
    697                                     Binding dataBinding1 = new Binding(plugin.Settings.GetType().GetProperty(tpa.PropertyName).Name);
    698                                     dataBinding1.Converter = new RadioBoolToIntConverter();
    699                                     dataBinding1.Mode = BindingMode.TwoWay;
    700                                     dataBinding1.Source = plugin.Settings;
    701                                     dataBinding1.ConverterParameter = (int)i;
    702 
    703                                     radio.GroupName = tpa.PropertyName + groupNameExtension;
    704                                     radio.Content = stringValue;
    705                                    
    706                                     radio.Tag = new RadioButtonListAndBindingInfo(list, plugin, tpa);
    707                                     radio.ToolTip = tpa.ToolTip;
    708                                     radio.SetBinding(RadioButton.IsCheckedProperty, dataBinding1);
    709                                     panelRadioButtons.Children.Add(radio);
    710                                     list.Add(radio);
    711                                 }
    712                                 dicRadioButtons[plugin.Settings].Add(tpa.PropertyName, list);
    713                                 entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(panelRadioButtons, tpa, sfa, b, bcv.Model));
    714                            
    715                             break;
    716                            
    717                         #endregion RadioButton
    718 
    719                         # region CheckBox
    720                         case ControlType.CheckBox:
    721                             CheckBox checkBox = new CheckBox();
    722                            
    723                             checkBox.Margin = CONTROL_DEFAULT_MARGIN;
    724                             TextBlock wrapBlock = new TextBlock();
    725                             wrapBlock.Text = tpa.Caption;
    726                             wrapBlock.TextWrapping = TextWrapping.Wrap;
    727                             checkBox.Content = wrapBlock;
    728                             checkBox.Tag = tpa.ToolTip;
    729                             checkBox.ToolTip = tpa.ToolTip;
    730                             checkBox.MouseEnter += Control_MouseEnter;
    731                             checkBox.SetBinding(CheckBox.IsCheckedProperty, dataBinding);
    732                             entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(checkBox, tpa, sfa, b, bcv.Model));
    733                            
    734                             break;
    735                         # endregion CheckBox
    736                            
    737                         # region DynamicComboBox
    738                         case ControlType.DynamicComboBox:
    739                             PropertyInfo pInfo = plugin.Settings.GetType().GetProperty(tpa.ControlValuesNotInterpolated[0]);
    740                                                    
    741                             ObservableCollection<string> coll = pInfo.GetValue(plugin.Settings, null) as ObservableCollection<string>;
    742                                
    743                             if (coll != null)
    744                             {
    745                                 ComboBox comboBoxDyn = new ComboBox();
    746                              
    747                                 comboBoxDyn.Tag = tpa.ToolTip;
    748                                 comboBoxDyn.ToolTip = tpa.ToolTip;
    749                                 comboBoxDyn.MouseEnter += Control_MouseEnter;
    750                                 comboBoxDyn.ItemsSource = coll;
    751                                 comboBoxDyn.SetBinding(ComboBox.SelectedIndexProperty, dataBinding);
    752                                 //inputControl = comboBoxDyn;
    753                                 //bInfo.CaptionGUIElement = comboBoxDyn;
    754 
    755                                 //controlList.Add(new ControlEntry(comboBoxDyn, tpa, sfa));
    756                                 entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(comboBoxDyn, tpa, sfa, b, bcv.Model));
    757                             }
    758                             break;
    759                             # endregion DynamicComboBox
    760 
    761                         # region FileDialog
    762                         case ControlType.SaveFileDialog:
    763                         case ControlType.OpenFileDialog:
    764                             StackPanel sp = new StackPanel();
    765                            
    766                             sp.Uid = "FileDialog";
    767                             sp.Orientation = Orientation.Vertical;
    768 
    769                             TextBox fileTextBox = new TextBox();
    770                             fileTextBox.TextWrapping = TextWrapping.Wrap;
    771                             fileTextBox.Background = Brushes.LightGray;
    772                             fileTextBox.IsReadOnly = true;
    773                             fileTextBox.Margin = new Thickness(0, 0, 0, 5);
    774                             fileTextBox.TextChanged += fileDialogTextBox_TextChanged;
    775                             fileTextBox.SetBinding(TextBox.TextProperty, dataBinding);
    776                             //fileTextBox.SetBinding(TextBox.ToolTipProperty, dataBinding);
    777                            
    778                             fileTextBox.Tag = tpa;
    779                             if (fileTextBox.ToolTip == null || fileTextBox.ToolTip == string.Empty)
    780                             {
    781                                 fileTextBox.ToolTip = tpa.ToolTip;
    782                             }
    783                             fileTextBox.MouseEnter += fileTextBox_MouseEnter;
    784                             sp.Children.Add(fileTextBox);
    785 
    786                             Button btn = new Button();
    787                            
    788                             btn.Tag = fileTextBox;
    789                             if (tpa.ControlType == ControlType.SaveFileDialog)
    790                                 btn.Content = Properties.Resources.Save_File;
    791                             else
    792                                 btn.Content = Properties.Resources.Open_File;
    793                             btn.Click += FileDialogClick;
    794                             sp.Children.Add(btn);
    795                             entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(sp, tpa, sfa, b, bcv.Model));
    796                            
    797                             break;
    798                         # endregion FileDialog
    799 
    800                         # region Button
    801                         case ControlType.Button:
    802                             Button taskPaneButton = new Button();
    803                            
    804                             taskPaneButton.Margin = new Thickness(0);
    805                             taskPaneButton.Tag = tpa;
    806                             taskPaneButton.ToolTip = tpa.ToolTip;
    807                             taskPaneButton.MouseEnter += TaskPaneButton_MouseEnter;
    808                             TextBlock contentBlock = new TextBlock();
    809                             contentBlock.Text = tpa.Caption;
    810                             contentBlock.TextWrapping = TextWrapping.Wrap;
    811                             contentBlock.TextAlignment = TextAlignment.Center;
    812                             taskPaneButton.Content = contentBlock;
    813                             taskPaneButton.Click += TaskPaneButton_Click;
    814                            
    815                             entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(taskPaneButton, tpa, sfa, b, bcv.Model));
    816                             break;
    817                         # endregion Button
    818                          
    819                         # region Slider
    820                         case ControlType.Slider:
    821                             Slider slider = new Slider();
    822                          
    823                             slider.Margin = CONTROL_DEFAULT_MARGIN;
    824                             slider.Orientation = Orientation.Horizontal;
    825                             slider.Minimum = tpa.DoubleMinValue;
    826                             slider.Maximum = tpa.DoubleMaxValue;
    827                             slider.Tag = tpa.ToolTip;
    828                             slider.ToolTip = tpa.ToolTip;
    829                             slider.MouseEnter += Control_MouseEnter;
    830                            
    831 
    832                             slider.SetBinding(Slider.ValueProperty, dataBinding);
    833                            
    834                             slider.MinWidth = 0;
    835 
    836                             entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(slider, tpa, sfa, b, bcv.Model));
    837                             break;
    838                         # endregion Slider
    839 
    840                         # region TextBoxReadOnly
    841                         case ControlType.TextBoxReadOnly:
    842                             TextBox textBoxReadOnly = new TextBox();
    843                            
    844                             textBoxReadOnly.MinWidth = 0;
    845                             textBoxReadOnly.TextWrapping = TextWrapping.Wrap;
    846                             textBoxReadOnly.IsReadOnly = true;
    847                             textBoxReadOnly.BorderThickness = new Thickness(0);
    848                             textBoxReadOnly.Background = Brushes.Transparent;
    849                             textBoxReadOnly.Tag = tpa.ToolTip;
    850                             textBoxReadOnly.ToolTip = tpa.ToolTip;
    851                             textBoxReadOnly.MouseEnter += Control_MouseEnter;
    852                             dataBinding.Mode = BindingMode.OneWay; // read-only strings do not need a setter
    853                             textBoxReadOnly.SetBinding(TextBox.TextProperty, dataBinding);
    854                             entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(textBoxReadOnly, tpa, sfa, b, bcv.Model));
    855                             break;
    856                         # endregion TextBoxReadOnly
    857                
    858                         #region TextBoxHidden
    859                             case ControlType.TextBoxHidden:
    860                             PasswordBox passwordBox = new PasswordBox();
    861                            
    862                             passwordBox.MinWidth = 0;
    863                            
    864                             passwordBox.Tag = tpa;
    865                             passwordBox.ToolTip = tpa.ToolTip;
    866                             passwordBox.MouseEnter += Control_MouseEnter;
    867                             passwordBox.Password = plugin.Settings.GetType().GetProperty(tpa.PropertyName).GetValue(plugin.Settings, null) as string;
    868                             //textBoxReadOnly.SetBinding(PasswordBox.property , dataBinding);
    869                             passwordBox.PasswordChanged += TextBoxHidden_Changed;
    870                             entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(passwordBox, tpa, sfa, b, bcv.Model));
     663                        if (!dicRadioButtons.ContainsKey(plugin.Settings))
     664                        {
     665                            dicRadioButtons.Add(plugin.Settings, new Dictionary<string, List<RadioButton>>());
     666                        }
     667                        List<RadioButton> list = new List<RadioButton>();
     668                        StackPanel panelRadioButtons = new StackPanel();
     669
     670                        panelRadioButtons.ToolTip = tpa.ToolTip;
     671                        panelRadioButtons.MouseEnter += Control_MouseEnter;
     672                        panelRadioButtons.Margin = CONTROL_DEFAULT_MARGIN;
     673
     674                        string groupNameExtension = Guid.NewGuid().ToString();
     675
     676                        for (int i = 0; i < tpa.ControlValues.Length; i++)
     677                        {
     678                            RadioButton radio = new RadioButton();
     679                            radio.IsChecked = false;
     680
     681                            string stringValue = tpa.ControlValues[i];
     682
     683                            Binding dataBinding1 = new Binding(plugin.Settings.GetType().GetProperty(tpa.PropertyName).Name);
     684                            dataBinding1.Converter = new RadioBoolToIntConverter();
     685                            dataBinding1.Mode = BindingMode.TwoWay;
     686                            dataBinding1.Source = plugin.Settings;
     687                            dataBinding1.ConverterParameter = (int)i;
     688
     689                            radio.GroupName = tpa.PropertyName + groupNameExtension;
     690                            radio.Content = stringValue;
     691
     692                            radio.Tag = new RadioButtonListAndBindingInfo(list, plugin, tpa);
     693                            radio.ToolTip = tpa.ToolTip;
     694                            radio.SetBinding(RadioButton.IsCheckedProperty, dataBinding1);
     695                            panelRadioButtons.Children.Add(radio);
     696                            list.Add(radio);
     697                        }
     698                        dicRadioButtons[plugin.Settings].Add(tpa.PropertyName, list);
     699                        entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(panelRadioButtons, tpa, sfa, b, bcv.Model));
     700
    871701                        break;
    872                         #endregion TextBoxHidden
    873 
    874                         #region KeyTextBox
    875                             case ControlType.KeyTextBox:
    876                             var keyTextBox = new KeyTextBox.KeyTextBox();
    877                            
    878                             var keyManager = plugin.Settings.GetType().GetProperty(tpa.AdditionalPropertyName).GetValue(plugin.Settings, null) as KeyTextBox.IKeyManager;
    879                             keyTextBox.KeyManager = keyManager;
    880                             keyTextBox.Tag = tpa;
    881                             keyTextBox.ToolTip = tpa.ToolTip;
    882                             keyTextBox.MouseEnter += Control_MouseEnter;
    883                             keyTextBox.SetBinding(KeyTextBox.KeyTextBox.CurrentKeyProperty, dataBinding);
    884                             entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(keyTextBox, tpa, sfa, b, bcv.Model));
     702                    #endregion RadioButton
     703
     704                    #region CheckBox
     705                    case ControlType.CheckBox:
     706                        CheckBox checkBox = new CheckBox();
     707
     708                        checkBox.Margin = CONTROL_DEFAULT_MARGIN;
     709                        TextBlock wrapBlock = new TextBlock();
     710                        wrapBlock.Text = tpa.Caption;
     711                        wrapBlock.TextWrapping = TextWrapping.Wrap;
     712                        checkBox.Content = wrapBlock;
     713                        checkBox.Tag = tpa.ToolTip;
     714                        checkBox.ToolTip = tpa.ToolTip;
     715                        checkBox.MouseEnter += Control_MouseEnter;
     716                        checkBox.SetBinding(CheckBox.IsCheckedProperty, dataBinding);
     717                        entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(checkBox, tpa, sfa, b, bcv.Model));
     718
     719                        break;
     720                    #endregion CheckBox
     721
     722                    #region DynamicComboBox
     723                    case ControlType.DynamicComboBox:
     724                        PropertyInfo pInfo = plugin.Settings.GetType().GetProperty(tpa.ControlValuesNotInterpolated[0]);
     725
     726                        ObservableCollection<string> coll = pInfo.GetValue(plugin.Settings, null) as ObservableCollection<string>;
     727
     728                        if (coll != null)
     729                        {
     730                            ComboBox comboBoxDyn = new ComboBox();
     731
     732                            comboBoxDyn.Tag = tpa.ToolTip;
     733                            comboBoxDyn.ToolTip = tpa.ToolTip;
     734                            comboBoxDyn.MouseEnter += Control_MouseEnter;
     735                            comboBoxDyn.ItemsSource = coll;
     736                            comboBoxDyn.SetBinding(ComboBox.SelectedIndexProperty, dataBinding);
     737                            //inputControl = comboBoxDyn;
     738                            //bInfo.CaptionGUIElement = comboBoxDyn;
     739
     740                            //controlList.Add(new ControlEntry(comboBoxDyn, tpa, sfa));
     741                            entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(comboBoxDyn, tpa, sfa, b, bcv.Model));
     742                        }
     743                        break;
     744                    #endregion DynamicComboBox
     745
     746                    #region FileDialog
     747                    case ControlType.SaveFileDialog:
     748                    case ControlType.OpenFileDialog:
     749                        StackPanel sp = new StackPanel();
     750
     751                        sp.Uid = "FileDialog";
     752                        sp.Orientation = Orientation.Vertical;
     753
     754                        TextBox fileTextBox = new TextBox();
     755                        fileTextBox.TextWrapping = TextWrapping.Wrap;
     756                        fileTextBox.Background = Brushes.LightGray;
     757                        fileTextBox.IsReadOnly = true;
     758                        fileTextBox.Margin = new Thickness(0, 0, 0, 5);
     759                        fileTextBox.TextChanged += fileDialogTextBox_TextChanged;
     760                        fileTextBox.SetBinding(TextBox.TextProperty, dataBinding);
     761                        //fileTextBox.SetBinding(TextBox.ToolTipProperty, dataBinding);
     762
     763                        fileTextBox.Tag = tpa;
     764                        if (fileTextBox.ToolTip == null || fileTextBox.ToolTip == string.Empty)
     765                        {
     766                            fileTextBox.ToolTip = tpa.ToolTip;
     767                        }
     768                        fileTextBox.MouseEnter += fileTextBox_MouseEnter;
     769                        sp.Children.Add(fileTextBox);
     770
     771                        Button btn = new Button();
     772
     773                        btn.Tag = fileTextBox;
     774                        if (tpa.ControlType == ControlType.SaveFileDialog)
     775                            btn.Content = Properties.Resources.Save_File;
     776                        else
     777                            btn.Content = Properties.Resources.Open_File;
     778                        btn.Click += FileDialogClick;
     779                        sp.Children.Add(btn);
     780                        entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(sp, tpa, sfa, b, bcv.Model));
     781
     782                        break;
     783                    #endregion FileDialog
     784
     785                    #region Button
     786                    case ControlType.Button:
     787                        Button taskPaneButton = new Button();
     788
     789                        taskPaneButton.Margin = new Thickness(0);
     790                        taskPaneButton.Tag = tpa;
     791                        taskPaneButton.ToolTip = tpa.ToolTip;
     792                        taskPaneButton.MouseEnter += TaskPaneButton_MouseEnter;
     793                        TextBlock contentBlock = new TextBlock();
     794                        contentBlock.Text = tpa.Caption;
     795                        contentBlock.TextWrapping = TextWrapping.Wrap;
     796                        contentBlock.TextAlignment = TextAlignment.Center;
     797                        taskPaneButton.Content = contentBlock;
     798                        taskPaneButton.Click += TaskPaneButton_Click;
     799
     800                        entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(taskPaneButton, tpa, sfa, b, bcv.Model));
     801                        break;
     802                    #endregion Button
     803
     804                    #region Slider
     805                    case ControlType.Slider:
     806                        Slider slider = new Slider();
     807
     808                        slider.Margin = CONTROL_DEFAULT_MARGIN;
     809                        slider.Orientation = Orientation.Horizontal;
     810                        slider.Minimum = tpa.DoubleMinValue;
     811                        slider.Maximum = tpa.DoubleMaxValue;
     812                        slider.Tag = tpa.ToolTip;
     813                        slider.ToolTip = tpa.ToolTip;
     814                        slider.MouseEnter += Control_MouseEnter;
     815
     816
     817                        slider.SetBinding(Slider.ValueProperty, dataBinding);
     818
     819                        slider.MinWidth = 0;
     820
     821                        entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(slider, tpa, sfa, b, bcv.Model));
     822                        break;
     823                    #endregion Slider
     824
     825                    #region TextBoxReadOnly
     826                    case ControlType.TextBoxReadOnly:
     827                        TextBox textBoxReadOnly = new TextBox();
     828
     829                        textBoxReadOnly.MinWidth = 0;
     830                        textBoxReadOnly.TextWrapping = TextWrapping.Wrap;
     831                        textBoxReadOnly.IsReadOnly = true;
     832                        textBoxReadOnly.BorderThickness = new Thickness(0);
     833                        textBoxReadOnly.Background = Brushes.Transparent;
     834                        textBoxReadOnly.Tag = tpa.ToolTip;
     835                        textBoxReadOnly.ToolTip = tpa.ToolTip;
     836                        textBoxReadOnly.MouseEnter += Control_MouseEnter;
     837                        dataBinding.Mode = BindingMode.OneWay; // read-only strings do not need a setter
     838                        textBoxReadOnly.SetBinding(TextBox.TextProperty, dataBinding);
     839                        entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(textBoxReadOnly, tpa, sfa, b, bcv.Model));
     840                        break;
     841                    #endregion TextBoxReadOnly
     842
     843                    #region TextBoxHidden
     844                    case ControlType.TextBoxHidden:
     845                        PasswordBox passwordBox = new PasswordBox();
     846
     847                        passwordBox.MinWidth = 0;
     848
     849                        passwordBox.Tag = tpa;
     850                        passwordBox.ToolTip = tpa.ToolTip;
     851                        passwordBox.MouseEnter += Control_MouseEnter;
     852                        passwordBox.Password = plugin.Settings.GetType().GetProperty(tpa.PropertyName).GetValue(plugin.Settings, null) as string;
     853                        //textBoxReadOnly.SetBinding(PasswordBox.property , dataBinding);
     854                        passwordBox.PasswordChanged += TextBoxHidden_Changed;
     855                        entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(passwordBox, tpa, sfa, b, bcv.Model));
     856                        break;
     857                    #endregion TextBoxHidden
     858
     859                    #region KeyTextBox
     860                    case ControlType.KeyTextBox:
     861                        var keyTextBox = new KeyTextBox.KeyTextBox();
     862
     863                        var keyManager = plugin.Settings.GetType().GetProperty(tpa.AdditionalPropertyName).GetValue(plugin.Settings, null) as KeyTextBox.IKeyManager;
     864                        keyTextBox.KeyManager = keyManager;
     865                        keyTextBox.Tag = tpa;
     866                        keyTextBox.ToolTip = tpa.ToolTip;
     867                        keyTextBox.MouseEnter += Control_MouseEnter;
     868                        keyTextBox.SetBinding(KeyTextBox.KeyTextBox.CurrentKeyProperty, dataBinding);
     869                        entgrou.AddNewEntry(tpa.GroupName, new ControlEntry(keyTextBox, tpa, sfa, b, bcv.Model));
    885870                        break;
    886871                        #endregion KeyTextBox
    887872
    888                     }
    889    
     873                }
     874
    890875            }
    891876            entgrou.sort();
    892 
    893877            return entgrou;
    894 
    895878        }
    896879
    897880        void checkIfPlugged(Model.PlugState state, Model.ConnectorModel model)
    898881        {
    899             ControlEntry ele = null;
     882            ControlEntry ele;
    900883            connectorSettingElements.TryGetValue(model.GetName(), out ele);
    901884            if (state == Model.PlugState.Plugged)
     
    11141097                dummyList.Sort(new BindingInfoComparer());
    11151098        }
    1116 
    1117 
    1118 
    1119 
    1120 
    1121 
    11221099    }
    11231100
     
    13291306                }               
    13301307            }
    1331 
    13321308           
    13331309            if (maxSizeContent < 20)
    13341310            {
    13351311                maxSizeContent = 100;
    1336             }
    1337 
    1338            
     1312            }           
    13391313
    13401314            maxSize = maxSizeCaption + maxSizeContent;
     
    13551329                this.MaxWidth = maxSize + 10;
    13561330            }
    1357 
    13581331
    13591332            foreach (UIElement child in Children)
     
    14471420
    14481421                }
    1449 
    1450                 if (child is Expander)
    1451                 {
    1452                    
    1453                 }
    1454             }
    1455 
    1456 
    1457 
     1422            }
    14581423        }
    14591424
     
    14831448                {
    14841449                    element.MinWidth = 0;
    1485                    // if (this.ActualWidth < maxSizeCaption + maxSizeContent)
    1486                         element.MaxWidth = Double.MaxValue;
    1487                     //else
    1488                     //   element.MaxWidth = maxSizeContent;
    1489 
     1450                    element.MaxWidth = Double.MaxValue;
    14901451                    element.Width = this.ActualWidth;
    14911452                }
    14921453            }
    14931454        }
    1494 
    1495 
    1496         private TimeSpan _AnimationLength = TimeSpan.FromMilliseconds(200);
    14971455
    14981456        protected override Size MeasureOverride(Size availableSize)
     
    15001458            Size infiniteSize = new Size(double.PositiveInfinity, double.PositiveInfinity);
    15011459            double curX = 0, curY = 0, curLineHeight = 0;
    1502 
    1503 
    1504             bool b = !(availableSize.Width > maxSize);
    1505 
    15061460            foreach (UIElement child in Children)
    15071461            {
    15081462
    1509                 child.Measure(infiniteSize);
    1510                 if (child is CheckBox)
    1511                 {
    1512                     //  b = true;
    1513                 }
    1514 
    1515                 //if (Children.IndexOf(child) % 2 == 0 || curX + child.DesiredSize.Width > availableSize.Width /*|| curX + child.DesiredSize.Width > maxSize*/ || b)
    1516                 //{ //Wrap to next line
    1517 
    1518                     curY += curLineHeight + 2;
    1519                     curX = 0;
    1520                     curLineHeight = 0;
    1521                 //}
    1522 
     1463                child.Measure(infiniteSize);               
     1464                curY += curLineHeight + 2;
     1465                curX = 0;
     1466                curLineHeight = 0;
    15231467                curX += maxSize;
    15241468                if (child.DesiredSize.Height > curLineHeight)
     1469                {
    15251470                    curLineHeight = child.DesiredSize.Height;
    1526             }
    1527 
    1528 
     1471                }
     1472            }
    15291473
    15301474            curY += curLineHeight;
     
    15361480            this.Height = resultSize.Height;
    15371481
    1538 
    15391482            return resultSize;
    15401483        }
     
    15431486        {
    15441487            if (this.Children == null || this.Children.Count == 0)
     1488            {
    15451489                return finalSize;
     1490            }
    15461491
    15471492            TranslateTransform trans = null;
    15481493            double curX = 0, curY = 0, curLineHeight = 0;
    1549 
    1550             //bool b = !(finalSize.Width > maxSize);
    15511494
    15521495            foreach (UIElement child in Children)
     
    15591502                    child.RenderTransform = trans;
    15601503                }
    1561 
    1562                 if (child is CheckBox)
    1563                 {
    1564                     // b = true;
    1565                 }
    1566 
    1567                 //if (Children.IndexOf(child) % 2 == 0 || curX + child.DesiredSize.Width > finalSize.Width /*|| curX + child.DesiredSize.Width > maxSize*/ || b || Children.IndexOf(child) % 2 == 0)
    1568                 //{ //Wrap to next line
    1569 
    1570                     curY += curLineHeight + 2;
    1571                     curX = 0;
    1572                     curLineHeight = 0;
    1573                 //}
    1574 
     1504             
     1505                curY += curLineHeight + 2;
     1506                curX = 0;
     1507                curLineHeight = 0;
     1508               
    15751509                child.Arrange(new Rect(0, 0, child.DesiredSize.Width, child.DesiredSize.Height));
    15761510
     
    15911525        }
    15921526    }
    1593 
    1594 
    15951527
    15961528    public class BindingInfoComparer : IComparer<ControlEntry>
     
    15991531        {
    16001532            if (x.tpa.Order != y.tpa.Order)
     1533            {
    16011534                return x.tpa.Order.CompareTo(y.tpa.Order);
     1535            }
    16021536            else
     1537            {
    16031538                return x.tpa.Caption.CompareTo(y.tpa.Caption);
     1539            }
    16041540        }
    16051541    }
     
    16131549            int integer = (int)value;
    16141550            if (integer == int.Parse(parameter.ToString()))
     1551            {
    16151552                return true;
     1553            }
    16161554            else
     1555            {
    16171556                return false;
    1618 
    1619 
     1557            }
    16201558        }
    16211559
     
    16791617            string parameterString = parameter as string;
    16801618            if (parameterString == null)
     1619            {
    16811620                return DependencyProperty.UnsetValue;
     1621            }
    16821622
    16831623            if (Enum.IsDefined(value.GetType(), value) == false)
     1624            {
    16841625                return DependencyProperty.UnsetValue;
     1626            }
    16851627
    16861628            object parameterValue = Enum.Parse(value.GetType(), parameterString);
     
    16931635            string parameterString = parameter as string;
    16941636            if (parameterString == null)
     1637            {
    16951638                return DependencyProperty.UnsetValue;
     1639            }
    16961640
    16971641            return Enum.Parse(targetType, parameterString);
  • trunk/WorkspaceManagerModel/Model/Tools/ModelPersistance.cs

    r8581 r8674  
    2929using System.Text;
    3030using Cryptool.PluginBase.Attributes;
     31using System.Globalization;
    3132
    3233namespace WorkspaceManager.Model
     
    198199            {
    199200                if (persistantPlugin.PluginModel.Plugin.Settings == null)
     201                {
    200202                    continue; // do not attempt deserialization if plugin type has no settings
     203                }
    201204
    202205                foreach (PersistantSetting persistantSetting in persistantPlugin.PersistantSettingsList)
     
    234237                                                       System.Int64.Parse((String)persistantSetting.Value), null);
    235238                                    }
     239                                    else if (persistantSetting.Type.Equals("System.Single"))
     240                                    {
     241                                        Single result = 0;
     242                                        System.Single.TryParse(persistantSetting.Value.Replace(',', '.'),
     243                                                                                NumberStyles.Number,
     244                                                                                CultureInfo.CreateSpecificCulture("en-Us"),
     245                                                                                out result);                                       
     246                                        pInfo.SetValue(persistantPlugin.PluginModel.Plugin.Settings, result, null);
     247                                    }
    236248                                    else if (persistantSetting.Type.Equals("System.Double"))
    237249                                    {
    238                                         pInfo.SetValue(persistantPlugin.PluginModel.Plugin.Settings,
    239                                                        System.Double.Parse((String)persistantSetting.Value), null);
     250                                        Double result = 0;
     251                                        System.Double.TryParse(persistantSetting.Value.Replace(',', '.'),
     252                                                                                NumberStyles.Number,
     253                                                                                CultureInfo.CreateSpecificCulture("en-Us"),
     254                                                                                out result);
     255                                        pInfo.SetValue(persistantPlugin.PluginModel.Plugin.Settings, result, null);
    240256                                    }
    241257                                    else if (persistantSetting.Type.Equals("System.Boolean"))
     
    423439            foreach (PluginModel pluginModel in workspaceModel.AllPluginModels)
    424440            {
    425 
    426441                if (pluginModel.Plugin.Settings != null)
    427442                {
     
    450465                            persistantPlugin.PersistantSettingsList.Add(persistantSetting);
    451466                        }
    452 
    453467                    }
    454468                    persistantModel.PersistantPluginList.Add(persistantPlugin);
  • trunk/WorkspaceManagerModel/Model/Tools/XMLSerialization.cs

    r8109 r8674  
    513513                                System.Double.TryParse(RevertXMLSymbols(value.InnerText.Replace(',', '.')),
    514514                                                                        NumberStyles.Number,
    515                                                                         CultureInfo.CreateSpecificCulture("en-GB"),
     515                                                                        CultureInfo.CreateSpecificCulture("en-Us"),
     516                                                                        out result);                               
     517                                newObject.GetType().GetField(RevertXMLSymbols(membername.InnerText),
     518                                                             BindingFlags.NonPublic |
     519                                                             BindingFlags.Public |
     520                                                             BindingFlags.Instance).SetValue(newObject, result);
     521                            }
     522                            else if (RevertXMLSymbols(membertype.InnerText).Equals("System.Single"))
     523                            {
     524                                Single result = 0;
     525                                System.Single.TryParse(RevertXMLSymbols(value.InnerText.Replace(',', '.')),
     526                                                                        NumberStyles.Number,
     527                                                                        CultureInfo.CreateSpecificCulture("en-Us"),
    516528                                                                        out result);
    517529                                newObject.GetType().GetField(RevertXMLSymbols(membername.InnerText),
     
    551563                                System.Double.TryParse(RevertXMLSymbols(values[0].Replace(',', '.')),
    552564                                                                        NumberStyles.Number,
    553                                                                         CultureInfo.CreateSpecificCulture("en-GB"),
     565                                                                        CultureInfo.CreateSpecificCulture("en-Us"),
    554566                                                                        out x);
    555567                                System.Double.TryParse(RevertXMLSymbols(values[1].Replace(',', '.')),
    556568                                                                        NumberStyles.Number,
    557                                                                         CultureInfo.CreateSpecificCulture("en-GB"),
     569                                                                        CultureInfo.CreateSpecificCulture("en-Us"),
    558570                                                                        out y);
    559571
Note: See TracChangeset for help on using the changeset viewer.