/** * 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); */ }
public void ApprovedPinRemove(GameObject pin) { //Dropdown pDrop = pin.transform.parent.parent.Find ("AddPinButton").GetComponentInChildren<Dropdown> (); //pDrop.AddOptions (new List<Dropdown.OptionData>(){new Dropdown.OptionData ("Quiz", pin.transform.Find ("ItemIcon").GetComponent<Image> ().sprite)}); //pDrop.GetComponent<PinTabScript>().myOptions.Add (pin.name.Remove (pin.name.Length - "pin".Length)); DataScript ds = GameObject.Find("GaudyBG").GetComponent <DataScript> (); string uniquePath = ""; Debug.Log(pin.transform.name); Transform tempPin = pin.transform; if (!tempPin.GetComponentInParent <HistoryFieldManagerScript> ()) { Transform uniqueParent = tempPin; uniquePath = ""; while (uniqueParent.parent != null && !uniqueParent.parent.name.Equals("Content")) { if (uniqueParent.parent.GetComponent <HistoryFieldManagerScript> () != null) { break; } uniqueParent = uniqueParent.parent; } uniquePath = uniqueParent.name; while (!uniqueParent.name.Equals(ds.GetComponent <TabManager>().getCurrentTab() + "Tab")) { uniqueParent = uniqueParent.parent; if (uniqueParent == null) { break; } uniquePath = uniqueParent.name + "/" + uniquePath; } uniquePath = ds.GetComponent <TabManager>().getCurrentSection() + "/" + uniquePath; } else { while (tempPin != null) { if (tempPin.name.StartsWith("LabEntry:")) { //uniquePath = "LabEntry: " + tempPin.GetSiblingIndex() + uniquePath; uniquePath = tempPin.name + uniquePath; } if (tempPin.name.EndsWith("Tab")) { uniquePath = tempPin.name + "/" + uniquePath; } tempPin = tempPin.parent; } uniquePath = ds.GetComponent <TabManager>().getCurrentSection() + "/" + uniquePath; } Debug.Log("Removing: " + uniquePath); switch (pin.transform.name) { case "DialoguePin": ds.GetDialogues().Remove(uniquePath); break; case "QuizPin": Dictionary <string, string> quizes = ds.GetQuizes(); string quizData = ""; if (quizes.ContainsKey(uniquePath)) { quizData = quizes [uniquePath]; } else { break; } ds.GetQuizes().Remove(uniquePath); List <string> imagesToRemove = new List <string> (); foreach (string key in ds.GetImageKeys()) { if (quizData.Contains("<Image>" + key + "</Image>")) { Debug.Log("Removing image: " + key); imagesToRemove.Add(key); } } foreach (string s in imagesToRemove) { quizes.Remove(s); } break; case "FlagPin": ds.GetFlags().Remove(uniquePath); break; case "EventPin": // Wipe event input break; } if (pin.transform.Find("Item Background Off")) { pin.transform.Find("Item Background Off").gameObject.SetActive(true); pin.transform.Find("Item Background On").gameObject.SetActive(false); } else { Destroy(pin.gameObject); } }