public void ProcessLine(string line) { string lineTrimmed = line.Trim(); if (!RegularExpressions.ColumnName.IsMatch(line) && !RegularExpressions.ValueItemName.IsMatch(line)) { if (ExistingGridsAssignment.IsMatch(lineTrimmed)) { GridPropertyReader.ProcessGridProperty(grids, columns, valueItems, lineTrimmed); outputDesignerLines.Add(line); } else if (columns.Count > 0 && ExistingColumnsAssignment.IsMatch(lineTrimmed)) { ColumnPropertyReader.ProcessColumnInstanceProperty(columns, valueItems, lineTrimmed); } else if (valueItems.Count > 0 && ExistingValueItemsAssignment.IsMatch(lineTrimmed)) { ValueItemPropertyReader.ProcessValueItemInstanceProperty(valueItems, line); } else { outputDesignerLines.Add(line); } } }
public static void ProcessGridProperty(Dictionary <string, C1TrueDBGrid> grids, Dictionary <string, C1DataColumn> columns, Dictionary <string, ValueItem> valueItemsDict, string line) { //Verify if the line is the assignment of a known grid GroupCollection groups = RegularExpressions.ComplexProperty.Matches(line)[0].Groups; C1TrueDBGrid grid = grids[groups[1].Value]; int index = -1; if (groups[4].Value != "") { index = int.Parse(groups[4].Value); } string value = groups[15].Value; string subLine = groups[5].Value; string property = groups[2].Value; switch (property.ToUpper()) { case nameof(SplitProperties.ALTERNATINGROWS): grid.Splits[0].Properties["AlternatingRowStyle"] = Utilities.FirstCharToUpper(value); break; case nameof(GridProperties.CAPTION): grid.Properties["Caption"] = Utilities.RemoveBeginEndQuotes(value); break; case nameof(GridProperties.BACKCOLOR): grid.TimesReadBackColor++; grid.Properties["BackColor"] = value; break; case nameof(StyleProperties.FONT): grid.Styles["Style"].Properties["Font"] = Utilities.ProcessFontProperty(value); break; case nameof(GridProperties.HEIGHT): grid.Height = Utilities.PropertyValueTwipsToPixels(value); break; case nameof(SplitProperties.HSCROLLBAR): if (groups[5].Value.Equals("Style")) { grid.Splits[0].Properties["HBarStyle"] = Utilities.EnumValueToString(value); } break; case nameof(GridProperties.IMAGES): string imageName = RegularExpressions.GetObject.Matches(groups[12].Value)[0].Groups[1].Value; ResourceImage image = new ResourceImage(); image.Name = imageName; grid.Images[imageName] = image; break; case nameof(GridProperties.NAME): grid.Properties["Name"] = value; grid.TimesReadName++; break; case nameof(GridProperties.PREVIEWINFO): PreviewInfoPropertyReader.ProcessPreviewInfoProperty(grid.PreviewInfo, subLine, value); break; case nameof(GridProperties.PRINTINFO): PrintInfoPropertyReader.ProcessPrintInfoProperty(grid.PrintInfo, subLine, value); break; case nameof(GridProperties.ROWDIVIDER): GridLinesPropertyReader.ProcessGridLinesProperty(grid.RowDivider, subLine, value); break; case nameof(GridProperties.SIZE): GroupCollection groupsSize = RegularExpressions.Size.Matches(line)[0].Groups; grid.Width = Int32.Parse(groupsSize[1].Value); grid.Height = Int32.Parse(groupsSize[2].Value); break; case nameof(GridProperties.STYLES): grid.IncorrectPropertiesInDesigner = true; break; case nameof(SplitProperties.VSCROLLBAR): if (groups[5].Value.Equals("Style")) { grid.Splits[0].Properties["VBarStyle"] = Utilities.EnumValueToString(value); } break; case nameof(GridProperties.COLUMNS): grid.IncorrectPropertiesInDesigner = true; if (groups[7].Value == "Add") { string argument = groups[12].Value; if (!argument.StartsWith("new ")) { string columnName = argument.Split('.')[1]; grid.DataCols.Add(columns[columnName]); } } else { int columnIndex = Utilities.StringToIndex(groups[4].Value); C1DataColumn column = Utilities.GetCreateListElement <C1DataColumn>(grid.DataCols, columnIndex); ColumnPropertyReader.ProcessColumnProperty(column, valueItemsDict, subLine, value); } break; case nameof(GridProperties.WIDTH): grid.Width = Int32.Parse(value); break; case nameof(GridProperties.SPLITS): grid.IncorrectPropertiesInDesigner = true; int splitIndex = Utilities.StringToIndex(groups[4].Value); Split split = Utilities.GetCreateListElement <Split>(grid.Splits, splitIndex); SplitPropertyReader.ProcessSplitProperty(split, subLine, value); break; default: if (grid.Splits[0].Properties.ContainsKey(property) && !grid.Properties.ContainsKey(property)) { grid.Splits[0].Properties[property] = Utilities.CleanXMLProperty(value); } else if (grid.Styles.ContainsKey(property)) { grid.IncorrectPropertiesInDesigner = true; StylePropertyReader.ProcessStyleProperty(grid.Styles[property], subLine, value); } else if (groups[11].Value == "") // if it isn't a method call from the grid { grid.Properties[property] = Utilities.CleanGridProperty(value); } break; } }