/// ------------------------------------------------------------------------------------
        /// <summary>
        /// Called when the add button is pressed
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// ------------------------------------------------------------------------------------
        protected void m_btnAdd_Click(object sender, System.EventArgs e)
        {
            IPubHFSet HFSet = m_cache.ServiceLocator.GetInstance <IPubHFSetFactory>().Create();

            m_HfSetOwner.HeaderFooterSetsOC.Add(HFSet);
            IPubHeaderFactory phFactory = m_cache.ServiceLocator.GetInstance <IPubHeaderFactory>();

            HFSet.DefaultFooterOA = phFactory.Create();
            HFSet.DefaultHeaderOA = phFactory.Create();
            HFSet.FirstFooterOA   = phFactory.Create();
            HFSet.FirstHeaderOA   = phFactory.Create();
            HFSet.EvenFooterOA    = phFactory.Create();
            HFSet.EvenHeaderOA    = phFactory.Create();

            using (HeaderFooterModifyDlg dlg = new HeaderFooterModifyDlg(m_cache, HFSet as IPubHFSet, m_pub, m_helpProvider))
            {
                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    UpdateNameBox(null);
                    UpdatePreView();
                }
                else
                {
                    // We don't want a new PubHFSet after all...
                    m_cache.DomainDataByFlid.DeleteObj(HFSet.Hvo);
                }
            }
        }
示例#2
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Refreshes the display of the preview
        /// </summary>
        /// ------------------------------------------------------------------------------------
        private void UpdatePreView()
        {
            IPubHFSet hfset = CurrentHFSet;

            // description
            m_txtBoxDescription.Text = hfset.Description.Text;

            UpdateFirstPagePreview();

            UpdateEvenPagePreview();

            // odd page
            if (m_hfsvOddTop != null)
            {
                m_hfsvOddTop.Header = hfset.DefaultHeaderOA.Hvo;
                m_hfsvOddTop.MakeRoot();
                m_hfsvOddTop.PerformLayout();
            }
            if (m_hfsvOddBottom != null)
            {
                m_hfsvOddBottom.Header = hfset.DefaultFooterOA.Hvo;
                m_hfsvOddBottom.MakeRoot();
                m_hfsvOddBottom.PerformLayout();
            }
        }
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Initializes a new instance of the <see cref="HeaderFooterConfigurer"/> class.
		/// </summary>
		/// <param name="cache">The cache representing our DB connection.</param>
		/// <param name="hvoHeaderFooterSet">Id of the header/footer set to be used</param>
		/// <param name="wsDefault">Default writing system</param>
		/// <param name="printDateTime">printing date/time</param>
		/// ------------------------------------------------------------------------------------
		public HeaderFooterConfigurer(FdoCache cache, int hvoHeaderFooterSet, int wsDefault,
			DateTime printDateTime)
		{
			m_fdoCache = cache;
			if (hvoHeaderFooterSet > 0)
				m_hfSet = m_fdoCache.ServiceLocator.GetInstance<IPubHFSetRepository>().GetObject(hvoHeaderFooterSet);
			m_wsDefault = wsDefault;
			m_printDateTime = printDateTime;
		}
示例#4
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Updates the preview when the user selects a different set
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// ------------------------------------------------------------------------------------
        private void m_lstBoxName_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            UpdatePreView();

            // If the selected set is built-in, don't allow the user to delete it.
            IPubHFSet currentSet = CurrentHFSet;

            m_btnDelete.Enabled = (m_lstBoxName.Items.Count > 1 &&
                                   (m_protectedHFSets == null || !m_protectedHFSets.Contains(currentSet.Name)));
        }
示例#5
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Called when the delete button is pressed
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// ------------------------------------------------------------------------------------
        protected void m_btnDelete_Click(object sender, System.EventArgs e)
        {
            IPubHFSet hfSet = CurrentHFSet;
            int       i     = m_lstBoxName.SelectedIndex;

            i = (i > 0) ? (i - 1) : i + 1;
            m_lstBoxName.SelectedItem = m_lstBoxName.Items[i];
            m_lstBoxName.Items.Remove(hfSet);
            // Application.DoEvents();	// no noticeable issues when this is not called
            m_HfSetOwner.HeaderFooterSetsOC.Remove(hfSet);
        }
