WCNTRN: Use maxlen for wrapping of responsibility text
This commit is contained in:
parent
e877c61b7f
commit
fe8fc4ceec
@ -3553,9 +3553,10 @@ namespace Volian.Print.Library
|
|||||||
if (sc2 != null)
|
if (sc2 != null)
|
||||||
{
|
{
|
||||||
string resp = sc2.Step_Responsibility;
|
string resp = sc2.Step_Responsibility;
|
||||||
|
|
||||||
if (resp != null && resp != "") // lines are separated by "\r\n"
|
if (resp != null && resp != "") // lines are separated by "\r\n"
|
||||||
{
|
{
|
||||||
resp = resp.TrimEnd();
|
resp = DelimitResponse((int)MyItemInfo.MyDocStyle.SectTop.MaxLen, resp);
|
||||||
if (!resp.EndsWith("\r\n")) resp = resp + "\r\n"; // parsing needs this.
|
if (!resp.EndsWith("\r\n")) resp = resp + "\r\n"; // parsing needs this.
|
||||||
int indx = resp.IndexOf("\r\n");
|
int indx = resp.IndexOf("\r\n");
|
||||||
int stindx = 0;
|
int stindx = 0;
|
||||||
@ -3575,6 +3576,43 @@ namespace Volian.Print.Library
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private string DelimitResponse(int maxLen, string responsStr)
|
||||||
|
{
|
||||||
|
// This code handles whether user enters \r\n to separate lines or not. The
|
||||||
|
// max width that a line can be in the Responsibility column is a format flag (passed in)
|
||||||
|
List<string> results = new List<string>();
|
||||||
|
int width = 0;
|
||||||
|
int start = 0; // start of line (index into string 'text')
|
||||||
|
int lastspace = 0; // location of lastspace (index into string)
|
||||||
|
for (int indx = 0; indx < responsStr.Length; indx++)
|
||||||
|
{
|
||||||
|
if ((indx + 1) < responsStr.Length && responsStr.Substring(indx, 2) == "\r\n")
|
||||||
|
{
|
||||||
|
results.Add(responsStr.Substring(start, indx - start).Trim(" ".ToCharArray()) + "\r\n");
|
||||||
|
start = indx + 2;
|
||||||
|
width = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (responsStr[indx] == ' ') lastspace = indx;
|
||||||
|
width++;
|
||||||
|
if (width > maxLen)
|
||||||
|
{
|
||||||
|
// what should be done if lastspace == 0
|
||||||
|
// cannot find space char to split on, so break the word
|
||||||
|
if (lastspace == 0) lastspace = indx;
|
||||||
|
results.Add(responsStr.Substring(start, lastspace - start).Trim(" ".ToCharArray()) + "\r\n");
|
||||||
|
start = lastspace + 1;
|
||||||
|
width = 0;
|
||||||
|
lastspace = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (width > 0 || start < responsStr.Length) results.Add(responsStr.Substring(start).Trim(" ".ToCharArray()));
|
||||||
|
string retval = null;
|
||||||
|
foreach (string st in results) retval = retval + st;
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
public override string Rtf
|
public override string Rtf
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
Loading…
x
Reference in New Issue
Block a user