Beispiel #1
0
        public Editor(STBLXMLEntry stblEntry = null)
        {
            if (stblEntry != null)
            {
                STBLEntry = stblEntry;
            }

            InitializeComponent();

            IdentifierTextBox.Text = STBLEntry.Identifier;

            LastKeyValue               = STBLEntry.Key;
            KeyDecimalTextBox.Text     = STBLEntry.Key.ToString();
            KeyHexadecimalTextBox.Text = STBLEntry.Key.ToString("x").ToUpper();

            foreach (STBL.Languages language in STBL.GetAllLanguages())
            {
                string languageText = STBLEntry.GetText(language);

                CurrentLanguageStrings[language] = Tools.NormalizeLineEndings(languageText);
                CurrentLanguageStates[language]  = languageText != null ? true : false;
            }

            Forms.SetupLanguageComboBox(LanguageSelector, DefaultLanguage);
        }
Beispiel #2
0
        public static void AddEntry(STBLXMLEntry entry)
        {
            entry.IsDirtyable  = true;
            entry.EntryIsDirty = true;

            Data.Entries.Add(entry);

            SortEntries();
        }
        public void ScrollToItem(STBLXMLEntry entry, bool selectItem = false)
        {
            DataGridViewRow entryRow = FindRow(entry);

            if (entryRow != null)
            {
                ScrollToItem(entryRow, selectItem: selectItem);
            }
        }
        public void RemoveItem(DataGridViewRow entryRow)
        {
            STBLXMLEntry entry = FindEntry(entryRow);

            Loading.Data.Entries.Remove(entry);

            BrowserGridView.Rows.Remove(entryRow);

            InvokeItemCountUpdateEvent();
            InvokeSelectedCountUpdateEvent();
        }
        public DataGridViewRow FindRow(STBLXMLEntry entry)
        {
            for (int entryRowIndex = 0; entryRowIndex < BrowserGridView.Rows.Count; entryRowIndex++)
            {
                if ((BrowserGridView.Rows[entryRowIndex].DataBoundItem as EntryWrapper)?.STBLEntry == entry)
                {
                    return(BrowserGridView.Rows[entryRowIndex]);
                }
            }

            return(null);
        }
        public static STBLXMLFile ImportFromPackageFile(string importFilePath, System.Collections.IEnumerable importingLanguages)
        {
            STBLXMLFile importedFile = new STBLXMLFile();


            using (BinaryReader importFileReader = new BinaryReader(new FileStream(importFilePath, FileMode.Open))) {
                string fileIdentifier = Encoding.UTF8.GetString(importFileReader.ReadBytes(4));

                if (fileIdentifier != "STBL")
                {
                    throw new NotPackageSTBLFileException("Invalid STBL file identifier, expected 'STBL'.");
                }

                short version = importFileReader.ReadInt16();

                if (version != 5)
                {
                    throw new NotPackageSTBLFileException("Invalid STBL file version, expected '5'.");
                }

                importFileReader.BaseStream.Seek(1, SeekOrigin.Current);                 // Skip the 'compressed' byte, its not used.
                ulong entryCount = importFileReader.ReadUInt64();

                importFileReader.BaseStream.Seek(6, SeekOrigin.Current);                 // Skip the two 'reserved' bytes and the 'string length' bytes.

                for (ulong entryIndex = 0; entryIndex < entryCount; entryIndex++)
                {
                    uint entryKey = importFileReader.ReadUInt32();
                    importFileReader.BaseStream.Seek(1, SeekOrigin.Current);                     // Skip the flags byte.
                    ushort entryLength = importFileReader.ReadUInt16();
                    string entryText   = Encoding.UTF8.GetString(importFileReader.ReadBytes(entryLength));

                    STBLXMLEntry entry = new STBLXMLEntry()
                    {
                        Key = entryKey
                    };

                    foreach (STBL.Languages importingLanguage in importingLanguages)
                    {
                        entry.SetText(importingLanguage, entryText);
                    }

                    importedFile.Entries.Add(entry);
                }
            }

            return(importedFile);
        }
        public List <STBLXMLEntry> GetAllSelectedItemEntries()
        {
            List <STBLXMLEntry> selectedEntries = new List <STBLXMLEntry>();

            foreach (DataGridViewRow entryRow in BrowserGridView.SelectedRows)
            {
                STBLXMLEntry entry = FindEntry(entryRow);

                if (entry != null)
                {
                    selectedEntries.Add(entry);
                }
            }

            return(selectedEntries);
        }
        public void RemoveSelectedItems()
        {
            DataGridViewSelectedRowCollection selectedEntryRows = BrowserGridView.SelectedRows;

            for (int entryRowIndex = 0; entryRowIndex < selectedEntryRows.Count; entryRowIndex++)
            {
                STBLXMLEntry entry = FindEntry(selectedEntryRows[entryRowIndex]);

                Loading.Data.Entries.Remove(entry);

                BrowserGridView.Rows.Remove(selectedEntryRows[entryRowIndex]);
            }

            InvokeItemCountUpdateEvent();
            InvokeSelectedCountUpdateEvent();
        }
