// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System.ComponentModel;
using FlaxEditor.CustomEditors;
using FlaxEditor.CustomEditors.Elements;
using FlaxEditor.GUI;
using FlaxEngine;
namespace FlaxEditor.Options
{
///
/// Source code options data container.
///
[CustomEditor(typeof(Editor))]
public sealed class SourceCodeOptions
{
///
/// Editor for the editing of the editable SourceCodeEditor property.
///
///
internal class SourceCodeEditorEditor : CustomEditor
{
private ComboBoxElement _combobox;
///
public override DisplayStyle Style => DisplayStyle.Inline;
///
public override void Initialize(LayoutElementsContainer layout)
{
var editors = Editor.Instance.CodeEditing.Editors;
var options = new string[editors.Count + 1];
options[0] = "None";
for (int i = 0; i < editors.Count; i++)
{
options[i + 1] = editors[i].Name;
}
_combobox = layout.ComboBox();
_combobox.ComboBox.SetItems(options);
_combobox.ComboBox.SelectedItem = (string)Values[0];
_combobox.ComboBox.SelectedIndexChanged += OnComboBoxSelectedIndexChanged;
}
private void OnComboBoxSelectedIndexChanged(ComboBox combobox)
{
SetValue(combobox.SelectedItem);
}
///
public override void Refresh()
{
_combobox.ComboBox.SelectedItem = (string)Values[0];
base.Refresh();
}
}
///
/// Gets or sets the source code editing IDE to use for project and source files accessing.
///
[DefaultValue("Default"), CustomEditor(typeof(SourceCodeEditorEditor))]
[EditorDisplay("Project Files"), EditorOrder(100), Tooltip("The source code editing IDE to use for project and source files accessing.")]
public string SourceCodeEditor { get; set; } = "Default";
///
/// Gets or sets a value indicating whether automatically generate scripts project files when adding/removing/moving scripts in Editor.
///
[DefaultValue(true)]
[EditorDisplay("Project Files"), EditorOrder(150), Tooltip("Determines whether automatically generate scripts project files when adding/removing/moving scripts in Editor.")]
public bool AutoGenerateScriptsProjectFiles { get; set; } = true;
}
}