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; }
/// ------------------------------------------------------------------------------------ /// <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); }