コード例 #1
0
		private void LoadKeyTermsPane(int rowIndex)
		{
			m_loadingBiblicalTermsPane = true;
			m_biblicalTermsPane.SuspendLayout();
			ClearBiblicalTermsPane();
			m_biblicalTermsPane.Height = MaximumHeightOfKeyTermsPane;
			int col = 0;
			int longestListHeight = 0;
			Dictionary<KeyTermMatch, int> previousKeyTermEndOfRenderingOffsets = new Dictionary<KeyTermMatch, int>();
			foreach (KeyTermMatch keyTerm in m_helper[rowIndex].GetParts().OfType<KeyTermMatch>().Where(ktm => ktm.Renderings.Any()))
			{
				int ichEndRenderingOfPreviousOccurrenceOfThisSameKeyTerm;
				previousKeyTermEndOfRenderingOffsets.TryGetValue(keyTerm, out ichEndRenderingOfPreviousOccurrenceOfThisSameKeyTerm);
				TermRenderingCtrl ktRenderCtrl = new TermRenderingCtrl(keyTerm,
					ichEndRenderingOfPreviousOccurrenceOfThisSameKeyTerm, m_selectKeyboard, LookupTerm);
				ktRenderCtrl.VernacularFont = m_vernFont;

				SubstringDescriptor sd = FindTermRenderingInUse(ktRenderCtrl, rowIndex);
				if (sd == null)
				{
					// Didn't find any renderings for this term in the translation, so don't select anything
					previousKeyTermEndOfRenderingOffsets[keyTerm] = m_helper[rowIndex].Translation.Length;
				}
				else
				{
					previousKeyTermEndOfRenderingOffsets[keyTerm] = sd.EndOffset;
					ktRenderCtrl.SelectedRendering = m_helper[rowIndex].Translation.Substring(sd.Offset, sd.Length);
				}
				ktRenderCtrl.Dock = DockStyle.Fill;
				m_biblicalTermsPane.Controls.Add(ktRenderCtrl, col, 0);
				if (ktRenderCtrl.NaturalHeight > longestListHeight)
					longestListHeight = ktRenderCtrl.NaturalHeight;
				ktRenderCtrl.SelectedRenderingChanged += KeyTermRenderingSelected;
				ktRenderCtrl.BestRenderingsChanged += KeyTermBestRenderingsChanged;
				col++;
			}
			m_biblicalTermsPane.ColumnCount = col;
			ResizeKeyTermPaneColumns();
			m_biblicalTermsPane.Height = Math.Min(longestListHeight, MaximumHeightOfKeyTermsPane);
			m_biblicalTermsPane.Visible = m_biblicalTermsPane.ColumnCount > 0;
			m_biblicalTermsPane.ResumeLayout();
			m_loadingBiblicalTermsPane = false;
		}
コード例 #2
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Handles the SelectedIndexChanged event for one of the biblical terms list boxes.
		/// </summary>
		/// ------------------------------------------------------------------------------------
		private void KeyTermRenderingSelected(TermRenderingCtrl sender)
		{
			if (dataGridUns.CurrentRow == null)
				return;
			if (sender.SelectedRendering == null)
				return;
			int rowIndex = dataGridUns.CurrentRow.Index;
			m_helper[rowIndex].ReplaceKeyTermRendering(FindTermRenderingInUse(sender, rowIndex),
				sender.SelectedRendering);
			dataGridUns.InvalidateRow(rowIndex);
		}