Beispiel #9
0
        private void AddEntryButton_Click(object sender, EventArgs e)
        {
            SelectorNew selectorNewForm = new SelectorNew();

            selectorNewForm.ShowDialog();

            STBLXMLEntry createdEntry = selectorNewForm.CreatedEntry;

            if (createdEntry == null)
            {
                return;
            }

            EntryBrowser.SetupRows();
            EntryBrowser.ScrollToItem(createdEntry, selectItem: true);
        }
Beispiel #10
0
        private void MenuStripEditSelectedResetKeysItem_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow selectedEntryRow in EntryBrowser.GetAllSelectedItems())
            {
                STBLXMLEntry entry = EntryBrowser.FindEntry(selectedEntryRow);

                if (entry != null)
                {
                    continue;
                }

                entry.Key = STBL.GetRandomUIntKey(blockedKeys: Loading.GetAllEntryKeys());
            }

            EntryBrowser.RefreshItems();
        }
Beispiel #11
0
        public static bool EntryKeyCollides(uint entryKey, STBLXMLEntry ignoringEntry)
        {
            for (int entryIndex = 0; entryIndex < Data.Entries.Count; entryIndex++)
            {
                if (Data.Entries[entryIndex] == ignoringEntry)
                {
                    continue;
                }

                if (Data.Entries[entryIndex].Key == entryKey)
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #12
0
        private void FormOkButton_Click(object sender, EventArgs e)
        {
            if (FilePathTextBox.Text == null || string.IsNullOrWhiteSpace(FilePathTextBox.Text))
            {
                ShowNoOrInvalidFileDialog();
                DialogResult = DialogResult.None;
                return;
            }

            if (SelectedLanguages.Count <= 0)
            {
                ShowNoLanguagesSelectedDialog();
                DialogResult = DialogResult.None;
                return;
            }

            STBLXMLFile splitSTBLFile = new STBLXMLFile();

            foreach (STBLXMLEntry splittingEntry in SplittingEntries)
            {
                STBLXMLEntry splitEntry = new STBLXMLEntry()
                {
                    Key        = splittingEntry.Key,
                    Identifier = splittingEntry.Identifier
                };

                foreach (STBL.Languages language in SelectedLanguages)
                {
                    splitEntry.SetText(language, splittingEntry.GetText(language));
                }

                splitSTBLFile.Entries.Add(splitEntry);
            }

            try {
                Tools.WriteXML(FilePathTextBox.Text, splitSTBLFile);
            } catch (Exception saveException) {
                ShowSaveFailureDialog(saveException);
                DialogResult = DialogResult.None;
                return;
            }
        }
Beispiel #13
0
        public static STBLXMLEntry AddNewEntry(uint?key = null, string identifier = "")
        {
            if (key == null)
            {
                key = STBL.GetRandomUIntKey(blockedKeys: GetAllEntryKeys());
            }

            STBLXMLEntry newEntry = new STBLXMLEntry()
            {
                Key        = (uint)key,
                Identifier = identifier
            };

            newEntry.IsDirtyable  = true;
            newEntry.EntryIsDirty = true;

            Data.Entries.Add(newEntry);
            SortEntries();

            return(newEntry);
        }
Beispiel #14
0
        public Translator(STBLXMLEntry stblEntry = null)
        {
            if (stblEntry != null)
            {
                STBLEntry = stblEntry;
            }

            InitializeComponent();

            IdentifierTextBox.Text = STBLEntry.Identifier;

            foreach (STBL.Languages language in STBL.GetAllLanguages())
            {
                string languageText = STBLEntry.GetText(language);

                CurrentLanguageStrings[language] = Tools.NormalizeLineEndings(languageText);
                CurrentLanguageStates[language]  = languageText != null ? true : false;
            }

            Forms.SetupLanguageComboBox(ReferencingLanguageSelector, DefaultReferenceLanguage);
            Forms.SetupLanguageComboBox(EditingLanguageSelector, DefaultEditingLanguage);
        }
Beispiel #15
0
 public EntryWrapper(STBLXMLEntry entry)
 {
     STBLEntry = entry;
 }
Beispiel #16
0
        private void FormOkButton_Click(object sender, EventArgs e)
        {
            uint entryKey = uint.Parse(KeyDecimalTextBox.Text);

            CreatedEntry = Loading.AddNewEntry(key: entryKey, identifier: IdentifierTextBox.Text);
        }