This commit is contained in:
parent
9d2f4faa33
commit
089c50befa
@ -819,4 +819,15 @@ namespace VEPROMS.CSLA.Library
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
[Flags]
|
||||||
|
public enum E_ROValueType : uint
|
||||||
|
{
|
||||||
|
All = 0,
|
||||||
|
Text = 1,
|
||||||
|
Table = 2,
|
||||||
|
Graph = 4,
|
||||||
|
Image = 8,
|
||||||
|
Video = 16,
|
||||||
|
Hologram = 32
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -132,12 +132,15 @@ namespace VEPROMS.CSLA.Library
|
|||||||
while (_CacheList.Count > 0) // Move Content(s) from temporary _CacheList to _CacheByPrimaryKey
|
while (_CacheList.Count > 0) // Move Content(s) from temporary _CacheList to _CacheByPrimaryKey
|
||||||
{
|
{
|
||||||
Content tmp = _CacheList[0]; // Get the first Content
|
Content tmp = _CacheList[0]; // Get the first Content
|
||||||
string pKey = tmp.ContentID.ToString();
|
if (!tmp.Disposed)
|
||||||
if (!_CacheByPrimaryKey.ContainsKey(pKey))
|
|
||||||
{
|
{
|
||||||
_CacheByPrimaryKey[pKey] = new List<Content>(); // Add new list for PrimaryKey
|
string pKey = tmp.ContentID.ToString();
|
||||||
|
if (!_CacheByPrimaryKey.ContainsKey(pKey))
|
||||||
|
{
|
||||||
|
_CacheByPrimaryKey[pKey] = new List<Content>(); // Add new list for PrimaryKey
|
||||||
|
}
|
||||||
|
_CacheByPrimaryKey[pKey].Add(tmp); // Add to Primary Key list
|
||||||
}
|
}
|
||||||
_CacheByPrimaryKey[pKey].Add(tmp); // Add to Primary Key list
|
|
||||||
_CacheList.RemoveAt(0); // Remove the first Content
|
_CacheList.RemoveAt(0); // Remove the first Content
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -842,6 +845,13 @@ namespace VEPROMS.CSLA.Library
|
|||||||
{/* require use of factory methods */
|
{/* require use of factory methods */
|
||||||
AddToCache(this);
|
AddToCache(this);
|
||||||
}
|
}
|
||||||
|
private bool _Disposed = false;
|
||||||
|
|
||||||
|
public bool Disposed
|
||||||
|
{
|
||||||
|
get { return _Disposed; }
|
||||||
|
set { _Disposed = value; }
|
||||||
|
}
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_MyGrid != null)
|
if (_MyGrid != null)
|
||||||
@ -849,6 +859,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
_MyGrid.Dispose();
|
_MyGrid.Dispose();
|
||||||
_MyGrid = null;
|
_MyGrid = null;
|
||||||
}
|
}
|
||||||
|
Disposed = true;
|
||||||
RemoveFromDictionaries();
|
RemoveFromDictionaries();
|
||||||
}
|
}
|
||||||
private void RemoveFromDictionaries()
|
private void RemoveFromDictionaries()
|
||||||
|
@ -235,7 +235,7 @@ namespace Volian.Controls.Library
|
|||||||
AddFontTable(selectedRtfSB, FormatFont, FontIsFixed(FormatFont));
|
AddFontTable(selectedRtfSB, FormatFont, FontIsFixed(FormatFont));
|
||||||
_RtfPrefix = selectedRtfSB.ToString();
|
_RtfPrefix = selectedRtfSB.ToString();
|
||||||
}
|
}
|
||||||
return _RtfPrefix;
|
return _RtfPrefix;// +@"{\colortbl ;\red255\green0\blue0;}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// August 5, 2009 - KBR & RHM:
|
// August 5, 2009 - KBR & RHM:
|
||||||
@ -1035,7 +1035,20 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
return (int)(Math.Ceiling(f));
|
return (int)(Math.Ceiling(f));
|
||||||
}
|
}
|
||||||
public void AdjustWidthForContent()
|
public int MaxTextWidth
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
int maxWidth = 0;
|
||||||
|
for (int i = 0; i < TextLength; i++)
|
||||||
|
{
|
||||||
|
int w = GetPositionFromCharIndex(i).X;
|
||||||
|
maxWidth = Math.Max(maxWidth, w);
|
||||||
|
}
|
||||||
|
return maxWidth+10; // add 10 to account for the last character
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void AdjustWidthForContent()
|
||||||
{
|
{
|
||||||
int widthNL = Ceiling(GetStringWidth("\n"));
|
int widthNL = Ceiling(GetStringWidth("\n"));
|
||||||
int widthMax = 0;
|
int widthMax = 0;
|
||||||
|
@ -12,6 +12,7 @@ using System.IO;
|
|||||||
using Volian.Controls.Library;
|
using Volian.Controls.Library;
|
||||||
using VEPROMS.CSLA.Library;
|
using VEPROMS.CSLA.Library;
|
||||||
using C1.Win.C1FlexGrid;
|
using C1.Win.C1FlexGrid;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace Volian.Controls.Library
|
namespace Volian.Controls.Library
|
||||||
{
|
{
|
||||||
@ -161,10 +162,19 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
return height;
|
return height;
|
||||||
}
|
}
|
||||||
|
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;
|
||||||
int curRowHeightNLines = curRowHeight / (Rows.DefaultSize - 3);
|
|
||||||
if (curRowHeight <= (Rows.DefaultSize - 3)) return 0; // never have row less than default height
|
if (curRowHeight <= (Rows.DefaultSize - 3)) return 0; // never have row less than default height
|
||||||
int blankRowSpace = curRowHeight;
|
int blankRowSpace = curRowHeight;
|
||||||
for (int c = 0; c < Cols.Count; c++)
|
for (int c = 0; c < Cols.Count; c++)
|
||||||
@ -173,7 +183,6 @@ namespace Volian.Controls.Library
|
|||||||
if (Row >= cr.r1 && Row <= cr.r2)
|
if (Row >= cr.r1 && Row <= cr.r2)
|
||||||
{
|
{
|
||||||
int cellHeight = GetCellHeight(Row, c);
|
int cellHeight = GetCellHeight(Row, c);
|
||||||
//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);
|
||||||
//if (cellHeight < dataHeight)
|
//if (cellHeight < dataHeight)
|
||||||
@ -184,6 +193,33 @@ namespace Volian.Controls.Library
|
|||||||
//Console.WriteLine("BlankRowSpace {0}", blankRowSpace);
|
//Console.WriteLine("BlankRowSpace {0}", blankRowSpace);
|
||||||
return blankRowSpace;
|
return blankRowSpace;
|
||||||
}
|
}
|
||||||
|
private int BlankColSpace()
|
||||||
|
{
|
||||||
|
int curColWidth = (Cols[Col].Width == -1) ? Cols.DefaultSize - 3 : Cols[Col].Width - 3;
|
||||||
|
//int curRowHeightNLines = curRowHeight / (Rows.DefaultSize - 3);
|
||||||
|
if (curColWidth <= Cols.DefaultSize - 3) return 0; // never have col less than default width
|
||||||
|
int blankColSpace = curColWidth;
|
||||||
|
for (int r = 0; r < Rows.Count; r++)
|
||||||
|
{
|
||||||
|
StepRTB srtb = new StepRTB();
|
||||||
|
CellRange cr = GetMergedRange(r, Col);
|
||||||
|
srtb.Rtf = GetCellRTFString(cr.r1,cr.c1);
|
||||||
|
if (Col >= cr.c1 && Col <= cr.c2)
|
||||||
|
{
|
||||||
|
int cellWidth = GetCellWidth(r, Col);
|
||||||
|
srtb.Width = cellWidth;
|
||||||
|
Application.DoEvents();
|
||||||
|
//int mergeCellHeightNLines = cellHeight / (Rows.DefaultSize - 3);
|
||||||
|
//int dataHeight = (cr.UserData == null) ? cellHeight : (int)cr.UserData;
|
||||||
|
//int ud = dataHeight / (Rows.DefaultSize - 3);
|
||||||
|
//if (cellHeight < dataHeight)
|
||||||
|
// Console.WriteLine("r {0}, c {1}, cell{2}, data{3}", Row, c, cellHeight, dataHeight);
|
||||||
|
blankColSpace = Math.Min(blankColSpace, Math.Max(0, cellWidth - srtb.MaxTextWidth));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Console.WriteLine("BlankRowSpace {0}", blankRowSpace);
|
||||||
|
return blankColSpace;
|
||||||
|
}
|
||||||
//private bool CanReduceRow()
|
//private bool CanReduceRow()
|
||||||
//{
|
//{
|
||||||
// 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;
|
||||||
@ -650,7 +686,7 @@ namespace Volian.Controls.Library
|
|||||||
//this.Refresh();
|
//this.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AdjustGridHeightWidth(int r, int c)
|
public void ConvertTextCellToRTF(int r, int c)
|
||||||
{
|
{
|
||||||
StepRTB trtb = new StepRTB();
|
StepRTB trtb = new StepRTB();
|
||||||
string tstr = null;
|
string tstr = null;
|
||||||
@ -660,32 +696,29 @@ namespace Volian.Controls.Library
|
|||||||
trtb.Clear();
|
trtb.Clear();
|
||||||
tstr = (string)this[r, c];
|
tstr = (string)this[r, c];
|
||||||
trtb.Font = this.Font;
|
trtb.Font = this.Font;
|
||||||
//trtb.Rtf = trtb.RtfPrefixForSymbols;
|
|
||||||
if (tstr != null && tstr.Length > 0)
|
if (tstr != null && tstr.Length > 0)
|
||||||
{
|
{
|
||||||
string tsave = tstr;
|
string tsave = tstr;
|
||||||
if (tstr.StartsWith(@"{\rtf"))
|
|
||||||
trtb.Rtf = tstr; // already RTF text
|
|
||||||
else
|
|
||||||
trtb.Text = tstr; // this will convert regular text to RTF text
|
|
||||||
//if (trtb.Rtf.Contains("SimSun"))
|
|
||||||
// Console.WriteLine("here's SimSun! :-)");
|
|
||||||
// regular text has special characters to toggle Bold, Underline, and Italics
|
// regular text has special characters to toggle Bold, Underline, and Italics
|
||||||
// we need to subtract the width of these characters (allow column/row to shrink)
|
// we need to subtract the width of these characters (allow column/row to shrink)
|
||||||
AllowWidthShrink = RemoveBoldUlineItalicChars(trtb.Rtf);
|
//AllowWidthShrink = RemoveBoldUlineItalicChars(trtb.Rtf);
|
||||||
|
AllowWidthShrink = tstr.Contains("#Link:");
|
||||||
// this will convert the special characters for Bold, Underline, and Italics
|
// this will convert the special characters for Bold, Underline, and Italics
|
||||||
// into RTF commands
|
// into RTF commands
|
||||||
//VE_Font vf = new VE_Font(this.Font.FontFamily.Name, (int)this.Font.Size, E_Style.None);
|
//trtb.Rtf = trtb.RtfPrefix + ConvertTableText(trtb.Rtf) + "}";
|
||||||
trtb.Rtf = trtb.RtfPrefix + ConvertTableText(trtb.Rtf) + "}";
|
//string fromRTF = trtb.Rtf;
|
||||||
string fromRTF = trtb.Rtf;
|
//string prefix = trtb.RtfPrefix;
|
||||||
trtb.Rtf = trtb.RtfPrefix + ConvertTableText(tstr) + "}";
|
//if (tstr.Contains("#Link:")) prefix += @"{\colortbl ;\red255\green0\blue0;}";
|
||||||
string fromStr = trtb.Rtf;
|
//if (tstr.Contains("#Link:"))
|
||||||
if (fromRTF.Contains("SimSun"))
|
// Console.WriteLine("here");
|
||||||
Console.WriteLine("SimSun");
|
//string jText = trtb.RtfPrefix + ConvertTableText(tstr) + @"\par}";
|
||||||
else
|
//trtb.Rtf = jText;
|
||||||
Compare(fromRTF, fromStr, tsave);
|
trtb.Rtf = trtb.RtfPrefix + ConvertTableText(tstr) + @"\par}";
|
||||||
//ConvertTableText(trtb);
|
//string fromStr = trtb.Rtf;
|
||||||
|
//if (fromRTF.Contains("SimSun"))
|
||||||
|
// Console.WriteLine("SimSun");
|
||||||
|
//else
|
||||||
|
// Compare(fromRTF, fromStr, tsave);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -703,7 +736,6 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
|
|
||||||
this[r, c] = trtb.Rtf; // save the cleaned up and processed cell text as RTF
|
this[r, c] = trtb.Rtf; // save the cleaned up and processed cell text as RTF
|
||||||
|
|
||||||
this.Select(r, c, false);
|
this.Select(r, c, false);
|
||||||
CellRange sel = this.Selection;
|
CellRange sel = this.Selection;
|
||||||
//sel.UserData = trtb.ContentsRectangle.Height;
|
//sel.UserData = trtb.ContentsRectangle.Height;
|
||||||
@ -777,6 +809,74 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//private void AdjustCellHeightWidth(int r, int c, StepRTB trtb)
|
||||||
|
//{
|
||||||
|
// this.Select(r, c, false);
|
||||||
|
// CellRange sel = this.Selection;
|
||||||
|
// //sel.UserData = trtb.ContentsRectangle.Height;
|
||||||
|
|
||||||
|
// // Now see the the selected row,col is in the defined merge ranges
|
||||||
|
// bool mrgrows = false;
|
||||||
|
// bool mrgcols = false;
|
||||||
|
// foreach (CellRange cr in this.MergedRanges)
|
||||||
|
// {
|
||||||
|
// if (cr.Contains(r, c))
|
||||||
|
// {
|
||||||
|
// if (cr.c1 != cr.c2)
|
||||||
|
// mrgcols = true; // in a range of merged columns
|
||||||
|
// if (cr.r1 != cr.r2)
|
||||||
|
// mrgrows = true; // in a range of merged rows
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if (!mrgcols || !mrgrows)
|
||||||
|
// {
|
||||||
|
// // IF the row of the selected cell is NOT in merged range
|
||||||
|
// // then go ahead and adjust the row height (if needed)
|
||||||
|
// if (!mrgrows)
|
||||||
|
// {
|
||||||
|
// // add adjustment for grid and cell borders
|
||||||
|
// int newheight = trtb.Height + 3;
|
||||||
|
|
||||||
|
// //if (newheight > this.Rows[r].Height)
|
||||||
|
// //{
|
||||||
|
// this.Rows[r].Height = newheight;
|
||||||
|
// //}
|
||||||
|
// }
|
||||||
|
// // IF the column of the selected cell is NOT in merged range
|
||||||
|
// // then go ahead and adjust the column width (if needed)
|
||||||
|
// if (!mrgcols)
|
||||||
|
// {
|
||||||
|
// // add adjustment for grid and cell borders
|
||||||
|
// int newwidth = trtb.Width + 2;
|
||||||
|
|
||||||
|
// //if (newwidth > this.Cols[c].Width || AllowWidthShrink || r == 0)
|
||||||
|
// this.Cols[c].Width = newwidth;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if (mrgrows && tstr != null)
|
||||||
|
// {
|
||||||
|
// CellRange cr = GetMergedRange(r, c);
|
||||||
|
// if (cr.r1 == r && cr.c1 == c)
|
||||||
|
// {
|
||||||
|
// // if in merged rows, then make sure the cell's height is large enough
|
||||||
|
// string[] strary = tstr.Split("\n".ToCharArray());
|
||||||
|
// // count number of lines of text
|
||||||
|
// int nlines = strary.Length;
|
||||||
|
// // count number of rows in merge range
|
||||||
|
// int nrows = (cr.r2 - cr.r1) + 1;
|
||||||
|
// while (nlines > nrows)
|
||||||
|
// {
|
||||||
|
// // add length to first row in merged range
|
||||||
|
// int h = this.Rows[cr.r1].Height;
|
||||||
|
// int defH = Rows.DefaultSize - 3;
|
||||||
|
// h = (h == -1) ? (defH * 2) + 3 : h + defH;
|
||||||
|
// this.Rows[cr.r1].Height = h;
|
||||||
|
// nrows++;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
private void Compare(string fromRTF, string fromStr, string rawstr)
|
private void Compare(string fromRTF, string fromStr, string rawstr)
|
||||||
{
|
{
|
||||||
@ -797,7 +897,7 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
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, 10), fromRTF.Substring(i, 10));
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -836,101 +936,171 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
this.Rows[r].Height = Rows.DefaultSize;//_minRowHeight;//20;//10;
|
this.Rows[r].Height = Rows.DefaultSize;//_minRowHeight;//20;//10;
|
||||||
for (int c = 0; c < this.Cols.Count; c++)
|
for (int c = 0; c < this.Cols.Count; c++)
|
||||||
this.AdjustGridHeightWidth(r, c);
|
this.ConvertTextCellToRTF(r, c);
|
||||||
}
|
}
|
||||||
//this.Refresh();
|
//this.Refresh();
|
||||||
//Application.DoEvents();
|
//Application.DoEvents();
|
||||||
this.AdjustGridControlSize();
|
this.AdjustGridControlSize();
|
||||||
SetupCellUserData();
|
SetupCellUserData();
|
||||||
|
//RemoveBlankSpaceFromColumns();
|
||||||
|
RemoveBlankSpaceFromRows();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool RemoveBoldUlineItalicChars(string str)
|
public void FixTableCellsHeightWidth()
|
||||||
{
|
{
|
||||||
int rtn = 0;
|
//StepRTB trtb = new StepRTB();
|
||||||
|
////trtb.SetTableGridCellRTFPrefix(this.Font);
|
||||||
// Underline next word
|
//trtb.Font = this.Font;
|
||||||
rtn += str.IndexOf(@"\'17");
|
//// This will spin through all the cells in the grid:
|
||||||
|
//// - adjust the grid dimensions based on the cell info.
|
||||||
// Bold next word
|
//for (int r = 0; r < this.Rows.Count; r++)
|
||||||
rtn += str.IndexOf(@"\'13");
|
//{
|
||||||
|
// this.Rows[r].Height = Rows.DefaultSize;//_minRowHeight;//20;//10;
|
||||||
// Italics On
|
// for (int c = 0; c < this.Cols.Count; c++)
|
||||||
rtn += str.IndexOf(@"\'1B4");
|
// {
|
||||||
|
// trtb.Clear();
|
||||||
// Italics Off
|
// trtb.Rtf = (string)this[r, c];
|
||||||
rtn += str.IndexOf(@"\'1B5");
|
// this.AdjustCellHeightWidth(r, c, trtb);
|
||||||
|
// }
|
||||||
// underline On
|
//}
|
||||||
rtn += str.IndexOf(@"\'ab");
|
//this.AdjustGridControlSize();
|
||||||
// underline Off
|
//SetupCellUserData();
|
||||||
rtn += str.IndexOf(@"\'bb");
|
RemoveBlankSpaceFromColumns();
|
||||||
|
RemoveBlankSpaceFromRows();
|
||||||
return rtn > 0;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void RemoveBlankSpaceFromRows()
|
||||||
|
{
|
||||||
|
for (int r = 0; r < Rows.Count; r++)
|
||||||
|
{
|
||||||
|
Select(r, 0);
|
||||||
|
int blankRowSpace = BlankRowSpace();
|
||||||
|
if (blankRowSpace > 0)
|
||||||
|
Rows[r].Height -= blankRowSpace;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RemoveBlankSpaceFromColumns()
|
||||||
|
{
|
||||||
|
for (int c = 0; c < Cols.Count; c++)
|
||||||
|
{
|
||||||
|
Select(0, c);
|
||||||
|
int blankColSpace = BlankColSpace();
|
||||||
|
if (blankColSpace > 0)
|
||||||
|
Cols[c].Width -= blankColSpace;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//private bool RemoveBoldUlineItalicChars(string str)
|
||||||
|
//{
|
||||||
|
// int rtn = 0;
|
||||||
|
|
||||||
|
// // Underline next word
|
||||||
|
// rtn += str.IndexOf(@"\'17");
|
||||||
|
|
||||||
|
// // Bold next word
|
||||||
|
// rtn += str.IndexOf(@"\'13");
|
||||||
|
|
||||||
|
// // Italics On
|
||||||
|
// rtn += str.IndexOf(@"\'1B4");
|
||||||
|
|
||||||
|
// // Italics Off
|
||||||
|
// rtn += str.IndexOf(@"\'1B5");
|
||||||
|
|
||||||
|
// // underline On
|
||||||
|
// rtn += str.IndexOf(@"\'ab");
|
||||||
|
// // underline Off
|
||||||
|
// rtn += str.IndexOf(@"\'bb");
|
||||||
|
|
||||||
|
// return rtn > 0;
|
||||||
|
|
||||||
|
//}
|
||||||
|
|
||||||
//private string ConvertTableText(string str, VE_Font vf)
|
//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"))
|
//if (!str.StartsWith(@"{\rtf"))
|
||||||
{
|
//{
|
||||||
rtn = rtn.Replace("\n", "\\par\r\n");
|
rtn = rtn.Replace(@"START]\v0", @"START]\cf1\v0");
|
||||||
rtn = rtn.Replace("\xF2", @"\f1 \u8805?\f0 "); //greater than or equal
|
rtn = rtn.Replace(@"\v #Link:", @"\cf0\v #Link:");
|
||||||
rtn = rtn.Replace("\x7F", @"\f1 \u916?\f0 "); // delta
|
rtn = rtn.Replace("\n", "\\par\r\n");
|
||||||
if (rtn.Contains("\xFF"))
|
rtn = rtn.Replace("\xB3", @"\f1\u9474?\f0"); // Vert Bar
|
||||||
rtn = rtn.Replace("\xFF", @"\u160?");
|
rtn = rtn.Replace("\xF2", @"\f1\u8805?\f0 "); // greater than or equal
|
||||||
//rtn = rtn.Replace(@"\'a0", @"\u160?");
|
rtn = rtn.Replace("\x7F", @"\f1\u916?\f0 "); // delta
|
||||||
//rtn = rtn.Replace("\xff", @"\u160?");
|
rtn = rtn.Replace("\xF3", @"\f1\u8804?\f0 "); // less than or equal
|
||||||
//rtn = rtn.Replace("\xA0", @"\u160?");
|
rtn = rtn.Replace("\xE4", @"\f1\u931?\f0 "); // sigma
|
||||||
// underline On
|
rtn = rtn.Replace("\xE7", @"\f1\u947?\f0 "); // gamma
|
||||||
rtn = rtn.Replace("\xab", @"\ul");
|
rtn = rtn.Replace("\xFE", @"\f1\u9604?\f0 "); // accum 2584
|
||||||
// underline Off
|
rtn = rtn.Replace("\x7", @"\f1\u9679?\f0 "); // bullet 25CF
|
||||||
rtn = rtn.Replace("\xbb", @"\ulnone");
|
rtn = rtn.Replace("\xF7", @"\f1\u8776?\f0 "); // approx eq
|
||||||
//rtn = rtn.Replace("\xef\xe6", @"\up2 ");
|
rtn = rtn.Replace("\xF0", @"\f1\u8773?\f0 "); // similar eq 2245
|
||||||
//rtn = rtn.Replace("\xef\xe7", @"\up0 ");
|
rtn = rtn.Replace("\xFB", @"\f1\u8730?\f0 "); // square root
|
||||||
rtn = rtn.Replace("\x9566", @"\up2 ");
|
rtn = rtn.Replace("\xE2", @"\f1\u961?\f0 "); // rho 3C1
|
||||||
rtn = rtn.Replace("\x9567", @"\up0 ");
|
rtn = rtn.Replace("\xE3", @"\f1\u960?\f0 "); // pi
|
||||||
rtn = rtn.Replace("{", @"\{");
|
rtn = rtn.Replace("\xE6", @"\f1\u956?\f0 "); // micro
|
||||||
rtn = rtn.Replace("}", @"\}");
|
rtn = rtn.Replace("\xEB", @"\f1\u948?\f0 "); // lower case delta
|
||||||
rtn = rtn.Replace("\xd5", @"\b");
|
rtn = rtn.Replace("\xE5", @"\f1\u963?\f0 "); // lower case sigma
|
||||||
rtn = rtn.Replace("\xd6", @"\b0");
|
rtn = rtn.Replace("\x90", @"\f1\u274?\f0 "); // energy, 112
|
||||||
}
|
rtn = rtn.Replace("\xEE", @"\f1\u949?\f0 "); // epsilon
|
||||||
else
|
rtn = rtn.Replace("\xE9", @"\f1\u952?\f0 "); // theta, 3B8
|
||||||
{
|
rtn = rtn.Replace("\xEC", @"\f1\u8857?\f0 "); // dot in oval, 2299
|
||||||
// Underline next word
|
rtn = rtn.Replace("\xA8", @"\f1\u964?\f0 "); // tau, 3C4
|
||||||
rtn = SomethingNextWord(rtn, @"\'17", @"\ul ", @"\ulnone ");
|
rtn = rtn.Replace("\xA9", @"\f1\u9830?\f0 "); // diamond, 2666
|
||||||
|
rtn = rtn.Replace("\x18", @"\f1\u8593?\f0 "); // Up Arrow
|
||||||
|
rtn = rtn.Replace("\x19", @"\f1\u8595?\f0 "); // Down Arrow
|
||||||
|
rtn = rtn.Replace("\xFF", @"\u160?"); // hardspace
|
||||||
|
//rtn = rtn.Replace(@"\'a0", @"\u160?");
|
||||||
|
//rtn = rtn.Replace("\xff", @"\u160?");
|
||||||
|
//rtn = rtn.Replace("\xA0", @"\u160?");
|
||||||
|
// underline On
|
||||||
|
rtn = rtn.Replace("\xab", @"\ul");
|
||||||
|
// underline Off
|
||||||
|
rtn = rtn.Replace("\xbb", @"\ulnone");
|
||||||
|
//rtn = rtn.Replace("\xef\xe6", @"\up2 ");
|
||||||
|
//rtn = rtn.Replace("\xef\xe7", @"\up0 ");
|
||||||
|
rtn = rtn.Replace("\x9566", @"\up2 ");
|
||||||
|
rtn = rtn.Replace("\x9567", @"\up0 ");
|
||||||
|
rtn = rtn.Replace("{", @"\{");
|
||||||
|
rtn = rtn.Replace("}", @"\}");
|
||||||
|
rtn = rtn.Replace("\xd5", @"\b");
|
||||||
|
rtn = rtn.Replace("\xd6", @"\b0");
|
||||||
|
//}
|
||||||
|
//else
|
||||||
|
//{
|
||||||
|
// // Underline next word
|
||||||
|
// rtn = SomethingNextWord(rtn, @"\'17", @"\ul ", @"\ulnone ");
|
||||||
|
|
||||||
// Bold next word
|
// // Bold next word
|
||||||
rtn = SomethingNextWord(rtn, @"\'13", @"\b ", @"\b0 ");
|
// rtn = SomethingNextWord(rtn, @"\'13", @"\b ", @"\b0 ");
|
||||||
|
|
||||||
// Italics On
|
// // Italics On
|
||||||
rtn = rtn.Replace(@"\'1B4", @"\i ");
|
// rtn = rtn.Replace(@"\'1B4", @"\i ");
|
||||||
|
|
||||||
// Italics Off
|
// // Italics Off
|
||||||
rtn = rtn.Replace(@"\'1B5", @"\i0 ");
|
// rtn = rtn.Replace(@"\'1B5", @"\i0 ");
|
||||||
|
|
||||||
// underline On
|
// // underline On
|
||||||
rtn = rtn.Replace(@"\'ab", @"\ul");
|
// rtn = rtn.Replace(@"\'ab", @"\ul");
|
||||||
// underline Off
|
// // underline Off
|
||||||
rtn = rtn.Replace(@"\'bb", @"\ulnone");
|
// rtn = rtn.Replace(@"\'bb", @"\ulnone");
|
||||||
|
|
||||||
rtn = rtn.Replace(@"\'ef\'e6", @"\up2 ");
|
// rtn = rtn.Replace(@"\'ef\'e6", @"\up2 ");
|
||||||
rtn = rtn.Replace(@"\'ef\'e7", @"\up0 ");
|
// rtn = rtn.Replace(@"\'ef\'e7", @"\up0 ");
|
||||||
rtn = rtn.Replace(@"\'f2", @"\f1 \u8805?\f0 "); //greater than or equal
|
// rtn = rtn.Replace(@"\'f2", @"\f1 \u8805?\f0 "); //greater than or equal
|
||||||
//rtn = rtn.Replace("\xB0 ", @"\'b0 ");
|
// //rtn = rtn.Replace("\xB0 ", @"\'b0 ");
|
||||||
//rtn = rtn.Replace("\x2552", "\\b ");
|
// //rtn = rtn.Replace("\x2552", "\\b ");
|
||||||
//rtn = rtn.Replace("\x2553", "\\b0 ");
|
// //rtn = rtn.Replace("\x2553", "\\b0 ");
|
||||||
rtn = rtn.Replace(@"\'d5", @"\b");
|
// rtn = rtn.Replace(@"\'d5", @"\b");
|
||||||
rtn = rtn.Replace(@"\'d6", @"\b0");
|
// rtn = rtn.Replace(@"\'d6", @"\b0");
|
||||||
//rtn = rtn.Replace("\xA0", @"\u160?");
|
// //rtn = rtn.Replace("\xA0", @"\u160?");
|
||||||
//rtn = rtn.Replace(@"\'a0", @"\u160?");
|
// //rtn = rtn.Replace(@"\'a0", @"\u160?");
|
||||||
rtn = rtn.Replace(@"\'ff", @"\u160?");
|
// rtn = rtn.Replace(@"\'ff", @"\u160?");
|
||||||
//rtn = rtn.Replace("\xFF", @"\u160?");
|
// //rtn = rtn.Replace("\xFF", @"\u160?");
|
||||||
//rtn = rtn.Replace(@"\~", @"\u160?");
|
// //rtn = rtn.Replace(@"\~", @"\u160?");
|
||||||
rtn = rtn.Replace("\x7F", @"\f1 \u916?\f0 "); // delta
|
// rtn = rtn.Replace("\x7F", @"\f1 \u916?\f0 "); // delta
|
||||||
}
|
//}
|
||||||
|
|
||||||
//ShowRawString(rtn, "ConvertTableText OUT");
|
//ShowRawString(rtn, "ConvertTableText OUT");
|
||||||
return rtn;
|
return rtn;
|
||||||
@ -1626,7 +1796,7 @@ namespace Volian.Controls.Library
|
|||||||
trtb.AdjustWidthForContent();
|
trtb.AdjustWidthForContent();
|
||||||
}
|
}
|
||||||
this[r, c] = trtb.Rtf;
|
this[r, c] = trtb.Rtf;
|
||||||
this.AdjustGridHeightWidth(r, c);
|
this.ConvertTextCellToRTF(r, c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1845,7 +2015,7 @@ namespace Volian.Controls.Library
|
|||||||
/// <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 celll, 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 txtbuff)
|
||||||
@ -1956,6 +2126,15 @@ namespace Volian.Controls.Library
|
|||||||
for (tstidx = 0; (tstidx < tstr.Length) && (tstr[tstidx] == '-'); tstidx++) ;
|
for (tstidx = 0; (tstidx < tstr.Length) && (tstr[tstidx] == '-'); tstidx++) ;
|
||||||
if (tstidx < tstr.Length) // not a full line (row) of '-' chars
|
if (tstidx < tstr.Length) // not a full line (row) of '-' chars
|
||||||
{
|
{
|
||||||
|
// 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;
|
||||||
|
}
|
||||||
// if this column is in a merged grouping of rows,
|
// if this column is in a merged grouping of rows,
|
||||||
// get the cell text in the first cell of the merged grouping of cells
|
// 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.
|
// we will append the newly parsed text to this cell's text.
|
||||||
@ -1972,15 +2151,23 @@ namespace Volian.Controls.Library
|
|||||||
//jstr += "\n" + tstr; // multi line cell
|
//jstr += "\n" + tstr; // multi line cell
|
||||||
//this[rw, curCol] = jstr;
|
//this[rw, curCol] = jstr;
|
||||||
this[rw, cl] = jstr;
|
this[rw, cl] = jstr;
|
||||||
// take a peek at the start of the next piece of table text to parse
|
//// 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
|
//// if it starts with a '-' char, then flag to merge the columns up to
|
||||||
// this point with the same columns in the next row
|
//// this point with the same columns in the next row
|
||||||
if (idx < txtbuff.Length - 1 && txtbuff[idx + 1] == '-')
|
//if (idx < txtbuff.Length - 1 && txtbuff[idx + 1] == '-')
|
||||||
{
|
//{
|
||||||
for (int c = curCol; c >= -0; c--)
|
// for (int c = curCol; c >= 0; c--)
|
||||||
if (!tci[curRow, c].ColEnd)
|
// if (!tci[curRow, c].ColEnd)
|
||||||
tci[curRow, c].MergeRowBellow = true;
|
// tci[curRow, c].MergeRowBellow = true;
|
||||||
}
|
//}
|
||||||
|
//int tcol = dicCols[idx];
|
||||||
|
//// 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 < tcol)
|
||||||
|
//{
|
||||||
|
// for (int i = curCol; i <= tcol; i++)
|
||||||
|
// tci[curRow, i].MergeColRight = true;
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
else // parsed text contains all dashes
|
else // parsed text contains all dashes
|
||||||
{
|
{
|
||||||
@ -1991,19 +2178,26 @@ namespace Volian.Controls.Library
|
|||||||
case '\x02': // end of file
|
case '\x02': // end of file
|
||||||
case '\n': // new line of 16-bit table text
|
case '\n': // new line of 16-bit table text
|
||||||
colPos = idxst - strow;
|
colPos = idxst - strow;
|
||||||
// see what column we are in - new line might occure before last grid column
|
|
||||||
curCol = dicCols[colPos];
|
curCol = dicCols[colPos];
|
||||||
|
// see what column we are in - new line might occure before last grid column
|
||||||
strow = idx + 1;
|
strow = idx + 1;
|
||||||
// parse out the cell text
|
// parse out the cell text
|
||||||
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());
|
||||||
if (tstr.Length == 0)
|
if (tstr.Length == 0)
|
||||||
tstr += " ";
|
tstr += " ";
|
||||||
// test for a string of '-' characters
|
// test for a string of '-' characters
|
||||||
for (tstidx = 0; (tstidx < tstr.Length) && (tstr[tstidx] == '-'); tstidx++) ;
|
for (tstidx = 0; (tstidx < tstr.Length) && (tstr[tstidx] == '-'); tstidx++) ;
|
||||||
if (tstidx < tstr.Length) // not a full line (row) of '-' chars
|
if (tstidx < tstr.Length) // not a full line (row) of '-' chars
|
||||||
{
|
{
|
||||||
|
//curCol = dicCols[colPos];
|
||||||
|
while (curCol > prevCol + 1)
|
||||||
|
{
|
||||||
|
tci[curRow, prevCol].MergeColRight = true;
|
||||||
|
prevCol++;
|
||||||
|
}
|
||||||
// if this column is in a merged grouping of rows,
|
// if this column is in a merged grouping of rows,
|
||||||
// get the cell text in the first cell of the merged grouping of cells
|
// 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.
|
// we will append the newly parsed text to this cell's text.
|
||||||
@ -2057,6 +2251,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());
|
||||||
if (tstr.Length == 0)
|
if (tstr.Length == 0)
|
||||||
tstr += " ";
|
tstr += " ";
|
||||||
// test for a string of '-' characters
|
// test for a string of '-' characters
|
||||||
@ -2138,7 +2333,314 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void TrimMergedRangeCellText(CellRange cr)
|
|
||||||
|
//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)
|
||||||
{
|
{
|
||||||
// count number of newlines
|
// count number of newlines
|
||||||
string cellstr = this[cr.r1, cr.c1].ToString();
|
string cellstr = this[cr.r1, cr.c1].ToString();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user