private void CreateGrid() { ThreadHelper.ThrowIfNotOnUIThread(); EditorUtils.EditorMode editorMode = EditorUtils.GetEditorMode(); PropertyInfo[] properties = typeof(SolutionSettings).GetProperties(); foreach (PropertyInfo property in properties) { var customAttributes = (UIDescription[])property.GetCustomAttributes(typeof(UIDescription), true); UIDescription description = (customAttributes.Length > 0 && customAttributes[0] != null)? customAttributes[0] : null; if (description != null && description.EditorModeFilter != EditorUtils.EditorMode.None && description.EditorModeFilter != editorMode) { continue; } var elementGrid = new Grid(); elementGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(170) }); elementGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) }); var label = new Label(); label.Content = description == null || description.Label == null ? property.Name : description.Label; label.ToolTip = description == null? null : description.Tooltip; Grid.SetColumn(label, 0); elementGrid.Children.Add(label); if (property.PropertyType == typeof(string)) { var inputControl = new TextBox(); inputControl.VerticalAlignment = VerticalAlignment.Center; inputControl.SetBinding(TextBox.TextProperty, new Binding("Options." + property.Name)); inputControl.Margin = new Thickness(5); Grid.SetColumn(inputControl, 1); elementGrid.Children.Add(inputControl); } else if (property.PropertyType == typeof(bool)) { var inputControl = new CheckBox(); inputControl.VerticalAlignment = VerticalAlignment.Center; inputControl.SetBinding(CheckBox.IsCheckedProperty, new Binding("Options." + property.Name)); inputControl.Margin = new Thickness(5); Grid.SetColumn(inputControl, 1); elementGrid.Children.Add(inputControl); } optionStack.Children.Add(elementGrid); } }
private IExtractor GetProjectExtractor() { ThreadHelper.ThrowIfNotOnUIThread(); var customSettings = SettingsManager.Instance.Settings; if (customSettings == null || customSettings.AutomaticExtraction) { switch (EditorUtils.GetEditorMode()) { case EditorUtils.EditorMode.UnrealEngine: return(new ExtractorUnreal()); case EditorUtils.EditorMode.VisualStudio: return(new ExtractorVisualStudio()); case EditorUtils.EditorMode.CMake: return(new ExtractorCMake()); } } else { return(new ExtractorManual()); } return(null); }