コード例 #1
0
 public void SetPropertyControl()
 {
     SetPropertyControlStatic("Assets Name", fontAssetMapCLI.assetsName);
     SetPropertyControlStatic("Asset Name", fontAssetMapCLI.assetName);
     SetPropertyControlStatic("Container Path", fontAssetMapCLI.containerPath);
     SetPropertyControlStatic("Use Container Path", fontAssetMapCLI.useContainerPath);
     for (int i = 0; i < fontAssetMapCLI.options.Count; i++)
     {
         AssetMapOptionCLI child = fontAssetMapCLI.options[i];
         SetPropertyControlRecursive(ref child);
     }
 }
コード例 #2
0
 public void Refresh()
 {
     PropertiesStackPanel.Children.Clear();
     if (AssetMapOptionCLIsGlobal != null)
     {
         for (int i = 0; i < AssetMapOptionCLIsGlobal.Count; i++)
         {
             AssetMapOptionCLI child = AssetMapOptionCLIsGlobal[i];
             SetPropertyControlRecursive(ref child);
         }
     }
     return;
 }
コード例 #3
0
 private void Grid_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
 {
     if (sender is Grid grid)
     {
         PropertiesStackPanel.Children.Clear();
         if (grid.DataContext is List <AssetMapOptionCLI> assetMapOptionCLIs)
         {
             for (int i = 0; i < assetMapOptionCLIs.Count; i++)
             {
                 AssetMapOptionCLI child = assetMapOptionCLIs[i];
                 SetPropertyControlRecursive(ref child);
             }
         }
     }
 }
コード例 #4
0
        private void OnPasteTextBox(object sender, DataObjectPastingEventArgs e)
        {
            var isText = e.SourceDataObject.GetDataPresent(DataFormats.UnicodeText, true);

            if (!isText)
            {
                return;
            }

            var               text              = e.SourceDataObject.GetData(DataFormats.UnicodeText) as string;
            TextBox           textBox           = sender as TextBox;
            Grid              grid              = textBox.Parent as Grid;
            AssetMapOptionCLI assetMapOptionCLI = grid.DataContext as AssetMapOptionCLI;

            e.CancelCommand();
            assetMapOptionCLI.Value = text;
            OptionChanged(this, new DependencyPropertyChangedEventArgs());
        }
