Beispiel #1
0
 //***********************************************************************
 //чтение из произвольного файла
 public void btn_LoadFromOtherFile()
 {
     MessageBox.ShowMessage(
         () => {
         string file_path = EditorUtility.OpenFilePanel("Выберите файл древа(json)", "", "json");
         //Debug.Log("file=" + file_path + ", ext="+ Path.GetExtension(file_path));
         if (file_path.Length != 0)
         {
             if (Path.GetExtension(file_path) != ".json")
             {
                 MessageBox.ShowMessage(() => {}, "Файл не json-формата.");
             }
             else
             {
                 try
                 {
                     ReloadFromFile(file_path);
                     JsonSkillsTreeNode[] new_nodes = SkillsTreeFile.ListsToArray();
                     MessageBox.ShowMessage(() => { }, "Файл загружен. Нодов: " + new_nodes.Length);
                 }
                 catch
                 {
                     MessageBox.ShowMessage(() => { }, "Ошибка при загрузки файла. Некорректный файл древа скилов.");
                 }
             }
         }
     },
         "Хотите загрузить данные из другого файла? Все изменения будут отменены",
         true
         );
 }
    //***********************************************************************
    public void btn_RenumAllElements()
    {
        SkillsTreeFile.renumAllElements(curCatID);
        int elm_id = curElmID;

        refresh_all();
        Set_Element_Active(elm_id);
    }
Beispiel #3
0
    public void ReloadFromFile(string file = "")
    {
        //загрузка дерева из файла в статичный класс дерева (через него будет доступ к файлу)
        SkillsTreeFile.Load(file);
        //заполнение списков в классах-графах категорий и элементов
        scElements.reloadFromFile();
        scCategories.reloadFromFile();

        //обновление графа категорий + элементов текущей категории
        scCategories.RefreshGrap();
    }
Beispiel #4
0
 //***********************************************************************
 //чтение из файла
 public void btn_LoadFromFile()
 {
     MessageBox.ShowMessage(
         () => {
         ReloadFromFile();
         JsonSkillsTreeNode[] new_nodes = SkillsTreeFile.ListsToArray();
         MessageBox.ShowMessage(() => {}, "Файл загружен. Нодов: " + new_nodes.Length);
     },
         "Хотите загрузить данные из файла? Все изменения будут отменены",
         true
         );
 }
Beispiel #5
0
 //***********************************************************************
 public void btn_Delete_Category()
 {
     MessageBox.ShowMessage(
         () => {
         int num = SkillsTreeFile.deleteCategoryAndSubnodes(curCatID);
         //обновление списка и графа
         refresh_all();
         MessageBox.ShowMessage(() => {}, "Нодов удалено: " + num);
     },
         "Действительно хотите удалить выбранную категорию? " +
         "В этом случае все ее ПОДКАТЕГОРИИ и их ЭЛЕМЕНТЫ будут удалены, " +
         "также будут удалены элементы текущей категории.",
         true
         );
 }
Beispiel #6
0
 //***********************************************************************
 //запись в файл
 public void btn_SaveToFile()
 {
     MessageBox.ShowMessage(
         () => {
         int num = SkillsTreeFile.Save();
         MessageBox.ShowMessage(
             () => {
         },
             "Запись в файл произведена. Сохранено " + num + " нодов."
             );
     },
         "Хотите произвести запись всех изменений в файл?",
         true
         );
 }
Beispiel #7
0
    //***********************************************************************
    //  TESTS
    //***********************************************************************

    void test_save_json_skill_tre()
    {
        JsonSkillsTreeNode[] skills = new JsonSkillsTreeNode[10];
        skills[0] = SkillsTreeFile.create_one_node(1, 0, 1, "Категория 1", "кор. описание к1", "полное описание к1");
        skills[1] = SkillsTreeFile.create_one_node(2, 0, 1, "Категория 2", "кор. описание к2", "полное описание к2");
        skills[2] = SkillsTreeFile.create_one_node(3, 1, 1, "Категория 1.1", "кор. описание к1.1", "полное описание к1.1");
        skills[3] = SkillsTreeFile.create_one_node(4, 1, 1, "Категория 1.2", "кор. описание к1.2", "полное описание к1.2");

        skills[4] = SkillsTreeFile.create_one_node(5, 3, 0, "Элемент 1.1.1", "кор. описание 1.1.1", "полное описание 1.1.1");
        skills[5] = SkillsTreeFile.create_one_node(6, 3, 0, "Элемент 1.1.2", "кор. описание 1.1.2", "полное описание 1.1.2");

        skills[6] = SkillsTreeFile.create_one_node(7, 2, 1, "Категория 2.1", "кор. описание к2.1", "полное описание к2.1");
        skills[7] = SkillsTreeFile.create_one_node(8, 2, 1, "Категория 2.2", "кор. описание к2.2", "полное описание к2.2");


        skills[8] = SkillsTreeFile.create_one_node(9, 7, 0, "Элемент 2.1.1", "кор. описание 2.1.1", "полное описание 2.1.1");
        skills[9] = SkillsTreeFile.create_one_node(10, 7, 0, "Элемент 2.1.2", "кор. описание 2.1.2", "полное описание 2.1.2");

        SkillsTreeFile.SaveOtherNodes(skills);
    }
 //***********************************************************************
 public void btn_Delete_Element()
 {
     if (elmsCurCat.Count > 0)
     {
         MessageBox.ShowMessage(
             () =>
         {
             int elm_id = curElmID;
             SkillsTreeFile.deleteElement(curElmID);
             //обновление списка и графа
             refresh_all();
             MessageBox.ShowMessage(
                 () => { },
                 "Удален элемент #" + elm_id
                 );
         },
             "Действительно хотите удалить выбранный элемент?",
             true
             );
     }
 }