示例#6
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Replaces all the header/footer panels with HFSetView's initialized with the correct
        /// H/F info
        /// </summary>
        /// ------------------------------------------------------------------------------------
        private void ReplacePanelsWithHFSetViews()
        {
            IPubHFSet hfSet = CurrentHFSet;

            m_hfsvFirstTop    = MakeHFSetView(m_pnlFirstTop, hfSet.FirstHeaderOA, 1);
            m_hfsvFirstBottom = MakeHFSetView(m_pnlFirstBottom, hfSet.FirstFooterOA, 1);
            m_hfsvEvenTop     = MakeHFSetView(m_pnlEvenTop, hfSet.EvenHeaderOA, 2);
            m_hfsvEvenBottom  = MakeHFSetView(m_pnlEvenBottom, hfSet.EvenFooterOA, 2);
            m_hfsvOddTop      = MakeHFSetView(m_pnlOddTop, hfSet.DefaultHeaderOA, 3);
            m_hfsvOddBottom   = MakeHFSetView(m_pnlOddBottom, hfSet.DefaultFooterOA, 3);
        }
示例#7
0
 /// ------------------------------------------------------------------------------------
 /// <summary>
 /// Initializes a new instance of the <see cref="HeaderFooterConfigurer"/> class.
 /// </summary>
 /// <param name="cache">The cache representing our DB connection.</param>
 /// <param name="hvoHeaderFooterSet">Id of the header/footer set to be used</param>
 /// <param name="wsDefault">Default writing system</param>
 /// <param name="printDateTime">printing date/time</param>
 /// ------------------------------------------------------------------------------------
 public HeaderFooterConfigurer(FdoCache cache, int hvoHeaderFooterSet, int wsDefault,
                               DateTime printDateTime)
 {
     m_fdoCache = cache;
     if (hvoHeaderFooterSet > 0)
     {
         m_hfSet = m_fdoCache.ServiceLocator.GetInstance <IPubHFSetRepository>().GetObject(hvoHeaderFooterSet);
     }
     m_wsDefault     = wsDefault;
     m_printDateTime = printDateTime;
 }
示例#8
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Handle the OK button press
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// ------------------------------------------------------------------------------------
        private void m_btnOk_Click(object sender, System.EventArgs e)
        {
            IPubHFSet currentSet = CurrentHFSet;
            IPubHFSet pubSet     = m_pubDiv.HFSetOA;

            m_pubDiv.DifferentEvenHF  = !m_chkEvenSameAsOdd.Checked;
            m_pubDiv.DifferentFirstHF = !m_chkFirstSameAsOdd.Checked;

            // Copy the Header / Footer Sets to the Publication
            pubSet.Name = currentSet.Name;
            pubSet.CloneDetails(currentSet);
            Close();
        }
示例#9
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Refreshes the display of the even page preview
        /// </summary>
        /// ------------------------------------------------------------------------------------
        private void UpdateEvenPagePreview()
        {
            IPubHFSet hfset = CurrentHFSet;

            if (m_hfsvEvenTop != null)
            {
                m_hfsvEvenTop.Header = (m_chkEvenSameAsOdd.Checked ?
                                        hfset.DefaultHeaderOA.Hvo :
                                        hfset.EvenHeaderOA.Hvo);
                m_hfsvEvenTop.MakeRoot();
                m_hfsvEvenTop.PerformLayout();
            }
            if (m_hfsvEvenBottom != null)
            {
                m_hfsvEvenBottom.Header = (m_chkEvenSameAsOdd.Checked ?
                                           hfset.DefaultFooterOA.Hvo :
                                           hfset.EvenFooterOA.Hvo);
                m_hfsvEvenBottom.MakeRoot();
                m_hfsvEvenBottom.PerformLayout();
            }
        }
示例#10
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Refreshes the display of the first page preview
        /// </summary>
        /// ------------------------------------------------------------------------------------
        private void UpdateFirstPagePreview()
        {
            IPubHFSet hfset = CurrentHFSet;

            if (m_hfsvFirstTop != null)
            {
                m_hfsvFirstTop.Header = (m_chkFirstSameAsOdd.Checked ?
                                         hfset.DefaultHeaderOA.Hvo :
                                         hfset.FirstHeaderOA.Hvo);
                m_hfsvFirstTop.MakeRoot();
                m_hfsvFirstTop.PerformLayout();
            }
            if (m_hfsvFirstBottom != null)
            {
                m_hfsvFirstBottom.Header = (m_chkFirstSameAsOdd.Checked ?
                                            hfset.DefaultFooterOA.Hvo :
                                            hfset.FirstFooterOA.Hvo);
                m_hfsvFirstBottom.MakeRoot();
                m_hfsvFirstBottom.PerformLayout();
            }
        }
