Ejemplo n.º 1
0
 public SelectElement(IWebElement element, IWebDriver driver) : base(element, driver)
 {
     if (element.TagName == "select")
     {
         OldStyleSelect       = new OpenQA.Selenium.Support.UI.SelectElement(element);
         LazyAvailableOptions = new Lazy <IList <IWebElement> >(() => OldStyleSelect.Options);
         LazySelectedOptions  = new Lazy <IList <IWebElement> >(() => OldStyleSelect.AllSelectedOptions);
     }
     else
     {
         var listId = element.GetAttribute("list");
         if (string.IsNullOrWhiteSpace(listId))
         {
             throw new Exception("The {element.TagName} is neither a select element nor an element with a list attribute");
         }
         LazyAvailableOptions = new Lazy <IList <IWebElement> >(() => driver.FindElements(By.XPath($"//datalist[@id='{listId}']/option")));
         LazySelectedOptions  = new Lazy <IList <IWebElement> >(() => new List <IWebElement>());
         var value = element.GetAttribute("value");
         if (!string.IsNullOrWhiteSpace(value))
         {
             var selected = AvailableOptions.Where(o => o.GetAttribute("value") == value);
             if (selected.None())
             {
                 throw new Exception($"element with list:{listId} and value:{value} did not find any mathching options in the {AvailableOptions.Count()} options");
             }
             if (selected.Many())
             {
                 throw new Exception($"element with list:{listId} and value:{value} found {selected.Count()} mathching options in the {AvailableOptions.Count()} options");
             }
             SelectedOptions.Add(selected.First());
         }
     }
 }
Ejemplo n.º 2
0
        public MainViewModel()
        {
            DownloadDepotTools = new CommandHandler {
                Action = OnDownloadDepotTools
            };
            UpdateDepotTools = new CommandHandler {
                Action = OnUpdateDepotTools
            };
            BrowseSource = new CommandHandler {
                Action = OnBrowseSource
            };
            DownloadSource = new CommandHandler {
                Action = OnDownloadSource
            };
            UpdateSource = new CommandHandler {
                Action = OnUpdateSource
            };
            GetOptionsAvailable = new CommandHandler {
                Action = OnUpdateOptions
            };
            OpenReadMe = new CommandHandler {
                Action = OnOpenReadMe
            };
            ExploreConfiguration = new CommandHandler {
                Action = OnExploreConfiguration
            };
            ConfigureBuild = new CommandHandler {
                Action = OnConfigureBuild
            };
            BrowseBuildFolder = new CommandHandler {
                Action = OnBrowseBuild
            };
            MoveAvailable = new CommandHandler {
                Action = OnMoveAvailable
            };
            MoveSelected = new CommandHandler {
                Action = OnMoveSelected
            };
            BrowseWindowsKit = new CommandHandler {
                Action = OnBrowseWindowsKit
            };
            BuildV8 = new CommandHandler {
                Action = OnBuildV8
            };

            // The available options are those that are not selected
            foreach (var option in Config.BuildOptions)
            {
                if (option.Selected)
                {
                    SelectedOptions.Add(option);
                }
                else
                {
                    AvailableOptions.Add(option);
                }
            }
            InvokePropertyChanged(nameof(Config));
        }
Ejemplo n.º 3
0
 private void AddSelectedOption(TOption opt, string input)
 {
     if (SelectedOptions.ContainsKey(opt))
     {
         SelectedOptions[opt] = input;
     }
     else
     {
         SelectedOptions.Add(opt, input);
     }
 }
