本文整理汇总了C#中IVwEnv.CloseTableCell方法的典型用法代码示例。如果您正苦于以下问题:C# IVwEnv.CloseTableCell方法的具体用法?C# IVwEnv.CloseTableCell怎么用?C# IVwEnv.CloseTableCell使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IVwEnv
的用法示例。
在下文中一共展示了IVwEnv.CloseTableCell方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Display
public override void Display(IVwEnv vwenv, int hvo, int frag)
{
CheckDisposed();
switch (frag)
{
case kfragRHS:
m_rhs = new PhSegRuleRHS(m_cache, hvo);
IPhRegularRule rule = new PhRegularRule(m_cache, m_rhs.OwnerHVO);
int arrowWidth, slashWidth, underscoreWidth, charHeight;
vwenv.get_StringWidth(m_arrow, m_charProps, out arrowWidth, out charHeight);
int maxCharHeight = charHeight;
vwenv.get_StringWidth(m_slash, m_charProps, out slashWidth, out charHeight);
maxCharHeight = Math.Max(charHeight, maxCharHeight);
vwenv.get_StringWidth(m_underscore, m_charProps, out underscoreWidth, out charHeight);
maxCharHeight = Math.Max(charHeight, maxCharHeight);
int dmpx, spaceHeight;
vwenv.get_StringWidth(m_zwSpace, m_bracketProps, out dmpx, out spaceHeight);
int maxNumLines = MaxNumLines;
int maxCtxtHeight = maxNumLines * spaceHeight;
int maxHeight = Math.Max(maxCharHeight, maxCtxtHeight);
int charOffset = maxHeight;
int ctxtPadding = maxHeight - maxCtxtHeight;
VwLength tableLen;
tableLen.nVal = 10000;
tableLen.unit = VwUnit.kunPercent100;
vwenv.OpenTable(7, tableLen, 0, VwAlignment.kvaCenter, VwFramePosition.kvfpVoid, VwRule.kvrlNone, 0, 0, false);
VwLength ctxtLen;
ctxtLen.nVal = 1;
ctxtLen.unit = VwUnit.kunRelative;
VwLength charLen;
charLen.unit = VwUnit.kunPoint1000;
vwenv.MakeColumns(1, ctxtLen);
charLen.nVal = arrowWidth + 4000;
vwenv.MakeColumns(1, charLen);
vwenv.MakeColumns(1, ctxtLen);
charLen.nVal = slashWidth + 4000;
vwenv.MakeColumns(1, charLen);
vwenv.MakeColumns(1, ctxtLen);
charLen.nVal = underscoreWidth + 4000;
vwenv.MakeColumns(1, charLen);
vwenv.MakeColumns(1, ctxtLen);
vwenv.OpenTableBody();
vwenv.OpenTableRow();
// LHS cell
vwenv.Props = m_ctxtProps;
vwenv.set_IntProperty((int)FwTextPropType.ktptPadTop, (int)FwTextPropVar.ktpvMilliPoint, ctxtPadding);
vwenv.OpenTableCell(1, 1);
vwenv.OpenParagraph();
vwenv.AddObjProp(m_cache.GetFlid(hvo, null, "OwningRule"), this, kfragRule);
vwenv.CloseParagraph();
vwenv.CloseTableCell();
// arrow cell
vwenv.Props = m_charProps;
vwenv.set_IntProperty((int)FwTextPropType.ktptOffset, (int)FwTextPropVar.ktpvMilliPoint, -charOffset);
vwenv.OpenTableCell(1, 1);
vwenv.AddString(m_arrow);
vwenv.CloseTableCell();
// RHS cell
vwenv.Props = m_ctxtProps;
vwenv.set_IntProperty((int)FwTextPropType.ktptPadTop, (int)FwTextPropVar.ktpvMilliPoint, ctxtPadding);
vwenv.OpenTableCell(1, 1);
vwenv.OpenParagraph();
if (m_cache.GetVectorSize(hvo, (int)PhSegRuleRHS.PhSegRuleRHSTags.kflidStrucChange) > 0)
{
vwenv.AddObjVecItems((int)PhSegRuleRHS.PhSegRuleRHSTags.kflidStrucChange, this, kfragContext);
}
else
{
OpenContextPile(vwenv, false);
vwenv.Props = m_bracketProps;
vwenv.AddProp((int)PhSegRuleRHS.PhSegRuleRHSTags.kflidStrucChange, this, kfragEmpty);
CloseContextPile(vwenv, false);
}
vwenv.CloseParagraph();
vwenv.CloseTableCell();
// slash cell
vwenv.Props = m_charProps;
vwenv.set_IntProperty((int)FwTextPropType.ktptOffset, (int)FwTextPropVar.ktpvMilliPoint, -charOffset);
vwenv.OpenTableCell(1, 1);
vwenv.AddString(m_slash);
vwenv.CloseTableCell();
// left context cell
//.........这里部分代码省略.........
示例2: DisplayWithWritingSystemLabel
private void DisplayWithWritingSystemLabel(IVwEnv vwenv, int ws)
{
ITsString tssLabel = NameOfWs(ws);
// We use a table to display
// encodings in column one and the strings in column two.
// The table uses 100% of the available width.
VwLength vlTable;
vlTable.nVal = 10000;
vlTable.unit = VwUnit.kunPercent100;
int dxs; // Width of displayed string.
int dys; // Height of displayed string (not used here).
vwenv.get_StringWidth(tssLabel, null, out dxs, out dys);
VwLength vlColWs; // 5-pt space plus max label width.
vlColWs.nVal = dxs + 5000;
vlColWs.unit = VwUnit.kunPoint1000;
// The Main column is relative and uses the rest of the space.
VwLength vlColMain;
vlColMain.nVal = 1;
vlColMain.unit = VwUnit.kunRelative;
// Enhance JohnT: possibly allow for right-to-left UI by reversing columns?
vwenv.OpenTable(2, // Two columns.
vlTable, // Table uses 100% of available width.
0, // Border thickness.
VwAlignment.kvaLeft, // Default alignment.
VwFramePosition.kvfpVoid, // No border.
VwRule.kvrlNone, // No rules between cells.
0, // No forced space between cells.
0, // No padding inside cells.
false);
// Specify column widths. The first argument is the number of columns,
// not a column index. The writing system column only occurs at all if its
// width is non-zero.
vwenv.MakeColumns(1, vlColWs);
vwenv.MakeColumns(1, vlColMain);
vwenv.OpenTableBody();
vwenv.OpenTableRow();
// First cell has writing system abbreviation displayed using m_ttpLabel.
//vwenv.Props = m_ttpLabel;
vwenv.OpenTableCell(1, 1);
vwenv.set_IntProperty((int)FwTextPropType.ktptEditable, (int)FwTextPropVar.ktpvEnum,
(int)TptEditable.ktptNotEditable);
vwenv.AddString(tssLabel);
vwenv.CloseTableCell();
// Second cell has the string contents for the alternative.
// DN version has some property setting, including trailing margin and RTL.
if (m_fRtlScript)
{
vwenv.set_IntProperty((int) FwTextPropType.ktptRightToLeft,
(int) FwTextPropVar.ktpvEnum,
(int) FwTextToggleVal.kttvForceOn);
vwenv.set_IntProperty((int) FwTextPropType.ktptAlign,
(int) FwTextPropVar.ktpvEnum,
(int) FwTextAlign.ktalTrailing);
}
//if (!m_editable)
//{
// vwenv.set_IntProperty((int)FwTextPropType.ktptEditable, (int)FwTextPropVar.ktpvEnum,
// (int)TptEditable.ktptNotEditable);
//}
vwenv.set_IntProperty((int) FwTextPropType.ktptPadTop, (int) FwTextPropVar.ktpvMilliPoint, 2000);
vwenv.OpenTableCell(1, 1);
vwenv.AddStringProp(m_flid, this);
vwenv.CloseTableCell();
vwenv.CloseTableRow();
vwenv.CloseTableBody();
vwenv.CloseTable();
}
示例3: Display
public override void Display(IVwEnv vwenv, int hvo, int frag)
{
// Ignore 0 hvo's. RootObject may have not been set. FWNX-613.
if (hvo == 0)
return;
switch(frag)
{
case kfragRoot:
if (m_dxLabWidth == 0)
{
int dmpx1, dmpy; //, dmpx2;
vwenv.get_StringWidth(m_tssTitle, m_ttpBold, out dmpx1, out dmpy);
//vwenv.get_StringWidth(m_tssComments, m_ttpBold, out dmpx2, out dmpy);
//m_dxLabWidth = Math.Max(dmpx1, dmpx2) + 13000; // add 3 pt spacing to box, 10 to margin.
m_dxLabWidth = dmpx1 + 13000; // add 3 pt spacing to box, 10 to margin.
m_dxWsLabWidth = 0;
foreach (ITsString tssLabel in m_WsLabels)
{
vwenv.get_StringWidth(tssLabel, m_ttpWsLabel, out dmpx1, out dmpy);
m_dxWsLabWidth = Math.Max(m_dxWsLabWidth, dmpx1);
}
m_dxWsLabWidth += 18000; // 3 pts white space each side, 11 margin, 1 border, plus 1 for safety.
}
VwLength vlTable;
vlTable.nVal = 10000;
vlTable.unit = VwUnit.kunPercent100;
VwLength vlColLabels; // 5-pt space plus max label width.
vlColLabels.nVal = m_dxLabWidth;
vlColLabels.unit = VwUnit.kunPoint1000;
VwLength vlColWsLabels; // 5-pt space plus max ws label width.
vlColWsLabels.nVal = m_dxWsLabWidth;
vlColWsLabels.unit = VwUnit.kunPoint1000;
// The Main column is relative and uses the rest of the space.
VwLength vlColMain;
vlColMain.nVal = 1;
vlColMain.unit = VwUnit.kunRelative;
// The Padding column allows for the the trailing margin and border.
VwLength vlColPadding;
vlColPadding.nVal = 10000;
vlColPadding.unit = VwUnit.kunPoint1000;
vwenv.set_IntProperty((int)FwTextPropType.ktptMarginTop,
(int) FwTextPropVar.ktpvMilliPoint, 5000);
vwenv.OpenTable(4, // Four columns.
vlTable, // Table uses 100% of available width.
0, // Border thickness.
VwAlignment.kvaLeft, // Default alignment.
VwFramePosition.kvfpVoid, // No border.
VwRule.kvrlNone, // No rules between cells.
0, // No forced space between cells.
0, // no padding inside cells.
false);
vwenv.MakeColumns(1, vlColLabels);
vwenv.MakeColumns(1, vlColWsLabels);
vwenv.MakeColumns(1, vlColMain);
vwenv.MakeColumns(1, vlColPadding);
vwenv.OpenTableBody();
for (int i = 0; i < m_writingSystems.Length; i++)
{
vwenv.OpenTableRow();
// First cell has 'Title' label in bold.
vwenv.Props = m_ttpBold;
vwenv.OpenTableCell(1,1);
vwenv.set_IntProperty((int)FwTextPropType.ktptMarginLeading,
(int) FwTextPropVar.ktpvMilliPoint, 10000);
if (i == 0) // only on the first row
{
// We want this fixed at 10 point, since it's considered a UI component, not data.
// See LT-4816
vwenv.set_IntProperty((int)FwTextPropType.ktptFontSize,
(int)FwTextPropVar.ktpvMilliPoint, 10000);
vwenv.AddString(m_tssTitle);
}
vwenv.CloseTableCell();
// Second cell has ws labels.
vwenv.set_IntProperty((int)FwTextPropType.ktptBackColor,
(int) FwTextPropVar.ktpvDefault, m_editBackColor);
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderLeading,
(int)FwTextPropVar.ktpvMilliPoint, 1000);
if (i == 0)
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderTop,
(int)FwTextPropVar.ktpvMilliPoint, 1000);
if (i == m_writingSystems.Length - 1)
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderBottom,
(int)FwTextPropVar.ktpvMilliPoint, 1000);
vwenv.OpenTableCell(1,1);
vwenv.Props = m_ttpDataCellProps;
vwenv.Props = m_ttpWsLabel;
vwenv.AddString(m_WsLabels[i]);
//.........这里部分代码省略.........
示例4: DisplayExpandableAnnotation
/// ------------------------------------------------------------------------------------
/// <summary>
/// Displays an expandable annotation of the specified type.
/// </summary>
/// ------------------------------------------------------------------------------------
private void DisplayExpandableAnnotation(IVwEnv vwenv, IScrScriptureNote ann,
int tag, int hvo, IStJournalText paras, ITsString label, bool readOnly)
{
vwenv.NoteDependency(new int[] { hvo }, new int[] { m_expansionTag }, 1);
SetBackgroundColorForNote(ann, vwenv);
OpenTableRow(vwenv, ann);
// Display empty first cell
vwenv.OpenTableCell(1, 1);
vwenv.CloseTableCell();
// Display +/- in the second cell, unless this is read-only
vwenv.OpenTableCell(1, 1);
if (!readOnly)
vwenv.AddObjProp(tag, this, (int)NotesFrags.kfrExpansion);
vwenv.CloseTableCell();
// Display text in the remaining cells
vwenv.OpenTableCell(1, 5);
vwenv.OpenConcPara(0, 0, 0, 0);
vwenv.AddString(label);
if (!m_expandTable.ContainsKey(hvo))
vwenv.AddString(paras[0].Contents);
vwenv.CloseParagraph();
vwenv.CloseTableCell();
CloseTableRow(vwenv, ann);
if (!m_expandTable.ContainsKey(hvo))
return;
SetBackgroundColorForNote(ann, vwenv);
OpenTableRow(vwenv, ann);
// Display empty first and second cell
vwenv.OpenTableCell(1, 2);
vwenv.CloseTableCell();
// Display text in cells 3-7
vwenv.OpenTableCell(1, 5);
if (!readOnly)
SetEditBackground(vwenv);
vwenv.AddObjProp(tag, this, (int)StTextFrags.kfrText);
vwenv.CloseTableCell();
CloseTableRow(vwenv, ann);
}
示例5: Display
public override void Display(IVwEnv vwenv, int hvo, int frag)
{
switch (frag)
{
case kfragRule:
m_rule = m_cache.ServiceLocator.GetInstance<IPhMetathesisRuleRepository>().GetObject(hvo);
if (m_rule.Disabled)
{
vwenv.set_StringProperty((int)FwTextPropType.ktptNamedStyle, "Disabled Text");
}
int maxNumLines = GetMaxNumLines();
VwLength tableLen;
tableLen.nVal = 10000;
tableLen.unit = VwUnit.kunPercent100;
vwenv.OpenTable(5, tableLen, 0, VwAlignment.kvaCenter, VwFramePosition.kvfpVoid, VwRule.kvrlNone, 0, 4000, false);
VwLength ctxtLen;
ctxtLen.nVal = 1;
ctxtLen.unit = VwUnit.kunRelative;
int resultx, inputx, dmpy;
vwenv.get_StringWidth(m_resultStr, m_colHeaderProps, out resultx, out dmpy);
vwenv.get_StringWidth(m_inputStr, m_colHeaderProps, out inputx, out dmpy);
VwLength headerLen;
headerLen.nVal = Math.Max(resultx, inputx) + 8000;
headerLen.unit = VwUnit.kunPoint1000;
vwenv.MakeColumns(1, headerLen);
vwenv.MakeColumns(4, ctxtLen);
vwenv.OpenTableBody();
vwenv.OpenTableRow();
vwenv.OpenTableCell(1, 1);
vwenv.CloseTableCell();
// left context header cell
vwenv.Props = m_colHeaderProps;
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderTop, (int)FwTextPropVar.ktpvMilliPoint, 1000);
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderLeading, (int)FwTextPropVar.ktpvMilliPoint, 1000);
vwenv.OpenTableCell(1, 1);
vwenv.AddString(m_leftEnvStr);
vwenv.CloseTableCell();
// switch header cell
vwenv.Props = m_colHeaderProps;
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderTop, (int)FwTextPropVar.ktpvMilliPoint, 2000);
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderLeading, (int)FwTextPropVar.ktpvMilliPoint, 2000);
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderTrailing, (int)FwTextPropVar.ktpvMilliPoint, 2000);
vwenv.OpenTableCell(1, 2);
vwenv.AddString(m_switchStr);
vwenv.CloseTableCell();
// right context header cell
vwenv.Props = m_colHeaderProps;
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderTop, (int)FwTextPropVar.ktpvMilliPoint, 1000);
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderTrailing, (int)FwTextPropVar.ktpvMilliPoint, 1000);
vwenv.OpenTableCell(1, 1);
vwenv.AddString(m_rightEnvStr);
vwenv.CloseTableCell();
vwenv.CloseTableRow();
vwenv.OpenTableRow();
// input header cell
vwenv.Props = m_rowHeaderProps;
vwenv.OpenTableCell(1, 1);
vwenv.AddString(m_inputStr);
vwenv.CloseTableCell();
// input left context cell
vwenv.Props = m_inputCtxtProps;
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderTop, (int)FwTextPropVar.ktpvMilliPoint, 1000);
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderLeading, (int)FwTextPropVar.ktpvMilliPoint, 1000);
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderBottom, (int)FwTextPropVar.ktpvMilliPoint, 1000);
vwenv.OpenTableCell(1, 1);
vwenv.OpenParagraph();
if (m_rule.LeftEnvIndex == -1)
{
OpenSingleLinePile(vwenv, maxNumLines, false);
vwenv.Props = m_bracketProps;
vwenv.AddProp(ktagLeftEnv, this, kfragEmpty);
CloseSingleLinePile(vwenv, false);
}
else
{
for (int i = 0; i < m_rule.LeftEnvLimit; i++)
vwenv.AddObj(m_rule.StrucDescOS[i].Hvo, this, kfragContext);
}
vwenv.CloseParagraph();
vwenv.CloseTableCell();
// input left switch cell
vwenv.Props = m_inputCtxtProps;
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderTop, (int)FwTextPropVar.ktpvMilliPoint, 1000);
vwenv.set_IntProperty((int)FwTextPropType.ktptBorderLeading, (int)FwTextPropVar.ktpvMilliPoint, 2000);
//.........这里部分代码省略.........
示例6: AddColumn
/// ------------------------------------------------------------------------------------
/// <summary>
/// Add a column to the header/footer
/// </summary>
/// <param name="vwenv"></param>
/// <param name="align"></param>
/// <param name="flid"></param>
/// ------------------------------------------------------------------------------------
private void AddColumn(IVwEnv vwenv, FwTextAlign align, PubHeader.PubHeaderTags flid)
{
vwenv.OpenTableCell(1, 1);
if (HeaderFooterParaStyle != null && HeaderFooterParaStyle != string.Empty)
{
vwenv.set_StringProperty((int)FwTextPropType.ktptNamedStyle,
HeaderFooterParaStyle);
}
vwenv.set_IntProperty((int)FwTextPropType.ktptAlign,
(int)FwTextPropVar.ktpvEnum, (int)align);
vwenv.OpenMappedPara();
vwenv.AddStringProp((int)flid, this);
vwenv.CloseParagraph();
vwenv.CloseTableCell();
}
示例7: CloseTableRow
/// ------------------------------------------------------------------------------------
/// <summary>
/// Closes the table row.
/// </summary>
/// <param name="vwenv">The view environment.</param>
/// <param name="ann">The annotation being displayed.</param>
/// ------------------------------------------------------------------------------------
private void CloseTableRow(IVwEnv vwenv, IScrScriptureNote ann)
{
if (ann.Hvo != SelectedNoteHvo)
{
// Display cell used for padding (to right-indent unselected annotations by
// the width of the frame used to highlight the selected annotation).
vwenv.OpenTableCell(1, 1);
vwenv.AddString(m_tssEmpty);
vwenv.CloseTableCell();
}
vwenv.CloseTableRow();
}
示例8: PrintIndividualColumnHeaders
private void PrintIndividualColumnHeaders(int hvo, IVwEnv vwenv)
{
MakeTableAndRowWithStdWidths(vwenv, hvo, true);
MakeCellsMethod.OpenRowNumberCell(vwenv); // blank cell under header for row numbers
vwenv.CloseTableCell();
for (int icol = 0; icol < m_chart.AllColumns.Length; icol++ )
{
MakeCellsMethod.OpenStandardCell(vwenv, 1, m_chart.Logic.GroupEndIndices.Contains(icol));
vwenv.AddString(m_cache.MakeAnalysisTss(m_chart.Logic.GetColumnLabel(icol)));
vwenv.CloseTableCell();
}
MakeCellsMethod.OpenStandardCell(vwenv, 1, false); // blank cell below Notes header
vwenv.CloseTableCell();
vwenv.CloseTableRow();
vwenv.CloseTable();
}
示例9: PrintColumnGroupHeaders
private void PrintColumnGroupHeaders(int hvo, IVwEnv vwenv)
{
MakeTableAndRowWithStdWidths(vwenv, hvo, true);
MakeCellsMethod.OpenRowNumberCell(vwenv); // header for row numbers
vwenv.AddString(m_cache.MakeAnalysisTss("#"));
vwenv.CloseTableCell();
vwenv.AddObjProp((int)DsConstChart.DsChartTags.kflidTemplate, this, kfragTemplateHeader);
MakeCellsMethod.OpenStandardCell(vwenv, 1, false);
vwenv.AddString(m_cache.MakeAnalysisTss(DiscourseStrings.ksNotesColumnHeader));
vwenv.CloseTableCell();
vwenv.CloseTableRow();
vwenv.CloseTable();
}
示例10: PrintOneTemplateHeader
private void PrintOneTemplateHeader(IVwEnv vwenv, ITsStrFactory tssFact, int analWs, int icol)
{
MakeCellsMethod.OpenStandardCell(vwenv, 1, m_chart.Logic.GroupEndIndices.Contains(icol));
vwenv.AddString(tssFact.MakeString(m_chart.Logic.GetColumnLabel(icol), analWs));
vwenv.CloseTableCell();
}
示例11: Display
public override void Display(IVwEnv vwenv, int hvo, int frag)
{
switch (frag)
{
case kfragPrintChart: // the whole chart with headings for printing.
if (hvo == 0)
return;
PrintColumnGroupHeaders(hvo, vwenv);
PrintIndividualColumnHeaders(hvo, vwenv);
// Rest is same as kfragChart
DisplayChartBody(vwenv);
break;
case kfragTemplateHeader: // Display the template as group headers.
vwenv.AddObjVecItems((int)CmPossibility.CmPossibilityTags.kflidSubPossibilities, this, kfragColumnGroupHeader);
break;
// This is only used for printing, the headers in the screen version are a separate control.
case kfragColumnGroupHeader:
int ccols = vwenv.DataAccess.get_VecSize(hvo, (int)CmPossibility.CmPossibilityTags.kflidSubPossibilities);
// If there are no subitems, we still want a blank cell as a placeholder.
MakeCellsMethod.OpenStandardCell(vwenv, Math.Max(ccols, 1), true);
if (ccols > 0)
{
// It's a group, include its name
vwenv.set_IntProperty((int)FwTextPropType.ktptAlign, (int)FwTextPropVar.ktpvEnum,
(int)FwTextAlign.ktalCenter);
vwenv.OpenParagraph();
vwenv.AddString(CmPossibility.BestAnalysisName(m_cache, hvo));
vwenv.CloseParagraph();
}
vwenv.CloseTableCell();
break;
case kfragChart: // the whole chart, a DsConstChart.
if (hvo == 0)
return;
DisplayChartBody(vwenv);
break;
case kfragChartRow: // one row, a CmIndirectAnnotation
{
MakeTableAndRowWithStdWidths(vwenv, hvo, false);
MakeCells(vwenv, hvo);
vwenv.CloseTableRow();
vwenv.CloseTable();
}
break;
case kfragCca: // a single group of words, the contents of one cell.
if (ConstituentChartLogic.IsWficGroup(m_cache, hvo))
vwenv.AddObjVec(kflidAppliesTo, this, kfragBundleVec);
else
{
// it's a moved text or missing-item placeholder.
int hvoClause;
if (m_chart.Logic.IsClausePlaceholder(hvo, out hvoClause))
DisplayClausePlaceholder(vwenv, hvoClause);
else if (vwenv.DataAccess.get_VecSize(hvo, kflidAppliesTo) == 0)
DisplayMissingMarker(vwenv);
else
DisplayMovedTextTag(hvo, vwenv);
}
break;
case kfragCcaMoved: // a single group of words, the contents of one cell, which is considered moved-within-line.
// can't be a placeholder.
string formatTag = m_chart.Logic.MovedTextTag(hvo);
ApplyFormatting(vwenv, formatTag);
vwenv.OpenSpan();
InsertOpenBracket(vwenv, formatTag);
vwenv.AddObjVec(kflidAppliesTo, this, kfragBundleVec);
InsertCloseBracket(vwenv, formatTag);
vwenv.CloseSpan();
break;
case kfragCcaListItem: // a single CCA, referring to a list item.
// can't be a placeholder.
ApplyFormatting(vwenv, "marker");
vwenv.OpenSpan();
InsertOpenBracket(vwenv, "marker");
vwenv.AddObjProp((int)CmBaseAnnotation.CmBaseAnnotationTags.kflidBeginObject,
this, kfragPossibility);
InsertCloseBracket(vwenv, "marker");
vwenv.CloseSpan();
break;
case kfragPossibility: // A CmPossibility, show it's abbreviation
int flid = (int)CmPossibility.CmPossibilityTags.kflidAbbreviation;
int retWs;
m_cache.LangProject.GetMagicStringAlt(LangProject.kwsFirstAnal, hvo, flid, false, out retWs);
// If we didn't find an abbreviation try for the name
ITsString tss = null;
if (retWs != 0)
tss = m_cache.GetMultiStringAlt(hvo, flid, retWs);
if (tss == null || string.IsNullOrEmpty(tss.Text))
{
flid = (int)CmPossibility.CmPossibilityTags.kflidName;
m_cache.LangProject.GetMagicStringAlt(LangProject.kwsFirstAnal, hvo, flid, false, out retWs);
}
// Unless we didn't get anything, go ahead and insert the best option we found.
if (retWs != 0)
vwenv.AddStringAltMember(flid, retWs, this);
// retWS was m_cache.DefaultAnalWs, this fixes LT-7838
break;
case kfragBundle: // One annotated word bundle; hvo is CmBaseAnnotation. Overrides behavior of InterlinVc
//.........这里部分代码省略.........
示例12: Display
public override void Display(IVwEnv vwenv, int hvo, int frag)
{
switch (frag)
{
case kfragPrintChart: // the whole chart with headings for printing.
if (hvo == 0)
return;
PrintColumnGroupHeaders(hvo, vwenv);
PrintIndividualColumnHeaders(hvo, vwenv);
// Rest is same as kfragChart
DisplayChartBody(vwenv);
break;
case kfragTemplateHeader: // Display the template as group headers.
vwenv.AddObjVecItems(CmPossibilityTags.kflidSubPossibilities, this, kfragColumnGroupHeader);
break;
// This is only used for printing, the headers in the screen version are a separate control.
case kfragColumnGroupHeader:
var ccols = vwenv.DataAccess.get_VecSize(hvo, CmPossibilityTags.kflidSubPossibilities);
// If there are no subitems, we still want a blank cell as a placeholder.
MakeCellsMethod.OpenStandardCell(vwenv, Math.Max(ccols, 1), true);
if (ccols > 0)
{
// It's a group, include its name
var possGroup = m_cache.ServiceLocator.GetInstance<ICmPossibilityRepository>().GetObject(hvo);
vwenv.set_IntProperty((int) FwTextPropType.ktptAlign, (int) FwTextPropVar.ktpvEnum,
(int) FwTextAlign.ktalCenter);
vwenv.OpenParagraph();
vwenv.AddString(possGroup.Name.BestAnalysisAlternative);
vwenv.CloseParagraph();
}
vwenv.CloseTableCell();
break;
case kfragChart: // the whole chart, a DsConstChart.
if (hvo == 0)
return;
DisplayChartBody(vwenv);
break;
case kfragChartRow: // one row, a ConstChartRow
{
MakeTableAndRowWithStdWidths(vwenv, hvo, false);
MakeCells(vwenv, hvo);
vwenv.CloseTableRow();
vwenv.CloseTable();
}
break;
case kfragCellPart: // a single group of words, the contents of one cell.
if (m_chart.Logic.IsWordGroup(hvo))
DisplayWordforms(vwenv, hvo);
else
{
// it's a moved text or clause reference placeholder.
int hvoClause;
if (m_chart.Logic.IsClausePlaceholder(hvo, out hvoClause))
DisplayClausePlaceholder(vwenv, hvoClause);
else
DisplayMovedTextTag(hvo, vwenv);
}
break;
case kfragMovedTextCellPart: // a single group of words (ConstChartWordGroup),
// the contents of one cell, which is considered moved-within-line.
// Can't be a placeholder.
var formatTag = m_chart.Logic.MovedTextTag(hvo);
ApplyFormatting(vwenv, formatTag);
vwenv.OpenSpan();
InsertOpenBracket(vwenv, formatTag);
DisplayWordforms(vwenv, hvo);
InsertCloseBracket(vwenv, formatTag);
vwenv.CloseSpan();
break;
case kfragChartListItem: // a single ConstChartTag, referring to a list item.
// can't be a placeholder.
ApplyFormatting(vwenv, "marker");
vwenv.OpenSpan();
InsertOpenBracket(vwenv, "marker");
vwenv.AddObjProp(ConstChartTagTags.kflidTag, this, kfragPossibility);
InsertCloseBracket(vwenv, "marker");
vwenv.CloseSpan();
break;
case kfragPossibility: // A CmPossibility, show it's abbreviation
var flid = CmPossibilityTags.kflidAbbreviation;
var retWs = WritingSystemServices.ActualWs(m_cache, WritingSystemServices.kwsFirstAnal, hvo, flid);
if (retWs == 0)
{
// No Abbreviation! Switch to Name
flid = CmPossibilityTags.kflidName;
retWs = WritingSystemServices.ActualWs(m_cache, WritingSystemServices.kwsFirstAnal, hvo, flid);
}
// Unless we didn't get anything, go ahead and insert the best option we found.
if (retWs != 0)
vwenv.AddStringAltMember(flid, retWs, this);
break;
case kfragBundle: // One annotated word bundle; hvo is IAnalysis object. Overrides behavior of InterlinVc
AddWordBundleInternal(hvo, vwenv);
break;
case kfragNotesString: // notes text
vwenv.AddStringProp(ConstChartRowTags.kflidNotes, this);
break;
case kfragComment: // hvo is a ConstChartRow
//.........这里部分代码省略.........
示例13: PrintRowNumCellHeader
private void PrintRowNumCellHeader(IVwEnv vwenv, int analWs)
{
MakeCellsMethod.OpenRowNumberCell(vwenv); // header for row numbers
vwenv.AddString(m_tssFact.MakeString("#", analWs));
vwenv.CloseTableCell();
}
示例14: PrintNotesCellHeader
private void PrintNotesCellHeader(IVwEnv vwenv, int analWs)
{
MakeCellsMethod.OpenStandardCell(vwenv, 1, false);
vwenv.AddString(m_tssFact.MakeString(DiscourseStrings.ksNotesColumnHeader, analWs));
vwenv.CloseTableCell();
}
示例15: AddDoublePara
internal void AddDoublePara(IVwEnv vwenv, int hvo)
{
// We use a table to display the source WS in column 1, and the dest ws in column 2.
FwViews.VwLength vlTable; // we use this to specify that the table takes 100% of the width.
vlTable.nVal = 10000;
vlTable.unit = FwViews.VwUnit.kunPercent100;
FwViews.VwLength vlColumn; // and this one to specify half the width for each column
vlColumn.nVal = 5000;
vlColumn.unit = FwViews.VwUnit.kunPercent100;
// Enhance JohnT: possibly allow for right-to-left UI by reversing columns?
vwenv.OpenTable(2, // Two columns.
ref vlTable, // Table uses 100% of available width.
0, // Border thickness.
FwViews.VwAlignment.kvaLeft, // Default alignment.
FwViews.VwFramePosition.kvfpVoid, // No border.
FwViews.VwRule.kvrlNone, // No rules between cells.
3000, // Three points of space between cells.
3000); // Three points padding inside cells.
// Specify column widths. The first argument is the number of columns,
// not a column index.
vwenv.MakeColumns(2, vlColumn);
vwenv.OpenTableBody();
vwenv.OpenTableRow();
// Source cell, not editable
vwenv.OpenTableCell(1,1);
vwenv.set_IntProperty((int)FwKernelLib.FwTextPropType.ktptEditable, (int)FwKernelLib.FwTextPropVar.ktpvEnum,
(int)FwKernelLib.TptEditable.ktptNotEditable);
vwenv.AddStringAltMember(ktagParaContents, m_wsSrc, this);
vwenv.CloseTableCell();
// Dest cell, editable, therefore with white background.
vwenv.set_IntProperty((int)FwKernelLib.FwTextPropType.ktptBackColor, (int)FwKernelLib.FwTextPropVar.ktpvDefault,
m_colorEditable);
vwenv.OpenTableCell(1,1);
vwenv.AddStringAltMember(ktagParaContents, m_wsDst, this);
vwenv.CloseTableCell();
vwenv.CloseTableRow();
vwenv.CloseTableBody();
vwenv.CloseTable();
}