private void CleanData()
        {
            // Make sure we have an ID, if not, generate it.
            if (string.IsNullOrEmpty(loadedTranslateData.ID))
            {
                loadedTranslateData.ID = Guid.NewGuid().ToString();
            }

            // Remove all empty data from the loaded TranslateData.
            for (int s = 0; s < loadedTranslateData.TranslateSheets.Count; s++)
            {
                TranslateSheetData sheet = loadedTranslateData.TranslateSheets[s];
                if (sheet.TranslateHashes.Count == 0)
                {
                    loadedTranslateData.TranslateSheets.Remove(sheet);
                    s--;
                }
                else
                {
                    for (int h = 0; h < sheet.TranslateHashes.Count; h++)
                    {
                        TranslateHashData hash = sheet.TranslateHashes[h];
                        if (string.IsNullOrEmpty(hash.Input) ||
                            string.IsNullOrEmpty(hash.Output))
                        {
                            sheet.TranslateHashes.Remove(hash);
                            h--;
                        }
                    }
                }
            }
        }
        public void Initialize(TranslateData translateData, ConfirmationPopupBehaviour confirmationPopupBehaviour)
        {
            CleanUp();

            this.translateData = translateData;
            this.confirmation  = confirmationPopupBehaviour;

            // Set up bindings.
            disposables.Add(new InputFieldBinding(projectNameField, () => translateData.Name, delegate(string value)
            {
                value = value.Trim(' ');
                UpdateProjectName(value);
                SetDirty(true);
            }));
            disposables.Add(new InputFieldBinding(projectDescriptionField, () => translateData.Description, delegate(string value) { translateData.Description = value; SetDirty(true); }));
            disposables.Add(new ButtonBinding(projectDescriptionCollapseButton, () => projectDescriptionField.gameObject.SetActive(!projectDescriptionField.gameObject.activeSelf)));
            disposables.Add(new ButtonBinding(addTranslateSheetButton, delegate
            {
                TranslateSheetData sheetData = new TranslateSheetData();
                translateData.TranslateSheets.Add(sheetData);
                AddTranslateSheetUIElement(sheetData);
            }));

            // Set up UI.
            SetDirty(false);
            UpdateProjectName();
            BuildUI();
        }
Beispiel #3
0
        /// <summary>
        /// Creates a new <see cref="Translator"/> object.
        /// </summary>
        /// <param name="sheet">The data which will be used to translate the given input.</param>
        public Translator(TranslateSheetData sheet)
        {
            // We convert the translate sheet to a dictionary for easy access.
            table = new Dictionary <string, List <TranslateHashData> >();
            for (int i = 0; i < sheet.TranslateHashes.Count; i++)
            {
                TranslateHashData hash = sheet.TranslateHashes[i];
                if (!hash.Enabled || IsEmpty(hash.Output) || IsEmpty(hash.Input))
                {
                    continue;
                }

                if (!table.ContainsKey(hash.Input))
                {
                    table.Add(hash.Input, new List <TranslateHashData>());
                }
                table[hash.Input].Add(sheet.TranslateHashes[i]);

                // We store the longest available hash to get the max-check-length.
                if (hash.Input.Length > longestHash)
                {
                    longestHash = sheet.TranslateHashes[i].Input.Length;
                }
            }
        }
        private void AddTranslateSheetUIElement(TranslateSheetData sheetData)
        {
            TranslateSheetUIElement element = Instantiate(translateSheetUIElementPrefab, contentParent);

            element.Initialize(sheetData);
            spawnedSheets.Add(sheetData, element);
            element.TranslateDataChangedEvent += OnTranslateDataChanged;
            element.RequestDeleteEvent        += OnRequestDeleteTranslateSheetEvent;
        }
 private void OnRequestDeleteTranslateSheetEvent(TranslateSheetData sheetData)
 {
     confirmation.Popup("Please Confirm", "Are you sure you want to delete this translate sheet?", delegate(bool result)
     {
         if (result)
         {
             Destroy(spawnedSheets[sheetData].gameObject);
             spawnedSheets.Remove(sheetData);
             translateData.TranslateSheets.Remove(sheetData);
             OnTranslateDataChanged(this);
             SetDirty(true);
         }
     });
 }
Beispiel #6
0
        public void Initialize(TranslateSheetData sheetData)
        {
            CleanUp();
            this.sheetData = sheetData;

            // Set up bindings.
            disposables.Add(new ToggleBinding(enabledToggle, () => sheetData.Enabled, delegate(bool v) { sheetData.Enabled = v; TranslateDataChangedEvent?.Invoke(this); }));
            disposables.Add(new InputFieldBinding(sheetNameField, () => sheetData.Name, delegate(string t) { sheetData.Name = t; TranslateDataChangedEvent?.Invoke(this); }));
            disposables.Add(new ButtonBinding(deleteSheetButton, () => RequestDeleteEvent?.Invoke(sheetData)));
            disposables.Add(new ButtonBinding(addHashButton, delegate { TranslateHashData hash = new TranslateHashData(); sheetData.TranslateHashes.Add(hash); AddTranslateHashUIElement(hash); }));
            disposables.Add(new ButtonBinding(sortByInputButton, delegate { List <TranslateHashData> orderedList = sheetData.TranslateHashes.OrderBy((x) => x.Input).ToList(); SortHashes(orderedList); }));
            disposables.Add(new ButtonBinding(sortByOutputButton, delegate { List <TranslateHashData> orderedList = sheetData.TranslateHashes.OrderBy((x) => x.Output).ToList(); SortHashes(orderedList); }));
            disposables.Add(new ButtonBinding(sortByHashTypeButton, delegate { List <TranslateHashData> orderedList = sheetData.TranslateHashes.OrderBy((x) => x.HashType.ToString()).ToList(); SortHashes(orderedList); }));

            // Create child translate hash UI elements.
            RebuildUI();
        }