Implementation of the COM IStream interface that wraps a C# TextWriter object. This is useful for calling the ITsString.WriteAsXml method from C# code.
Наследование: IStream
Пример #1
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Get an XML representation of the given ITsTextProps.
		/// </summary>
		/// <param name="ttp">The TTP.</param>
		/// <param name="wsf">The WSF.</param>
		/// <returns></returns>
		/// ------------------------------------------------------------------------------------
		public static string GetXmlRep(ITsTextProps ttp, ILgWritingSystemFactory wsf)
		{
			using (var writer = new StringWriter())
			{
				var stream = new TextWriterStream(writer);
				ttp.WriteAsXml(stream, wsf, 0);
				return writer.ToString();
			}
		}
Пример #2
0
            private void ExportTranslatedItem(TextWriter w, TextWriterStream stream,
				ICmPossibility item, int listFlid)
            {
                if (m_flidsForGuids.ContainsKey(listFlid))
                    w.WriteLine(String.Format("<{0} guid=\"{1}\">", item.ClassName, item.Guid));
                else
                    w.WriteLine(String.Format("<{0}>", item.ClassName));
                ExportMultiUnicode(w, item.Name);
                ExportMultiUnicode(w, item.Abbreviation);
                ExportMultiString(w, stream, item.Description);
                switch (item.ClassID)
                {
                    case CmLocationTags.kClassId:
                        ExportLocationFields(w, item as ICmLocation);
                        break;
                    case CmPersonTags.kClassId:
                        ExportPersonFields(w, item as ICmPerson);
                        break;
                    case CmSemanticDomainTags.kClassId:
                        ExportSemanticDomainFields(w, stream, item as ICmSemanticDomain);
                        break;
                    case LexEntryTypeTags.kClassId:
                        ExportLexEntryTypeFields(w, item as ILexEntryType);
                        break;
                    case LexRefTypeTags.kClassId:
                        ExportLexRefTypeFields(w, item as ILexRefType);
                        break;
                    case PartOfSpeechTags.kClassId:
                        ExportPartOfSpeechFields(w, item as IPartOfSpeech);
                        break;
                }
                if (item.SubPossibilitiesOS.Count > 0)
                {
                    w.WriteLine("<SubPossibilities>");
                    foreach (var subItem in item.SubPossibilitiesOS)
                        ExportTranslatedItem(w, stream, subItem, listFlid);
                    w.WriteLine("</SubPossibilities>");
                }
                w.WriteLine(String.Format("</{0}>", item.ClassName));
            }
Пример #3
0
            private void ExportTranslatedList(TextWriter w, TextWriterStream stream,
				ICmPossibilityList list)
            {
                string owner = list.Owner.ClassName;
                string field = m_cache.MetaDataCacheAccessor.GetFieldName(list.OwningFlid);
                string itemClass = m_cache.MetaDataCacheAccessor.GetClassName(list.ItemClsid);
                w.WriteLine(String.Format("<List owner=\"{0}\" field=\"{1}\" itemClass=\"{2}\">",
                    owner, field, itemClass));
                ExportMultiUnicode(w, list.Name);
                ExportMultiUnicode(w, list.Abbreviation);
                ExportMultiString(w, stream, list.Description);
                w.WriteLine("<Possibilities>");
                foreach (var item in list.PossibilitiesOS)
                    ExportTranslatedItem(w, stream, item, list.OwningFlid);
                w.WriteLine("</Possibilities>");
                w.WriteLine("</List>");
            }
Пример #4
0
            private void ExportSemanticDomainFields(TextWriter w, TextWriterStream stream,
				ICmSemanticDomain item)
            {
                if (item != null && item.QuestionsOS.Count > 0)
                {
                    w.WriteLine("<Questions>");
                    foreach (var domainQ in item.QuestionsOS)
                    {
                        w.WriteLine("<CmDomainQ>");
                        ExportMultiUnicode(w, domainQ.Question);
                        ExportMultiUnicode(w, domainQ.ExampleWords);
                        ExportMultiString(w, stream, domainQ.ExampleSentences);
                        w.WriteLine("</CmDomainQ>");
                    }
                    w.WriteLine("</Questions>");
                }
            }
Пример #5
0
            private void ExportMultiString(TextWriter w, TextWriterStream stream,
				IMultiString ms)
            {
                ITsString tssEnglish = ms.get_String(m_wsEn);
                if (tssEnglish.Length == 0)
                    return;
                string sField = m_cache.MetaDataCacheAccessor.GetFieldName(ms.Flid);
                w.WriteLine(String.Format("<{0}>", sField));
                tssEnglish.WriteAsXml(stream, m_cache.WritingSystemFactory, 0, m_wsEn, false);
                foreach (int ws in m_mapWsCode.Keys)
                {
                    ITsString tssValue = ms.get_String(ws);
                    tssValue.WriteAsXml(stream, m_cache.WritingSystemFactory, 0, ws, false);
                }
                w.WriteLine(String.Format("</{0}>", sField));
            }
Пример #6
0
 /// --------------------------------------------------------------------------------
 /// <summary>
 /// Export the list(s) to the given TextWriter.
 /// </summary>
 /// --------------------------------------------------------------------------------
 public void ExportTranslatedLists(TextWriter w)
 {
     // Writing out TsStrings requires a Stream, not a Writer...
     var stream = new TextWriterStream(w);
     w.WriteLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
     w.WriteLine(String.Format("<Lists date=\"{0}\">", DateTime.Now.ToString()));
     foreach (var list in m_lists)
         ExportTranslatedList(w, stream, list);
     w.WriteLine("</Lists>");
 }
Пример #7
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Initialize the object with some useful information, and write the initial
		/// element start tag to the output.
		/// </summary>
		/// ------------------------------------------------------------------------------------
		public void Initialize(FdoCache cache, Mediator mediator, TextWriter w, string sDataType,
			string sFormat, string sOutPath, string sBodyClass)
		{
			m_writer = w;
			m_strm = new TextWriterStream(w);
			m_cache = cache;
			m_mediator = mediator;
			m_stylesheet = Widgets.FontHeightAdjuster.StyleSheetFromMediator(m_mediator);
			m_mdc = cache.MetaDataCacheAccessor;
			m_sFormat = sFormat.ToLowerInvariant();
			if (m_sFormat == "xhtml")
			{
				m_xhtml = new XhtmlHelper(w, cache);
				m_xhtml.WriteXhtmlHeading(sOutPath, null, sBodyClass);
			}
			else
			{
				w.WriteLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
				w.WriteLine("<{0}>", sDataType);
			}
			m_cssType = (sBodyClass == "notebookBody") ?
				XhtmlHelper.CssType.Notebook : XhtmlHelper.CssType.Dictionary;
		}
Пример #8
0
		/// <summary>
		/// Write the closing element end tag to the output.
		/// </summary>
		/// <param name="sDataType"></param>
		public void Finish(string sDataType)
		{
			if (m_sFormat == "xhtml")
			{
				if (m_schCurrent.Length > 0)
					m_writer.WriteLine("</div>");	// for letData
				m_xhtml.WriteXhtmlEnding();
			}
			else
			{
				m_writer.WriteLine("</{0}>", sDataType);
			}
			m_writer.Close();
			m_strm = null;
			m_writer = null;
		}