/// <summary>
 /// For each ws in ms, add to the set of strings under that key in results the words from that alternative.
 /// If the alternative contains more than maxWords words, skip it.
 /// </summary>
 /// <param name="ms"></param>
 /// <param name="results"></param>
 /// <param name="maxWords"></param>
 private void AddKeysFrom(IMultiAccessorBase ms, Dictionary <int, HashSet <string> > results, int maxWords)
 {
     foreach (var ws in ms.AvailableWritingSystemIds)
     {
         string wordSource = ms.get_String(ws).Text;
         if (wordSource == null)
         {
             continue;
         }
         var words = (from Match match in WordParsingRegex.Matches(wordSource) select match.Value).ToArray();
         if (words.Length > maxWords)
         {
             continue;
         }
         HashSet <string> wordSet;
         if (!results.TryGetValue(ws, out wordSet))
         {
             wordSet     = new HashSet <string>();
             results[ws] = wordSet;
         }
         foreach (var word in words)
         {
             wordSet.Add(word);
         }
     }
 }
Example #2
0
        public void WriteToLcmMultiString(IMultiAccessorBase dest, ILgWritingSystemFactory wsManager)
        {
            if (dest == null)
            {
                return;
            }
            HashSet <int> destWsIdsToClear = new HashSet <int>(dest.AvailableWritingSystemIds);

            foreach (KeyValuePair <string, LfStringField> kv in this)
            {
                int wsId = wsManager.GetWsFromStr(kv.Key);
                if (wsId == 0)
                {
                    continue;                            // Skip any unidentified writing systems
                }
                string    value = kv.Value.Value;
                ITsString tss   = LfMerge.Core.DataConverters.ConvertMongoToLcmTsStrings.SpanStrToTsString(value, wsId, wsManager);
                dest.set_String(wsId, tss);
                destWsIdsToClear.Remove(wsId);
            }
            foreach (int wsId in destWsIdsToClear)
            {
                dest.set_String(wsId, string.Empty);
            }
        }
Example #3
0
 private LfMultiText ToMultiText(IMultiAccessorBase fdoMultiString)
 {
     if (fdoMultiString == null)
     {
         return(null);
     }
     return(LfMultiText.FromFdoMultiString(fdoMultiString, ServiceLocator.WritingSystemManager));
 }
Example #4
0
 public static LfMultiText ToMultiText(IMultiAccessorBase LcmMultiString, ILgWritingSystemFactory LcmWritingSystemManager)
 {
     if ((LcmMultiString == null) || (LcmWritingSystemManager == null))
     {
         return(null);
     }
     return(LfMultiText.FromLcmMultiString(LcmMultiString, LcmWritingSystemManager));
 }
Example #5
0
 public static LfMultiText ToMultiText(IMultiAccessorBase fdoMultiString, ILgWritingSystemFactory fdoWritingSystemManager)
 {
     if ((fdoMultiString == null) || (fdoWritingSystemManager == null))
     {
         return(null);
     }
     return(LfMultiText.FromFdoMultiString(fdoMultiString, fdoWritingSystemManager));
 }
        /// ----------------------------------------------------------------------------------------
        /// <summary>
        /// Create a MultiUnicodeAccessor
        /// </summary>
        /// ----------------------------------------------------------------------------------------
        protected override void CreateTestData()
        {
            m_text = Cache.ServiceLocator.GetInstance <ITextFactory>().Create();
            //Cache.LangProject.TextsOC.Add(m_text);
            IStText stText = Cache.ServiceLocator.GetInstance <IStTextFactory>().Create();

            m_text.ContentsOA = stText;
            m_multi           = stText.Title;
        }
Example #7
0
        protected static void SetAllMultiAlternatives(IMultiAccessorBase multiField,
                                                      LabeledMultiStringControl source)
        {
            var cws = source.NumberOfWritingSystems;

            for (var i = 0; i < cws; i++)
            {
                var curWs = source.Ws(i);
                multiField.set_String(curWs, source.Value(curWs));
            }
        }
Example #8
0
        private static bool HasMsContentChanged(IMultiAccessorBase oldStrings, LabeledMultiStringControl msControl)
        {
            var cws = msControl.NumberOfWritingSystems;

            for (var i = 0; i < cws; i++)
            {
                var curWs = msControl.Ws(i);
                if (oldStrings.get_String(curWs).Text != msControl.Value(curWs).Text)
                {
                    return(true);
                }
            }
            return(false);
        }
        /// <summary>
        /// Store the results of any editing into the actual data.
        /// </summary>
        public void GetMultilingualCaptionValues(IMultiAccessorBase caption)
        {
            if (m_lmscCaption == null)
            {
                return;
            }
            var cws = m_lmscCaption.NumberOfWritingSystems;

            for (var i = 0; i < cws; i++)
            {
                var curWs = m_lmscCaption.Ws(i);
                caption.set_String(curWs, m_lmscCaption.Value(curWs));
            }
        }
