protected void CreateFromPOSNodes(XmlDocument doc, XmlNode msaNode, FdoReferenceCollection <IPartOfSpeech> fromPOSes, string sElementName) { if (fromPOSes == null || fromPOSes.Count < 1) { return; } foreach (IPartOfSpeech pos in fromPOSes) { XmlNode posNode = CreateXmlElement(doc, sElementName, msaNode); CreateXmlAttribute(doc, "fromCat", pos.Hvo.ToString(), posNode); CreateXmlAttribute(doc, "fromCatAbbr", pos.Abbreviation.BestAnalysisAlternative.Text, posNode); } }
private void RemoveReversalEntryFromSense() { if (m_selectedSenseHvo == 0) { return; // must be selecting multiple objects! (See LT-5724.) } int h1 = m_rootb.Height; ILexSense sense = LexSense.CreateFromDBObject(m_fdoCache, m_selectedSenseHvo); FdoReferenceCollection <IReversalIndexEntry> col = sense.ReversalEntriesRC; int oldCount = col.Count; m_fdoCache.BeginUndoTask(SIL.FieldWorks.XWorks.LexEd.LexEdStrings.ksUndoDeleteRevFromSense, SIL.FieldWorks.XWorks.LexEd.LexEdStrings.ksRedoDeleteRevFromSense); // Remove does a PropChanged on the main sense ReversalEntries property. sense.ReversalEntriesRC.Remove(m_rootObj.Hvo); // Update the ReferringSenses property, and do PropChanged on it. ReversalIndexEntry.ResetReferringSenses(m_fdoCache, m_rootObj.Hvo); m_fdoCache.EndUndoTask(); CheckViewSizeChanged(h1, m_rootb.Height); }
protected void CreateMorphInflectionClassesXmlElement(XmlDocument doc, XmlNode node, XmlNode morphNode) { XmlNode attr; attr = node.SelectSingleNode("@alloid"); if (attr != null) { XmlNode alloid = node.Attributes.GetNamedItem("alloid"); int hvo = Convert.ToInt32(alloid.InnerText); ICmObject obj = CmObject.CreateFromDBObject(m_cache, hvo); IMoAffixForm form = obj as IMoAffixForm; // only for affix forms if (form != null) { if (form.InflectionClassesRC.Count > 0) { XmlNode inflClasses = CreateXmlElement(doc, "inflClasses", morphNode); FdoReferenceCollection <IMoInflClass> inflectionClasses = form.InflectionClassesRC; CreateInflectionClassesAndSubclassesXmlElement(doc, inflectionClasses, inflClasses); } } } }
public void FdoReferenceCollection() { CheckDisposed(); ILexDb ldb = Cache.LangProject.LexDbOA; ldb.EntriesOC.Add(new LexEntry()); ldb.EntriesOC.Add(new LexEntry()); // Gather up all entries in the DB. int iLESize = Cache.GetVectorSize(ldb.Hvo, (int)LexDb.LexDbTags.kflidEntries); FdoOwningCollection <ILexEntry> ocvLexEntriesOC = ldb.EntriesOC; int[] ahvoLexEntriesOC = ocvLexEntriesOC.HvoArray; // Check sizes. They should be the same. Assert.AreEqual(iLESize, ahvoLexEntriesOC.Length, "Mis-matched number of entries."); FdoReferenceCollection <ILexEntry> rcLexEntriesRCBefore = ldb.LexicalFormIndexRC; int[] ahvoLexEntriesRCBefore = rcLexEntriesRCBefore.HvoArray; int iOldRCSize = ahvoLexEntriesRCBefore.Length; // Add all entries to reference collection. rcLexEntriesRCBefore.Add(ahvoLexEntriesOC); // Make sure they are there now. FdoReferenceCollection <ILexEntry> rcLexEntriesRCAfter = ldb.LexicalFormIndexRC; int[] ahvoLexEntriesRCAfter = rcLexEntriesRCAfter.HvoArray; Assert.AreEqual((ahvoLexEntriesOC.Length + iOldRCSize), ahvoLexEntriesRCAfter.Length, "Mis-matched number of entries in reference collection."); // Size of ahvoLexEntriesRCAfter is right, so quit. // Note: One could check the IDs, but it probably isn't needed, // as long as nobody else was messing with database at the same time. // Try adding a duplicate item to reference collection. // The size should be the same before as after. rcLexEntriesRCAfter.Add(ahvoLexEntriesOC[0]); Assert.AreEqual(ahvoLexEntriesRCAfter.Length, rcLexEntriesRCAfter.HvoArray.Length, "Mis-matched number of entries in reference collection."); }
public override void AddItem(int hvoNew) { CheckDisposed(); ILexSense selectedSense = LexSense.CreateFromDBObject(m_cache, hvoNew); FdoReferenceCollection <IReversalIndexEntry> col = selectedSense.ReversalEntriesRC; int hvoCurrentObj = m_obj.Hvo; int h1 = m_vectorRefView.RootBox.Height; if (!col.Contains(hvoCurrentObj)) { int oldCount = col.Count; m_cache.BeginUndoTask(LexEdStrings.ksUndoAddRevToSense, LexEdStrings.ksRedoAddRevToSense); // Does a PropChanged on the sense's ReversalEntries property. col.Add(hvoCurrentObj); // Update the ReferringSenses property, and do PropChanged on it. ReversalIndexEntry.ResetReferringSenses(m_cache, m_obj.Hvo); m_cache.EndUndoTask(); int h2 = m_vectorRefView.RootBox.Height; CheckViewSizeChanged(h1, h2); } }
/// <summary> /// gets a list of ws hvos, starting with the current wss, followed by remaining (non-current) active ones /// </summary> /// <param name="currentWss"></param> /// <param name="activeWss"></param> /// <param name="fAddOnlyCurrent">if true, only add the current wss, ignoring remaining active wss.</param> /// <returns></returns> internal static List<int> GetCurrentThenRemainingActiveWss(FdoReferenceSequence<ILgWritingSystem> currentWss, FdoReferenceCollection<ILgWritingSystem> activeWss, bool fAddOnlyCurrent) { List<int> hvoWss = new List<int>(); // Add ordered (checked) writing system names to the list. foreach (ILgWritingSystem ws in currentWss) hvoWss.Add(ws.Hvo); if (fAddOnlyCurrent) return hvoWss; // finished adding current wss, so return; // Now add the unchecked (or not current) writing systems to the list. foreach (ILgWritingSystem ws in activeWss) { if (!hvoWss.Contains(ws.Hvo)) hvoWss.Add(ws.Hvo); } return hvoWss; }
protected void CreateProductivityRestrictionNodes(XmlDocument doc, XmlNode msaNode, FdoReferenceCollection<ICmPossibility> prodRests, string sElementName) { if (prodRests == null || prodRests.Count < 1) return; foreach (ICmPossibility pr in prodRests) { XmlNode prNode = CreateXmlElement(doc, sElementName, msaNode); CreateXmlAttribute(doc, "id", pr.Hvo.ToString(), prNode); XmlNode prName = CreateXmlElement(doc, "name", prNode); prName.InnerText = pr.Name.BestAnalysisAlternative.Text; } }
protected void CreateFromPOSNodes(XmlDocument doc, XmlNode msaNode, FdoReferenceCollection<IPartOfSpeech> fromPOSes, string sElementName) { if (fromPOSes == null || fromPOSes.Count < 1) return; foreach (IPartOfSpeech pos in fromPOSes) { XmlNode posNode = CreateXmlElement(doc, sElementName, msaNode); CreateXmlAttribute(doc, "fromCat", pos.Hvo.ToString(), posNode); CreateXmlAttribute(doc, "fromCatAbbr", pos.Abbreviation.BestAnalysisAlternative.Text, posNode); } }
/// <summary> /// Constructor. /// </summary> private DummyGenericMSA(IMoStemMsa stemMsa) { m_type = MsaType.kStem; m_mainPOS = stemMsa.PartOfSpeechRAHvo; m_fromPOSes = stemMsa.FromPartsOfSpeechRC; }
protected void CreateProductivityRestrictionNodes(XmlDocument doc, XmlNode msaNode, FdoReferenceCollection <ICmPossibility> prodRests, string sElementName) { if (prodRests == null || prodRests.Count < 1) { return; } foreach (ICmPossibility pr in prodRests) { XmlNode prNode = CreateXmlElement(doc, sElementName, msaNode); CreateXmlAttribute(doc, "id", pr.Hvo.ToString(), prNode); XmlNode prName = CreateXmlElement(doc, "name", prNode); prName.InnerText = pr.Name.BestAnalysisAlternative.Text; } }