Пример #1
0
        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);
            }
        }
Пример #2
0
 public void ShowData(TranslationComponents tc)
 {
     _tc = tc;
     PrepareTabControl(tc);
 }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }