示例#1
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Exports the configured doc view.
		/// </summary>
		/// <param name="progressDlg">The progress dialog.</param>
		/// <param name="parameters">The parameters.</param>
		/// <returns>Always null.</returns>
		/// ------------------------------------------------------------------------------------
		private object ExportConfiguredDocView(IAdvInd4 progressDlg, params object[] parameters)
		{
			Debug.Assert(parameters.Length == 3);
			m_progressDlg = progressDlg;
			if (m_xvc == null)
				return null;

			string outPath = (string)parameters[0];
			string fxtPath = (string)parameters[1];
			FxtType ft = (FxtType)parameters[2];

			try
			{
				m_cache.EnableBulkLoadingIfPossible(true);

				using (TextWriter w = new StreamWriter(outPath))
				{
					FileInfo outFile = new FileInfo(outPath);
#if DEBUG
					string dirPath = Path.GetTempPath();
					int copyCount = 1;
					string s = string.Format("Starting Configured Export at {0}",
						System.DateTime.Now.ToLongTimeString());
					Debug.WriteLine(s);
#endif
					m_ce = new ConfiguredExport(null, m_cache.MainCacheAccessor, m_hvoRootObj);
					m_ce.Initialize(m_cache, w, ft.m_sDataType, ft.m_sFormat, outPath);
					m_ce.UpdateProgress += new SIL.FieldWorks.Common.Controls.ConfiguredExport.ProgressHandler(ce_UpdateProgress);
					m_xvc.Display(m_ce, m_hvoRootObj, m_seqView.RootFrag);
					m_ce.Finish(ft.m_sDataType);
					w.Close();
#if DEBUG
					s = string.Format("Finished Configured Export Dump at {0}",
						System.DateTime.Now.ToLongTimeString());
					Debug.WriteLine(s);
#endif
					if (ft.m_sXsltFiles != null && ft.m_sXsltFiles.Length != 0)
					{
						string[] rgsXslts = ft.m_sXsltFiles.Split(new char[] { ';' });
						int cXslts = rgsXslts.GetLength(0);
						progressDlg.Position = 0;
						progressDlg.SetRange(0, cXslts);
						progressDlg.Message =
							xWorksStrings.ProcessingIntoFinalForm;
						int idx = fxtPath.LastIndexOfAny(new char[] { '/', '\\' });
						if (idx < 0)
							idx = 0;
						else
							++idx;
						string basePath = fxtPath.Substring(0, idx);
						for (int ix = 0; ix <= cXslts; ++ix)
						{
#if DEBUG
							File.Copy(outPath, Path.Combine(dirPath, "DebugOnlyExportStage" + copyCount + ".txt"), true);
							copyCount++;
							if (ix < cXslts)
								s = String.Format("Starting Configured Export XSLT file {0} at {1}",
									rgsXslts[ix], System.DateTime.Now.ToLongTimeString());
							else
								s = String.Format("Starting final postprocess phase at {0}",
									System.DateTime.Now.ToLongTimeString());
							Debug.WriteLine(s);
#endif
							if (ix < cXslts)
							{
								string sXsltPath = basePath + rgsXslts[ix];
								m_ce.PostProcess(sXsltPath, outPath, ix + 1);
							}
							else
							{
								m_ce.PostProcess(null, outPath, ix + 1);
							}
							progressDlg.Step(0);
						}
					}

					if (ft.m_sFormat.ToLowerInvariant() == "xhtml")
					{
						IVwStylesheet vss = null;
						if (m_seqView.RootBox != null)
							vss = m_seqView.RootBox.Stylesheet;
						m_ce.WriteCssFile(Path.ChangeExtension(outPath, ".css"), vss);
					}
					m_ce = null;
#if DEBUG
					File.Copy(outPath, Path.Combine(dirPath, "DebugOnlyExportStage" + copyCount + ".txt"), true);
					s = string.Format("Totally Finished Configured Export at {0}",
						System.DateTime.Now.ToLongTimeString());
					Debug.WriteLine(s);
#endif
				}
			}
			finally
			{
				m_cache.EnableBulkLoadingIfPossible(false);
			}
			return null;
		}
示例#2
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Exports the configured doc view.
        /// </summary>
        /// <param name="progressDlg">The progress dialog.</param>
        /// <param name="parameters">The parameters.</param>
        /// <returns>Always null.</returns>
        /// ------------------------------------------------------------------------------------
        protected object ExportConfiguredDocView(IThreadedProgress progressDlg, object[] parameters)
        {
            Debug.Assert(parameters.Length == 4);
            m_progressDlg = progressDlg;
            if (m_xvc == null)
                return null;

            var outPath = (string) parameters[0];
            var fxtPath = (string) parameters[1];
            var ft = (FxtType) parameters[2];
            var vss = (IVwStylesheet) parameters[3];

            using (TextWriter w = new StreamWriter(outPath))
            {
                // FileInfo outFile = new FileInfo(outPath); // CS 219
            #if DEBUG
                string dirPath = Path.GetTempPath();
                int copyCount = 1;
                string s = string.Format("Starting Configured Export at {0}",
                    DateTime.Now.ToLongTimeString());
                Debug.WriteLine(s);
            #endif
                m_ce = new ConfiguredExport(null, m_xvc.DataAccess, m_hvoRootObj);
                string sBodyClass = (m_areaOrig == "notebook") ? "notebookBody" : "dicBody";
                m_ce.Initialize(m_cache, m_mediator, w, ft.m_sDataType, ft.m_sFormat, outPath, sBodyClass);
                m_ce.UpdateProgress += ce_UpdateProgress;
                m_xvc.Display(m_ce, m_hvoRootObj, m_seqView.RootFrag);
                m_ce.Finish(ft.m_sDataType);
                w.Close();
            #if DEBUG
                s = string.Format("Finished Configured Export Dump at {0}",
                    DateTime.Now.ToLongTimeString());
                Debug.WriteLine(s);
            #endif
                if (!string.IsNullOrEmpty(ft.m_sXsltFiles))
                {
                    string[] rgsXslts = ft.m_sXsltFiles.Split(new[] { ';' });
                    int cXslts = rgsXslts.GetLength(0);
                    progressDlg.Position = 0;
                    progressDlg.Minimum = 0;
                    progressDlg.Maximum = cXslts;
                    progressDlg.Message = xWorksStrings.ProcessingIntoFinalForm;
                    int idx = fxtPath.LastIndexOfAny(new[] { '/', '\\' });
                    if (idx < 0)
                        idx = 0;
                    else
                        ++idx;
                    string basePath = fxtPath.Substring(0, idx);
                    for (int ix = 0; ix <= cXslts; ++ix)
                    {
            #if DEBUG
                        File.Copy(outPath, Path.Combine(dirPath, "DebugOnlyExportStage" + copyCount + ".txt"), true);
                        copyCount++;
                        if (ix < cXslts)
                            s = String.Format("Starting Configured Export XSLT file {0} at {1}",
                                rgsXslts[ix], DateTime.Now.ToLongTimeString());
                        else
                            s = String.Format("Starting final postprocess phase at {0}",
                                DateTime.Now.ToLongTimeString());
                        Debug.WriteLine(s);
            #endif
                        if (ix < cXslts)
                        {
                            string sXsltPath = basePath + rgsXslts[ix];
                            m_ce.PostProcess(sXsltPath, outPath, ix + 1);
                        }
                        else
                        {
                            m_ce.PostProcess(null, outPath, ix + 1);
                        }
                        progressDlg.Step(0);
                    }
                }

                if (ft.m_sFormat.ToLowerInvariant() == "xhtml")
                {
                    m_ce.WriteCssFile(Path.ChangeExtension(outPath, ".css"), vss, AllowDictionaryParagraphIndent(ft));
                }
                m_ce = null;
            #if DEBUG
                File.Copy(outPath, Path.Combine(dirPath, "DebugOnlyExportStage" + copyCount + ".txt"), true);
                s = string.Format("Totally Finished Configured Export at {0}",
                    DateTime.Now.ToLongTimeString());
                Debug.WriteLine(s);
            #endif
            }

            return null;
        }