private void PrepareTabControl(TranslationComponents tc) { foreach (var modInfoContainer in tc.AllModInfo) { var tabPage = new TabPage(modInfoContainer.Name); tabPage.Name = modInfoContainer.Name; tabPage.AutoScroll = true; _gridUi.tabControl1.TabPages.Add(tabPage); } foreach (TabPage tabPage in _gridUi.tabControl1.TabPages) { var gridView = CreateGridViewAndFillWithData(tc, tabPage.Text); tabPage.Controls.Add(gridView); } }
public void ShowData(TranslationComponents tc) { _tc = tc; PrepareTabControl(tc); }
private DataGridView CreateGridViewAndFillWithData(TranslationComponents tc, string currentModule) { var gridView = new DataGridView { Dock = DockStyle.Fill, EditMode = DataGridViewEditMode.EditOnKeystroke }; if (!System.Windows.Forms.SystemInformation.TerminalServerSession) { Type dgvType = gridView.GetType(); PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic); pi.SetValue(gridView, true, null); } gridView.CellValueChanged += gridView_CellValueChanged; gridView.CellBeginEdit += gridView_CellBeginEdit; gridView.KeyUp += gridView_KeyUp; gridView.KeyDown += gridView_KeyDown; gridView.UserDeletedRow += gridView_UserDeletedRow; gridView.ColumnHeaderMouseClick += gridView_ColumnHeaderMouseClick; var lstGridViewColumns = new List <DataGridViewTextBoxColumn>(); foreach (var header in tc.Headers) { var dgvc = new DataGridViewTextBoxColumn { HeaderText = header, SortMode = DataGridViewColumnSortMode.NotSortable, Resizable = DataGridViewTriState.True, AutoSizeMode = DataGridViewAutoSizeColumnMode.None }; lstGridViewColumns.Add(dgvc); } gridView.Columns.AddRange(lstGridViewColumns.ToArray()); var modInfoContainer = tc.AllModInfo.FirstOrDefault(mi => mi.Name == currentModule); var lstDataGridViewRows = new List <DataGridViewRow>(); if (modInfoContainer != null) { foreach (var translationsWithKey in modInfoContainer.Values) { var row = new DataGridViewRow(); row.CreateCells(gridView); var index = 1; row.Cells[0].Value = translationsWithKey.Key; foreach (var header in tc.Headers) { if (header == TranslationManager.COLUMN_IDNAME || header == TranslationManager.COLUMN_MODNAME) { continue; } if (header == "English") { row.Cells[index].Style.BackColor = Color.FromKnownColor(COLOR_BASELANGUAGE); } if (!translationsWithKey.Value.ContainsKey(header) || string.IsNullOrWhiteSpace(translationsWithKey.Value[header])) { row.Cells[index].Style.BackColor = Color.FromKnownColor(COLOR_EMPTYCELL); AddMissingTranslationToStatistics(tc.Statistics, header, currentModule); } else { var trans = translationsWithKey.Value[header]; row.Cells[index].Value = trans; row.Cells[index].Style.WrapMode = DataGridViewTriState.True; } index += 1; } lstDataGridViewRows.Add(row); } } gridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; gridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None; gridView.Rows.AddRange(lstDataGridViewRows.ToArray()); return(gridView); }
public TranslationComponents ParseXmlFiles(List <FileInfo> allStringTablePaths) { var lstHeader = new ConcurrentBag <string>(); var allModInfos = new ConcurrentBag <ModInfoContainer>(); var transComp = new TranslationComponents(); Parallel.ForEach(allStringTablePaths, currentFile => { var modInfo = new ModInfoContainer { FileInfoStringTable = currentFile, Name = currentFile.Directory.Name }; using (var sr = new StreamReader(currentFile.FullName)) { modInfo.FileHasBom = FileHelper.FileHasBom(sr.BaseStream); XDocument xdoc; try { xdoc = LoadFromStream(sr.BaseStream); } catch (XmlException xmlException) { throw new GenericXmlException("", currentFile.FullName, xmlException.Message); } var keys = xdoc.Descendants().Where(x => x.Name == KEY_NAME); var dicKeyWithTranslations = new Dictionary <string, Dictionary <string, string> >(); // all keys foreach (var key in keys) { var currentKeyId = key.Attribute(ID_NAME).Value; var dicTranslations = new Dictionary <string, string>(); // all languages of a key foreach (var language in key.Descendants()) { var languageName = language.Name.ToString(); if (dicTranslations.ContainsKey(languageName)) { throw new DuplicateKeyException(languageName, currentFile.FullName, currentKeyId); } dicTranslations.Add(languageName, language.Value); // save all the languages if (lstHeader.Contains(languageName) == false) { lstHeader.Add(languageName); } } if (dicKeyWithTranslations.ContainsKey(currentKeyId)) { throw new DuplicateKeyException(currentKeyId, currentFile.FullName, currentKeyId); } dicKeyWithTranslations.Add(currentKeyId, dicTranslations); } modInfo.Values = dicKeyWithTranslations; allModInfos.Add(modInfo); } }); transComp.AllModInfo = allModInfos.OrderBy(mic => mic.Name).ToList(); transComp.Headers = lstHeader.OrderBy(h => h).ToList(); return(transComp); }