C2021-005 methods to get and set the font size in table cells
This commit is contained in:
parent
294b7f5618
commit
41660d97ae
@ -2634,46 +2634,56 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//B2020-018: SetFontSize and SetFontSizeReplace were moved from StepTabRibbon so that the short cut keys could also
|
// C2021-005 set the selected cell(s) or cell text to the passed in font size
|
||||||
// access the code that puts boundaries on font size.
|
public void SetFontSize(float newSize)
|
||||||
// SetFontSize: replace rtf string of selection or entire rtb
|
|
||||||
public void SetFontSize(bool increase)
|
|
||||||
{
|
{
|
||||||
if (SelectedText == null || SelectedText == "")
|
if (SelectedText == null || SelectedText == "") // table cell selected
|
||||||
Rtf = SetFontSizeReplace(Rtf, increase);
|
Rtf = SetFontSizeReplace(Rtf, newSize);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// table cell text selected
|
||||||
int selst = SelectionStart;
|
int selst = SelectionStart;
|
||||||
int selln = SelectionLength;
|
int selln = SelectionLength;
|
||||||
SelectedRtf = SetFontSizeReplace(SelectedRtf, increase);
|
SelectedRtf = SetFontSizeReplace(SelectedRtf, newSize); // set font size of seleted text
|
||||||
Select(selst, selln);
|
Select(selst, selln); // re-select the cell text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private string SetFontSizeReplace(string rtf, bool increase)
|
// C2021-005 set the font size of the passed in RTF text
|
||||||
|
private string SetFontSizeReplace(string rtf, float newSize)
|
||||||
{
|
{
|
||||||
MatchCollection mc = Regex.Matches(rtf, @"\\fs([0-9]+)");
|
MatchCollection mc = Regex.Matches(rtf, @"\\fs([0-9]+)");
|
||||||
bool didMsg = false;
|
|
||||||
foreach (Match match in mc)
|
foreach (Match match in mc)
|
||||||
{
|
{
|
||||||
float sz = float.Parse(match.Groups[1].Value);
|
float sz = float.Parse(match.Groups[1].Value);
|
||||||
float repwith = increase ? sz + 1 : sz - 1;
|
float repwith = newSize * 2; // RTF font size is double the selected point size
|
||||||
if (repwith > 36 || repwith < 16) // Font size can be increased to 18 and decreased to 8 (note that \fs## has number 2 * pt)
|
|
||||||
{
|
|
||||||
if (!didMsg) // only put out message once.
|
|
||||||
{
|
|
||||||
MessageBox.Show(increase ? "Reached maximum font size, cannot increase." : "Reached minimum font size, cannot decrease.", "Warning font size change");
|
|
||||||
didMsg = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
string repsz = match.Value; // use \fs## rather than number in replace in case text contains the number
|
string repsz = match.Value; // use \fs## rather than number in replace in case text contains the number
|
||||||
string repwithsz = match.Value.Replace(sz.ToString(), ((int)repwith).ToString());
|
string repwithsz = match.Value.Replace(sz.ToString(), ((int)repwith).ToString());
|
||||||
rtf = rtf.Replace(repsz, repwithsz);
|
rtf = rtf.Replace(repsz, repwithsz);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return rtf;
|
return rtf;
|
||||||
}
|
}
|
||||||
|
// C2021-005 parse the rtf for the font sizes.
|
||||||
|
// if there are different font sizes, then return 0
|
||||||
|
public float GetRTFFontSize()
|
||||||
|
{
|
||||||
|
string rtf;
|
||||||
|
if (SelectedText == null || SelectedText == "")
|
||||||
|
rtf = Rtf;
|
||||||
|
else
|
||||||
|
rtf = SelectedRtf;
|
||||||
|
MatchCollection mc = Regex.Matches(rtf, @"\\fs([0-9]+)");
|
||||||
|
bool differentFonts = false;
|
||||||
|
float lastSZ = 0;
|
||||||
|
foreach (Match match in mc)
|
||||||
|
{
|
||||||
|
float sz = float.Parse(match.Groups[1].Value);
|
||||||
|
if (lastSZ == 0)
|
||||||
|
lastSZ = sz;
|
||||||
|
else if (lastSZ != sz)
|
||||||
|
differentFonts = true;
|
||||||
|
}
|
||||||
|
return (differentFonts || lastSZ == 0) ? 0 : lastSZ/2; // divide the RTF font size by two to get the font point size
|
||||||
|
}
|
||||||
private static Form ParentForm(Control ctrl)
|
private static Form ParentForm(Control ctrl)
|
||||||
{
|
{
|
||||||
while (!(ctrl.Parent is Form || ctrl.Parent is EditItem))
|
while (!(ctrl.Parent is Form || ctrl.Parent is EditItem))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user