コード例 #1
0
ファイル: ParserTrace.cs プロジェクト: sillsdev/WorldPad
 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);
     }
 }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: ParserTrace.cs プロジェクト: sillsdev/WorldPad
        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);
                    }
                }
            }
        }
コード例 #4
0
ファイル: VectorTests.cs プロジェクト: sillsdev/WorldPad
        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.");
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
		/// <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;
		}
コード例 #7
0
ファイル: ParserTrace.cs プロジェクト: sillsdev/WorldPad
		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;
			}
		}
コード例 #8
0
ファイル: ParserTrace.cs プロジェクト: sillsdev/WorldPad
		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);
			}
		}
コード例 #9
0
ファイル: MoClasses.cs プロジェクト: sillsdev/WorldPad
		/// <summary>
		/// Constructor.
		/// </summary>
		private DummyGenericMSA(IMoStemMsa stemMsa)
		{
			m_type = MsaType.kStem;
			m_mainPOS = stemMsa.PartOfSpeechRAHvo;
			m_fromPOSes = stemMsa.FromPartsOfSpeechRC;
		}
コード例 #10
0
ファイル: ParserTrace.cs プロジェクト: sillsdev/WorldPad
 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;
     }
 }