Example #10
0
        public static LfMultiText FromLcmMultiString(IMultiAccessorBase other, ILgWritingSystemFactory wsManager)
        {
            LfMultiText newInstance = new LfMultiText();

            foreach (int wsid in other.AvailableWritingSystemIds)
            {
                string        wsstr = wsManager.GetStrFromWs(wsid);
                ITsString     value = other.get_String(wsid);
                string        text  = LfMerge.Core.DataConverters.ConvertLcmToMongoTsStrings.TextFromTsString(value, wsManager);
                LfStringField field = LfStringField.FromString(text);
                if (field != null)
                {
                    newInstance.Add(wsstr, field);
                }
            }
            return(newInstance);
        }
Example #11
0
        protected static void LoadAllMultiAlternatives(IMultiAccessorBase multiField,
                                                       LabeledMultiStringControl destination)
        {
            var cws = destination.NumberOfWritingSystems;

            for (var i = 0; i < cws; i++)
            {
                var curWs = destination.Ws(i);
                if (curWs <= 0)
                {
                    continue;
                }
                int       actualWs;
                ITsString tssStr;
                if (!multiField.TryWs(curWs, out actualWs, out tssStr))
                {
                    continue;
                }
                destination.SetValue(curWs, tssStr);
            }
        }
Example #12
0
		/// <summary>
		/// For each ws in ms, add to the set of strings under that key in results the words from that alternative.
		/// If the alternative contains more than maxWords words, skip it.
		/// </summary>
		/// <param name="ms"></param>
		/// <param name="results"></param>
		/// <param name="maxWords"></param>
		private void AddKeysFrom(IMultiAccessorBase ms, Dictionary<int, HashSet<string>> results, int maxWords)
		{
			foreach (var ws in ms.AvailableWritingSystemIds)
			{
				string wordSource = ms.get_String(ws).Text;
				if (wordSource == null)
					continue;
				var words = (from Match match in WordParsingRegex.Matches(wordSource) select match.Value).ToArray();
				if (words.Length > maxWords || words.Length == 0)
					continue;
				HashSet<string> wordSet;
				if (!results.TryGetValue(ws, out wordSet))
				{
					wordSet = new HashSet<string>();
					results[ws] = wordSet;
				}
				foreach (var word in words.Where(
					word => !String.IsNullOrEmpty(word) && word.Length >= MIN_SEARCH_KEY_LENGTH))
				{
					wordSet.Add(word);
				}
			}
		}
        /// <summary>
        /// Set the multilingual caption into the dialog control.
        /// </summary>
        public void SetMultilingualCaptionValues(IMultiAccessorBase caption)
        {
            if (m_lmscCaption == null)
            {
                return;
            }
            var cws = m_lmscCaption.NumberOfWritingSystems;

            for (var i = 0; i < cws; i++)
            {
                var curWs = m_lmscCaption.Ws(i);
                if (curWs <= 0)
                {
                    continue;
                }
                int       actualWs;
                ITsString tssStr;
                if (!caption.TryWs(curWs, out actualWs, out tssStr))
                {
                    continue;
                }
                m_lmscCaption.SetValue(curWs, tssStr);
            }
        }
		/// <summary>
		/// Store the results of any editing into the actual data.
		/// </summary>
		public void GetMultilingualCaptionValues(IMultiAccessorBase caption)
		{
			if (m_lmscCaption == null)
				return;
			var cws = m_lmscCaption.NumberOfWritingSystems;
			for (var i = 0; i < cws; i++)
			{
				var curWs = m_lmscCaption.Ws(i);
				caption.set_String(curWs, m_lmscCaption.Value(curWs));
			}
		}
		/// <summary>
		/// Set the multilingual caption into the dialog control.
		/// </summary>
		public void SetMultilingualCaptionValues(IMultiAccessorBase caption)
		{
			if (m_lmscCaption == null)
				return;
			var cws = m_lmscCaption.NumberOfWritingSystems;
			for (var i = 0; i < cws; i++)
			{
				var curWs = m_lmscCaption.Ws(i);
				if (curWs <= 0)
					continue;
				int actualWs;
				ITsString tssStr;
				if (!caption.TryWs(curWs, out actualWs, out tssStr))
					continue;
				m_lmscCaption.SetValue(curWs, tssStr);
			}
		}
