示例#1
0
        private Grid GetGridForInput(SnippetInput input)
        {
            var newInputGrid = new Grid();

            newInputGrid.Visibility = Visibility.Visible;
            newInputGrid.ColumnDefinitions.Add(new ColumnDefinition());
            newInputGrid.ColumnDefinitions.Add(new ColumnDefinition());
            newInputGrid.ColumnDefinitions.Add(new ColumnDefinition());
            newInputGrid.ColumnDefinitions.Add(new ColumnDefinition());
            newInputGrid.ColumnDefinitions.Add(new ColumnDefinition());
            newInputGrid.ColumnDefinitions.Add(new ColumnDefinition());
            newInputGrid.RowDefinitions.Add(new RowDefinition());

            var variableName = new TextBox();

            variableName.Text = input.VariableName;
            newInputGrid.Children.Add(variableName);
            Grid.SetColumn(variableName, 0);

            var friendlyName = new TextBox();

            friendlyName.Text = input.FriendlyName;
            newInputGrid.Children.Add(friendlyName);
            Grid.SetColumn(friendlyName, 1);

            var description = new TextBox();

            description.Text = input.Description;
            newInputGrid.Children.Add(description);
            Grid.SetColumn(description, 2);

            var type = new ComboBox();

            type.DisplayMemberPath = "Value";
            type.SelectedValuePath = "Key";
            var availableTypes = TypeService.GetAvailableTypes().ToDictionary(x => x.ID, x => x.Name);

            type.ItemsSource   = availableTypes;
            type.SelectedValue = input.TypeID;
            newInputGrid.Children.Add(type);
            Grid.SetColumn(type, 3);

            var optional = new CheckBox();

            optional.IsChecked = input.IsOptional;
            newInputGrid.Children.Add(optional);
            Grid.SetColumn(optional, 4);

            var remove = new Button();

            remove.Content = "Remove";
            remove.Click  += (sender, args) =>
            {
                InputStack.Children.Remove(newInputGrid);
            };
            newInputGrid.Children.Add(remove);
            Grid.SetColumn(remove, 5);

            return(newInputGrid);
        }
示例#2
0
        private bool AreRunInputsValid()
        {
            var availableTypes = TypeService.GetAvailableTypes();

            foreach (var child in RunInputs.Children)
            {
                var grid = child as Grid;
                if (grid != null)
                {
                    var typeID   = ((Label)grid.Children[2]).Content.ToString();
                    var thisType = availableTypes.First(x => x.ID == Guid.Parse(typeID));

                    if (!thisType.HasMultipleValues)
                    {
                        var value = ((TextBox)grid.Children[1]).Text;

                        if (!String.IsNullOrEmpty(thisType.Regex))
                        {
                            var regex = new Regex(thisType.Regex);
                            if (!regex.IsMatch(value))
                            {
                                return(false);
                            }
                        }
                    }
                    else
                    {
                        return(true);
                    }
                }
            }
            return(true);
        }
示例#3
0
        private Grid GetRunInputGridForInput(SnippetInput input)
        {
            var newInputGrid = new Grid();

            newInputGrid.Visibility = Visibility.Visible;
            newInputGrid.ColumnDefinitions.Add(new ColumnDefinition());
            newInputGrid.ColumnDefinitions.Add(new ColumnDefinition());
            newInputGrid.ColumnDefinitions.Add(new ColumnDefinition());
            newInputGrid.RowDefinitions.Add(new RowDefinition());

            var friendlyName = new Label();

            friendlyName.Content = input.FriendlyName;
            newInputGrid.Children.Add(friendlyName);
            Grid.SetColumn(friendlyName, 0);

            var type = TypeService.GetAvailableTypes().First(x => x.ID == input.TypeID);

            if (!type.HasMultipleValues)
            {
                var friendlyNameInput = new TextBox();
                newInputGrid.Children.Add(friendlyNameInput);
                Grid.SetColumn(friendlyNameInput, 1);
            }
            else
            {
                var listDropDown = new ComboBox();
                if (type.ListValues.Count == 1)
                {
                    listDropDown.ItemsSource = type.ListValues.First().Value;
                }
                else
                {
                    var items = new List <Item>();
                    foreach (var listSection in type.ListValues)
                    {
                        foreach (var element in listSection.Value)
                        {
                            items.Add(new Item(element, listSection.Key));
                        }
                    }

                    var listCollection = new ListCollectionView(items);
                    listCollection.GroupDescriptions.Add(new PropertyGroupDescription("Category"));
                    listDropDown.ItemsSource = listCollection;
                }
                newInputGrid.Children.Add(listDropDown);
                Grid.SetColumn(listDropDown, 1);
            }

            var id = new Label();

            id.Content    = input.TypeID;
            id.Visibility = Visibility.Collapsed;
            newInputGrid.Children.Add(id);
            Grid.SetColumn(id, 2);

            return(newInputGrid);
        }
示例#4
0
        private Dictionary <string, string> GetRunInputsFromUI()
        {
            var output         = new Dictionary <string, string>();
            var availableTypes = TypeService.GetAvailableTypes();
            var inputs         = GetInputsFromUI();

            foreach (var child in RunInputs.Children)
            {
                var grid = child as Grid;
                if (grid != null)
                {
                    var typeID   = ((Label)grid.Children[2]).Content.ToString();
                    var thisType = availableTypes.First(x => x.ID == Guid.Parse(typeID));

                    if (thisType.ID.ToString() == TypeService.SecretTypeID)
                    {
                        var variableFriendlyName = ((Label)grid.Children[0]).Content as String;
                        var value        = ((ComboBox)grid.Children[1]).SelectedValue.ToString();
                        var variableName = inputs.First(x => x.FriendlyName == variableFriendlyName).VariableName;

                        var vaults = OpenFileService.GetOpenVaults();
                        foreach (var vault in vaults)
                        {
                            // This is a bug - we need to use the secret's ID to look it up later
                            // once support for multiple vaults is added.
                            if (vault.Vault.Secrets.Any(x => x.Key == value))
                            {
                                var secret = vault.Vault.Secrets.First(x => x.Key == value);
                                output.Add(variableName, secret.Value);
                            }
                        }

                        continue;
                    }

                    if (!thisType.HasMultipleValues)
                    {
                        var variableFriendlyName = ((Label)grid.Children[0]).Content as String;
                        var value        = ((TextBox)grid.Children[1]).Text;
                        var variableName = inputs.First(x => x.FriendlyName == variableFriendlyName).VariableName;
                        output.Add(variableName, value);
                    }
                    else
                    {
                        var variableFriendlyName = ((Label)grid.Children[0]).Content as String;
                        var value        = ((ComboBox)grid.Children[1]).SelectedValue.ToString();
                        var variableName = inputs.First(x => x.FriendlyName == variableFriendlyName).VariableName;
                        output.Add(variableName, value);
                    }
                }
            }
            return(output);
        }