Exemple #1
0
        public void OnGUI()
        {
            _scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition);
            EditorGUILayout.BeginVertical();
            {
                EditorGUILayout.LabelField("Select template:");

                var templates = CustomScriptTemplate.GetTemplateNames();
                _selectedTemplateIndex = EditorGUILayout.Popup(_selectedTemplateIndex, templates);

                EditorGUILayout.LabelField("Script names (one in each line):");
                _scriptsToCreate = EditorGUILayout.TextArea(_scriptsToCreate);

                EditorGUILayout.Separator();

                if (GUILayout.Button("Create"))
                {
                    if (templates.Length > 0)
                    {
                        var scriptNames = _scriptsToCreate.Split('\n');
                        foreach (var scriptName in scriptNames)
                        {
                            if (!string.IsNullOrEmpty(scriptName))
                            {
                                CustomScriptTemplate.CreateScriptFromTemplate(GetNewScriptPath(), scriptName, templates[_selectedTemplateIndex]);
                            }
                        }
                        AssetDatabase.Refresh();
                        Close();
                    }
                }
            }
            EditorGUILayout.EndVertical();
            EditorGUILayout.EndScrollView();
        }
Exemple #2
0
        private void OnGUI()
        {
            EditorGUILayout.LabelField("Enter script name:");

            GUI.SetNextControlName("ScriptName");
            _scriptName = GUILayout.TextField(_scriptName);
            GUI.FocusControl("ScriptName");

            if (GUILayout.Button("Create"))
            {
                CustomScriptTemplate.CreateScriptFromTemplate(GetNewScriptPath(), _scriptName, "Namespaced");
                AssetDatabase.Refresh();
                Close();
            }

            if (Event.current != null && Event.current.isKey)
            {
                // Return or Enter event
                if (Event.current.keyCode == KeyCode.Return || Event.current.keyCode == KeyCode.KeypadEnter)
                {
                    CustomScriptTemplate.CreateScriptFromTemplate(GetNewScriptPath(), _scriptName, "Namespaced");
                    AssetDatabase.Refresh();
                    Close();
                }

                // Escape event
                if (Event.current.keyCode == KeyCode.Escape)
                {
                    Close();
                }
            }
        }
 private void Awake()
 {
     _templatesDirectory     = CustomScriptTemplate.GetTemplatesDirectory();
     _namespaceRootDirectory = CustomScriptTemplate.GetNamespaceRootDir();
     _namespacePrefix        = CustomScriptTemplate.GetNamespacePrefix();
 }
        void OnGUI()
        {
            _scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition);
            EditorGUILayout.BeginVertical();
            {
                /* === TEMPLATES === */

                EditorGUILayout.Separator();
                EditorGUILayout.LabelField("Templates", new GUIStyle()
                {
                    fontSize = 16
                });

                var templates = CustomScriptTemplate.GetTemplateNames();

                if (templates.Length > 0)
                {
                    _selectedTemplateIndex = EditorGUILayout.Popup(_selectedTemplateIndex, templates);

                    if (templates != null && templates.Length > 0 && _readTemplate != _selectedTemplateIndex)
                    {
                        var selectedScriptName = templates[_selectedTemplateIndex];
                        _editTemplate = File.ReadAllText(GetTemplatePath(selectedScriptName));
                        _readTemplate = _selectedTemplateIndex;
                    }
                    _editTemplate = EditorGUILayout.TextArea(_editTemplate);

                    if (GUILayout.Button("Open in editor") && templates != null && templates.Length > 0)
                    {
                        System.Diagnostics.Process.Start($"{Directory.GetCurrentDirectory()}/{GetTemplatePath(templates[_selectedTemplateIndex])}");
                    }

                    if (GUILayout.Button("Save") && templates != null && templates.Length > 0)
                    {
                        File.WriteAllText(GetTemplatePath(templates[_selectedTemplateIndex]), _editTemplate);
                    }

                    if (GUILayout.Button("Delete") && templates != null && templates.Length > 0)
                    {
                        CustomScriptTemplate.DeleteTemplate(templates[_selectedTemplateIndex]);
                        AssetDatabase.Refresh();

                        _selectedTemplateIndex = 0;
                        _readTemplate          = -1;
                        _editTemplate          = "";
                    }
                }
                else
                {
                    EditorGUILayout.Separator();
                    EditorGUILayout.LabelField("No templates created.");
                    EditorGUILayout.Separator();
                }

                /* === CREATE NEW TEMPLATE === */

                EditorGUILayout.Separator();
                EditorGUILayout.LabelField("Create new template", new GUIStyle()
                {
                    fontSize = 16
                });

                EditorGUILayout.LabelField("Template name:");
                _createTemplateName = EditorGUILayout.TextField(_createTemplateName);
                if (GUILayout.Button("Create"))
                {
                    CustomScriptTemplate.CreateTemplate(_createTemplateName);
                    AssetDatabase.Refresh();
                }

                /* === SETTINGS === */

                EditorGUILayout.Separator();
                EditorGUILayout.LabelField("Settings", new GUIStyle()
                {
                    fontSize = 16
                });
                EditorGUILayout.LabelField("Templates directory (relative to Assets):");
                var templatesDirectory = EditorGUILayout.TextField(_templatesDirectory);
                if (templatesDirectory != _templatesDirectory)
                {
                    _templatesDirectory = templatesDirectory;
                    CustomScriptTemplate.SetTemplatesDirectory(_templatesDirectory);
                }

                EditorGUILayout.LabelField("Namespace root directory (relative to Assets):");
                var namespaceRootDir = EditorGUILayout.TextField(_namespaceRootDirectory);
                if (namespaceRootDir != _namespaceRootDirectory)
                {
                    _namespaceRootDirectory = namespaceRootDir;
                    CustomScriptTemplate.SetNamespaceRootDir(_namespaceRootDirectory);
                }

                EditorGUILayout.LabelField("Namespace prefix:");
                var namespacePrefix = EditorGUILayout.TextField(_namespacePrefix);
                if (namespacePrefix != _namespacePrefix)
                {
                    _namespacePrefix = namespacePrefix;
                    CustomScriptTemplate.SetNamespacePrefix(_namespacePrefix);
                }
            }
            EditorGUILayout.EndVertical();
            EditorGUILayout.EndScrollView();
        }
 private string GetTemplatePath(string templateName)
 {
     return(CustomScriptTemplate.GetTemplatePath(templateName));
 }