Beispiel #9
0
    //***********************************************************************
    //запись в файл как ...
    public void btn_SaveAs()
    {
        var path = EditorUtility.SaveFilePanel(
            "Сохранить древо в файл",
            "",
            "SkillsTree_new.json",
            "json");

        if (path.Length != 0)
        {
            if (Path.GetExtension(path) != ".json")
            {
                MessageBox.ShowMessage(() => { }, "Файл должен быть json-формата.");
            }
            else
            {
                int num = SkillsTreeFile.Save(path);
                MessageBox.ShowMessage(
                    () => {},
                    "Запись в файл (" + path + ") произведена. Сохранено " + num + " нодов."
                    );
            }
        }
    }
Beispiel #10
0
    //***********************************************************************
    //кнопка сохранить
    public void btn_Save_FormCategory()
    {
        // 1 получение данных с формы в node
        JsonSkillsTreeNode formNode = new JsonSkillsTreeNode();
        //поле родитель
        TMP_Dropdown popup_parent_dropdown = pnl_form.transform.Find("pnl_parent").GetComponentInChildren <TMP_Dropdown>();
        string       tmp = popup_parent_dropdown.captionText.text;

        formNode.parent_id = myUtils.SplitStringAndGetFromIndx(tmp, new char[] { ':' }, 0);

        //поле тип
        Toggle[] togls = pnl_form.transform.Find("pnl_type").GetComponentsInChildren <Toggle>();
        formNode.is_category = togls[0].isOn ? 1 : 0;
        //поле: сортировка
        TMP_InputField tmptxt = pnl_form.transform.Find("pnl_sort").GetComponentInChildren <TMP_InputField>();

        Int32.TryParse(tmptxt.text, out formNode.sort);

        //поле: название
        tmptxt        = pnl_form.transform.Find("pnl_name").GetComponentInChildren <TMP_InputField>();
        formNode.name = tmptxt.text;

        //поле: изображение
        tmptxt         = pnl_form.transform.Find("pnl_image").GetComponentInChildren <TMP_InputField>();
        formNode.image = tmptxt.text;

        //поле: короткое описание
        tmptxt = pnl_form.transform.Find("pnl_small_desc").GetComponentInChildren <TMP_InputField>();
        formNode.short_desc = tmptxt.text;

        //поле: полное описание
        tmptxt             = pnl_form.transform.Find("pnl_full_desc").GetComponentInChildren <TMP_InputField>();
        formNode.full_desc = tmptxt.text;

        Debug.Log(formNode);

        List <String> Errors = new List <string>();

        //2 проверка не пустые ли данные
        if (formNode.is_category != 1)
        {
            Errors.Add("Тип ноды должен быть категория.");
        }
        if (formNode.name.Length < 5)
        {
            Errors.Add("Название должно быть не меньше 5 символов.");
        }
        if (formNode.short_desc.Length < 10 || formNode.full_desc.Length < 10)
        {
            Errors.Add("Описание (короткое или полное) должно быть не меньше 10 символов.");
        }

        //Errors.Add("Тестовая ошибка какая-то еще какой-то текст плюс еще какой-то текст и еще текст.");

        if (Errors.Count > 0)
        {
            //найдены ошибки - показ сообщения об этом
            MessageBox.ShowMessage(() => { }, string.Join("\n", Errors.ToArray()));
        }
        else
        {
            //все ок сохранение данных и закрытие формы
            pnl_popups_backfon.SetActive(false);


            if (popup_is_new == 1)
            {
                formNode.id = 0;
            }
            else
            {
                formNode.id = curCatID;
            }
            curCatID = SkillsTreeFile.addEditCategory(formNode);
            //обновление списка и графа
            refresh_all();
        }
    }
Beispiel #11
0
 //***********************************************************************
 public void btn_RenumAllCats()
 {
     SkillsTreeFile.renumAllCats();
     refresh_all();
 }