Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -364,14 +364,13 @@
<seq field="PublishIn" layout="Name" />
</part>
<part id="LexEntry-Jt-InflectionClassForAffix" type="jtview">
<obj field="LexemeForm" layout="InflectionClassForLexemeForm"/>
<seq field="AlternateForms" layout="InflectionClassForAffix"/>
<seq field="AllAllomorphs" layout="InflectionClassForAffix"/>
</part>
<part id="LexEntry-Jt-RequiredFeaturesForLexemeForm" type="JtView">
<obj field="LexemeForm" layout="RequiredFeatures"/>
</part>
<part id="LexEntry-Jt-RequiredFeatures" type="JtView">
<seq field="AlternateForms" layout="RequiredFeatures"/>
<seq field="AllAllomorphs" layout="RequiredFeatures"/>
</part>
<part id="LexEntry-Jt-HomographNumberForEntry" type="jtview">
<int field="HomographNumber"/>
Expand Down
48 changes: 36 additions & 12 deletions DistFiles/Language Explorer/Configuration/Parts/MorphologyParts.xml
Original file line number Diff line number Diff line change
Expand Up @@ -358,30 +358,54 @@
<obj field="MorphType" layout="SimpleName"/>
</part>
<part id="MoForm-Jt-Environments" type="JtView">
<ifnot is="MoAffixProcess">
<seq field="PhoneEnv" layout="StringRepresentation"/>
</ifnot>
</part>
<!-- Must always have exactly one value for allomorph columns to align properly. -->
<ifnot is="MoAffixProcess">
<para>
<seq field="PhoneEnv" layout="StringRepresentation" sep="; "/>
</para>
</ifnot>
<if is="MoAffixProcess">
<lit>n/a</lit>
</if>
</part>
<part id="MoForm-Jt-InflectionClassForLexemeForm" type="JtView">
<!-- Must always have exactly one value for allomorph columns to align properly. -->
<if is="MoAffixForm">
<seq field="InflectionClasses" layout="Name"/>
<para>
<seq field="InflectionClasses" layout="Name" sep="; "/>
</para>
</if>
<ifnot is="MoAffixForm">
<lit>n/a</lit>
</ifnot>
</part>
<part id="MoForm-Jt-InflectionClassForAffix" type="JtView">
<!-- Must always have exactly one value for allomorph columns to align properly. -->
<if is="MoAffixForm">
<seq field="InflectionClasses" layout="Name"/>
<para>
<seq field="InflectionClasses" layout="Name" sep="; "/>
</para>
</if>
</part>
<ifnot is="MoAffixForm">
<lit>n/a</lit>
</ifnot>
</part>
<part id="MoForm-Jt-RequiredFeatures" type="JtView">
<!-- Must always have exactly one value for allomorph columns to align properly. -->
<if is="MoAffixAllomorph">
<obj field="MsEnvFeatures" layout="empty">
<string field="LongNameTSS"/>
</obj>
</if>
</part>
<ifnot field="MsEnvFeatures" hvoequals="0">
<obj field="MsEnvFeatures" layout="empty">
<string field="LongNameTSS"/>
</obj>
</ifnot>
<if field="MsEnvFeatures" hvoequals="0">
<lit></lit>
</if>
</if>
<ifnot is="MoAffixAllomorph">
<lit>n/a</lit>
</ifnot>
</part>
<part id="MoForm-Jt-SimpleForm" type="JtView">
<string field="Form" ws="vernacular"/>
</part>
Expand Down
2 changes: 1 addition & 1 deletion Src/Common/Controls/XMLViews/LayoutFinder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ public virtual string[] SortStrings(IManyOnePathSortItem item, bool sortedFromEn
public void CollectItems(int hvo, ArrayList collector)
{
int start = collector.Count;
XmlViewsUtils.CollectBrowseItems(hvo, m_colSpec, collector, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(hvo, m_colSpec, collector, m_cache, m_mdc, m_sda, m_layouts);
}

private string[] StringsFor(int hvo, XmlNode layout, int wsForce)
Expand Down
56 changes: 28 additions & 28 deletions Src/Common/Controls/XMLViews/XMLViewsTests/TestManyOneBrowse.cs
Original file line number Diff line number Diff line change
Expand Up @@ -169,16 +169,16 @@ public void GeneratePathlessItems()
{
ArrayList list = new ArrayList();
XmlNode column = m_columnList[0];
XmlViewsUtils.CollectBrowseItems(1, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(1, column, list, null, m_mdc, m_sda, m_layouts);
Assert.AreEqual(1, list.Count, "got one item for lexeme obj 1");
IManyOnePathSortItem bv = list[0] as IManyOnePathSortItem;
Assert.AreEqual(1, bv.KeyObject);
Assert.AreEqual(0, bv.PathLength);
list.Clear();
XmlViewsUtils.CollectBrowseItems(4, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(4, column, list, null, m_mdc, m_sda, m_layouts);
Assert.AreEqual(1, list.Count, "got one item for lexeme obj 4");
list.Clear();
XmlViewsUtils.CollectBrowseItems(6, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(6, column, list, null, m_mdc, m_sda, m_layouts);
Assert.AreEqual(1, list.Count, "got one item for lexeme obj 6");
bv = list[0] as IManyOnePathSortItem;
Assert.AreEqual(6, bv.KeyObject);
Expand All @@ -193,18 +193,18 @@ public void GenerateAtomicItems()
{
ArrayList list = new ArrayList();
XmlNode column = m_columnList[1]; // Etymology
XmlViewsUtils.CollectBrowseItems(1, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(1, column, list, null, m_mdc, m_sda, m_layouts);
Assert.AreEqual(1, list.Count, "got one item for etymology obj 1");
IManyOnePathSortItem bv = list[0] as IManyOnePathSortItem;
Assert.AreEqual(60, bv.KeyObject);
Assert.AreEqual(1, bv.PathLength);
Assert.AreEqual(1, bv.PathObject(0));
Assert.AreEqual(2011, bv.PathFlid(0));
list.Clear();
XmlViewsUtils.CollectBrowseItems(4, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(4, column, list, null, m_mdc, m_sda, m_layouts);
Assert.AreEqual(1, list.Count, "got one item for etymology obj 4");
list.Clear();
XmlViewsUtils.CollectBrowseItems(6, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(6, column, list, null, m_mdc, m_sda, m_layouts);
Assert.AreEqual(1, list.Count, "got one item for etymology obj 6");
bv = list[0] as IManyOnePathSortItem;
Assert.AreEqual(61, bv.KeyObject);
Expand All @@ -221,18 +221,18 @@ public void GenerateSeqItems()
{
ArrayList list = new ArrayList();
XmlNode column = m_columnList[3]; // Glosses
XmlViewsUtils.CollectBrowseItems(1, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(1, column, list, null, m_mdc, m_sda, m_layouts);
Assert.AreEqual(1, list.Count, "got one items for glosses obj 1");
list.Clear();
XmlViewsUtils.CollectBrowseItems(4, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(4, column, list, null, m_mdc, m_sda, m_layouts);
Assert.AreEqual(1, list.Count, "got one item for glosses obj 4");
IManyOnePathSortItem bv = list[0] as IManyOnePathSortItem;
Assert.AreEqual(5, bv.KeyObject);
Assert.AreEqual(1, bv.PathLength);
Assert.AreEqual(4, bv.PathObject(0));
Assert.AreEqual(2010, bv.PathFlid(0));
list.Clear();
XmlViewsUtils.CollectBrowseItems(6, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(6, column, list, null, m_mdc, m_sda, m_layouts);
Assert.AreEqual(3, list.Count, "got three items for glosses obj 6");
int[] keys = new int[] {7, 8, 9};
for (int i = 0; i < keys.Length; i++)
Expand All @@ -254,14 +254,14 @@ public void GenerateDoubleSeqItems()
ArrayList list = new ArrayList();
IManyOnePathSortItem bv;
XmlNode column = m_columnList[5]; // Semantic domains
XmlViewsUtils.CollectBrowseItems(1, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(1, column, list, null, m_mdc, m_sda, m_layouts);
Assert.AreEqual(1, list.Count, "got one item for SD obj 1"); // no senses!
list.Clear();
XmlViewsUtils.CollectBrowseItems(4, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(4, column, list, null, m_mdc, m_sda, m_layouts);
Assert.AreEqual(1, list.Count, "got one item for SD obj 4"); // sense 5 has no SDs
list.Clear();
// Senses 7, 8, 9, having SDs 7->30, 8->31, and 9->30, 31, 32
XmlViewsUtils.CollectBrowseItems(6, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(6, column, list, null, m_mdc, m_sda, m_layouts);
Assert.AreEqual(5, list.Count, "got five items for SD obj 6");
int[] keys = new int[] {30, 31, 30, 31, 32};
int[] keys2 = new int[] {7, 8, 9, 9, 9};
Expand All @@ -285,15 +285,15 @@ public void DisplayPathlessObject()
{
ArrayList list = new ArrayList();
XmlNode column = m_columnList[0];
XmlViewsUtils.CollectBrowseItems(1, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(1, column, list, null, m_mdc, m_sda, m_layouts);
IManyOnePathSortItem bvi = list[0] as IManyOnePathSortItem;

// Try on original column. We get original object since there's no path,
// but we still dig inside the span
int useHvo;
List<XmlNode> collectStructNodes = new List<XmlNode>();
XmlNode useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[0],
m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
null, m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
Assert.AreEqual(1, useHvo);
CheckDebugId(useNode, "LexemeCf");
Assert.AreEqual(1, collectStructNodes.Count);
Expand All @@ -302,7 +302,7 @@ public void DisplayPathlessObject()
// Try on another column. Again we get original object, and dig inside span
collectStructNodes.Clear();
useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[1],
m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
null, m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
Assert.AreEqual(1, useHvo);
CheckDebugId(useNode, "EtymologyObj");
Assert.AreEqual(1, collectStructNodes.Count);
Expand All @@ -312,7 +312,7 @@ public void DisplayPathlessObject()
// Try on a column involving a lookup. This affects the node output.
collectStructNodes.Clear();
useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[2],
m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
null, m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
Assert.AreEqual(1, useHvo);
CheckDebugId(useNode, "EntryMsaSeq");
Assert.AreEqual(1, collectStructNodes.Count);
Expand All @@ -333,15 +333,15 @@ public void DisplayAtomicPathObject()
{
ArrayList list = new ArrayList();
XmlNode column = m_columnList[1];
XmlViewsUtils.CollectBrowseItems(1, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(1, column, list, null, m_mdc, m_sda, m_layouts);
IManyOnePathSortItem bvi = list[0] as IManyOnePathSortItem;

// Try on first column. Nothing in the path matches, but we still dig inside
// the span.
int useHvo;
List<XmlNode> collectStructNodes = new List<XmlNode>();
XmlNode useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[0],
m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
null, m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
Assert.AreEqual(1, useHvo);
CheckDebugId(useNode, "LexemeCf");
Assert.AreEqual(1, collectStructNodes.Count);
Expand All @@ -350,7 +350,7 @@ public void DisplayAtomicPathObject()
// Try on matching column.
collectStructNodes.Clear();
useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[1],
m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
null, m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
Assert.AreEqual(bvi.KeyObject, useHvo);
CheckDebugId(useNode, "EtymologyComment");
Assert.AreEqual(1, collectStructNodes.Count);
Expand All @@ -360,7 +360,7 @@ public void DisplayAtomicPathObject()
// Try on a column involving a lookup. This affects the node output.
collectStructNodes.Clear();
useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[2],
m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
null, m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
Assert.AreEqual(1, useHvo);
CheckDebugId(useNode, "EntryMsaSeq");
Assert.AreEqual(1, collectStructNodes.Count);
Expand All @@ -370,7 +370,7 @@ public void DisplayAtomicPathObject()
// On a different view of the Etymology, we should still get the Etymology object.
collectStructNodes.Clear();
useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[6],
m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
null, m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
Assert.AreEqual(bvi.KeyObject, useHvo);
CheckDebugId(useNode,"EtymologyComment2");
// But this column has no structural nodes.
Expand All @@ -385,15 +385,15 @@ public void DisplayDoubleSeqPathObject()
{
ArrayList list = new ArrayList();
XmlNode column = m_columnList[5];
XmlViewsUtils.CollectBrowseItems(6, column, list, m_mdc, m_sda, m_layouts);
XmlViewsUtils.CollectBrowseItems(6, column, list, null, m_mdc, m_sda, m_layouts);
IManyOnePathSortItem bvi = list[0] as IManyOnePathSortItem;

// Try on first column. Nothing in the path matches, but we still dig inside
// the span.
int useHvo;
List<XmlNode> collectStructNodes = new List<XmlNode>();
XmlNode useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[0],
m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
null, m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
Assert.AreEqual(6, useHvo);
CheckDebugId(useNode, "LexemeCf");
Assert.AreEqual(1, collectStructNodes.Count);
Expand All @@ -402,7 +402,7 @@ public void DisplayDoubleSeqPathObject()
// Try on etymology column. Has an <obj>, but doens't match
collectStructNodes.Clear();
useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[1],
m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
null, m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
Assert.AreEqual(6, useHvo);
CheckDebugId(useNode, "EtymologyObj");
Assert.AreEqual(1, collectStructNodes.Count);
Expand All @@ -412,7 +412,7 @@ public void DisplayDoubleSeqPathObject()
// Try on a column involving a lookup. This affects the node output.
collectStructNodes.Clear();
useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[2],
m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
null, m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
Assert.AreEqual(6, useHvo);
CheckDebugId(useNode, "EntryMsaSeq");
Assert.AreEqual(1, collectStructNodes.Count);
Expand All @@ -422,7 +422,7 @@ public void DisplayDoubleSeqPathObject()
// On the matching column, we should get the leaf object
collectStructNodes.Clear();
useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[5],
m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
null, m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
Assert.AreEqual(bvi.KeyObject, useHvo);
CheckDebugId(useNode,"PACN_Para");
Assert.AreEqual(1, collectStructNodes.Count);
Expand All @@ -432,7 +432,7 @@ public void DisplayDoubleSeqPathObject()
// On the gloss column, we get the sense.
collectStructNodes.Clear();
useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[3],
m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
null, m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
Assert.AreEqual(7, useHvo); // the first sense
CheckDebugId(useNode,"SenseGloss");
Assert.AreEqual(1, collectStructNodes.Count);
Expand All @@ -443,7 +443,7 @@ public void DisplayDoubleSeqPathObject()
collectStructNodes.Clear();
bvi = list[3] as IManyOnePathSortItem;
useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[3],
m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
null, m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes);
Assert.AreEqual(9, useHvo); // the third sense, in which context we display the 4th SD
}
}
Expand Down
2 changes: 1 addition & 1 deletion Src/Common/Controls/XMLViews/XmlBrowseViewBaseVc.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1372,7 +1372,7 @@ public void DisplayCell(IManyOnePathSortItem item, XmlNode node, int hvo, IVwEnv
{
List<XmlNode> outerParts = new List<XmlNode>();
int hvoToDisplay;
NodeDisplayCommand dispCommand = XmlViewsUtils.GetDisplayCommandForColumn(item, node, m_mdc,
NodeDisplayCommand dispCommand = XmlViewsUtils.GetDisplayCommandForColumn(item, node, m_cache, m_mdc,
m_sda, m_layouts, out hvoToDisplay, outerParts);
// See if the column has a writing system established for it.
try
Expand Down
3 changes: 2 additions & 1 deletion Src/Common/Controls/XMLViews/XmlVc.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3541,7 +3541,8 @@ static private bool HvoEqualsConditionPasses(IVwEnv vwenv, XmlNode frag, int hvo
if (val == hvoParent)
return true;
}
return false;
// e.g. sHvo = "0"
return sHvo.Equals(val.ToString());
}

/// <summary>
Expand Down
Loading
Loading