示例#11
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Copy the details from the given pub H/F set to this one.
        /// </summary>
        /// <param name="copyFrom">The set to clone</param>
        /// ------------------------------------------------------------------------------------
        public void CloneDetails(IPubHFSet copyFrom)
        {
            Description.UnderlyingTsString = copyFrom.Description.UnderlyingTsString;
            Name = copyFrom.Name;

            // if the header and the footer were null (if they are missing in the database)
            // then create them
            if (DefaultHeaderOA == null)
            {
                DefaultHeaderOA = new PubHeader();
            }
            if (DefaultFooterOA == null)
            {
                DefaultFooterOA = new PubHeader();
            }
            DefaultHeaderOA.OutsideAlignedText.UnderlyingTsString = copyFrom.DefaultHeaderOA.OutsideAlignedText.UnderlyingTsString;
            DefaultHeaderOA.CenteredText.UnderlyingTsString       = copyFrom.DefaultHeaderOA.CenteredText.UnderlyingTsString;
            DefaultHeaderOA.InsideAlignedText.UnderlyingTsString  = copyFrom.DefaultHeaderOA.InsideAlignedText.UnderlyingTsString;
            DefaultFooterOA.OutsideAlignedText.UnderlyingTsString = copyFrom.DefaultFooterOA.OutsideAlignedText.UnderlyingTsString;
            DefaultFooterOA.CenteredText.UnderlyingTsString       = copyFrom.DefaultFooterOA.CenteredText.UnderlyingTsString;
            DefaultFooterOA.InsideAlignedText.UnderlyingTsString  = copyFrom.DefaultFooterOA.InsideAlignedText.UnderlyingTsString;


            PubDivision owningDiv = new PubDivision(Cache, OwnerHVO);

            if (owningDiv.DifferentFirstHF)
            {
                // if the header and the footer were null (if they are the same as the odd page)
                // then create them
                if (FirstHeaderOA == null)
                {
                    FirstHeaderOA = new PubHeader();
                }
                if (FirstFooterOA == null)
                {
                    FirstFooterOA = new PubHeader();
                }
                FirstHeaderOA.OutsideAlignedText.UnderlyingTsString = copyFrom.FirstHeaderOA.OutsideAlignedText.UnderlyingTsString;
                FirstHeaderOA.CenteredText.UnderlyingTsString       = copyFrom.FirstHeaderOA.CenteredText.UnderlyingTsString;
                FirstHeaderOA.InsideAlignedText.UnderlyingTsString  = copyFrom.FirstHeaderOA.InsideAlignedText.UnderlyingTsString;
                FirstFooterOA.OutsideAlignedText.UnderlyingTsString = copyFrom.FirstFooterOA.OutsideAlignedText.UnderlyingTsString;
                FirstFooterOA.CenteredText.UnderlyingTsString       = copyFrom.FirstFooterOA.CenteredText.UnderlyingTsString;
                FirstFooterOA.InsideAlignedText.UnderlyingTsString  = copyFrom.FirstFooterOA.InsideAlignedText.UnderlyingTsString;
            }
            else
            {
                FirstHeaderOA = null;
                FirstFooterOA = null;
            }
            if (owningDiv.DifferentEvenHF)
            {
                // if the header and the footer were null (if they are the same as the odd page)
                // then create them
                if (EvenHeaderOA == null)
                {
                    EvenHeaderOA = new PubHeader();
                }
                if (EvenFooterOA == null)
                {
                    EvenFooterOA = new PubHeader();
                }
                EvenHeaderOA.OutsideAlignedText.UnderlyingTsString = copyFrom.EvenHeaderOA.OutsideAlignedText.UnderlyingTsString;
                EvenHeaderOA.CenteredText.UnderlyingTsString       = copyFrom.EvenHeaderOA.CenteredText.UnderlyingTsString;
                EvenHeaderOA.InsideAlignedText.UnderlyingTsString  = copyFrom.EvenHeaderOA.InsideAlignedText.UnderlyingTsString;
                EvenFooterOA.OutsideAlignedText.UnderlyingTsString = copyFrom.EvenFooterOA.OutsideAlignedText.UnderlyingTsString;
                EvenFooterOA.CenteredText.UnderlyingTsString       = copyFrom.EvenFooterOA.CenteredText.UnderlyingTsString;
                EvenFooterOA.InsideAlignedText.UnderlyingTsString  = copyFrom.EvenFooterOA.InsideAlignedText.UnderlyingTsString;
            }
            else
            {
                EvenHeaderOA = null;
                EvenFooterOA = null;
            }
        }
示例#12
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Create the dialog for modifying headers and footers
		/// </summary>
		/// <param name="cache">the cache</param>
		/// <param name="curHFSet">publication header/footer set</param>
		/// <param name="pub">publication (used to determine if the publication is right-bound
		/// or left-bound to determine placement of objects and dialog labels in dialog</param>
		/// <param name="helpProvider">provides context-senstive help for this dialog</param>
		/// ------------------------------------------------------------------------------------
		public HeaderFooterModifyDlg(FdoCache cache, IPubHFSet curHFSet, IPublication pub,
			IHelpTopicProvider helpProvider)
		{
			m_caches = new CachePair();
			m_caches.MainCache = cache;
			m_caches.CreateSecCache();
			m_curHFSet = curHFSet;
			m_pub = pub;
			m_helpProvider = helpProvider;
			LoadRealDataIntoSec();

			InitializeComponent();

			m_innerHeaderText = m_lblLeftHeader.Text;
			m_innerFooterText = m_lblLeftFooter.Text;
			m_outerHeaderText = m_lblRightHeader.Text;
			m_outerFooterText = m_lblRightFooter.Text;

			ChangePanelsToViews();
			m_lastFocusedView = m_hfsvHeader;
			m_txtBoxDescription.Text = m_curHFSet.Description.Text;
			m_txtBoxName.Text = m_curHFSet.Name;
			UpdateOKButton();
		}
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// helper function verifies a complete HeaderFooterSet containing "Test Literals" data
		/// </summary>
		/// <param name="hfSet">the HeaderFooterSet to verify</param>
		/// ------------------------------------------------------------------------------------
		private void VerifyHeaderFooterSetTestLiterals(IPubHFSet hfSet)
		{
			//verify header/footer set name
			Assert.AreEqual("Test Literals", hfSet.Name);
			// verify header/footer set description
			Assert.AreEqual("Test Description", hfSet.Description.Text);

			//verify DefaultHeader
			IPubHeader hf = hfSet.DefaultHeaderOA;
			Assert.AreEqual("Right top", hf.OutsideAlignedText.Text);
			Assert.AreEqual("Center top", hf.CenteredText.Text);
			Assert.AreEqual("Left top", hf.InsideAlignedText.Text);

			//verify DefaultFooter
			hf = hfSet.DefaultFooterOA;
			Assert.AreEqual("Right bottom", hf.OutsideAlignedText.Text);
			Assert.AreEqual("Center bottom", hf.CenteredText.Text);
			Assert.AreEqual("Left bottom", hf.InsideAlignedText.Text);

			//verify FirstHeader
			hf = hfSet.FirstHeaderOA;
			Assert.AreEqual("Right top1", hf.OutsideAlignedText.Text);
			Assert.IsNotNull(hf.CenteredText, "Should retrieve an empty tss");
			Assert.AreEqual(0, hf.CenteredText.Length);
			Assert.AreEqual("Left top1", hf.InsideAlignedText.Text);

			//verify FirstFooter
			hf = hfSet.FirstFooterOA;
			Assert.AreEqual("Right bottom1", hf.OutsideAlignedText.Text);
			Assert.AreEqual("Center bottom1", hf.CenteredText.Text);
			Assert.AreEqual("Left bottom1", hf.InsideAlignedText.Text);

			//verify EvenHeader
			hf = hfSet.EvenHeaderOA;
			Assert.AreEqual("Left top E", hf.OutsideAlignedText.Text);
			Assert.AreEqual("Center top E", hf.CenteredText.Text);
			Assert.AreEqual("Right top E", hf.InsideAlignedText.Text);

			//verify EvenFooter
			hf = hfSet.EvenFooterOA;
			Assert.AreEqual("Left bottom E", hf.OutsideAlignedText.Text);
			Assert.AreEqual("Center bottom E", hf.CenteredText.Text);
			Assert.AreEqual("Right bottom E", hf.InsideAlignedText.Text);
		}
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// helper function verifies a complete HeaderFooterSet containing "Default" data
		/// </summary>
		/// <param name="hfSet">the HeaderFooterSet to verify</param>
		/// <param name="fOwnedByDivision">if set to <c>true</c> then this H/F sett is owned by
		/// a division.</param>
		/// ------------------------------------------------------------------------------------
		private void VerifyHeaderFooterSetDefault(IPubHFSet hfSet, bool fOwnedByDivision)
		{
			//verify name
			Assert.AreEqual("default headers & footers", hfSet.Name);

			//verify Default Header and Footer
			VerifyDefaultHeaderOrFooter(hfSet.DefaultHeaderOA);
			VerifyDefaultHeaderOrFooter(hfSet.DefaultFooterOA);

			//verify First and Even
			if (fOwnedByDivision)
			{
				Assert.IsNull(hfSet.FirstHeaderOA);
				Assert.IsNull(hfSet.FirstFooterOA);
				Assert.IsNull(hfSet.EvenHeaderOA);
				Assert.IsNull(hfSet.EvenFooterOA);
			}
			else
			{
				VerifyDefaultHeaderOrFooter(hfSet.FirstHeaderOA);
				VerifyDefaultHeaderOrFooter(hfSet.FirstFooterOA);
				VerifyDefaultHeaderOrFooter(hfSet.EvenHeaderOA);
				VerifyDefaultHeaderOrFooter(hfSet.EvenFooterOA);
			}
		}
示例#15
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Init the given Header/Footer Set by reading the given header/footer set XML node.
		/// </summary>
		/// <param name="hfSet">the PubHFSet object to initialize</param>
		/// <param name="hfSetNode">the given header/footer set XML node to read.</param>
		/// <param name="fMustInitFirstHf">if true, the First h and f must be initialized</param>
		/// <param name="fMustInitEvenHf">if true, the Even h and f must be initialized</param>
		/// <remarks>If the node is null, or any child nodes are absent, the results are:
		/// defaultHeader and defaultFooter will always be initialized. Other headers and footers
		/// are initialized if the fMustInit params are true, otherwise set to null.</remarks>
		/// ------------------------------------------------------------------------------------
		private void ReadHeaderFooterSet(IPubHFSet hfSet, XmlNode hfSetNode,
			bool fMustInitFirstHf, bool fMustInitEvenHf)
		{
			//Set defaults, in case any nodes are missing
			hfSet.Name = "default headers & footers";
			XmlNode defaultHeaderNode = null;
			XmlNode defaultFooterNode = null;
			XmlNode firstHeaderNode = null;
			XmlNode firstFooterNode = null;
			XmlNode evenHeaderNode = null;
			XmlNode evenFooterNode = null;

			//Gather all info in the h/f settings node, if it exists
			if (hfSetNode != null)
			{
				XmlAttributeCollection attributes = hfSetNode.Attributes;
				string name = GetString(attributes, "Name");
				if (name != null)
					hfSet.Name = name;
				string description = GetString(attributes, "Description");
				if (description != null)
				{
					// This seems wrong. We don't know why the PubHFSet.Description
					// is a BigString, but for now we'll build a TsString to populate it.
					ITsStrFactory strFactory = TsStrFactoryClass.Create();
					hfSet.Description.UnderlyingTsString =
						strFactory.MakeString(description, m_scr.Cache.DefaultUserWs);
				}

				//get the header/footer xml nodes, if they exist
				defaultHeaderNode = hfSetNode.SelectSingleNode("DefaultHeader");
				defaultFooterNode = hfSetNode.SelectSingleNode("DefaultFooter");
				firstHeaderNode = hfSetNode.SelectSingleNode("FirstHeader");
				firstFooterNode = hfSetNode.SelectSingleNode("FirstFooter");
				evenHeaderNode = hfSetNode.SelectSingleNode("EvenHeader");
				evenFooterNode = hfSetNode.SelectSingleNode("EvenFooter");
			}

			// read the default header - required
			hfSet.DefaultHeaderOA = new PubHeader();
			ReadHeaderOrFooter(hfSet.DefaultHeaderOA, defaultHeaderNode);

			// read the default footer - required
			hfSet.DefaultFooterOA = new PubHeader();
			ReadHeaderOrFooter(hfSet.DefaultFooterOA, defaultFooterNode);

			// first header & footer are optional
			if (firstHeaderNode != null || firstFooterNode != null || fMustInitFirstHf)
			{
				hfSet.FirstHeaderOA = new PubHeader();
				ReadHeaderOrFooter(hfSet.FirstHeaderOA, firstHeaderNode);
				hfSet.FirstFooterOA = new PubHeader();
				ReadHeaderOrFooter(hfSet.FirstFooterOA, firstFooterNode);
			}
			else
			{
				hfSet.FirstHeaderOA = null;
				hfSet.FirstFooterOA = null;
			}

			// even header & footer are optional
			if (evenHeaderNode != null || evenFooterNode != null || fMustInitEvenHf)
			{
				hfSet.EvenHeaderOA = new PubHeader();
				ReadHeaderOrFooter(hfSet.EvenHeaderOA, evenHeaderNode);
				hfSet.EvenFooterOA = new PubHeader();
				ReadHeaderOrFooter(hfSet.EvenFooterOA, evenFooterNode);
			}
			else
			{
				hfSet.EvenHeaderOA = null;
				hfSet.EvenFooterOA = null;
			}
		}
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Creates 2 fake HF sets for use in testing
        /// </summary>
        /// <returns>the created publication</returns>
        /// ------------------------------------------------------------------------------------
        private IPublication CreateFakeHFSets()
        {
            // create a publication
            IPublication pub = Cache.ServiceLocator.GetInstance <IPublicationFactory>().Create();

            Cache.LanguageProject.LexDbOA.PublicationsOC.Add(pub);
            IPubDivision pubDiv = Cache.ServiceLocator.GetInstance <IPubDivisionFactory>().Create();

            pub.DivisionsOS.Add(pubDiv);

            // create the current HF set for the publication
            pubDiv.HFSetOA = Cache.ServiceLocator.GetInstance <IPubHFSetFactory>().Create();
            IPubHeaderFactory phFactory = Cache.ServiceLocator.GetInstance <IPubHeaderFactory>();

            pubDiv.HFSetOA.DefaultHeaderOA = phFactory.Create();
            pubDiv.HFSetOA.DefaultFooterOA = phFactory.Create();
            pubDiv.HFSetOA.FirstHeaderOA   = phFactory.Create();
            pubDiv.HFSetOA.FirstFooterOA   = phFactory.Create();
            pubDiv.HFSetOA.EvenHeaderOA    = phFactory.Create();
            pubDiv.HFSetOA.EvenFooterOA    = phFactory.Create();
            pubDiv.HFSetOA.Name            = "Test HF Set of Matthew printed in Tabaluga";

            // create a dummy HF set
            int           userWs = Cache.WritingSystemFactory.UserWs;
            ITsStrFactory tsf    = Cache.TsStrFactory;
            IPubHFSet     hfset  = Cache.ServiceLocator.GetInstance <IPubHFSetFactory>().Create();

            m_hfSets.Add(hfset);
            hfset.Name            = "Test HF Set created today";
            hfset.Description     = tsf.MakeString("This is a test HF set", userWs);
            hfset.DefaultHeaderOA = phFactory.Create();
            hfset.DefaultFooterOA = phFactory.Create();
            hfset.EvenHeaderOA    = phFactory.Create();
            hfset.EvenFooterOA    = phFactory.Create();
            hfset.FirstFooterOA   = phFactory.Create();
            hfset.FirstHeaderOA   = phFactory.Create();
            hfset.DefaultFooterOA.OutsideAlignedText = tsf.MakeString("outside text", userWs);
            hfset.DefaultFooterOA.CenteredText       = tsf.MakeString("Song of songs", userWs);
            hfset.EvenHeaderOA.CenteredText          = tsf.MakeString("Song even pages", userWs);
            hfset.EvenHeaderOA.InsideAlignedText     = tsf.MakeString("Inside text", userWs);
            hfset.FirstFooterOA.InsideAlignedText    = tsf.MakeString("Inside text", userWs);

            // create another dummy HF set
            IPubHFSet hfset2 = Cache.ServiceLocator.GetInstance <IPubHFSetFactory>().Create();

            m_hfSets.Add(hfset2);
            hfset2.Name            = "Test HF Set of Matthew printed in Tabaluga";
            hfset2.Description     = tsf.MakeString("This is another test HF set", userWs);
            hfset2.DefaultHeaderOA = phFactory.Create();
            hfset2.DefaultFooterOA = phFactory.Create();
            hfset2.EvenHeaderOA    = phFactory.Create();
            hfset2.EvenFooterOA    = phFactory.Create();
            hfset2.FirstFooterOA   = phFactory.Create();
            hfset2.FirstHeaderOA   = phFactory.Create();
            hfset2.DefaultHeaderOA.OutsideAlignedText =
                TsStringUtils.CreateOrcFromGuid(HeaderFooterVc.PageNumberGuid,
                                                FwObjDataTypes.kodtContextString, Cache.DefaultUserWs);
            hfset2.DefaultFooterOA.CenteredText    = tsf.MakeString("Matthew", userWs);
            hfset2.EvenFooterOA.CenteredText       = tsf.MakeString("From Reference", userWs);
            hfset2.EvenHeaderOA.InsideAlignedText  = tsf.MakeString("nothing", userWs);
            hfset2.FirstFooterOA.InsideAlignedText = tsf.MakeString("Inside text", userWs);

            return(pub);
        }
示例#17
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Copy the details from the given pub H/F set to this one.
		/// </summary>
		/// <param name="copyFrom">The set to clone</param>
		/// ------------------------------------------------------------------------------------
		public void CloneDetails(IPubHFSet copyFrom)
		{
			Description.UnderlyingTsString = copyFrom.Description.UnderlyingTsString;
			Name = copyFrom.Name;

			// if the header and the footer were null (if they are missing in the database)
			// then create them
			if (DefaultHeaderOA == null)
				DefaultHeaderOA = new PubHeader();
			if (DefaultFooterOA == null)
				DefaultFooterOA = new PubHeader();
			DefaultHeaderOA.OutsideAlignedText.UnderlyingTsString = copyFrom.DefaultHeaderOA.OutsideAlignedText.UnderlyingTsString;
			DefaultHeaderOA.CenteredText.UnderlyingTsString = copyFrom.DefaultHeaderOA.CenteredText.UnderlyingTsString;
			DefaultHeaderOA.InsideAlignedText.UnderlyingTsString = copyFrom.DefaultHeaderOA.InsideAlignedText.UnderlyingTsString;
			DefaultFooterOA.OutsideAlignedText.UnderlyingTsString = copyFrom.DefaultFooterOA.OutsideAlignedText.UnderlyingTsString;
			DefaultFooterOA.CenteredText.UnderlyingTsString = copyFrom.DefaultFooterOA.CenteredText.UnderlyingTsString;
			DefaultFooterOA.InsideAlignedText.UnderlyingTsString = copyFrom.DefaultFooterOA.InsideAlignedText.UnderlyingTsString;


			PubDivision owningDiv = new PubDivision(Cache, OwnerHVO);
			if (owningDiv.DifferentFirstHF)
			{
				// if the header and the footer were null (if they are the same as the odd page)
				// then create them
				if (FirstHeaderOA == null)
					FirstHeaderOA = new PubHeader();
				if (FirstFooterOA == null)
					FirstFooterOA = new PubHeader();
				FirstHeaderOA.OutsideAlignedText.UnderlyingTsString = copyFrom.FirstHeaderOA.OutsideAlignedText.UnderlyingTsString;
				FirstHeaderOA.CenteredText.UnderlyingTsString = copyFrom.FirstHeaderOA.CenteredText.UnderlyingTsString;
				FirstHeaderOA.InsideAlignedText.UnderlyingTsString = copyFrom.FirstHeaderOA.InsideAlignedText.UnderlyingTsString;
				FirstFooterOA.OutsideAlignedText.UnderlyingTsString = copyFrom.FirstFooterOA.OutsideAlignedText.UnderlyingTsString;
				FirstFooterOA.CenteredText.UnderlyingTsString = copyFrom.FirstFooterOA.CenteredText.UnderlyingTsString;
				FirstFooterOA.InsideAlignedText.UnderlyingTsString = copyFrom.FirstFooterOA.InsideAlignedText.UnderlyingTsString;
			}
			else
			{
				FirstHeaderOA = null;
				FirstFooterOA = null;
			}
			if (owningDiv.DifferentEvenHF)
			{
				// if the header and the footer were null (if they are the same as the odd page)
				// then create them
				if (EvenHeaderOA == null)
					EvenHeaderOA = new PubHeader();
				if (EvenFooterOA == null)
					EvenFooterOA = new PubHeader();
				EvenHeaderOA.OutsideAlignedText.UnderlyingTsString = copyFrom.EvenHeaderOA.OutsideAlignedText.UnderlyingTsString;
				EvenHeaderOA.CenteredText.UnderlyingTsString = copyFrom.EvenHeaderOA.CenteredText.UnderlyingTsString;
				EvenHeaderOA.InsideAlignedText.UnderlyingTsString = copyFrom.EvenHeaderOA.InsideAlignedText.UnderlyingTsString;
				EvenFooterOA.OutsideAlignedText.UnderlyingTsString = copyFrom.EvenFooterOA.OutsideAlignedText.UnderlyingTsString;
				EvenFooterOA.CenteredText.UnderlyingTsString = copyFrom.EvenFooterOA.CenteredText.UnderlyingTsString;
				EvenFooterOA.InsideAlignedText.UnderlyingTsString = copyFrom.EvenFooterOA.InsideAlignedText.UnderlyingTsString;
			}
			else
			{
				EvenHeaderOA = null;
				EvenFooterOA = null;
			}
		}