コード例 #5
0
        public void SetPropertyControlRecursive(ref AssetMapOptionCLI fontAssetMapOptionCLI)
        {
            if (fontAssetMapOptionCLI.type == AssetMapOptionCLI.Type.OPTION_TYPE_NONE)
            {
                return;
            }
            Grid grid = new Grid
            {
                DataContext = fontAssetMapOptionCLI,
                Margin      = new Thickness(5)
            };

            grid.GotFocus += Grid_GotFocus;
            ColumnDefinition columnDefinition1 = new ColumnDefinition
            {
                Width = new GridLength(4, GridUnitType.Star)
            };
            ColumnDefinition columnDefinition2 = new ColumnDefinition
            {
                Width = new GridLength(6, GridUnitType.Star)
            };

            grid.ColumnDefinitions.Add(columnDefinition1);
            grid.ColumnDefinitions.Add(columnDefinition2);
            TextBlock textBlock1 = new TextBlock();

            textBlock1.ToolTip = fontAssetMapOptionCLI.OptionName + "\r\n" + fontAssetMapOptionCLI.OptionDescription;
            Grid.SetColumn(textBlock1, 0);
            textBlock1.Text = fontAssetMapOptionCLI.OptionName;
            textBlock1.VerticalAlignment = VerticalAlignment.Center;
            grid.Children.Add(textBlock1);
            PropertiesStackPanel.Children.Add(grid);

            if (fontAssetMapOptionCLI.nestedOptions == null || fontAssetMapOptionCLI.nestedOptions.Count == 0)
            {
                Binding binding = new Binding("Value")
                {
                    Mode = BindingMode.TwoWay
                };

                switch (fontAssetMapOptionCLI.type)
                {
                case AssetMapOptionCLI.Type.OPTION_TYPE_STRING:
                    TextBox textBox1 = new TextBox();
                    textBox1.SetBinding(TextBox.TextProperty, binding);
                    Grid.SetColumn(textBox1, 1);
                    grid.Children.Add(textBox1);

                    break;

                case AssetMapOptionCLI.Type.OPTION_TYPE_INT:
                    TextBox textBox2 = new TextBox();
                    textBox2.PreviewTextInput += TextBoxInteger_PreviewTextInput;
                    textBox2.SetBinding(TextBox.TextProperty, binding);
                    Grid.SetColumn(textBox2, 1);
                    grid.Children.Add(textBox2);

                    break;

                case AssetMapOptionCLI.Type.OPTION_TYPE_DOUBLE:
                    TextBox textBox3 = new TextBox();
                    textBox3.PreviewTextInput += TextBoxDouble_previewTextInput;
                    textBox3.SetBinding(TextBox.TextProperty, binding);
                    Grid.SetColumn(textBox3, 1);
                    grid.Children.Add(textBox3);

                    break;

                case AssetMapOptionCLI.Type.OPTION_TYPE_BOOL:
                    CheckBox checkBox1 = new CheckBox();
                    checkBox1.SetBinding(CheckBox.IsCheckedProperty, binding);
                    Grid.SetColumn(checkBox1, 1);
                    grid.Children.Add(checkBox1);
                    break;
                }
            }
            else
            {
                Binding binding = new Binding("Value")
                {
                    Mode = BindingMode.TwoWay
                };
                switch (fontAssetMapOptionCLI.type)
                {
                case AssetMapOptionCLI.Type.OPTION_TYPE_STRING:
                    ComboBox comboBox1 = new ComboBox();
                    Grid.SetColumn(comboBox1, 1);
                    List <string> vs1 = new List <string>();
                    foreach (AssetMapOptionCLI fontAssetMapOptionCLIChild in fontAssetMapOptionCLI.nestedOptions)
                    {
                        if (fontAssetMapOptionCLIChild.ValueAsChild != null)
                        {
                            vs1.Add((string)fontAssetMapOptionCLIChild.ValueAsChild);
                        }
                    }
                    comboBox1.ItemsSource = vs1;
                    comboBox1.SetBinding(ComboBox.SelectedItemProperty, binding);
                    grid.Children.Add(comboBox1);
                    if (fontAssetMapOptionCLI.Value != null)
                    {
                        string valueAsChild = (string)fontAssetMapOptionCLI.Value;
                        int    findIndex    = fontAssetMapOptionCLI.nestedOptions.FindIndex(x => (string)x.ValueAsChild == valueAsChild);
                        if (findIndex > -1)
                        {
                            AssetMapOptionCLI found = fontAssetMapOptionCLI.nestedOptions[findIndex];
                            comboBox1.SelectedItem = (string)(found).ValueAsChild;
                            SetPropertyControlRecursive(ref found);
                        }
                        else
                        {
                            comboBox1.IsEditable = true;
                            comboBox1.IsReadOnly = true;
                            comboBox1.Text       = "(Select " + fontAssetMapOptionCLI.OptionName + ")";
                        }
                    }
                    else
                    {
                        comboBox1.IsEditable = true;
                        comboBox1.IsReadOnly = true;
                        comboBox1.Text       = "(Select " + fontAssetMapOptionCLI.OptionName + ")";
                    }
                    comboBox1.SelectionChanged += ComboBox_SelectionChanged;

                    break;

                case AssetMapOptionCLI.Type.OPTION_TYPE_INT:
                    ComboBox comboBox2 = new ComboBox();
                    comboBox2.SetBinding(ComboBox.SelectedItemProperty, binding);
                    Grid.SetColumn(comboBox2, 1);
                    List <int> vs2 = new List <int>();
                    foreach (AssetMapOptionCLI fontAssetMapOptionCLIChild in fontAssetMapOptionCLI.nestedOptions)
                    {
                        if (fontAssetMapOptionCLIChild.ValueAsChild != null)
                        {
                            vs2.Add((int)fontAssetMapOptionCLIChild.ValueAsChild);
                        }
                    }
                    comboBox2.ItemsSource = vs2;
                    comboBox2.SetBinding(ComboBox.SelectedItemProperty, binding);
                    grid.Children.Add(comboBox2);
                    if (fontAssetMapOptionCLI.Value != null)
                    {
                        int valueAsChild = (int)fontAssetMapOptionCLI.Value;
                        int findIndex    = fontAssetMapOptionCLI.nestedOptions.FindIndex(x => (int)x.ValueAsChild == valueAsChild);
                        if (findIndex > -1)
                        {
                            AssetMapOptionCLI found = fontAssetMapOptionCLI.nestedOptions[findIndex];
                            comboBox2.SelectedItem = (int)(found).ValueAsChild;
                            SetPropertyControlRecursive(ref found);
                        }
                        else
                        {
                            comboBox2.IsEditable = true;
                            comboBox2.IsReadOnly = true;
                            comboBox2.Text       = "(Select " + fontAssetMapOptionCLI.OptionName + ")";
                        }
                    }
                    else
                    {
                        comboBox2.IsEditable = true;
                        comboBox2.IsReadOnly = true;
                        comboBox2.Text       = "(Select " + fontAssetMapOptionCLI.OptionName + ")";
                    }
                    comboBox2.SelectionChanged += ComboBox_SelectionChanged;
                    break;

                case AssetMapOptionCLI.Type.OPTION_TYPE_DOUBLE:
                    ComboBox comboBox3 = new ComboBox();
                    comboBox3.SetBinding(ComboBox.SelectedItemProperty, binding);
                    Grid.SetColumn(comboBox3, 1);
                    List <double> vs3 = new List <double>();
                    foreach (AssetMapOptionCLI fontAssetMapOptionCLIChild in fontAssetMapOptionCLI.nestedOptions)
                    {
                        if (fontAssetMapOptionCLIChild.ValueAsChild != null)
                        {
                            vs3.Add((double)fontAssetMapOptionCLIChild.ValueAsChild);
                        }
                    }
                    comboBox3.ItemsSource = vs3;
                    comboBox3.SetBinding(ComboBox.SelectedItemProperty, binding);
                    grid.Children.Add(comboBox3);
                    if (fontAssetMapOptionCLI.Value != null)
                    {
                        double valueAsChild = (double)fontAssetMapOptionCLI.Value;
                        int    findIndex    = fontAssetMapOptionCLI.nestedOptions.FindIndex(x => (double)x.ValueAsChild == valueAsChild);
                        if (findIndex > -1)
                        {
                            AssetMapOptionCLI found = fontAssetMapOptionCLI.nestedOptions[findIndex];
                            comboBox3.SelectedItem = (int)(found).ValueAsChild;
                            SetPropertyControlRecursive(ref found);
                        }
                        else
                        {
                            comboBox3.IsEditable = true;
                            comboBox3.IsReadOnly = true;
                            comboBox3.Text       = "(Select " + fontAssetMapOptionCLI.OptionName + ")";
                        }
                    }
                    else
                    {
                        comboBox3.IsEditable = true;
                        comboBox3.IsReadOnly = true;
                        comboBox3.Text       = "(Select " + fontAssetMapOptionCLI.OptionName + ")";
                    }
                    comboBox3.SelectionChanged += ComboBox_SelectionChanged;
                    break;

                case AssetMapOptionCLI.Type.OPTION_TYPE_BOOL:
                    CheckBox checkBox1 = new CheckBox();
                    checkBox1.SetBinding(CheckBox.IsCheckedProperty, binding);
                    Grid.SetColumn(checkBox1, 1);
                    grid.Children.Add(checkBox1);
                    if (fontAssetMapOptionCLI.Value != null)
                    {
                        bool valueAsChild = (bool)fontAssetMapOptionCLI.Value;
                        int  findIndex    = fontAssetMapOptionCLI.nestedOptions.FindIndex(x => (bool)x.ValueAsChild == valueAsChild);
                        if (findIndex > -1)
                        {
                            AssetMapOptionCLI found = fontAssetMapOptionCLI.nestedOptions[findIndex];
                            checkBox1.IsChecked = (bool)(found).ValueAsChild;
                            SetPropertyControlRecursive(ref found);
                        }
                        else
                        {
                            checkBox1.IsChecked = false;
                        }
                    }
                    else
                    {
                        checkBox1.IsChecked = false;
                    }
                    checkBox1.Checked   += CheckBox_Checked;
                    checkBox1.Unchecked += CheckBox_Checked;
                    break;
                }
            }
        }