private void NewLanguageDialog()
    {
        string path = EditorUtility.SaveFilePanelInProject("Save new language asset file", "Language", "asset", "");

        if (!string.IsNullOrEmpty(path))
        {
            LanguageUnit lu = ScriptableObject.CreateInstance <LanguageUnit> ();
            lu.keys   = new List <string> ();
            lu.values = new List <string> ();

            AssetDatabase.CreateAsset(lu, path);
            AssetDatabase.SaveAssets();

            tu.updateLanguageFileList();
        }
    }
    // Returns index of key/value pair to be deleted
    private void displayLanguageUnitEditor()
    {
        int          deletionMark = -1;
        LanguageUnit lu           = tu.getLanguageUnit(languagePopupIndex);

        if (lu)
        {
            EditorGUILayout.BeginHorizontal();
            lu.language = EditorGUILayout.TextField("Language", lu.language);
            EditorGUILayout.EndHorizontal();

            for (int i = 0; i < lu.keys.Count; i++)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Key", GUILayout.MaxWidth(30));
                lu.keys [i] = EditorGUILayout.TextField(lu.keys [i]);
                EditorGUILayout.LabelField("String", GUILayout.MaxWidth(50));
                lu.values [i] = EditorGUILayout.TextField(lu.values [i]);

                if (GUILayout.Button("X", GUILayout.MaxWidth(20)))
                {
                    deletionMark = i;
                }

                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Add New String"))
            {
                lu.keys.Add("");
                lu.values.Add("");
            }
            EditorGUILayout.EndHorizontal();

            if (deletionMark != -1)
            {
                GUI.FocusControl(null);
                lu.keys.RemoveAt(deletionMark);
                lu.values.RemoveAt(deletionMark);
                EditorUtility.SetDirty(this);
            }

            EditorUtility.SetDirty(lu);
        }
    }
Example #3
0
    // Language Assets must be stored in the same directory as the Translation Unit
    // When it is asked to update the language file list, the TU will search its
    // directory for language files that are not tracked and add them to the list
    public void updateLanguageFileList()
    {
        string path = UnityEditor.AssetDatabase.GetAssetPath(this);

        if (!string.IsNullOrEmpty(path))
        {
            string assetName = System.IO.Path.GetFileName(path);

            string containingFolder = path.Substring(0, path.Length - (assetName.Length + 1));

            string[] assets = UnityEditor.AssetDatabase.FindAssets("t:LanguageUnit", new string[] { containingFolder });

            languageFiles.Clear();

            for (int i = 0; i < assets.Length; i++)
            {
                LanguageUnit lu = UnityEditor.AssetDatabase.LoadAssetAtPath <LanguageUnit> (UnityEditor.AssetDatabase.GUIDToAssetPath(assets [i]));
                if (!languageFiles.Contains(lu))
                {
                    languageFiles.Add(lu);
                }
            }
        }
    }
Example #4
0
    void OnGUI()
    {
        GUILayout.BeginHorizontal();
        GUILayout.Label("Dialog Tree Editor", EditorStyles.boldLabel);

        if (GUILayout.Button("Open Dialog Tree"))
        {
            OpenDialogTree();
        }

        if (GUILayout.Button("New Dialog Tree"))
        {
            CreateDialogTree();
        }

        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        languageAsset = (LanguageUnit)EditorGUILayout.ObjectField("Language File", languageAsset, typeof(LanguageUnit), false);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        EditorGUILayout.HelpBox("Choosing a language asset allows you to view text previews and choose text strings from the language asset", MessageType.Info);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Search and Copy String Key to Clipboard", EditorStyles.boldLabel);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Search String:", GUILayout.MaxWidth(200));
        search = EditorGUILayout.TextField(search);
        GUILayout.EndHorizontal();

        if (languageAsset != null && !string.IsNullOrEmpty(search))
        {
            for (int i = 0; i < languageAsset.values.Count; i++)
            {
                if (languageAsset.values [i].Contains(search))
                {
                    EditorGUILayout.BeginHorizontal();
                    if (GUILayout.Button("Copy Key", GUILayout.MaxWidth(100)))
                    {
                        EditorGUIUtility.systemCopyBuffer = languageAsset.keys [i];
                    }
                    EditorGUILayout.BeginVertical();
                    GUIStyle wrap = new GUIStyle();
                    wrap.wordWrap = true;
                    EditorGUILayout.LabelField(languageAsset.values [i], wrap);
                    EditorGUILayout.EndVertical();
                    EditorGUILayout.EndHorizontal();
                }
            }
        }

        EditorGUILayout.Space();
        EditorGUILayout.Space();

        if (tree != null)
        {
            // Collapse values for foldouts
            while (collapse.Count < tree.treeNodes.Count)
            {
                collapse.Add(false);
            }

            GUILayout.BeginHorizontal();

            // Node View
            if (GUILayout.Button("Node View"))
            {
                nodeView = true;
                treeView = false;
            }
            if (GUILayout.Button("Tree View"))
            {
                nodeView = false;
                treeView = true;
            }

            GUILayout.EndHorizontal();

            if (nodeView)
            {
                displayNodeView();
            }

            if (treeView)
            {
                displayTreeView();
            }

            EditorUtility.SetDirty(tree);
        }
    }