Example #16
0
		protected static void LoadAllMultiAlternatives(IMultiAccessorBase multiField,
			LabeledMultiStringControl destination)
		{
			var cws = destination.NumberOfWritingSystems;
			for (var i = 0; i < cws; i++)
			{
				var curWs = destination.Ws(i);
				if (curWs <= 0)
					continue;
				int actualWs;
				ITsString tssStr;
				if (!multiField.TryWs(curWs, out actualWs, out tssStr))
					continue;
				destination.SetValue(curWs, tssStr);
			}
		}
Example #17
0
		protected static void SetAllMultiAlternatives(IMultiAccessorBase multiField,
			LabeledMultiStringControl source)
		{
			var cws = source.NumberOfWritingSystems;
			for (var i = 0; i < cws; i++)
			{
				var curWs = source.Ws(i);
				multiField.set_String(curWs, source.Value(curWs));
			}
		}
Example #18
0
		/// ----------------------------------------------------------------------------------------
		/// <summary>
		/// Create a MultiUnicodeAccessor
		/// </summary>
		/// ----------------------------------------------------------------------------------------
		protected override void CreateTestData()
		{
			m_text = Cache.ServiceLocator.GetInstance<ITextFactory>().Create();
			//Cache.LangProject.TextsOC.Add(m_text);
			IStText stText = Cache.ServiceLocator.GetInstance<IStTextFactory>().Create();
			m_text.ContentsOA = stText;
			m_multi = stText.Title;
		}
Example #19
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Gets the inspector objects for the specified MultiString.
		/// </summary>
		/// ------------------------------------------------------------------------------------
		private List<IInspectorObject> GetInspectorObjectsForMultiString(IMultiAccessorBase msa,
			IInspectorObject ioParent, int level)
		{
			List<IInspectorObject> list = new List<IInspectorObject>();
			int ws;

			if (ObjectBrowser.m_virtualFlag == false)
				list = GetMultiStringInspectorObjects(msa, ioParent, level);
			else
				list = BaseGetInspectorObjects(msa, level);

			Dictionary<int, string> allStrings = new Dictionary<int, string>();
			try
			{
				// Put this in a try/catch because VirtualStringAccessor
				// didn't implement StringCount when this was written.
				for (int i = 0; i < msa.StringCount; i++)
				{
					ITsString tss = msa.GetStringFromIndex(i, out ws);
					allStrings[ws] = tss.Text;
				}
			}
			catch { }

			if (ObjectBrowser.m_virtualFlag == true)
			{
				IInspectorObject io = CreateInspectorObject(allStrings, msa, ioParent, level);
				io.DisplayName = "AllStrings";
				io.DisplayValue = FormatCountString(allStrings.Count);
				io.HasChildren = (allStrings.Count > 0);
				list.Insert(0, io);
				list.Sort((x, y) => x.DisplayName.CompareTo(y.DisplayName));
			}
			return list;
		}
Example #20
0
		private static string BestAlternative(IMultiAccessorBase multi, int wsDefault)
		{
			var tss = multi.BestAnalysisVernacularAlternative;
			if (tss.Text == "***")
				tss = multi.get_String(wsDefault);
			return MakeSafeAndNormalizedAttribute(tss.Text);
		}
Example #21
0
		private static bool HasMsContentChanged(IMultiAccessorBase oldStrings, LabeledMultiStringControl msControl)
		{
			var cws = msControl.NumberOfWritingSystems;
			for (var i = 0; i < cws; i++)
			{
				var curWs = msControl.Ws(i);
				//if (oldStrings.get_String(curWs).Text != Cache.TsStrFactory.EmptyString(curWs).Text
				//    && oldStrings.get_String(curWs).Text != msControl.Value(curWs).Text)
				//    return true;
				if (oldStrings.get_String(curWs).Text != msControl.Value(curWs).Text)
					return true;
			}
			return false;
		}
		private static XElement ExportBestVernacularOrAnalysis(IMultiAccessorBase multiString, string elementName, Icu.UNormalizationMode mode)
		{
			if (multiString == null) throw new ArgumentNullException("multiString");
			if (String.IsNullOrEmpty(elementName)) throw new ArgumentNullException("elementName");

			return new XElement(elementName, Normalize(multiString.BestVernacularAnalysisAlternative, mode));
		}
Example #23
0
		private void WriteTrait(TextWriter w, string sName, IMultiAccessorBase multi, int wsWant)
		{
			string sValue = null;
			if (wsWant > 0)
				sValue = multi.get_String(wsWant).Text;
			if (String.IsNullOrEmpty(sValue))
				sValue = multi.BestAnalysisVernacularAlternative.Text;
			if (sValue == "***" && wsWant <= 0)
				sValue = multi.get_String(m_wsEn).Text;
			WriteTrait(w, sName, sValue);
		}