示例#18
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Init the given Header/Footer Set by reading the given header/footer set XML node.
		/// </summary>
		/// <param name="hfSet">the PubHFSet object to initialize</param>
		/// <param name="hfSetNode">the given header/footer set XML node to read.</param>
		/// <param name="fMustInitFirstHf">if true, the First h and f must be initialized</param>
		/// <param name="fMustInitEvenHf">if true, the Even h and f must be initialized</param>
		/// <remarks>If the node is null, or any child nodes are absent, the results are:
		/// defaultHeader and defaultFooter will always be initialized. Other headers and footers
		/// are initialized if the fMustInit params are true, otherwise set to null.</remarks>
		/// ------------------------------------------------------------------------------------
		private void ReadHeaderFooterSet(IPubHFSet hfSet, XmlNode hfSetNode,
			bool fMustInitFirstHf, bool fMustInitEvenHf)
		{
			//Set defaults, in case any nodes are missing
			hfSet.Name = "default headers & footers";
			XmlNode defaultHeaderNode = null;
			XmlNode defaultFooterNode = null;
			XmlNode firstHeaderNode = null;
			XmlNode firstFooterNode = null;
			XmlNode evenHeaderNode = null;
			XmlNode evenFooterNode = null;

			//Gather all info in the h/f settings node, if it exists
			if (hfSetNode != null)
			{
				XmlAttributeCollection attributes = hfSetNode.Attributes;
				string name = GetString(attributes, "Name");
				if (name != null)
					hfSet.Name = name;
				string description = GetString(attributes, "Description");
				if (description != null)
				{
					// We'll build a TsString to populate it.
					hfSet.Description =
						m_scr.Cache.TsStrFactory.MakeString(description, m_defUserWs);
				}

				//get the header/footer xml nodes, if they exist
				defaultHeaderNode = hfSetNode.SelectSingleNode("DefaultHeader");
				defaultFooterNode = hfSetNode.SelectSingleNode("DefaultFooter");
				firstHeaderNode = hfSetNode.SelectSingleNode("FirstHeader");
				firstFooterNode = hfSetNode.SelectSingleNode("FirstFooter");
				evenHeaderNode = hfSetNode.SelectSingleNode("EvenHeader");
				evenFooterNode = hfSetNode.SelectSingleNode("EvenFooter");
			}

			// read the default header - required
			hfSet.DefaultHeaderOA = m_cache.ServiceLocator.GetInstance<IPubHeaderFactory>().Create();
			ReadHeaderOrFooter(hfSet.DefaultHeaderOA, defaultHeaderNode);

			// read the default footer - required
			hfSet.DefaultFooterOA = m_cache.ServiceLocator.GetInstance<IPubHeaderFactory>().Create();
			ReadHeaderOrFooter(hfSet.DefaultFooterOA, defaultFooterNode);

			// first header & footer are optional
			if (firstHeaderNode != null || firstFooterNode != null || fMustInitFirstHf)
			{
				hfSet.FirstHeaderOA = m_cache.ServiceLocator.GetInstance<IPubHeaderFactory>().Create();
				ReadHeaderOrFooter(hfSet.FirstHeaderOA, firstHeaderNode);
				hfSet.FirstFooterOA = m_cache.ServiceLocator.GetInstance<IPubHeaderFactory>().Create();
				ReadHeaderOrFooter(hfSet.FirstFooterOA, firstFooterNode);
			}
			else
			{
				hfSet.FirstHeaderOA = null;
				hfSet.FirstFooterOA = null;
			}

			// even header & footer are optional
			if (evenHeaderNode != null || evenFooterNode != null || fMustInitEvenHf)
			{
				hfSet.EvenHeaderOA = m_cache.ServiceLocator.GetInstance<IPubHeaderFactory>().Create();
				ReadHeaderOrFooter(hfSet.EvenHeaderOA, evenHeaderNode);
				hfSet.EvenFooterOA = m_cache.ServiceLocator.GetInstance<IPubHeaderFactory>().Create();
				ReadHeaderOrFooter(hfSet.EvenFooterOA, evenFooterNode);
			}
			else
			{
				hfSet.EvenHeaderOA = null;
				hfSet.EvenFooterOA = null;
			}
		}