This commit is contained in:
parent
ee90d4d732
commit
6ac65a51a3
@ -341,6 +341,7 @@ namespace DataLoader
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Regex _RemoveComments = new Regex(@"\\v .*?\\v0( |$)");
|
private Regex _RemoveComments = new Regex(@"\\v .*?\\v0( |$)");
|
||||||
|
|
||||||
private string ConvertTableToGrid(string stepText, Content content, FormatInfo fmt, bool isROTable)
|
private string ConvertTableToGrid(string stepText, Content content, FormatInfo fmt, bool isROTable)
|
||||||
{
|
{
|
||||||
string savethis = stepText;
|
string savethis = stepText;
|
||||||
@ -350,48 +351,6 @@ namespace DataLoader
|
|||||||
VE_Font vefont = fmt.PlantFormat.FormatData.StepDataList.Table.Font;
|
VE_Font vefont = fmt.PlantFormat.FormatData.StepDataList.Table.Font;
|
||||||
Font GridFont = new Font(vefont.Family, (float)vefont.Size);
|
Font GridFont = new Font(vefont.Family, (float)vefont.Size);
|
||||||
grd.Font = GridFont; // this also changes the default Row Height "Rows.DefaultSize"
|
grd.Font = GridFont; // this also changes the default Row Height "Rows.DefaultSize"
|
||||||
stepText = FixStepText(stepText);
|
|
||||||
stepText = stepText.Replace(@"\u8209?", "-");
|
|
||||||
stepText = stepText.Replace(@"\u9474?", "\xB3"); // Vert Line graphic character
|
|
||||||
stepText = stepText.Replace(@"\'b0", "\xB0");
|
|
||||||
stepText = stepText.Replace(@"\up2 ", "\x9566");
|
|
||||||
stepText = stepText.Replace(@"\up0 ", "\x9567");
|
|
||||||
stepText = stepText.Replace(@"\ulnone", "\xBB");
|
|
||||||
stepText = stepText.Replace(@"\ul", "\xAB");
|
|
||||||
stepText = stepText.Replace(@"\{", "{");
|
|
||||||
stepText = stepText.Replace(@"\}", "}");
|
|
||||||
stepText = stepText.Replace(@"\b0", "\xD6");
|
|
||||||
stepText = stepText.Replace(@"\b", "\xD5");
|
|
||||||
stepText = stepText.Replace(@"\u160?", "\xA0"); //hard space
|
|
||||||
stepText = stepText.Replace(@"\u916?", "\x7F"); // delta
|
|
||||||
stepText = stepText.Replace(@"\u8805?", "\xF2"); //greater than or equal
|
|
||||||
stepText = stepText.Replace(@"\u8804?", "\xF3"); // less than or equal
|
|
||||||
stepText = stepText.Replace(@"\u931?", "\xE4"); // sigma
|
|
||||||
stepText = stepText.Replace(@"\u947?", "\xE7"); // gamma
|
|
||||||
stepText = stepText.Replace(@"\u9604?", "\xFE"); // accum 2584
|
|
||||||
stepText = stepText.Replace(@"\u9679?", "\x7"); // bullet 25CF
|
|
||||||
stepText = stepText.Replace(@"\u8776?", "\xF7"); // approx eq
|
|
||||||
stepText = stepText.Replace(@"\u8773?", "\xF0"); // similar eq 2245
|
|
||||||
stepText = stepText.Replace(@"\u8730?", "\xFB"); // square root
|
|
||||||
stepText = stepText.Replace(@"\u961?", "\xE2"); // rho 3C1
|
|
||||||
stepText = stepText.Replace(@"\u960?", "\xE3"); // pi
|
|
||||||
stepText = stepText.Replace(@"\u956?", "\xE6"); // micro
|
|
||||||
stepText = stepText.Replace(@"\u948?", "\xEB"); // lower case delta
|
|
||||||
stepText = stepText.Replace(@"\u963?", "\xE5"); // lower case sigma
|
|
||||||
stepText = stepText.Replace(@"\u274?", "\x90"); // energy, 112
|
|
||||||
stepText = stepText.Replace(@"\u949?", "\xEE"); // epsilon
|
|
||||||
stepText = stepText.Replace(@"\u952?", "\xE9"); // theta, 3B8
|
|
||||||
stepText = stepText.Replace(@"\u8857?", "\xEC"); // dot in oval, 2299
|
|
||||||
stepText = stepText.Replace(@"\u964?", "\xA8"); // tau, 3C4
|
|
||||||
stepText = stepText.Replace(@"\u9830?", "\xA9"); // diamond, 2666
|
|
||||||
stepText = stepText.Replace(@"\u8593?", "\x18"); // Up Arrow - changes to \xff
|
|
||||||
stepText = stepText.Replace(@"\u8595?", "\x19"); // Down Arrow - changes to \xd6
|
|
||||||
|
|
||||||
//Console.WriteLine("B4 Parse Orig Text: '{0}'", savethis);
|
|
||||||
//Console.WriteLine("B4 Parse sym repl: '{0}'", stepText);
|
|
||||||
if (grd.IsRoTable)
|
|
||||||
grd.ParseTableFromText(_RemoveComments.Replace(stepText, ""));
|
|
||||||
else
|
|
||||||
grd.ParseTableFromText(stepText);
|
grd.ParseTableFromText(stepText);
|
||||||
grd.AutoSizeCols();
|
grd.AutoSizeCols();
|
||||||
grd.AutoSizeRows();
|
grd.AutoSizeRows();
|
||||||
@ -407,23 +366,7 @@ namespace DataLoader
|
|||||||
}
|
}
|
||||||
return strGrid;
|
return strGrid;
|
||||||
}
|
}
|
||||||
//private void FixSymbolsInGridTable(Content content, ItemInfo ii)
|
|
||||||
//{
|
|
||||||
// VlnFlexGrid grd = new VlnFlexGrid(1, 1);
|
|
||||||
// using (TextReader stringreader = new StringReader(content.MyGrid.Data))
|
|
||||||
// {
|
|
||||||
// grd.ReadXml(stringreader);
|
|
||||||
// stringreader.Close();
|
|
||||||
// }
|
|
||||||
// for (int r = 0; r < grd.Rows.Count; r++)
|
|
||||||
// for (int c = 0; c < grd.Cols.Count; c++)
|
|
||||||
// {
|
|
||||||
// StepRTB trtb = new StepRTB();
|
|
||||||
// trtb = grd[r, c];
|
|
||||||
// DisplayText dt = new DisplayText(trtb.Rtf, true);
|
|
||||||
// grd[r, c] = dt.OriginalText;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
private bool IsATable(int? contenttype)
|
private bool IsATable(int? contenttype)
|
||||||
{
|
{
|
||||||
bool rtnval = false;
|
bool rtnval = false;
|
||||||
|
@ -290,12 +290,13 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
if (MyFlexGrid.IsRoTable)
|
if (MyFlexGrid.IsRoTable)
|
||||||
{
|
{
|
||||||
MyFlexGrid.MergedRanges.Clear();
|
MyFlexGrid.ConvertTableROToGrid(args.ValText, args.RODbID, args.ROID);
|
||||||
MyFlexGrid.Clear();
|
//MyFlexGrid.MergedRanges.Clear();
|
||||||
ConvertTableToGrid(args.RawValText);
|
//MyFlexGrid.Clear();
|
||||||
MyFlexGrid.RODbId = args.RODbID;
|
//ConvertTableToGrid(args.RawValText, args.RODbID, args.ROID);
|
||||||
MyFlexGrid.ROID = args.ROID;
|
//MyFlexGrid.RODbId = args.RODbID;
|
||||||
SaveContents();
|
//MyFlexGrid.ROID = args.ROID;
|
||||||
|
//SaveContents();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
MyStepRTB.UpdateStepRtb(args.LinkText, args.ValText);
|
MyStepRTB.UpdateStepRtb(args.LinkText, args.ValText);
|
||||||
@ -498,17 +499,23 @@ namespace Volian.Controls.Library
|
|||||||
MyItemInfo.MyContent.RefreshContentRoUsages();
|
MyItemInfo.MyContent.RefreshContentRoUsages();
|
||||||
return string.Format(@"#Link:ReferencedObject:{0} {1} {2}", rousg.ROUsageID, MyFlexGrid.ROID, MyFlexGrid.RODbId);
|
return string.Format(@"#Link:ReferencedObject:{0} {1} {2}", rousg.ROUsageID, MyFlexGrid.ROID, MyFlexGrid.RODbId);
|
||||||
}
|
}
|
||||||
private void ConvertTableToGrid(string valtext)
|
//private void ConvertTableToGrid(string valtext, int rodbid, string roid)
|
||||||
{
|
//{
|
||||||
VE_Font vefont = MyItemInfo.GetItemFont();
|
// VE_Font vefont = MyItemInfo.GetItemFont();
|
||||||
MyFlexGrid.Font = vefont.WindowsFont;
|
// MyFlexGrid.Font = vefont.WindowsFont;
|
||||||
Initializing = true;
|
// //Initializing = true;
|
||||||
MyFlexGrid.ParseTableFromText(valtext);
|
// MyFlexGrid.MergedRanges.Clear();
|
||||||
MyFlexGrid.AutoSizeCols();
|
// MyFlexGrid.Clear();
|
||||||
MyFlexGrid.AutoSizeRows();
|
// MyFlexGrid.ParseTableFromText(valtext);
|
||||||
MyFlexGrid.MakeRTFcells();
|
// MyFlexGrid.AutoSizeCols();
|
||||||
Initializing = false;
|
// MyFlexGrid.AutoSizeRows();
|
||||||
}
|
// MyFlexGrid.MakeRTFcells();
|
||||||
|
// MyFlexGrid.RODbId = rodbid;
|
||||||
|
// MyFlexGrid.ROID = roid;
|
||||||
|
// MyFlexGrid.IsRoTable = true;
|
||||||
|
// //Initializing = false;
|
||||||
|
// SaveContents();
|
||||||
|
//}
|
||||||
private bool FinishSave(string searchableText)
|
private bool FinishSave(string searchableText)
|
||||||
{
|
{
|
||||||
// Just in case if the grid was in a mode to change sizes, clear out that setting
|
// Just in case if the grid was in a mode to change sizes, clear out that setting
|
||||||
@ -879,18 +886,19 @@ namespace Volian.Controls.Library
|
|||||||
IdentifyMe(false);
|
IdentifyMe(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RefreshGridData()
|
//private void RefreshGridData()
|
||||||
{
|
//{
|
||||||
string ROID = MyFlexGrid.ROID;
|
// string ROID = MyFlexGrid.ROID;
|
||||||
int rodbid = MyFlexGrid.RODbId;
|
// int rodbid = MyFlexGrid.RODbId;
|
||||||
MyFlexGrid.Clear();
|
// //MyFlexGrid.Clear();
|
||||||
ROFSTLookup MyROFSTLookup = MyItemInfo.MyDocVersion.DocVersionAssociations[0].MyROFst.ROFSTLookup;
|
// ROFSTLookup MyROFSTLookup = MyItemInfo.MyDocVersion.DocVersionAssociations[0].MyROFst.ROFSTLookup;
|
||||||
ConvertTableToGrid(MyROFSTLookup.GetRoValue(ROID));
|
// MyFlexGrid.ConvertTableROToGrid(MyROFSTLookup.GetRoValue(ROID), rodbid, ROID);
|
||||||
MyFlexGrid.RODbId = rodbid;
|
// //ConvertTableToGrid(MyROFSTLookup.GetRoValue(ROID), rodbid, ROID);
|
||||||
MyFlexGrid.ROID = ROID;
|
// //MyFlexGrid.RODbId = rodbid;
|
||||||
MyFlexGrid.IsRoTable = true;
|
// //MyFlexGrid.ROID = ROID;
|
||||||
SaveContents();
|
// //MyFlexGrid.IsRoTable = true;
|
||||||
}
|
// //SaveContents();
|
||||||
|
//}
|
||||||
public override void SetExpandAndExpander(ItemInfo itemInfo) { CanExpand = false; } // can't expand a table
|
public override void SetExpandAndExpander(ItemInfo itemInfo) { CanExpand = false; } // can't expand a table
|
||||||
public void SavePastedCellRoTran()
|
public void SavePastedCellRoTran()
|
||||||
{
|
{
|
||||||
|
@ -1171,15 +1171,17 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
string roid = myGrid.ROID;
|
string roid = myGrid.ROID;
|
||||||
int rodbid = myGrid.RODbId;
|
int rodbid = myGrid.RODbId;
|
||||||
Font GridFont = myGrid.Font;
|
////Font GridFont = myGrid.Font;
|
||||||
myGrid.Clear();
|
//myGrid.MergedRanges.Clear();
|
||||||
myGrid.ParseTableFromText(args.ROText);
|
//myGrid.Clear();
|
||||||
myGrid.AutoSizeCols();
|
//myGrid.ParseTableFromText(args.ROText);
|
||||||
myGrid.AutoSizeRows();
|
//myGrid.AutoSizeCols();
|
||||||
myGrid.MakeRTFcells();
|
//myGrid.AutoSizeRows();
|
||||||
myGrid.RODbId = rodbid;
|
//myGrid.MakeRTFcells();
|
||||||
myGrid.ROID = roid;
|
//myGrid.RODbId = rodbid;
|
||||||
myGrid.IsRoTable = true;
|
//myGrid.ROID = roid;
|
||||||
|
//myGrid.IsRoTable = true;
|
||||||
|
myGrid.ConvertTableROToGrid(args.ROText, rodbid, roid);
|
||||||
using (StringWriter sw = new StringWriter())
|
using (StringWriter sw = new StringWriter())
|
||||||
{
|
{
|
||||||
myGrid.WriteXml(sw);
|
myGrid.WriteXml(sw);
|
||||||
|
@ -296,6 +296,7 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
return GetRangeHeight(GetMergedRange(row, col))-3;
|
return GetRangeHeight(GetMergedRange(row, col))-3;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetRangeHeight(CellRange cr)
|
public int GetRangeHeight(CellRange cr)
|
||||||
{
|
{
|
||||||
int height = 0;
|
int height = 0;
|
||||||
@ -303,6 +304,7 @@ namespace Volian.Controls.Library
|
|||||||
height += (Rows[r].Height == -1) ? Rows.DefaultSize : Rows[r].Height;
|
height += (Rows[r].Height == -1) ? Rows.DefaultSize : Rows[r].Height;
|
||||||
return height;
|
return height;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetRangeTop(CellRange cr)
|
public int GetRangeTop(CellRange cr)
|
||||||
{
|
{
|
||||||
int top = 0;
|
int top = 0;
|
||||||
@ -310,6 +312,7 @@ namespace Volian.Controls.Library
|
|||||||
top += (Rows[r].Height == -1) ? Rows.DefaultSize : Rows[r].Height;
|
top += (Rows[r].Height == -1) ? Rows.DefaultSize : Rows[r].Height;
|
||||||
return top;
|
return top;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetRangeWidth(CellRange cr)
|
public int GetRangeWidth(CellRange cr)
|
||||||
{
|
{
|
||||||
int width = 0;
|
int width = 0;
|
||||||
@ -317,6 +320,7 @@ namespace Volian.Controls.Library
|
|||||||
width += (Cols[c].Width == -1) ? Cols.DefaultSize : Cols[c].Width;
|
width += (Cols[c].Width == -1) ? Cols.DefaultSize : Cols[c].Width;
|
||||||
return width;
|
return width;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetRangeLeft(CellRange cr)
|
public int GetRangeLeft(CellRange cr)
|
||||||
{
|
{
|
||||||
int left = 0;
|
int left = 0;
|
||||||
@ -324,6 +328,7 @@ namespace Volian.Controls.Library
|
|||||||
left += (Cols[c].Width == -1) ? Cols.DefaultSize : Cols[c].Width;
|
left += (Cols[c].Width == -1) ? Cols.DefaultSize : Cols[c].Width;
|
||||||
return left;
|
return left;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetRangeRowsMin(CellRange cr)
|
public int GetRangeRowsMin(CellRange cr)
|
||||||
{
|
{
|
||||||
int rowsMin = 1 + cr.r2 - cr.r1;
|
int rowsMin = 1 + cr.r2 - cr.r1;
|
||||||
@ -340,6 +345,7 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
return rowsMin;
|
return rowsMin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetRangeRowsMax(CellRange cr)
|
public int GetRangeRowsMax(CellRange cr)
|
||||||
{
|
{
|
||||||
int rowsMax = 0;
|
int rowsMax = 0;
|
||||||
@ -356,6 +362,7 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
return rowsMax;
|
return rowsMax;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetRangeColsMin(CellRange cr)
|
public int GetRangeColsMin(CellRange cr)
|
||||||
{
|
{
|
||||||
int colsMin = 1 + cr.c2 - cr.c1;
|
int colsMin = 1 + cr.c2 - cr.c1;
|
||||||
@ -372,6 +379,7 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
return colsMin;
|
return colsMin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetRangeColsMax(CellRange cr)
|
public int GetRangeColsMax(CellRange cr)
|
||||||
{
|
{
|
||||||
int colsMax = 0;
|
int colsMax = 0;
|
||||||
@ -388,6 +396,7 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
return colsMax;
|
return colsMax;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetRangeRowList(CellRange cr)
|
public string GetRangeRowList(CellRange cr)
|
||||||
{
|
{
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
@ -404,16 +413,7 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
private int GetCellWidth(int row, int col)
|
|
||||||
{
|
|
||||||
int width = 0;
|
|
||||||
CellRange cr = GetMergedRange(row, col);
|
|
||||||
for (int c = cr.c1; c <= cr.c2; c++)
|
|
||||||
{
|
|
||||||
width += (Cols[c].Width == -1) ? Cols.DefaultSize - 3 : Cols[c].Width -3;
|
|
||||||
}
|
|
||||||
return width;
|
|
||||||
}
|
|
||||||
private int BlankRowSpace()
|
private int BlankRowSpace()
|
||||||
{
|
{
|
||||||
int curRowHeight = (Rows[Row].Height == -1) ? Rows.DefaultSize - 3 : Rows[Row].Height - 3;
|
int curRowHeight = (Rows[Row].Height == -1) ? Rows.DefaultSize - 3 : Rows[Row].Height - 3;
|
||||||
@ -435,6 +435,18 @@ namespace Volian.Controls.Library
|
|||||||
//Console.WriteLine("BlankRowSpace {0}", blankRowSpace);
|
//Console.WriteLine("BlankRowSpace {0}", blankRowSpace);
|
||||||
return blankRowSpace;
|
return blankRowSpace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int GetCellWidth(int row, int col)
|
||||||
|
{
|
||||||
|
int width = 0;
|
||||||
|
CellRange cr = GetMergedRange(row, col);
|
||||||
|
for (int c = cr.c1; c <= cr.c2; c++)
|
||||||
|
{
|
||||||
|
width += (Cols[c].Width == -1) ? Cols.DefaultSize - 3 : Cols[c].Width -3;
|
||||||
|
}
|
||||||
|
return width;
|
||||||
|
}
|
||||||
|
|
||||||
private int BlankColSpace()
|
private int BlankColSpace()
|
||||||
{
|
{
|
||||||
int curColWidth = (Cols[Col].Width == -1) ? Cols.DefaultSize - 3 : Cols[Col].Width - 3;
|
int curColWidth = (Cols[Col].Width == -1) ? Cols.DefaultSize - 3 : Cols[Col].Width - 3;
|
||||||
@ -450,7 +462,7 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
int cellWidth = GetCellWidth(r, Col);
|
int cellWidth = GetCellWidth(r, Col);
|
||||||
srtb.Width = cellWidth;
|
srtb.Width = cellWidth;
|
||||||
Application.DoEvents();
|
//Application.DoEvents();
|
||||||
//int mergeCellHeightNLines = cellHeight / (Rows.DefaultSize - 3);
|
//int mergeCellHeightNLines = cellHeight / (Rows.DefaultSize - 3);
|
||||||
//int dataHeight = (cr.UserData == null) ? cellHeight : (int)cr.UserData;
|
//int dataHeight = (cr.UserData == null) ? cellHeight : (int)cr.UserData;
|
||||||
//int ud = dataHeight / (Rows.DefaultSize - 3);
|
//int ud = dataHeight / (Rows.DefaultSize - 3);
|
||||||
@ -502,16 +514,16 @@ namespace Volian.Controls.Library
|
|||||||
// return maxRTFHeight;
|
// return maxRTFHeight;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//private bool IsInMergeRange(int row, int col)
|
private bool IsInMergeRange(int row, int col)
|
||||||
|
{
|
||||||
|
//foreach (CellRange cr in this.MergedRanges)
|
||||||
//{
|
//{
|
||||||
// //foreach (CellRange cr in this.MergedRanges)
|
// if (cr.Contains(row, col))
|
||||||
// //{
|
// return true; // in a merged range
|
||||||
// // if (cr.Contains(row, col))
|
|
||||||
// // return true; // in a merged range
|
|
||||||
// //}
|
|
||||||
// CellRange cr = GetMergedRange(row, col);
|
|
||||||
// return (cr.r1 == row && cr.c1 == col);
|
|
||||||
//}
|
//}
|
||||||
|
CellRange cr = GetMergedRange(row, col);
|
||||||
|
return (cr.r1 == row && cr.c1 == col);
|
||||||
|
}
|
||||||
private static Regex _ReplaceVESymbFix = new Regex(@"({\\f[0-9]+[^ ]* )(VESymbFix)(;})");
|
private static Regex _ReplaceVESymbFix = new Regex(@"({\\f[0-9]+[^ ]* )(VESymbFix)(;})");
|
||||||
private static Regex _ReplaceArialUnicodeMS = new Regex(@"({\\f[0-9]+[^ ]* )(Arial Unicode MS)(;})");
|
private static Regex _ReplaceArialUnicodeMS = new Regex(@"({\\f[0-9]+[^ ]* )(Arial Unicode MS)(;})");
|
||||||
private static Regex _ReplaceTextFont = new Regex(@"({\\f[0-9]+[^ ]* )(?((?!VESymbFix)(?!Arial Unicode MS))([^;]*)|(!!!!))(;})");
|
private static Regex _ReplaceTextFont = new Regex(@"({\\f[0-9]+[^ ]* )(?((?!VESymbFix)(?!Arial Unicode MS))([^;]*)|(!!!!))(;})");
|
||||||
@ -1296,6 +1308,8 @@ namespace Volian.Controls.Library
|
|||||||
|
|
||||||
// Now adjust the Height and Width in the defined merge ranges
|
// Now adjust the Height and Width in the defined merge ranges
|
||||||
AdjustMergeRangeHeightWidth(r, c, trtb, tstr, AllowWidthShrink);
|
AdjustMergeRangeHeightWidth(r, c, trtb, tstr, AllowWidthShrink);
|
||||||
|
|
||||||
|
|
||||||
//// Now see the the selected row,col is in the defined merge ranges
|
//// Now see the the selected row,col is in the defined merge ranges
|
||||||
//bool mrgrows = false;
|
//bool mrgrows = false;
|
||||||
//bool mrgcols = false;
|
//bool mrgcols = false;
|
||||||
@ -1562,52 +1576,53 @@ namespace Volian.Controls.Library
|
|||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
private void Compare(string fromRTF, string fromStr, string rawstr)
|
//private void Compare(string fromRTF, string fromStr, string rawstr)
|
||||||
{
|
//{
|
||||||
int istart = fromRTF.IndexOf(" ",fromRTF.IndexOf("viewkind"));
|
// int istart = fromRTF.IndexOf(" ",fromRTF.IndexOf("viewkind"));
|
||||||
int jstart = fromStr.IndexOf(" ",fromStr.IndexOf("viewkind"));
|
// int jstart = fromStr.IndexOf(" ",fromStr.IndexOf("viewkind"));
|
||||||
for (int i = istart; i < fromRTF.Length; i++)
|
// for (int i = istart; i < fromRTF.Length; i++)
|
||||||
{
|
// {
|
||||||
int j = i - istart + jstart;
|
// int j = i - istart + jstart;
|
||||||
//else if (fromRTF[i] != fromStr[j])
|
// //else if (fromRTF[i] != fromStr[j])
|
||||||
if (fromRTF[i] != fromStr[j])
|
// if (fromRTF[i] != fromStr[j])
|
||||||
{
|
// {
|
||||||
if (fromRTF.Substring(i, 1) == @"~" && fromStr.Substring(j, 3) == @"'a0")
|
// if (fromRTF.Substring(i, 1) == @"~" && fromStr.Substring(j, 3) == @"'a0")
|
||||||
{
|
// {
|
||||||
//i++;
|
// //i++;
|
||||||
jstart += 2;
|
// jstart += 2;
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
Console.WriteLine("fromStr:\r\n'{0}'\r\nfromRTF:\r\n'{1}'", fromStr, fromRTF);
|
// Console.WriteLine("fromStr:\r\n'{0}'\r\nfromRTF:\r\n'{1}'", fromStr, fromRTF);
|
||||||
ShowRawString(rawstr, "rawstr");
|
// ShowRawString(rawstr, "rawstr");
|
||||||
Console.WriteLine("Str:'{0}' , RTF:'{1}'", fromStr.Substring(j, Math.Min(10,fromStr.Length-j-1)), fromRTF.Substring(i, Math.Min(10,fromRTF.Length-i-1)));
|
// Console.WriteLine("Str:'{0}' , RTF:'{1}'", fromStr.Substring(j, Math.Min(10,fromStr.Length-j-1)), fromRTF.Substring(i, Math.Min(10,fromRTF.Length-i-1)));
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
private void ShowRawString(string str, string title)
|
#region DEBUG
|
||||||
{
|
//private void ShowRawString(string str, string title)
|
||||||
Console.WriteLine("Raw Start --{0}:\n", title);
|
//{
|
||||||
foreach (char c in str)
|
// Console.WriteLine("Raw Start --{0}:\n", title);
|
||||||
{
|
// foreach (char c in str)
|
||||||
int ic= (int)c;
|
// {
|
||||||
if (c!='\n'&&( ic > 126 || ic < 32))
|
// int ic= (int)c;
|
||||||
Console.Write("<<{0:x4}>>", ic);
|
// if (c!='\n'&&( ic > 126 || ic < 32))
|
||||||
else
|
// Console.Write("<<{0:x4}>>", ic);
|
||||||
Console.Write(c);
|
// else
|
||||||
}
|
// Console.Write(c);
|
||||||
Console.WriteLine("\n-- Raw End:{0}", title);
|
// }
|
||||||
}
|
// Console.WriteLine("\n-- Raw End:{0}", title);
|
||||||
|
//}
|
||||||
|
#endregion
|
||||||
|
|
||||||
private void Grid_AfterResize(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
|
private void Grid_AfterResize(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
|
||||||
{
|
{
|
||||||
this.AdjustGridControlSize();
|
this.AdjustGridControlSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion // Grid Size Adjustments
|
#endregion // Grid Size Adjustments
|
||||||
|
|
||||||
#region Cell Text
|
#region Cell Text
|
||||||
@ -1623,36 +1638,14 @@ namespace Volian.Controls.Library
|
|||||||
this.ConvertTextCellToRTF(r, c);
|
this.ConvertTextCellToRTF(r, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
//this.Refresh();
|
TrimColumnWidths();
|
||||||
//Application.DoEvents();
|
|
||||||
this.AdjustGridControlSize();
|
|
||||||
|
|
||||||
SetupCellUserData();
|
|
||||||
|
|
||||||
//RemoveBlankSpaceFromColumns();
|
|
||||||
RemoveBlankSpaceFromRows();
|
RemoveBlankSpaceFromRows();
|
||||||
|
SetupCellUserData();
|
||||||
|
this.AdjustGridControlSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FixTableCellsHeightWidth()
|
public void FixTableCellsHeightWidth()
|
||||||
{
|
{
|
||||||
//StepRTB trtb = new StepRTB();
|
|
||||||
////trtb.SetTableGridCellRTFPrefix(this.Font);
|
|
||||||
//trtb.Font = this.Font;
|
|
||||||
//// This will spin through all the cells in the grid:
|
|
||||||
//// - adjust the grid dimensions based on the cell info.
|
|
||||||
//for (int r = 0; r < this.Rows.Count; r++)
|
|
||||||
//{
|
|
||||||
// this.Rows[r].Height = Rows.DefaultSize;//_minRowHeight;//20;//10;
|
|
||||||
// for (int c = 0; c < this.Cols.Count; c++)
|
|
||||||
// {
|
|
||||||
// trtb.Clear();
|
|
||||||
// trtb.Rtf = (string)this[r, c];
|
|
||||||
// this.AdjustCellHeightWidth(r, c, trtb);
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//this.AdjustGridControlSize();
|
|
||||||
//SetupCellUserData();
|
|
||||||
RemoveBlankSpaceFromColumns();
|
RemoveBlankSpaceFromColumns();
|
||||||
RemoveBlankSpaceFromRows();
|
RemoveBlankSpaceFromRows();
|
||||||
}
|
}
|
||||||
@ -1679,6 +1672,34 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void TrimColumnWidths()
|
||||||
|
{
|
||||||
|
for (int c = 0; c < Cols.Count; c++)
|
||||||
|
{
|
||||||
|
Select(0, c);
|
||||||
|
int newColWidth = MinColWidth();
|
||||||
|
Cols[c].Width = newColWidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int MinColWidth()
|
||||||
|
{
|
||||||
|
int curColWidth = 0;
|
||||||
|
for (int r = 0; r < Rows.Count; r++)
|
||||||
|
{
|
||||||
|
CellRange cr = GetMergedRange(r, Col);
|
||||||
|
// find the needed cell width
|
||||||
|
if (Col == cr.c1)
|
||||||
|
{
|
||||||
|
StepRTB srtb = new StepRTB();
|
||||||
|
srtb.Rtf = GetCellRTFString(cr.r1, cr.c1);
|
||||||
|
srtb.AdjustWidthForContent();
|
||||||
|
curColWidth = Math.Max(curColWidth, srtb.Width + 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return curColWidth;
|
||||||
|
}
|
||||||
|
|
||||||
//private bool RemoveBoldUlineItalicChars(string str)
|
//private bool RemoveBoldUlineItalicChars(string str)
|
||||||
//{
|
//{
|
||||||
// int rtn = 0;
|
// int rtn = 0;
|
||||||
@ -1704,13 +1725,10 @@ namespace Volian.Controls.Library
|
|||||||
|
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//private string ConvertTableText(string str, VE_Font vf)
|
|
||||||
private string ConvertTableText(string str)
|
private string ConvertTableText(string str)
|
||||||
{
|
{
|
||||||
string rtn = str;
|
string rtn = str;
|
||||||
//ShowRawString(str, "ConvertTableText IN");
|
//ShowRawString(str, "ConvertTableText IN");
|
||||||
//if (!str.StartsWith(@"{\rtf"))
|
|
||||||
//{
|
|
||||||
rtn = rtn.Replace(@"START]\v0", @"START]\cf1\v0");
|
rtn = rtn.Replace(@"START]\v0", @"START]\cf1\v0");
|
||||||
rtn = rtn.Replace(@"\v #Link:", @"\cf0\v #Link:");
|
rtn = rtn.Replace(@"\v #Link:", @"\cf0\v #Link:");
|
||||||
rtn = rtn.Replace("\n", "\\par\r\n");
|
rtn = rtn.Replace("\n", "\\par\r\n");
|
||||||
@ -1754,97 +1772,11 @@ namespace Volian.Controls.Library
|
|||||||
rtn = rtn.Replace("}", @"\}");
|
rtn = rtn.Replace("}", @"\}");
|
||||||
rtn = rtn.Replace("\xd5", @"\b");
|
rtn = rtn.Replace("\xd5", @"\b");
|
||||||
rtn = rtn.Replace("\xd6", @"\b0");
|
rtn = rtn.Replace("\xd6", @"\b0");
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// // Underline next word
|
|
||||||
// rtn = SomethingNextWord(rtn, @"\'17", @"\ul ", @"\ulnone ");
|
|
||||||
|
|
||||||
// // Bold next word
|
|
||||||
// rtn = SomethingNextWord(rtn, @"\'13", @"\b ", @"\b0 ");
|
|
||||||
|
|
||||||
// // Italics On
|
|
||||||
// rtn = rtn.Replace(@"\'1B4", @"\i ");
|
|
||||||
|
|
||||||
// // Italics Off
|
|
||||||
// rtn = rtn.Replace(@"\'1B5", @"\i0 ");
|
|
||||||
|
|
||||||
// // underline On
|
|
||||||
// rtn = rtn.Replace(@"\'ab", @"\ul");
|
|
||||||
// // underline Off
|
|
||||||
// rtn = rtn.Replace(@"\'bb", @"\ulnone");
|
|
||||||
|
|
||||||
// rtn = rtn.Replace(@"\'ef\'e6", @"\up2 ");
|
|
||||||
// rtn = rtn.Replace(@"\'ef\'e7", @"\up0 ");
|
|
||||||
// rtn = rtn.Replace(@"\'f2", @"\f1 \u8805?\f0 "); //greater than or equal
|
|
||||||
// //rtn = rtn.Replace("\xB0 ", @"\'b0 ");
|
|
||||||
// //rtn = rtn.Replace("\x2552", "\\b ");
|
|
||||||
// //rtn = rtn.Replace("\x2553", "\\b0 ");
|
|
||||||
// rtn = rtn.Replace(@"\'d5", @"\b");
|
|
||||||
// rtn = rtn.Replace(@"\'d6", @"\b0");
|
|
||||||
// //rtn = rtn.Replace("\xA0", @"\u160?");
|
|
||||||
// //rtn = rtn.Replace(@"\'a0", @"\u160?");
|
|
||||||
// rtn = rtn.Replace(@"\'ff", @"\u160?");
|
|
||||||
// //rtn = rtn.Replace("\xFF", @"\u160?");
|
|
||||||
// //rtn = rtn.Replace(@"\~", @"\u160?");
|
|
||||||
// rtn = rtn.Replace("\x7F", @"\f1 \u916?\f0 "); // delta
|
|
||||||
//}
|
|
||||||
|
|
||||||
//ShowRawString(rtn, "ConvertTableText OUT");
|
//ShowRawString(rtn, "ConvertTableText OUT");
|
||||||
return rtn;
|
return rtn;
|
||||||
}
|
}
|
||||||
|
|
||||||
//private void ConvertTableText(StepRTB srtb)
|
|
||||||
//{
|
|
||||||
// string[] symb = { @"\'f2"};
|
|
||||||
// string str = srtb.Rtf;
|
|
||||||
|
|
||||||
// // Underline next word
|
|
||||||
// str = SomethingNextWord(str, @"\'17", @"\ul ", @"\ulnone ");
|
|
||||||
|
|
||||||
// // Bold next word
|
|
||||||
// str = SomethingNextWord(str, @"\'13", @"\b ", @"\b0 ");
|
|
||||||
|
|
||||||
// // Italics On
|
|
||||||
// str = str.Replace(@"\'1B4", @"\i ");
|
|
||||||
|
|
||||||
// // Italics Off
|
|
||||||
// str = str.Replace(@"\'1B5", @"\i0 ");
|
|
||||||
|
|
||||||
// // underline On
|
|
||||||
// str = str.Replace(@"\'ab", @"\ul");
|
|
||||||
// // underline Off
|
|
||||||
// str = str.Replace(@"\'bb", @"\ulnone");
|
|
||||||
|
|
||||||
// str = str.Replace(@"\'ef\'e6", @"\up2 ");
|
|
||||||
// str = str.Replace(@"\'ef\'e7", @"\up0 ");
|
|
||||||
// str = str.Replace(@"\'d5", @"\b");
|
|
||||||
// str = str.Replace(@"\'d6", @"\b0");
|
|
||||||
// str = str.Replace("\xA0", @"\u160?");
|
|
||||||
// str = str.Replace("\x7F", @"\u916?");
|
|
||||||
// VE_Font vf = new VE_Font(this.Font.FontFamily.Name,(int)this.Font.Size,E_Style.None);
|
|
||||||
// DisplayText dt = new DisplayText(str,vf, true);
|
|
||||||
|
|
||||||
// srtb.Rtf = str;
|
|
||||||
// //srtb.SelectionStart = 0;
|
|
||||||
// //foreach (string s in symb)
|
|
||||||
// //{
|
|
||||||
// // int idx = srtb.Rtf.LastIndexOf(s, srtb.Rtf.Length-1);
|
|
||||||
// // while (idx >= 0)
|
|
||||||
// // {
|
|
||||||
// // srtb.Rtf = srtb.Rtf.Remove(idx, s.Length);
|
|
||||||
// // srtb.SelectionStart = idx;
|
|
||||||
// // srtb.InsertSymbol(s);
|
|
||||||
// // idx = srtb.Rtf.LastIndexOf(s,idx);
|
|
||||||
// // }
|
|
||||||
// //}
|
|
||||||
// //rtn = rtn.Replace("\xf2 ", @"\u8805?"); //greater than or equal
|
|
||||||
// //rtn = rtn.Replace("\xA0", @"\u160?");
|
|
||||||
// //rtn = rtn.Replace("\x7F", @"\u916?");
|
|
||||||
|
|
||||||
//}
|
|
||||||
|
|
||||||
// This converts Underline or bold next word character to the corresponding on/off commands
|
|
||||||
private static string SomethingNextWord(string str, string nxtwordcmd, string cmdOn, string cmdOff)
|
private static string SomethingNextWord(string str, string nxtwordcmd, string cmdOn, string cmdOff)
|
||||||
{
|
{
|
||||||
string rtn = "";
|
string rtn = "";
|
||||||
@ -1880,13 +1812,6 @@ namespace Volian.Controls.Library
|
|||||||
private void _StartEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
|
private void _StartEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
|
||||||
{
|
{
|
||||||
// start editing the cell with the custom editor
|
// start editing the cell with the custom editor
|
||||||
//CellStyle cs = this.Styles["Focus"];
|
|
||||||
////CellStyle cs=this.GetCellRange(e.Row, e.Col).StyleNew;
|
|
||||||
////cs.Name = string.Format("R{0}C{1}", e.Row, e.Col);
|
|
||||||
//cs.ForeColor = Color.White;
|
|
||||||
//cs = this.Styles["Highlight"];
|
|
||||||
//cs.ForeColor = Color.LightCyan;
|
|
||||||
////Console.WriteLine("Style = {0}",cs.Name);
|
|
||||||
_tableCellEditor.StartEditing(e.Row, e.Col);
|
_tableCellEditor.StartEditing(e.Row, e.Col);
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
}
|
}
|
||||||
@ -1894,7 +1819,6 @@ namespace Volian.Controls.Library
|
|||||||
// after edit handler (built-in editors)
|
// after edit handler (built-in editors)
|
||||||
private void _AfterEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
|
private void _AfterEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
|
||||||
{
|
{
|
||||||
//Console.WriteLine("Style = {0}", this.GetCellRange(e.Row, e.Col).Style.Name);
|
|
||||||
this.GetCellRange(e.Row, e.Col).Style.ForeColor = Color.Black;
|
this.GetCellRange(e.Row, e.Col).Style.ForeColor = Color.Black;
|
||||||
this.AdjustGridControlSize();
|
this.AdjustGridControlSize();
|
||||||
}
|
}
|
||||||
@ -1942,8 +1866,6 @@ namespace Volian.Controls.Library
|
|||||||
public void ClearSelectedCellText()
|
public void ClearSelectedCellText()
|
||||||
{
|
{
|
||||||
CellRange cr = this.Selection;
|
CellRange cr = this.Selection;
|
||||||
//DialogResult dr = MessageBox.Show("Clear Selected cells?", "Clear", MessageBoxButtons.YesNo);
|
|
||||||
//if (dr == DialogResult.Yes)
|
|
||||||
cr.Clear(ClearFlags.Content);
|
cr.Clear(ClearFlags.Content);
|
||||||
}
|
}
|
||||||
public void SetupCellUserData()
|
public void SetupCellUserData()
|
||||||
@ -1959,7 +1881,6 @@ namespace Volian.Controls.Library
|
|||||||
_rtf.Rtf = rtfText;
|
_rtf.Rtf = rtfText;
|
||||||
CellRange cr = GetCellRange(r, c);
|
CellRange cr = GetCellRange(r, c);
|
||||||
cr.UserData = _rtf.ContentsRectangle.Height;
|
cr.UserData = _rtf.ContentsRectangle.Height;
|
||||||
//Console.WriteLine("ownerDraw UserData [{0},{1}] = {2}", cr.r1, cr.c1, _rtf.ContentsRectangle.Height);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1980,7 +1901,11 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
public void SplitSelection(bool bSplitCols)
|
public void SplitSelection(bool bSplitCols)
|
||||||
{
|
{
|
||||||
|
//Console.WriteLine("SplitSelection this.selection {0}", this.Selection);
|
||||||
|
//Debug_WritelineMySelection();
|
||||||
C1.Win.C1FlexGrid.CellRange sel = this.GetMergedRange(this.Selection.r1, this.Selection.c1);
|
C1.Win.C1FlexGrid.CellRange sel = this.GetMergedRange(this.Selection.r1, this.Selection.c1);
|
||||||
|
//foreach (CellRange sel in MySelection)
|
||||||
|
//{
|
||||||
if (this.MergedRanges.Contains(sel))
|
if (this.MergedRanges.Contains(sel))
|
||||||
this.MergedRanges.Remove(sel);
|
this.MergedRanges.Remove(sel);
|
||||||
else //split cells
|
else //split cells
|
||||||
@ -1990,12 +1915,15 @@ namespace Volian.Controls.Library
|
|||||||
else
|
else
|
||||||
SplitSelectionRows();
|
SplitSelectionRows();
|
||||||
}
|
}
|
||||||
|
//}
|
||||||
this.Refresh();
|
this.Refresh();
|
||||||
this.AdjustGridControlSize();
|
this.AdjustGridControlSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SplitSelectionColumns()
|
private void SplitSelectionColumns()
|
||||||
{
|
{
|
||||||
|
//Console.WriteLine("SplitSelectionColumns this.selection {0}", this.Selection);
|
||||||
|
//Debug_WritelineMySelection();
|
||||||
CellRange cr = this.Selection;
|
CellRange cr = this.Selection;
|
||||||
int numSelCols = (cr.c2 - cr.c1) + 1;
|
int numSelCols = (cr.c2 - cr.c1) + 1;
|
||||||
// for each column in the selection, add a new column
|
// for each column in the selection, add a new column
|
||||||
@ -2936,14 +2864,88 @@ namespace Volian.Controls.Library
|
|||||||
return rtn;
|
return rtn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ConvertTableROToGrid(string valtext, int rodbid, string roid)
|
||||||
|
{
|
||||||
|
VE_Font vefont = MyItemInfo.GetItemFont();
|
||||||
|
this.Font = vefont.WindowsFont;
|
||||||
|
this.MergedRanges.Clear();
|
||||||
|
this.Clear();
|
||||||
|
this.IsRoTable = true;
|
||||||
|
this.ParseTableFromText(valtext);
|
||||||
|
this.AutoSizeCols();
|
||||||
|
this.AutoSizeRows();
|
||||||
|
this.MakeRTFcells();
|
||||||
|
this.RODbId = rodbid;
|
||||||
|
this.ROID = roid;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Regex _ReplaceSpaceNewLine = new Regex(@"(?<=\\[^' \\?\r\n\t]*) (?=\r\n)");
|
||||||
|
private Regex _ReplaceTokenSpaceToken = new Regex(@"(?<=\\[^' \\?\r\n\t]*) (?=\\)");
|
||||||
|
private Regex _RemoveComments = new Regex(@"\\v .*?\\v0( |$)");
|
||||||
|
|
||||||
|
private string PrepROTableText(string stepText)
|
||||||
|
{
|
||||||
|
// we need to convert some RTF command to DOS so that we can
|
||||||
|
// figure out the table size
|
||||||
|
stepText = stepText.Replace("\xF8", @"\'f8");
|
||||||
|
stepText = stepText.Replace(@"\par ", "\r\n");
|
||||||
|
stepText = _ReplaceTokenSpaceToken.Replace(stepText, "");
|
||||||
|
|
||||||
|
//Change Token Order to match RTB output
|
||||||
|
stepText = stepText.Replace(@"\v0\b0", @"\b0\v0");
|
||||||
|
stepText = stepText.Replace(@"\b0\ulnone", @"\ulnone\b0");
|
||||||
|
stepText = _ReplaceSpaceNewLine.Replace(stepText, "");
|
||||||
|
|
||||||
|
// Now change the Unicode symbols to DOS symbols
|
||||||
|
stepText = stepText.Replace(@"\u8209?", "-");
|
||||||
|
stepText = stepText.Replace(@"\u9474?", "\xB3"); // Vert Line graphic character
|
||||||
|
stepText = stepText.Replace(@"\'b0", "\xB0");
|
||||||
|
stepText = stepText.Replace(@"\up2 ", "\x9566");
|
||||||
|
stepText = stepText.Replace(@"\up0 ", "\x9567");
|
||||||
|
stepText = stepText.Replace(@"\ulnone", "\xBB");
|
||||||
|
stepText = stepText.Replace(@"\ul", "\xAB");
|
||||||
|
stepText = stepText.Replace(@"\{", "{");
|
||||||
|
stepText = stepText.Replace(@"\}", "}");
|
||||||
|
stepText = stepText.Replace(@"\b0", "\xD6");
|
||||||
|
stepText = stepText.Replace(@"\b", "\xD5");
|
||||||
|
stepText = stepText.Replace(@"\u160?", "\xA0"); //hard space
|
||||||
|
stepText = stepText.Replace(@"\u916?", "\x7F"); // delta
|
||||||
|
stepText = stepText.Replace(@"\u8805?", "\xF2"); //greater than or equal
|
||||||
|
stepText = stepText.Replace(@"\u8804?", "\xF3"); // less than or equal
|
||||||
|
stepText = stepText.Replace(@"\u931?", "\xE4"); // sigma
|
||||||
|
stepText = stepText.Replace(@"\u947?", "\xE7"); // gamma
|
||||||
|
stepText = stepText.Replace(@"\u9604?", "\xFE"); // accum 2584
|
||||||
|
stepText = stepText.Replace(@"\u9679?", "\x7"); // bullet 25CF
|
||||||
|
stepText = stepText.Replace(@"\u8776?", "\xF7"); // approx eq
|
||||||
|
stepText = stepText.Replace(@"\u8773?", "\xF0"); // similar eq 2245
|
||||||
|
stepText = stepText.Replace(@"\u8730?", "\xFB"); // square root
|
||||||
|
stepText = stepText.Replace(@"\u961?", "\xE2"); // rho 3C1
|
||||||
|
stepText = stepText.Replace(@"\u960?", "\xE3"); // pi
|
||||||
|
stepText = stepText.Replace(@"\u956?", "\xE6"); // micro
|
||||||
|
stepText = stepText.Replace(@"\u948?", "\xEB"); // lower case delta
|
||||||
|
stepText = stepText.Replace(@"\u963?", "\xE5"); // lower case sigma
|
||||||
|
stepText = stepText.Replace(@"\u274?", "\x90"); // energy, 112
|
||||||
|
stepText = stepText.Replace(@"\u949?", "\xEE"); // epsilon
|
||||||
|
stepText = stepText.Replace(@"\u952?", "\xE9"); // theta, 3B8
|
||||||
|
stepText = stepText.Replace(@"\u8857?", "\xEC"); // dot in oval, 2299
|
||||||
|
stepText = stepText.Replace(@"\u964?", "\xA8"); // tau, 3C4
|
||||||
|
stepText = stepText.Replace(@"\u9830?", "\xA9"); // diamond, 2666
|
||||||
|
stepText = stepText.Replace(@"\u8593?", "\x18"); // Up Arrow - changes to \xff
|
||||||
|
stepText = stepText.Replace(@"\u8595?", "\x19"); // Down Arrow - changes to \xd6
|
||||||
|
|
||||||
|
return stepText;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This will parse a string containing the ascii text of the old style VE-PROMS (16-bit) tables.
|
/// This will parse a string containing the ascii text of the old style VE-PROMS (16-bit) tables.
|
||||||
/// It will find the number of rows and columns base on newlines, vertical bars, and dashes.
|
/// It will find the number of rows and columns base on newlines, vertical bars, and dashes.
|
||||||
/// Then it will parse the the text, place them in cells, and attempt to merge cells were needed.
|
/// Then it will parse the the text, place them in cells, and attempt to merge cells were needed.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="txtbuff"></param>
|
/// <param name="txtbuff"></param>
|
||||||
public void ParseTableFromText(string txtbuff)
|
public void ParseTableFromText(string buff)
|
||||||
{
|
{
|
||||||
|
string txtbuff = PrepROTableText(buff);
|
||||||
|
if (IsRoTable) txtbuff = _RemoveComments.Replace(txtbuff, "");
|
||||||
int curRow = 0;
|
int curRow = 0;
|
||||||
int curCol = 0;
|
int curCol = 0;
|
||||||
int maxRow = 0;
|
int maxRow = 0;
|
||||||
@ -3108,7 +3110,7 @@ namespace Volian.Controls.Library
|
|||||||
tstr = txtbuff.Substring(idxst, idx - idxst);
|
tstr = txtbuff.Substring(idxst, idx - idxst);
|
||||||
if (tstr.EndsWith("\r")) // strip off carrage return
|
if (tstr.EndsWith("\r")) // strip off carrage return
|
||||||
tstr = tstr.Substring(0, tstr.Length - 1);
|
tstr = tstr.Substring(0, tstr.Length - 1);
|
||||||
tstr = tstr.TrimEnd(" ".ToCharArray());
|
//tstr = tstr.TrimEnd(" ".ToCharArray());
|
||||||
if (tstr.Length == 0)
|
if (tstr.Length == 0)
|
||||||
tstr += " ";
|
tstr += " ";
|
||||||
// test for a string of '-' characters
|
// test for a string of '-' characters
|
||||||
@ -3174,7 +3176,7 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
// parse out the remaining text
|
// parse out the remaining text
|
||||||
tstr = txtbuff.Substring(idxst);
|
tstr = txtbuff.Substring(idxst);
|
||||||
tstr = tstr.TrimEnd(" ".ToCharArray());
|
//tstr = tstr.TrimEnd(" ".ToCharArray());
|
||||||
if (tstr.Length == 0)
|
if (tstr.Length == 0)
|
||||||
tstr += " ";
|
tstr += " ";
|
||||||
// test for a string of '-' characters
|
// test for a string of '-' characters
|
||||||
@ -3250,6 +3252,7 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
string cellstr = this[r, c].ToString();
|
string cellstr = this[r, c].ToString();
|
||||||
this[r, c] = cellstr.TrimEnd("\r\n\t".ToCharArray());
|
this[r, c] = cellstr.TrimEnd("\r\n\t".ToCharArray());
|
||||||
|
//this[r, c] = cellstr.TrimEnd(" \r\n\t".ToCharArray());
|
||||||
CellRange cr = this.GetMergedRange(r, c);
|
CellRange cr = this.GetMergedRange(r, c);
|
||||||
if (cr.r1 != cr.r2)
|
if (cr.r1 != cr.r2)
|
||||||
TrimMergedRangeCellText(cr);
|
TrimMergedRangeCellText(cr);
|
||||||
@ -3258,312 +3261,6 @@ namespace Volian.Controls.Library
|
|||||||
MyBorders = new VlnBorders(GridLinePattern.Single, Rows.Count, Cols.Count);
|
MyBorders = new VlnBorders(GridLinePattern.Single, Rows.Count, Cols.Count);
|
||||||
}
|
}
|
||||||
|
|
||||||
//private Regex _RemoveComments = new Regex(@"\\v .*?\\v0( |$)");
|
|
||||||
|
|
||||||
//public void ParseTableFromText2(string rtfText)
|
|
||||||
//{
|
|
||||||
// //string txtbuff = _RemoveComments.Replace(rtfText, "");
|
|
||||||
// string txtbuff = "";
|
|
||||||
// int curRow = 0;
|
|
||||||
// int curCol = 0;
|
|
||||||
// int maxRow = 0;
|
|
||||||
// int maxCol = 0;
|
|
||||||
// // Get Max Rows and Max Cols
|
|
||||||
// char[] test = "|\n\x02".ToCharArray();
|
|
||||||
// int idx = 0;
|
|
||||||
// int idxst = 0;
|
|
||||||
// int colPos = 0;
|
|
||||||
// int strow = 0;
|
|
||||||
// Dictionary<int, int> dicCols = new Dictionary<int, int>();
|
|
||||||
// //Dictionary<int, int> dicCols2 = new Dictionary<int, int>();
|
|
||||||
|
|
||||||
// //If this is not a table ro, then process the RTF version of the text so as to caputure Link references
|
|
||||||
// if (!this.IsRoTable)
|
|
||||||
// txtbuff = rtfText;
|
|
||||||
// else
|
|
||||||
// txtbuff = _RemoveComments.Replace(rtfText, "");
|
|
||||||
// do
|
|
||||||
// {
|
|
||||||
// idx = txtbuff.IndexOfAny(test, idxst);
|
|
||||||
// if (idx > -1)
|
|
||||||
// {
|
|
||||||
// switch (txtbuff[idx])
|
|
||||||
// {
|
|
||||||
// case '|': // end of a column
|
|
||||||
// colPos = idxst - strow;
|
|
||||||
// if (!dicCols.ContainsKey(colPos))
|
|
||||||
// dicCols.Add(colPos, curCol);
|
|
||||||
// else if (curCol > dicCols[colPos])
|
|
||||||
// {
|
|
||||||
// dicCols.Remove(colPos);
|
|
||||||
// dicCols.Add(colPos, curCol);
|
|
||||||
// }
|
|
||||||
// curCol++;
|
|
||||||
// break;
|
|
||||||
// case '\x02':
|
|
||||||
// case '\n': // end of a row
|
|
||||||
// colPos = idxst - strow;
|
|
||||||
// if (!dicCols.ContainsKey(colPos))
|
|
||||||
// dicCols.Add(colPos, curCol);
|
|
||||||
// else if (curCol > dicCols[colPos])
|
|
||||||
// {
|
|
||||||
// dicCols.Remove(colPos);
|
|
||||||
// dicCols.Add(colPos, curCol);
|
|
||||||
// }
|
|
||||||
// curRow++;
|
|
||||||
// strow = idx + 1;
|
|
||||||
// if (curCol > maxCol)
|
|
||||||
// maxCol = curCol;
|
|
||||||
// curCol = 0;
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// idxst = idx + 1;
|
|
||||||
// if (idxst >= txtbuff.Length)
|
|
||||||
// idx = -1;
|
|
||||||
// }
|
|
||||||
// } while (idx != -1);
|
|
||||||
// maxRow = curRow + 1;
|
|
||||||
// curRow = 0;
|
|
||||||
// curCol = 0;
|
|
||||||
// // The resulting Table Grid size in rows and columns
|
|
||||||
// this.Cols.Count = maxCol + 1;
|
|
||||||
// this.Rows.Count = maxRow + 1;
|
|
||||||
|
|
||||||
// // make all rows and columns editable
|
|
||||||
// this.Rows.Fixed = 0;
|
|
||||||
// this.Cols.Fixed = 0;
|
|
||||||
|
|
||||||
// // TableCellInfo is used to assign merge ranges
|
|
||||||
// // Make a two dimensional array of TableCellinfo the same size as the table grid
|
|
||||||
// TableCellInfo[,] tci = new TableCellInfo[maxRow + 1, maxCol + 1];
|
|
||||||
// for (int r = 0; r <= maxRow; r++)
|
|
||||||
// for (int c = 0; c <= maxCol; c++)
|
|
||||||
// tci[r, c] = new TableCellInfo();
|
|
||||||
|
|
||||||
// // Read in each cell of the grid
|
|
||||||
// idx = 0;
|
|
||||||
// idxst = 0;
|
|
||||||
// colPos = 0;
|
|
||||||
// strow = 0;
|
|
||||||
// int prevCol = 0;
|
|
||||||
// int tstidx = 0;
|
|
||||||
// string tstr = "";
|
|
||||||
// bool incRow = false;
|
|
||||||
// ////If this is not a table ro, then process the RTF version of the text so as to caputure Link references
|
|
||||||
// //if (!this.IsRoTable)
|
|
||||||
// // txtbuff = rtfText;
|
|
||||||
// do
|
|
||||||
// {
|
|
||||||
// idx = txtbuff.IndexOfAny(test, idxst);
|
|
||||||
// if (idx > -1)
|
|
||||||
// {
|
|
||||||
// switch (txtbuff[idx])
|
|
||||||
// {
|
|
||||||
// case '|': // end of column
|
|
||||||
// colPos = idxst - strow;
|
|
||||||
// // based on the position of the | char, find what column we are in.
|
|
||||||
// // note that this will tell us if any columns to the left were merged
|
|
||||||
// // the while loop will flag cell that need to be merged
|
|
||||||
// curCol = dicCols[colPos];
|
|
||||||
// while (curCol > prevCol + 1)
|
|
||||||
// {
|
|
||||||
// tci[curRow, prevCol].MergeColRight = true;
|
|
||||||
// prevCol++;
|
|
||||||
// }
|
|
||||||
// prevCol = curCol;
|
|
||||||
|
|
||||||
// // parse out the text to be placed in the table cell
|
|
||||||
// tstr = txtbuff.Substring(idxst, idx - idxst);
|
|
||||||
// if (tstr.Length == 0)
|
|
||||||
// tstr += " ";
|
|
||||||
// // test for a string of '-' characters
|
|
||||||
// for (tstidx = 0; (tstidx < tstr.Length) && (tstr[tstidx] == '-'); tstidx++) ;
|
|
||||||
// if (tstidx < tstr.Length) // not a full line (row) of '-' chars
|
|
||||||
// {
|
|
||||||
// // if this column is in a merged grouping of rows,
|
|
||||||
// // get the cell text in the first cell of the merged grouping of cells
|
|
||||||
// // we will append the newly parsed text to this cell's text.
|
|
||||||
// int rw = curRow;
|
|
||||||
// while (rw - 1 >= 0 && tci[rw - 1, curCol].MergeRowBellow) rw--;
|
|
||||||
// int cl = curCol;
|
|
||||||
// while (cl - 1 >= 0 && tci[rw, cl - 1].MergeColRight) cl--;
|
|
||||||
// //string jstr = (string)this[rw, curCol];
|
|
||||||
// string jstr = (string)this[rw, cl];
|
|
||||||
// if (jstr == null)
|
|
||||||
// jstr = tstr;
|
|
||||||
// else
|
|
||||||
// jstr += ((cl == curCol) ? "\n" : "") + tstr; // multi line cell
|
|
||||||
// //jstr += "\n" + tstr; // multi line cell
|
|
||||||
// //this[rw, curCol] = jstr;
|
|
||||||
// this[rw, cl] = jstr;
|
|
||||||
// // take a peek at the start of the next piece of table text to parse
|
|
||||||
// // if it starts with a '-' char, then flag to merge the columns up to
|
|
||||||
// // this point with the same columns in the next row
|
|
||||||
// if (idx < txtbuff.Length - 1 && txtbuff[idx + 1] == '-')
|
|
||||||
// {
|
|
||||||
// for (int c = curCol; c >= -0; c--)
|
|
||||||
// if (!tci[curRow, c].ColEnd)
|
|
||||||
// tci[curRow, c].MergeRowBellow = true;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else // parsed text contains all dashes
|
|
||||||
// {
|
|
||||||
// tci[curRow, curCol].ColEnd = true;
|
|
||||||
// incRow = true;
|
|
||||||
// }
|
|
||||||
// break;
|
|
||||||
// case '\x02': // end of file
|
|
||||||
// case '\n': // new line of 16-bit table text
|
|
||||||
// colPos = idxst - strow;
|
|
||||||
// // see what column we are in - new line might occure before last grid column
|
|
||||||
// curCol = dicCols[colPos];
|
|
||||||
// strow = idx + 1;
|
|
||||||
// // parse out the cell text
|
|
||||||
// tstr = txtbuff.Substring(idxst, idx - idxst);
|
|
||||||
// if (tstr.EndsWith("\r")) // strip off carrage return
|
|
||||||
// tstr = tstr.Substring(0, tstr.Length - 1);
|
|
||||||
// tstr = tstr.TrimEnd(" ".ToCharArray());
|
|
||||||
// if (tstr.Length == 0)
|
|
||||||
// tstr += " ";
|
|
||||||
// // test for a string of '-' characters
|
|
||||||
// for (tstidx = 0; (tstidx < tstr.Length) && (tstr[tstidx] == '-'); tstidx++) ;
|
|
||||||
// if (tstidx < tstr.Length) // not a full line (row) of '-' chars
|
|
||||||
// {
|
|
||||||
// // if this column is in a merged grouping of rows,
|
|
||||||
// // get the cell text in the first cell of the merged grouping of cells
|
|
||||||
// // we will append the newly parsed text to this cell's text.
|
|
||||||
// int rw = curRow;
|
|
||||||
// while (rw - 1 >= 0 && tci[rw - 1, curCol].MergeRowBellow) rw--;
|
|
||||||
// int cl = curCol;
|
|
||||||
// while (cl - 1 >= 0 && tci[rw, cl - 1].MergeColRight) cl--;
|
|
||||||
// //string jstr = (string)this[rw, curCol];
|
|
||||||
// string jstr = (string)this[rw, cl];
|
|
||||||
// if (jstr == null)
|
|
||||||
// jstr = tstr;
|
|
||||||
// else
|
|
||||||
// jstr += ((cl == curCol) ? "\n" : "") + tstr; // multi line cell
|
|
||||||
// //jstr += "\n" + tstr; // multi line cell
|
|
||||||
|
|
||||||
// //this[rw, curCol] = jstr;
|
|
||||||
// this[rw, cl] = jstr;
|
|
||||||
// }
|
|
||||||
// else if (tstr.Length > 0) // parsed text is all dash characters
|
|
||||||
// {
|
|
||||||
// incRow = true;
|
|
||||||
// if (curRow > 0) // merge the column in the previous row with this one
|
|
||||||
// tci[curRow - 1, curCol].MergeRowBellow = false;
|
|
||||||
// }
|
|
||||||
// // if were are that the end of the 16-bit text line, but not in the last column,
|
|
||||||
// // merge the remaining columns to the right
|
|
||||||
// if ((curCol < maxCol) && (tstidx < tstr.Length))
|
|
||||||
// {
|
|
||||||
// for (int i = curCol; i < maxCol; i++)
|
|
||||||
// tci[curRow, i].MergeColRight = true;
|
|
||||||
// }
|
|
||||||
// if (incRow)
|
|
||||||
// curRow++;
|
|
||||||
// curCol = 0;
|
|
||||||
// incRow = false;
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// idxst = idx + 1;
|
|
||||||
// if (idxst >= txtbuff.Length)
|
|
||||||
// idx = -1;
|
|
||||||
// }
|
|
||||||
// else if (idxst < txtbuff.Length - 1) // handle any remaining text not yet parsed
|
|
||||||
// {
|
|
||||||
// // find the curent column and merge remaining columns to the right
|
|
||||||
// colPos = idxst - strow;
|
|
||||||
// curCol = dicCols[colPos];
|
|
||||||
// while (curCol > prevCol + 1)
|
|
||||||
// {
|
|
||||||
// tci[curRow, prevCol].MergeColRight = true;
|
|
||||||
// prevCol++;
|
|
||||||
// }
|
|
||||||
// // parse out the remaining text
|
|
||||||
// tstr = txtbuff.Substring(idxst);
|
|
||||||
// tstr = tstr.TrimEnd(" ".ToCharArray());
|
|
||||||
// if (tstr.Length == 0)
|
|
||||||
// tstr += " ";
|
|
||||||
// // test for a string of '-' characters
|
|
||||||
// for (tstidx = 0; (tstidx < tstr.Length) && (tstr[tstidx] == '-'); tstidx++) ;
|
|
||||||
// if (tstidx < tstr.Length)
|
|
||||||
// {
|
|
||||||
// // if this column is in a merged grouping of rows,
|
|
||||||
// // get the cell text in the first cell of the merged grouping of cells
|
|
||||||
// // we will append the newly parsed text to this cell's text.
|
|
||||||
// int rw = curRow;
|
|
||||||
// while (rw - 1 >= 0 && tci[rw - 1, curCol].MergeRowBellow) rw--;
|
|
||||||
// int cl = curCol;
|
|
||||||
// while (cl - 1 >= 0 && tci[rw, cl - 1].MergeColRight) cl--;
|
|
||||||
// //string jstr = (string)this[rw, curCol];
|
|
||||||
// string jstr = (string)this[rw, cl];
|
|
||||||
// if (jstr == null)
|
|
||||||
// jstr = tstr;
|
|
||||||
// else
|
|
||||||
// jstr += ((cl == curCol) ? "\n" : "") + tstr; // multi line cell
|
|
||||||
// //jstr += "\n" + tstr; // multi line cell
|
|
||||||
// //this[rw, curCol] = jstr;
|
|
||||||
// this[rw, cl] = jstr;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// } while (idx != -1);
|
|
||||||
|
|
||||||
// // we are done parsing the 16-bit text.
|
|
||||||
// // now set the merge ranges in the table grid, based on the
|
|
||||||
// // information saved in that two dimensional array of TableCellinfo
|
|
||||||
// this.Rows.Count = curRow + 1;
|
|
||||||
// this.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom;
|
|
||||||
// maxRow = curRow;
|
|
||||||
// int rR = 0;
|
|
||||||
// int rC = 0;
|
|
||||||
// for (int r = 0; r <= maxRow; r++)
|
|
||||||
// for (int c = 0; c <= maxCol; c++)
|
|
||||||
// {
|
|
||||||
// if (tci[r, c].MergeColRight)
|
|
||||||
// {
|
|
||||||
// rC = c;
|
|
||||||
// while ((rC < maxCol) && (tci[r, rC].MergeColRight)) rC++;
|
|
||||||
// if (rC > c)
|
|
||||||
// {
|
|
||||||
// this.MergedRanges.Add(this.GetCellRange(r, c, r, rC));
|
|
||||||
// string cellstr = this[r, c].ToString();
|
|
||||||
// for (int x = c + 1; x <= rC; x++)
|
|
||||||
// this[r, x] = cellstr;
|
|
||||||
// c = rC;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// for (int c = 0; c <= maxCol; c++)
|
|
||||||
// for (int r = 0; r <= maxRow; r++)
|
|
||||||
// {
|
|
||||||
// if (tci[r, c].MergeRowBellow)
|
|
||||||
// {
|
|
||||||
// rR = r;
|
|
||||||
// while ((rR < maxRow) && (tci[rR, c].MergeRowBellow)) rR++;
|
|
||||||
// if (rR > r)
|
|
||||||
// {
|
|
||||||
// this.MergedRanges.Add(this.GetCellRange(r, c, rR, c));
|
|
||||||
// string cellstr = this[r, c].ToString();
|
|
||||||
// for (int x = r + 1; x <= rR; x++)
|
|
||||||
// this[x, c] = cellstr;
|
|
||||||
// r = rR;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// for (int c = 0; c <= maxCol; c++)
|
|
||||||
// for (int r = 0; r <= maxRow; r++)
|
|
||||||
// {
|
|
||||||
// if (this[r, c] != null)
|
|
||||||
// {
|
|
||||||
// string cellstr = this[r, c].ToString();
|
|
||||||
// this[r, c] = cellstr.TrimEnd(" \r\n\t".ToCharArray());
|
|
||||||
// CellRange cr = this.GetMergedRange(r, c);
|
|
||||||
// if (cr.r1 != cr.r2)
|
|
||||||
// TrimMergedRangeCellText(cr);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
private void TrimMergedRangeCellText(CellRange cr)
|
private void TrimMergedRangeCellText(CellRange cr)
|
||||||
{
|
{
|
||||||
// count number of newlines
|
// count number of newlines
|
||||||
@ -3572,22 +3269,55 @@ namespace Volian.Controls.Library
|
|||||||
int nlines = strary.Length;
|
int nlines = strary.Length;
|
||||||
// count number of rows in merge range
|
// count number of rows in merge range
|
||||||
int nrows = (cr.r2 - cr.r1) + 1;
|
int nrows = (cr.r2 - cr.r1) + 1;
|
||||||
// if nlines > rows then trim blank lines from top
|
int neededLines = (nlines - (nrows - 1));
|
||||||
bool bNeedToTrim = (nlines > nrows);
|
bool bNeedToTrim = (nlines > neededLines);
|
||||||
string jstr = "";
|
string jstr = "";
|
||||||
foreach (string tmpstr in strary)
|
int LinesToGo = neededLines;
|
||||||
|
if (bNeedToTrim)
|
||||||
{
|
{
|
||||||
|
int numBlanksEnd = 0;
|
||||||
|
// find the number of blank lines at the end of this table cell
|
||||||
|
for (int i = nlines-1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
if (strary[i].Trim().Length == 0)
|
||||||
|
numBlanksEnd++;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
int preBlanksLines = 0;
|
||||||
|
//foreach (string tmpstr in strary)
|
||||||
|
// we ignore the ending blank lines
|
||||||
|
// this allows us to include any blank lines that are between text lines
|
||||||
|
for (int i = 0; i < nlines - numBlanksEnd; i++)
|
||||||
|
{
|
||||||
|
string tmpstr = strary[i];
|
||||||
int tlen = tmpstr.Trim().Length;
|
int tlen = tmpstr.Trim().Length;
|
||||||
if (!bNeedToTrim || tlen > 0)
|
if (tlen > 0 || (LinesToGo < neededLines))
|
||||||
{
|
{
|
||||||
if (jstr.Length > 0) jstr += "\n";
|
if (jstr.Length > 0) jstr += "\n";
|
||||||
jstr += tmpstr;
|
jstr += tmpstr;
|
||||||
|
LinesToGo--;
|
||||||
|
}
|
||||||
|
else if (LinesToGo == (nlines - (nrows - 1)))
|
||||||
|
preBlanksLines++;
|
||||||
|
}
|
||||||
|
while (LinesToGo > 0)
|
||||||
|
{
|
||||||
|
// need to put this type of hard space (not \xA0) to hold the newline position
|
||||||
|
if (preBlanksLines > 0)
|
||||||
|
{
|
||||||
|
jstr = "\\~\n" + jstr;
|
||||||
|
LinesToGo--;
|
||||||
|
}
|
||||||
|
if (numBlanksEnd > 0)
|
||||||
|
{
|
||||||
|
jstr += "\n\\~";
|
||||||
|
LinesToGo--;
|
||||||
}
|
}
|
||||||
else nlines--;
|
|
||||||
bNeedToTrim = (tlen == 0 && nlines > nrows);
|
|
||||||
}
|
}
|
||||||
this[cr.r1, cr.c1] = jstr;
|
this[cr.r1, cr.c1] = jstr;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion //Import / Export Grid
|
#endregion //Import / Export Grid
|
||||||
|
|
||||||
@ -3816,6 +3546,23 @@ namespace Volian.Controls.Library
|
|||||||
Select(r1,c1,r2,c2);
|
Select(r1,c1,r2,c2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Debug_WritelineMySelection()
|
||||||
|
{
|
||||||
|
int r1 = MySelection[0].r1;
|
||||||
|
int r2 = MySelection[0].r2;
|
||||||
|
int c1 = MySelection[0].c1;
|
||||||
|
int c2 = MySelection[0].c2;
|
||||||
|
Console.WriteLine("Initial MySelection[0] {0}", MySelection[0]);
|
||||||
|
foreach (CellRange cr in MySelection)
|
||||||
|
{
|
||||||
|
r1 = Math.Min(r1, cr.r1);
|
||||||
|
c1 = Math.Min(c1, cr.c1);
|
||||||
|
r2 = Math.Max(r2, cr.r2);
|
||||||
|
c2 = Math.Max(c2, cr.c2);
|
||||||
|
Console.WriteLine("Foreach range ({0},{1}) - ({2},{3})", r1, c1, r2, c2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user