/** * Adds a new section from the SectionCreatorBG * Pass in the display name */ public void addSection(TextMeshProUGUI sectionName) { if (sectionName.text.Equals("") || sectionName.text.Length == 0) { ds.ShowMessage("Cannot leave step name blank", true); return; } if (!ds.IsValidName(sectionName.text, "Section")) { //ds.ShowMessage ("Section name not valid. Cannot use:\n*, &, <, >, or //", true); throw new System.Exception("Name not valid: Please rename your step"); } string xmlSectionName = sectionName.text.Replace(" ", "_").Replace(GlobalData.EMPTY_WIDTH_SPACE + "", "") + "Section"; //Try to add the section. Return if any errors try { ds.AddSection(xmlSectionName); } catch (System.Exception e) { ds.ShowMessage("Cannot name two steps the same", true); Debug.Log(e.Message); return; } //Create the section button and link it accordingly GameObject newSection = Resources.Load(GlobalData.resourcePath + "/Prefabs/SectionButton") as GameObject; TextMeshProUGUI[] children = newSection.GetComponentsInChildren <TextMeshProUGUI>(); foreach (TextMeshProUGUI child in children) { if (child.name.Equals("SectionLinkToText")) //Where the button links to { child.text = xmlSectionName; } else if (child.name.Equals("SectionDisplayText")) //What the button displays { child.text = sectionName.text; } } newSection.GetComponentInChildren <TMPro.TextMeshProUGUI>().text = sectionName.text; //Spawn in the section button newSection = Instantiate(newSection, SectionButtonContentPar.transform); newSection.name = xmlSectionName.Replace(" ", "_") + "Button"; SectionButtonContentPar.transform.Find("AddSectionButton").SetAsLastSibling(); SectionButtonContentPar.transform.Find("Filler").SetAsLastSibling(); //Spawns/Removes the Background Info tab as needed bool spawn = transform.Find("SectionCreatorPanel/Content/Row1").GetComponentInChildren <Toggle>().isOn; string tabName = ds.GetData(tm.getCurrentSection()).GetTabList().Find((string obj) => obj.StartsWith("Background_InfoTab")); bool tabExists = true; if (tabName == null || tabName.Equals("")) { tabExists = false; } if (BGInfoOption != null) { if (!spawn && tabExists) { ds.GetComponent <EditTabScript>().removeTab(tabName); //reactivate the option to select BG Info from the TabSelector BGInfoOption.gameObject.SetActive(true); } else if (spawn && !tabExists) { AddBGInfoTab("Background Info", xmlSectionName); //deactivate the option to select BG Info from the TabSelector BGInfoOption.gameObject.SetActive(false); } } else if (OverviewInfoOption != null) { if (!spawn && tabExists) { ds.GetComponent <EditTabScript>().removeTab(tabName); //reactivate the option to select BG Info from the TabSelector OverviewInfoOption.gameObject.SetActive(true); } else if (spawn && !tabExists) { AddBGInfoTab("Case Overview", xmlSectionName); //deactivate the option to select BG Info from the TabSelector OverviewInfoOption.gameObject.SetActive(false); } } //Set the section button's icon as the user's choice Sprite spr = null; string imgRefName = ""; Transform[] sectionIcons = transform.Find("SectionCreatorPanel/Content/ScrollView/Viewport/Content").GetComponentsInChildren <Transform>(); foreach (Transform t in sectionIcons) { Toggle tog; if ((tog = t.GetComponent <Toggle>()) != null && tog.isOn) { spr = t.Find("Icon").GetComponent <Image>().sprite; imgRefName = t.Find("Icon").GetComponent <Image>().name; break; } } if (spr != null) { newSection.transform.Find("Image").GetComponent <Image>().sprite = spr; } //Sets the section button's color as the selected color. Toggle[] colorButtons = transform.Find("SectionCreatorPanel/Content/Row3/Column0").GetComponentsInChildren <Toggle>(); foreach (Toggle tog in colorButtons) { if (tog.isOn) { newSection.transform /*.Find ("Image")*/.GetComponent <Image>().color = tog.GetComponent <Image>().color; ds.AddImg(xmlSectionName, imgRefName); ds.GetImage(xmlSectionName).useColor = true; ds.GetImage(xmlSectionName).color = tog.GetComponent <Image>().color; } } //This script is parented to the add section panel, so let's disable it gameObject.SetActive(false); bool startEnabled = true; //Whether you want to switch to tabs upon creation or not //Either switches to the newly created section or stays on the current section if (startEnabled) { tm.SwitchSection(xmlSectionName); } else { Transform[] components = newSection.GetComponentsInChildren <Transform>(); foreach (Transform c in components) { if (!c.name.Equals(newSection.name)) { c.gameObject.SetActive(false); } } newSection.transform.GetChild(0).gameObject.SetActive(true); //The image newSection.GetComponent <Button>().interactable = true; } /* This spawns in a personal info tab by default. Place above startEnabled if needed * //Create the SectionDataScript so the section can hold data and * SectionDataScript sds = new SectionDataScript (); * DefaultDataScript dds = new DefaultDataScript (); * sds.AddData(dds.defaultTab.Replace(" ", "_") + "Tab" + 0, null); * ds.AddData (xmlSectionName, sds.getTabList () [0], null); */ }