Ejemplo n.º 4
0
        public FormFieldViewModel(FormField field, string[] languageCodes) : this()
        {
            var names  = field.GetNames(true);
            var values = field.GetValues(false);

            IEnumerable <Option> options = typeof(OptionsField).IsAssignableFrom(field.GetType()) ? ((OptionsField)field).Options : new List <Option>();

            foreach (var name in names)
            {
                if (languageCodes.Contains(name.LanguageCode))
                {
                    Names.Add(name.LanguageCode, name.Value);
                }
            }

            foreach (var value in values)
            {
                if (languageCodes.Contains(value.LanguageCode))
                {
                    if (Values.ContainsKey(value.LanguageCode))
                    {
                        Values = new Dictionary <string, string>();
                        ValuesList.Add(Values);

                        Values.Add(value.LanguageCode, value.Value);
                    }
                    else
                    {
                        Values.Add(value.LanguageCode, value.Value);
                    }
                }
            }


            foreach (string code in languageCodes)
            {
                SelectedOptions.Add(code, new List <string>());
            }

            foreach (var option in options)
            {
                if (option.Selected)
                {
                    foreach (var optionVal in option.Value)
                    {
                        if (languageCodes.Contains(optionVal.LanguageCode))
                        {
                            SelectedOptions[optionVal.LanguageCode].Add(optionVal.Value);
                        }
                    }
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Removes the option from specified position.
        /// </summary>
        /// <param name="index">Position of option to be removed.</param>
        public void Remove(int index)
        {
            var options = Options;

            if (index >= 0 && index < options.Length)
            {
                var optionToRemove = options[index];
                RemoveChild(optionToRemove);
                if (SelectedOptions.IndexOf(optionToRemove) != -1)
                {
                    SelectedOptions.Remove(optionToRemove);
                    if (!Multiple && options.Length > 0)
                    {
                        SelectedOptions.Add(options[0]);
                    }
                }
            }
        }
Ejemplo n.º 6
0
 public SelectElement(IWebElement element, IWebDriver driver) : base(element, driver)
 {
     if (element.TagName == "select")
     {
         OldStyleSelect       = new OpenQA.Selenium.Support.UI.SelectElement(element);
         LazyAvailableOptions = new Lazy <IList <IWebElement> >(() => OldStyleSelect.Options);
         LazySelectedOptions  = new Lazy <IList <IWebElement> >(() => OldStyleSelect.AllSelectedOptions);
     }
     else
     {
         var listId = element.GetAttribute("list");
         LazyAvailableOptions = new Lazy <IList <IWebElement> >(() => driver.FindElements(By.XPath($"//datalist[@id='{listId}']/option")));
         LazySelectedOptions  = new Lazy <IList <IWebElement> >(() => new List <IWebElement>());
         var value = element.GetAttribute("value");
         if (!string.IsNullOrWhiteSpace(value))
         {
             SelectedOptions.Add(AvailableOptions.First(o => o.GetAttribute("value") == value));
         }
     }
 }
Ejemplo n.º 7
0
        private void AddNewItemClick(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
        {
            // validate
            if (textBox.Text == "")
            {
                return;
            }

            if (SelectedOptions.Contains(textBox.Text))
            {
                this.ShowError("Opties moeten uniek zijn.");
                return;
            }

            SelectedOptions.Add(textBox.Text);
            this.HideError();
            SetValue(SelectedOptionsProperty, this.SelectedOptions);
            textBox.Text = "";
            this.RefreshList();
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Adds new 'OPTION' nodes to the dropdown. Other nodes types are ignored.
        /// </summary>
        public override Node AppendChild(Node node)
        {
            if (node is HtmlOptionElement option)
            {
                if (!Multiple)
                {
                    if (Options.Length == 0 || option.Selected)
                    {
                        SelectedOptions.Clear();
                        SelectedOptions.Add(option);
                    }
                }
                else
                {
                    if (option.Selected)
                    {
                        SelectedOptions.Add(option);
                    }
                }
            }

            return(base.AppendChild(node));
        }
Ejemplo n.º 9
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (CustomOptions != null)
        {
            SelectedOptions = new List <OptionItem>();
        }
        else
        {
            SelectedOptions = null;
            return;
        }

        int idx = 0;

        foreach (Control ctrl in _controls)
        {
            if (ctrl is DropDownList)
            {
                int id = Convert.ToInt32(((DropDownList)ctrl).SelectedValue);
                SelectedOptions.Add(id > 0 ? CustomOptions[idx].Options.WithId(id) : null);
                idx++;
            }
            else if (ctrl is RadioButtonList)
            {
                int id = Convert.ToInt32(((RadioButtonList)ctrl).SelectedValue);
                SelectedOptions.Add(id > 0 ? CustomOptions[idx].Options.WithId(id) : null);
                idx++;
            }
            else if (ctrl is CheckBox)
            {
                if (((CheckBox)ctrl).Checked)
                {
                    CustomOptions[idx].Options[0].Title = Resource.Client_UserControls_CustomOptions_Yes;
                    SelectedOptions.Add(CustomOptions[idx].Options[0]);
                }
                else
                {
                    if (CustomOptions[idx].IsRequired)
                    {
                        CustomOptions[idx].Options[0].Title   = Resource.Client_UserControls_CustomOptions_No;
                        CustomOptions[idx].Options[0].PriceBc = 0;
                        SelectedOptions.Add(CustomOptions[idx].Options[0]);
                    }
                    else
                    {
                        SelectedOptions.Add(null);
                    }
                }
                idx++;
            }

            else if (ctrl is TextBox)
            {
                if (((TextBox)ctrl).TextMode == TextBoxMode.MultiLine)
                {
                    if (string.IsNullOrEmpty(((TextBox)ctrl).Text))
                    {
                        SelectedOptions.Add(null);
                        if (CustomOptions[idx].IsRequired)
                        {
                            IsValid = false;
                        }
                    }
                    else
                    {
                        CustomOptions[idx].Options = new List <OptionItem>();
                        var opt = new OptionItem {
                            Title = ((TextBox)ctrl).Text
                        };
                        CustomOptions[idx].Options.Add(opt);
                        SelectedOptions.Add(CustomOptions[idx].Options[0]);
                    }
                    idx++;
                }
                else
                {
                    if (string.IsNullOrEmpty(((TextBox)ctrl).Text))
                    {
                        SelectedOptions.Add(null);
                        if (CustomOptions[idx].IsRequired)
                        {
                            IsValid = false;
                        }
                        if (ShowValidation)
                        {
                            ((TextBox)ctrl).CssClass = "valid-required group-cOptions";
                        }
                    }
                    else
                    {
                        CustomOptions[idx].Options = new List <OptionItem>();
                        var opt = new OptionItem {
                            Title = ((TextBox)ctrl).Text
                        };
                        CustomOptions[idx].Options.Add(opt);
                        SelectedOptions.Add(CustomOptions[idx].Options[0]);
                    }
                    idx++;
                }
            }
        }
    }
Ejemplo n.º 10
0
        private async void OnUpdateOptions()
        {
            try
            {
                EnableButtons(false);

                var workingFolder = Path.Combine(Config.SourceFolder, "v8");
                var configFolder  = (Application.Current as App).ConfigFolder;
                var genFolder     = Path.Combine(configFolder, "Downloads", "out.gn", "defaults");
                var argsFileName  = Path.Combine(configFolder, "Downloads", "gn_defaults.txt");

                if (!Directory.Exists(workingFolder))
                {
                    MessageBox.Show($"You must select an existing V8 source folder for the depot_tools to be able to produce a list "
                                    + "of available compiler options", $"V8 folder not found - '{workingFolder}'");
                    StatusText = "Updating build options failed";
                    return;
                }
                if (Directory.Exists(genFolder))
                {
                    try
                    {
                        FileSystem.DeleteDirectory(genFolder, UIOption.AllDialogs, RecycleOption.SendToRecycleBin);
                    }
                    catch (Exception)
                    {
                        MessageBox.Show($"Cannot delete '{genFolder}'; is that folder open in another program?"
                                        , $"Building V8 failed");
                        StatusText = $"failed to delete '{genFolder}'";
                        return;
                    }
                }

                var batch = new BatchFile
                {
                    WorkingDirectory = workingFolder,
                    Model            = this,
                    Title            = $"retrieving the list of available build options",
                };
                if (!CheckPython(batch.PythonFileName))
                {
                    return;
                }

                // batch.Commands.Add($"call python tools\\dev\\v8gen.py gen -b {Config.BuildConfiguration} \"{genFolder}\" --no-goma");
                var gnFileName = Path.Combine(Config.DepotToolsFolder, "gn.py");
                batch.Commands.Add($"\"{batch.PythonFileName}\" \"{gnFileName}\" gen \"{genFolder}\"");
                batch.Commands.Add($"\"{batch.PythonFileName}\" \"{gnFileName}\" args \"{genFolder}\" --list >{argsFileName}");
                StatusText = batch.Title;
                StatusText = await batch.Run();

                //var installer = CreateInstaller();
                //StatusText = "Extracting build options";
                //installer.WorkingDirectory = Path.Combine(Config.SourceFolder, "v8");

                //installer.Arguments = $"/k title Generating a list of build options & gn gen \"{genFolder}\" & gn args \"{genFolder}\" --list >{argsFileName}";
                //await Task.Run(() => Process.Start(installer).WaitForExit());

                var existingOptions = new Dictionary <string, BuildOption>(StringComparer.OrdinalIgnoreCase);
                foreach (var option in Config.BuildOptions)
                {
                    existingOptions[option.Name] = option;
                }
                AvailableOptions.Clear();
                SelectedOptions.Clear();

                StatusText = "Parsing build options";
                Config.BuildOptions.Clear();
                var               lines              = File.ReadAllLines(argsFileName);
                BuildOption       currentOption      = null;
                OptionParserState state              = OptionParserState.None;
                StringBuilder     descriptionBuilder = null;
                for (var ii = 0; ii < lines.Length; ++ii)
                {
                    var line = lines[ii];
                    switch (state)
                    {
                    case OptionParserState.None:
                    case OptionParserState.Name:
                        descriptionBuilder = new StringBuilder();
                        var name = line.Trim();
                        if (existingOptions.TryGetValue(name, out currentOption))
                        {
                            existingOptions.Remove(name);
                        }
                        else
                        {
                            currentOption = new Configuration.BuildOption
                            {
                                Name = line
                            };
                        }
                        if (currentOption.Selected)
                        {
                            SelectedOptions.Add(currentOption);
                        }
                        else
                        {
                            AvailableOptions.Add(currentOption);
                        }
                        Config.BuildOptions.Add(currentOption);
                        state = OptionParserState.Current;
                        break;

                    case OptionParserState.Current:
                        currentOption.Default = line.Split('=')[1].Trim();
                        state = OptionParserState.From;
                        break;

                    case OptionParserState.From:
                        state = OptionParserState.Blank;
                        break;

                    case OptionParserState.Blank:
                        state = OptionParserState.Description;
                        break;

                    case OptionParserState.Description:
                        if (!string.IsNullOrEmpty(line) && line[0] != ' ')
                        {
                            --ii;       // Reparse this line, it's the next name
                            currentOption.Description = descriptionBuilder.ToString().Trim();
                            state = OptionParserState.Name;
                        }
                        else
                        {
                            descriptionBuilder.Append(' ');
                            descriptionBuilder.Append(line.Trim());
                        }
                        break;
                    }
                }
                if (currentOption != null && descriptionBuilder != null && (descriptionBuilder.Length > 0))
                {
                    currentOption.Description = descriptionBuilder.ToString();
                }
                StatusText = "Ready";
            }
            finally
            {
                EnableButtons(true);
            }
        }