本文整理汇总了C#中SIL.FieldWorks.Common.RootSites.SelectionHelper.SetTextPropId方法的典型用法代码示例。如果您正苦于以下问题:C# SelectionHelper.SetTextPropId方法的具体用法?C# SelectionHelper.SetTextPropId怎么用?C# SelectionHelper.SetTextPropId使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SIL.FieldWorks.Common.RootSites.SelectionHelper
的用法示例。
在下文中一共展示了SelectionHelper.SetTextPropId方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MakeSelectionInNoteRef
/// ------------------------------------------------------------------------------------
/// <summary>
/// Makes the selection in in the Scripture reference of the specified annotation.
/// </summary>
/// <param name="vc">The vc.</param>
/// <param name="bookIndex">Index of the book.</param>
/// <param name="iAnnotation">Index of the annotation.</param>
/// <param name="notesDataEntryView">The notes data entry view.</param>
/// ------------------------------------------------------------------------------------
internal void MakeSelectionInNoteRef(TeNotesVc vc, int bookIndex, int iAnnotation,
NotesDataEntryView notesDataEntryView)
{
EnsureNoteIsVisible(vc, bookIndex, iAnnotation, notesDataEntryView);
SelectionHelper selHelper = new SelectionHelper();
selHelper.NumberOfLevels = 2;
selHelper.LevelInfo[0].cpropPrevious = 0;
selHelper.LevelInfo[0].ich = -1;
selHelper.LevelInfo[0].ihvo = iAnnotation;
selHelper.LevelInfo[0].tag = vc.NotesSequenceHandler.Tag;
selHelper.LevelInfo[0].ws = 0;
selHelper.LevelInfo[1].cpropPrevious = 0;
selHelper.LevelInfo[1].ich = -1;
selHelper.LevelInfo[1].ihvo = bookIndex;
selHelper.LevelInfo[1].tag = (int)Scripture.ScriptureTags.kflidBookAnnotations;
selHelper.LevelInfo[1].ws = 0;
selHelper.IchAnchor = 0;
selHelper.AssocPrev = false;
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor,
(int)CmBaseAnnotation.CmBaseAnnotationTags.kflidBeginRef);
selHelper.SetSelection(notesDataEntryView, true, true, VwScrollSelOpts.kssoDefault);
}
示例2: InsertVerseNumber
//.........这里部分代码省略.........
// if (ichWord > 0)
// cInsDel = SetVerseAtStartOfBtIfNeeded();
// ichWord += cInsDel; //adjust
// some key variables set by Update or Insert methods, etc
string sVerseNumIns = null; // will hold the verse number string we inserted; could be
// a simple number, a verse bridge, or the end number added to a bridge
string sChapterNumIns = null; // will hold chapter number string inserted or null if none
int ichLimIns = -1; //will hold the end of the new chapter/verse numbers we update or insert
// Is ichWord in or next to a verse number? (if so, get its ich range)
bool fCheckForChapter = (wsAlt != 0); //check for chapter in BT only
int ichMin; // min of the verse number run, if we are on one
int ichLim; // lim of the verse number run, if we are on one
bool fFoundExistingRef =
InReference(tssSel, ichWord, fCheckForChapter, out ichMin, out ichLim);
// If we moved the selection forward (over spaces or punctuation) to an
// existing verse number ...
if (fFoundExistingRef && (ichSelOrig < ichWord))
{
//Attempt to insert a verse number at the IP, if one is missing there.
// if selection is in vernacular...
if (propTag == (int)StTxtPara.StTxtParaTags.kflidContents)
{
// Insert missing verse number in vernacular
InsertMissingVerseNumberInVern(hvoObj, propTag, selHelper, ichSelOrig,
ichWord, ref tssSel, out sVerseNumIns, out ichLimIns);
}
//else
//{
// InsertMissingVerseNumberInBt(hvoObj, propTag, selHelper, wsAlt,
// ichSelOrig, ichWord, ref tssSel, ref ichLim,
// out sVerseNumIns, out sChapterNumIns);
//}
// if a verse number was not inserted, sVerseNumIns is null
}
// If no verse number inserted yet...
if (sVerseNumIns == null)
{
if (fFoundExistingRef)
{
//We must update the existing verse number at ichWord
// is selection in vern or BT?
if (propTag == (int)StTxtPara.StTxtParaTags.kflidContents)
{
// Update verse number in vernacular
UpdateExistingVerseNumberInVern(hvoObj, propTag, selHelper,
ichMin, ichLim, ref tssSel, out sVerseNumIns, out ichLimIns);
}
else
{
//Update verse number in back translation
UpdateExistingVerseNumberInBt(hvoObj, propTag, selHelper, wsAlt,
ichMin, ichLim, ref tssSel, out sVerseNumIns, out sChapterNumIns,
out ichLimIns);
}
}
else
{
// We're NOT on an existing verse number, so insert the next appropriate one.
// is selection in vern or BT?
if (propTag == (int)StTxtPara.StTxtParaTags.kflidContents)
{
InsertNextVerseNumberInVern(hvoObj, propTag, selHelper, ichWord,
ref tssSel, out sVerseNumIns, out ichLimIns);
}
else
{
InsertNextVerseNumberInBt(hvoObj, propTag, selHelper, wsAlt, ichWord,
ref tssSel, out sVerseNumIns, out sChapterNumIns, out ichLimIns);
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor,
(int)CmTranslation.CmTranslationTags.kflidTranslation);
selHelper.SetTextPropId(SelectionHelper.SelLimitType.End,
(int)CmTranslation.CmTranslationTags.kflidTranslation);
}
}
}
if (sVerseNumIns == null)
{
MiscUtils.ErrorBeep(); // No verse number inserted or updated
return;
}
// set new IP behind the verse number
selHelper.IchAnchor = ichLimIns;
selHelper.IchEnd = ichLimIns;
selHelper.AssocPrev = true;
selHelper.SetSelection(true);
// Remove any duplicate chapter/verse numbers following the new verse number.
RemoveDuplicateVerseNumbers(hvoObj, propTag, tssSel, wsAlt, sChapterNumIns,
sVerseNumIns, ichLimIns);
// Issue property change event for inserted verse.
m_cache.PropChanged(null, PropChangeType.kpctNotifyAll, hvoObj,
StTxtPara.ktagVerseNumbers, 0, 1, 1);
}
示例3: MakeSelectionInNote
/// ------------------------------------------------------------------------------------
/// <summary>
/// Makes a selection in the specified annotation (without scrolling the annotation in
/// the view).
/// </summary>
/// <param name="vc">The notes view constructor</param>
/// <param name="fScrollNearTop">if set to <c>true</c> scrolls the specified note to a
/// position near the top of the view.</param>
/// <param name="bookIndex">Index of the book.</param>
/// <param name="iAnnotation">Index of the annotation.</param>
/// <param name="iResponse">Index of the response (0 if setting the selection in one of
/// the StJournalText fields rather than in a response.</param>
/// <param name="noteTag">The tag indicating the field of the annotation where the
/// selection is to be made.</param>
/// <param name="rootSite">The root site.</param>
/// <param name="fNoteIsExpanded">if <c>true</c> make a selection at the start and end so
/// that the whole annotation can be scrolled into view. if set to <c>false</c> only
/// make a selection at the start of the annotation.</param>
/// ------------------------------------------------------------------------------------
internal void MakeSelectionInNote(TeNotesVc vc, bool fScrollNearTop, int bookIndex,
int iAnnotation, int iResponse, ScrScriptureNote.ScrScriptureNoteTags noteTag,
IVwRootSite rootSite, bool fNoteIsExpanded)
{
if (vc == null || vc.NotesSequenceHandler == null)
return;
SelectionHelper selHelper;
if (fScrollNearTop)
{
// Make an un-installed selection at the top of the annotation in order to scroll the
// annotation to the top of the view.
selHelper = new SelectionHelper();
selHelper.NumberOfLevels = 2;
selHelper.LevelInfo[0].cpropPrevious = 0;
selHelper.LevelInfo[0].ich = -1;
selHelper.LevelInfo[0].ihvo = iAnnotation;
selHelper.LevelInfo[0].tag = vc.NotesSequenceHandler.Tag;
selHelper.LevelInfo[0].ws = 0;
selHelper.LevelInfo[1].cpropPrevious = 0;
selHelper.LevelInfo[1].ich = -1;
selHelper.LevelInfo[1].ihvo = bookIndex;
selHelper.LevelInfo[1].tag = (int)Scripture.ScriptureTags.kflidBookAnnotations;
selHelper.LevelInfo[1].ws = 0;
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor, -2);
selHelper.IchAnchor = 0;
selHelper.AssocPrev = false;
selHelper.NumberOfPreviousProps = 2;
if (fNoteIsExpanded)
{
selHelper.SetSelection(rootSite, true, true, VwScrollSelOpts.kssoNearTop);
}
else
{
// Annotation is collapsed. Only attempt a selection at the start of it.
selHelper.SetSelection(rootSite, true, true);
return;
}
}
else
EnsureNoteIsVisible(vc, bookIndex, iAnnotation, rootSite);
// Now make the real (installed) selection in the desired field of the annotation.
bool fIsResponse = (noteTag == ScrScriptureNote.ScrScriptureNoteTags.kflidResponses);
selHelper = new SelectionHelper();
selHelper.NumberOfLevels = 4;
selHelper.LevelInfo[0].tag = (int)StText.StTextTags.kflidParagraphs;
selHelper.LevelInfo[0].ihvo = 0;
selHelper.LevelInfo[1].tag = (int)noteTag;
selHelper.LevelInfo[1].ihvo = iResponse;
selHelper.LevelInfo[1].cpropPrevious = (fIsResponse ? 0 : 1);
selHelper.LevelInfo[2].tag = vc.NotesSequenceHandler.Tag;
selHelper.LevelInfo[2].ihvo = iAnnotation;
selHelper.LevelInfo[3].tag = (int)Scripture.ScriptureTags.kflidBookAnnotations;
selHelper.LevelInfo[3].ihvo = bookIndex;
selHelper.IchAnchor = 0;
selHelper.AssocPrev = false;
selHelper.SetSelection(rootSite, true, true);
}
示例4: SelectRangeOfChars
/// ------------------------------------------------------------------------------------
/// <summary>
/// This is the actual workhorse for all the above methods that allows a selection to
/// be created.
/// </summary>
/// <param name="iBook">The 0-based index of the Scripture book in which to put the
/// selection</param>
/// <param name="iSection">The 0-based index of the Scripture section in which to put the
/// selection</param>
/// <param name="tag">Indicates whether selection should be made in the section
/// Heading or Content or in the book title</param>
/// <param name="isegment">If ContentType == segmentBT, the index of the segment
/// in which to place the selection; otherwise ignored.</param>
/// <param name="iPara">The 0-based index of the paragraph in which to put the insertion
/// point</param>
/// <param name="startCharacter">The 0-based index of the character at which the
/// selection begins (or before which the insertion point is to be placed if
/// startCharacter == endCharacter)</param>
/// <param name="endCharacter">The character location to end the selection</param>
/// <param name="fInstall"></param>
/// <param name="fMakeVisible"></param>
/// <param name="fAssocPrev">If an insertion point, does it have the properties of the
/// previous character?</param>
/// <param name="scrollOption">Where to scroll the selection</param>
/// <returns>The selection helper</returns>
/// ------------------------------------------------------------------------------------
public SelectionHelper SelectRangeOfChars(int iBook, int iSection, int tag,
int iPara, int isegment, int startCharacter, int endCharacter, bool fInstall, bool fMakeVisible,
bool fAssocPrev, VwScrollSelOpts scrollOption)
{
CheckDisposed();
if (Callbacks == null || Callbacks.EditedRootBox == null)
return null; // can't make a selection
Debug.Assert(tag == (int)ScrSection.ScrSectionTags.kflidHeading ||
tag == (int)ScrSection.ScrSectionTags.kflidContent ||
tag == (int)ScrBook.ScrBookTags.kflidTitle);
SelectionHelper selHelper = new SelectionHelper();
selHelper.NumberOfLevels = ((ITeView)Control).LocationTracker.GetLevelCount(tag);
int levelForPara = LocationTrackerImpl.GetLevelIndexForTag((int)StText.StTextTags.kflidParagraphs,
m_contentType);
selHelper.LevelInfo[levelForPara].ihvo = iPara;
selHelper.LevelInfo[levelForPara + 1].tag = tag;
((ITeView)Control).LocationTracker.SetBookAndSection(selHelper,
SelectionHelper.SelLimitType.Anchor, iBook,
tag == (int)ScrBook.ScrBookTags.kflidTitle ? -1 : iSection);
if (ContentType == StVc.ContentTypes.kctSimpleBT)
{
int levelForBT = LocationTrackerImpl.GetLevelIndexForTag((int)StTxtPara.StTxtParaTags.kflidTranslations,
m_contentType);
selHelper.LevelInfo[levelForBT].tag = -1;
selHelper.LevelInfo[levelForBT].ihvo = 0;
selHelper.LevelInfo[levelForPara].tag = (int)StText.StTextTags.kflidParagraphs;
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor,
(int)CmTranslation.CmTranslationTags.kflidTranslation);
selHelper.SetTextPropId(SelectionHelper.SelLimitType.End,
(int)CmTranslation.CmTranslationTags.kflidTranslation);
}
else if (ContentType == StVc.ContentTypes.kctSegmentBT)
{
// In all segment BT views, under the paragraph there is a segment, and under that
// an object which is the free translation itself.
selHelper.LevelInfo[2].tag = (int) StText.StTextTags.kflidParagraphs; // JohnT: why don't we need this for non-BT??
selHelper.LevelInfo[1].ihvo = isegment;
selHelper.LevelInfo[1].tag = StTxtPara.SegmentsFlid(Cache);
selHelper.LevelInfo[0].ihvo = 0; // not a sequence.
selHelper.LevelInfo[0].tag = StTxtPara.SegmentFreeTranslationFlid(Cache);
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor,
(int)CmAnnotation.CmAnnotationTags.kflidComment);
selHelper.SetTextPropId(SelectionHelper.SelLimitType.End,
(int)CmAnnotation.CmAnnotationTags.kflidComment);
}
// else selHelper.LevelInfo[0].tag is set automatically by SelectionHelper class
selHelper.AssocPrev = fAssocPrev;
selHelper.SetLevelInfo(SelectionHelper.SelLimitType.End, selHelper.LevelInfo);
// Prepare to move the IP to the specified character in the paragraph.
selHelper.IchAnchor = startCharacter;
selHelper.IchEnd = endCharacter;
// Now that all the preparation to set the IP is done, set it.
IVwSelection vwsel = selHelper.SetSelection(Callbacks.EditedRootBox.Site, fInstall,
fMakeVisible, scrollOption);
// If the selection fails, then try selecting the user prompt.
if (vwsel == null)
{
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor, SimpleRootSite.kTagUserPrompt);
selHelper.SetTextPropId(SelectionHelper.SelLimitType.End, SimpleRootSite.kTagUserPrompt);
vwsel = selHelper.SetSelection(Callbacks.EditedRootBox.Site, fInstall, fMakeVisible,
scrollOption);
}
if (vwsel == null)
//.........这里部分代码省略.........
示例5: MakeSelectionInPictureCaption
/// ------------------------------------------------------------------------------------
/// <summary>
/// Makes a selection in a picture caption.
/// </summary>
/// <param name="iBook">The 0-based index of the Scripture book in which to put the
/// insertion point</param>
/// <param name="iSection">The 0-based index of the Scripture section in which to put the
/// insertion point</param>
/// <param name="tag">Indicates whether the picture ORC is in the section
/// Heading or Content, the book title</param>
/// <param name="iPara">The 0-based index of the paragraph containing the ORC</param>
/// <param name="ichOrcPos">The character position of the orc in the paragraph.</param>
/// <param name="startCharacter">The 0-based index of the character at which the
/// selection begins (or before which the insertion point is to be placed if
/// startCharacter == endCharacter)</param>
/// <param name="endCharacter">The character location to end the selection</param>
/// <exception cref="Exception">Requested selection could not be made in the picture
/// caption.</exception>
/// ------------------------------------------------------------------------------------
public void MakeSelectionInPictureCaption(int iBook, int iSection, int tag,
int iPara, int ichOrcPos, int startCharacter, int endCharacter)
{
CheckDisposed();
if (Callbacks == null || Callbacks.EditedRootBox == null)
throw new Exception("Requested selection could not be made in the picture caption.");
Debug.Assert(tag == (int)ScrSection.ScrSectionTags.kflidHeading ||
tag == (int)ScrSection.ScrSectionTags.kflidContent ||
tag == (int)ScrBook.ScrBookTags.kflidTitle);
Debug.Assert(!IsBackTranslation, "ENHANCE: This code not designed to make a selection in the BT of a picture caption");
SelectionHelper selHelper = new SelectionHelper();
selHelper.NumberOfLevels = ((ITeView)Control).LocationTracker.GetLevelCount(tag) + 1;
int levelForPara = LocationTrackerImpl.GetLevelIndexForTag(
(int)StText.StTextTags.kflidParagraphs, StVc.ContentTypes.kctNormal) + 1;
int levelForCaption = LocationTrackerImpl.GetLevelIndexForTag(
(int)CmPicture.CmPictureTags.kflidCaption, StVc.ContentTypes.kctNormal);
selHelper.LevelInfo[levelForCaption].ihvo = -1;
selHelper.LevelInfo[levelForCaption].ich = ichOrcPos;
selHelper.LevelInfo[levelForCaption].tag = (int)StTxtPara.StTxtParaTags.kflidContents;
selHelper.Ws = m_cache.DefaultVernWs;
selHelper.LevelInfo[levelForPara].tag = (int)StText.StTextTags.kflidParagraphs;
selHelper.LevelInfo[levelForPara].ihvo = iPara;
selHelper.LevelInfo[levelForPara + 1].tag = tag;
((ITeView)Control).LocationTracker.SetBookAndSection(selHelper,
SelectionHelper.SelLimitType.Anchor, iBook,
tag == (int)ScrBook.ScrBookTags.kflidTitle ? -1 : iSection);
selHelper.AssocPrev = true;
selHelper.SetLevelInfo(SelectionHelper.SelLimitType.End, selHelper.LevelInfo);
// Prepare to move the IP to the specified character in the paragraph.
selHelper.IchAnchor = startCharacter;
selHelper.IchEnd = endCharacter;
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor, (int)CmPicture.CmPictureTags.kflidCaption);
selHelper.SetTextPropId(SelectionHelper.SelLimitType.End, (int)CmPicture.CmPictureTags.kflidCaption);
// Now that all the preparation to set the IP is done, set it.
IVwSelection vwsel = selHelper.SetSelection(Callbacks.EditedRootBox.Site, true,
true, VwScrollSelOpts.kssoDefault);
if (vwsel == null)
throw new Exception("Requested selection could not be made in the picture caption.");
Application.DoEvents(); // REVIEW: Do we need this? Why?
}
示例6: ScrollToFootnote
/// ------------------------------------------------------------------------------------
/// <summary>
/// Scroll to a footnote
/// </summary>
/// <param name="iBook">Index of the book's hvo</param>
/// <param name="iFootnote">Index of the footnote's hvo</param>
/// <param name="ich">The offset of the character position in the footnote's (first)
/// paragraph to use as the insertion point.</param>
/// ------------------------------------------------------------------------------------
public void ScrollToFootnote(int iBook, int iFootnote, int ich)
{
CheckDisposed();
if (Control == null || !(Control is SimpleRootSite))
return;
int paraLevel = 0;
int footnoteLevel = 1;
int bookLevel = 2;
// create selection pointing to this footnote
SelectionHelper selHelper = new SelectionHelper();
selHelper.AssocPrev = false;
// Set up selection for a back translation
if (ContentType == StVc.ContentTypes.kctSimpleBT)
{
paraLevel++;
footnoteLevel++;
bookLevel++;
selHelper.NumberOfLevels = 4;
selHelper.LevelInfo[0].tag = -1;
selHelper.LevelInfo[0].ihvo = 0;
selHelper.LevelInfo[0].cpropPrevious = 2;
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor,
CmTranslationTags.kflidTranslation);
}
else if (ContentType == StVc.ContentTypes.kctSegmentBT)
{
// In all segment BT views, under the paragraph there is a segment, and under that
// an object which is the free translation itself.
paraLevel++;
footnoteLevel++;
bookLevel++;
selHelper.NumberOfLevels = 4;
selHelper.LevelInfo[0].ihvo = 0; // Segment index
selHelper.LevelInfo[0].tag = StTxtParaTags.kflidSegments;
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor,
SegmentTags.kflidFreeTranslation);
}
else // Selection is in vernacular
{
selHelper.NumberOfLevels = 3;
selHelper.TextPropId = StTxtParaTags.kflidContents;
}
selHelper.LevelInfo[paraLevel].tag = StTextTags.kflidParagraphs;
selHelper.LevelInfo[paraLevel].ihvo = 0;
selHelper.LevelInfo[footnoteLevel].tag = ScrBookTags.kflidFootnotes;
selHelper.LevelInfo[footnoteLevel].ihvo = iFootnote;
selHelper.LevelInfo[bookLevel].tag = BookFilter.Tag;
selHelper.LevelInfo[bookLevel].ihvo = iBook;
selHelper.IchAnchor = ich;
selHelper.IchEnd = ich;
if (DeferSelectionUntilEndOfUOW)
{
// We are within a unit of work, so setting the selection will not work now.
// we request that a selection be made after the unit of work.
Debug.Assert(!selHelper.IsRange,
"Currently, a selection made during a unit of work can only be an insertion point.");
selHelper.SetIPAfterUOW(EditedRootBox.Site);
return;
}
IVwSelection vwsel = selHelper.SetSelection((SimpleRootSite)Control, true, true, VwScrollSelOpts.kssoTop);
if (vwsel == null)
{
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor, SimpleRootSite.kTagUserPrompt);
selHelper.SetTextPropId(SelectionHelper.SelLimitType.End, SimpleRootSite.kTagUserPrompt);
selHelper.SetSelection((SimpleRootSite)Control, true, true);
}
}
示例7: DeleteFootnoteFromContextMenuRangeSelection
public void DeleteFootnoteFromContextMenuRangeSelection()
{
SelectionHelper selHelper = new SelectionHelper();
selHelper.AssocPrev = true;
selHelper.NumberOfLevels = 3;
SelLevInfo[] anchorLevInfo = new SelLevInfo[3];
anchorLevInfo[2].tag = m_footnoteView.BookFilter.Tag;
anchorLevInfo[2].ihvo = 1;
anchorLevInfo[1].tag = ScrBookTags.kflidFootnotes;
anchorLevInfo[1].ihvo = 2;
anchorLevInfo[0].tag = StTextTags.kflidParagraphs;
anchorLevInfo[0].ihvo = 0;
selHelper.SetLevelInfo(SelectionHelper.SelLimitType.Anchor, anchorLevInfo);
selHelper.IchAnchor = 1;
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor, StTxtParaTags.kflidContents);
SelLevInfo[] endLevInfo = new SelLevInfo[3];
endLevInfo[2].tag = m_footnoteView.BookFilter.Tag;
endLevInfo[2].ihvo = 1;
endLevInfo[1].tag = ScrBookTags.kflidFootnotes;
endLevInfo[1].ihvo = 6;
endLevInfo[0].tag = StTextTags.kflidParagraphs;
endLevInfo[0].ihvo = 0;
selHelper.SetLevelInfo(SelectionHelper.SelLimitType.End, endLevInfo);
selHelper.IchEnd = 7;
selHelper.SetTextPropId(SelectionHelper.SelLimitType.End, StTxtParaTags.kflidContents);
// Now that all the preparation to set the selection is done, set it.
selHelper.SetSelection(m_footnoteView, true, true);
Application.DoEvents();
// First get the footnotes we're deleting.
IScrFootnote[] footnotes = new IScrFootnote[5];
Guid[] guidFootnotes = new Guid[5];
IStTxtPara[] paras = new IStTxtPara[5];
for (int i = 0; i < 5; i++)
{
footnotes[i] = Cache.ServiceLocator.GetInstance<IScrFootnoteRepository>().GetObject(m_Jude.FootnotesOS[i + 2].Hvo);
guidFootnotes[i] = footnotes[i].Guid;
paras[i] = footnotes[i].ParaContainingOrcRA;
}
m_footnoteView.DeleteFootnote();
foreach (IScrFootnote footnote in footnotes)
Assert.IsFalse(footnote.IsValidObject);
// now make sure that we don't find the footnote markers
for (int i = 0; i < 5; i++)
{
VerifyRemovedFootnoteMarker(paras[i], guidFootnotes[i]);
VerifyRemovedFootnoteMarker(paras[i], guidFootnotes[i], m_wsEn);
VerifyRemovedFootnoteMarker(paras[i], guidFootnotes[i], m_wsDe);
}
}
示例8: InsertVerseNumber
//.........这里部分代码省略.........
if (tssSel.Style(iRun) == ScrStyleNames.ChapterNumber &&
(ichSelOrig == 0 || ichSelOrig > tssSel.get_MinOfRun(iRun)))
ichSelOrig = tssSel.get_LimOfRun(iRun);
// Adjust the insertion position to the beginning of a word - not in the middle
// (may move to an existing verse number too)
int ichWord = tssSel.FindWordBoundary(ichSelOrig, UnicodeCharProps, ScrStyleNames.ChapterAndVerse);
// TomB and MarkB have decided we won't do this, at least for now
// // If the start of the Bt does not match the vernacular, adjust it if required.
// if (ichWord > 0)
// cInsDel = SetVerseAtStartOfBtIfNeeded();
// ichWord += cInsDel; //adjust
// some key variables set by Update or Insert methods, etc
string sVerseNumIns = null; // will hold the verse number string we inserted; could be
// a simple number, a verse bridge, or the end number added to a bridge
string sChapterNumIns = null; // will hold chapter number string inserted or null if none
int ichLimIns = -1; //will hold the end of the new chapter/verse numbers we update or insert
// Is ichWord in or next to a verse number? (if so, get its ich range)
bool fCheckForChapter = (wsAlt != 0); //check for chapter in BT only
int ichMin; // min of the verse number run, if we are on one
int ichLim; // lim of the verse number run, if we are on one
bool fFoundExistingRef =
InReference(tssSel, ichWord, fCheckForChapter, out ichMin, out ichLim);
SelLevInfo paraInfo = selHelper.GetLevelInfoForTag(StTextTags.kflidParagraphs);
IScrTxtPara para = m_cache.ServiceLocator.GetInstance<IScrTxtParaRepository>().GetObject(paraInfo.hvo);
// If we moved the selection forward (over spaces or punctuation) to an
// existing verse number ...
if (fFoundExistingRef && (ichSelOrig < ichWord))
{
//Attempt to insert a verse number at the IP, if one is missing there.
// if selection is in vernacular...
if (propTag == StTxtParaTags.kflidContents)
{
// Insert missing verse number in vernacular
para.InsertMissingVerseNumberInVern(ichSelOrig, ichWord, out sVerseNumIns,
out ichLimIns);
}
}
// if a verse number was not inserted, sVerseNumIns is null
// If no verse number inserted yet...
if (sVerseNumIns == null)
{
if (fFoundExistingRef)
{
//We must update the existing verse number at ichWord
// is selection in vern or BT?
if (propTag == StTxtParaTags.kflidContents)
{
// Update verse number in vernacular
para.UpdateExistingVerseNumberInVern(ichMin, ichLim, out sVerseNumIns,
out ichLimIns);
}
else
{
//Update verse number in back translation
para.UpdateExistingVerseNumberInBt(wsAlt, ichMin, ichLim, out sVerseNumIns,
out sChapterNumIns, out ichLimIns);
}
}
else
{
// We're NOT on an existing verse number, so insert the next appropriate one.
// is selection in vern or BT?
if (propTag == StTxtParaTags.kflidContents)
{
para.InsertNextVerseNumberInVern(ichWord, out sVerseNumIns, out ichLimIns);
}
else
{
para.InsertNextVerseNumberInBt(wsAlt, ichWord, out sVerseNumIns,
out sChapterNumIns, out ichLimIns);
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor,
CmTranslationTags.kflidTranslation);
selHelper.SetTextPropId(SelectionHelper.SelLimitType.End,
CmTranslationTags.kflidTranslation);
}
}
}
if (sVerseNumIns == null)
{
MiscUtils.ErrorBeep(); // No verse number inserted or updated
return;
}
// set new IP behind the verse number
selHelper.IchAnchor = ichLimIns;
selHelper.IchEnd = ichLimIns;
selHelper.AssocPrev = true;
selHelper.SetIPAfterUOW();
// Remove any duplicate chapter/verse numbers following the new verse number.
para.RemoveDuplicateVerseNumbers(wsAlt, sChapterNumIns, sVerseNumIns, ichLimIns);
}
示例9: SelectAt
/// <summary>
/// Moves the cursor to the specified position in the specified cell.
/// </summary>
/// <param name="cellId">The cell id.</param>
/// <param name="cellIndex">Index of the item in the cell.</param>
/// <param name="initial">if <c>true</c> move the cursor to the beginning of the specified item, otherwise it is moved to the end</param>
/// <param name="editable">if <c>true</c> move the cursor to the first editable position</param>
/// <param name="install">if <c>true</c> install the selection</param>
/// <returns>The new selection</returns>
protected IVwSelection SelectAt(int cellId, int cellIndex, bool initial, bool editable, bool install)
{
SelLevInfo[] levels = GetLevelInfo(cellId, cellIndex);
if (levels == null)
{
int count = GetCellCount(cellId);
if (count == 0)
{
SelectionHelper newSel = new SelectionHelper();
newSel.SetTextPropId(SelectionHelper.SelLimitType.Anchor, GetFlid(cellId));
return newSel.SetSelection(m_view, install, false);
}
else
{
levels = GetLevelInfo(cellId, initial ? 0 : count - 1);
}
}
return m_view.RootBox.MakeTextSelInObj(0, levels.Length, levels, 0, null, initial, editable, false, false, install);
}
示例10: SelectAt
/// <summary>
/// Moves the cursor to the specified position in the specified cell.
/// </summary>
/// <param name="ctxt">The context.</param>
/// <param name="index">Index of the item in the cell.</param>
/// <param name="initial">if <c>true</c> move the cursor to the beginning of the specified item, otherwise it is moved to the end</param>
/// <param name="editable">if <c>true</c> move the cursor to the first editable position</param>
/// <param name="install">if <c>true</c> install the selection</param>
/// <returns>The new selection</returns>
public IVwSelection SelectAt(object ctxt, int index, bool initial, bool editable, bool install)
{
SelLevInfo[] levels = m_patternControl.GetLevelInfo(ctxt, index);
if (levels == null)
{
int count = m_patternControl.GetContextCount(ctxt);
if (count == 0)
{
var newSel = new SelectionHelper();
newSel.SetTextPropId(SelectionHelper.SelLimitType.Anchor, m_patternControl.GetFlid(ctxt));
return newSel.SetSelection(this, install, false);
}
levels = m_patternControl.GetLevelInfo(ctxt, initial ? 0 : count - 1);
}
return RootBox.MakeTextSelInObj(0, levels.Length, levels, 0, null, initial, editable, false, false, install);
}
示例11: GoToScrScriptureNoteRef
/// ------------------------------------------------------------------------------------
/// <summary>
/// Goes to the text referenced in the ScrScriptureNote. If it does not find the text,
/// it makes the closest selection to the referenced text that it can.
/// </summary>
/// <param name="note">the note containing the Scripture reference to find</param>
/// <param name="sendSyncMsg"><c>true</c> to not send a focus sychronization message
/// when the selection is changed by going to the scripture ref.</param>
/// ------------------------------------------------------------------------------------
public void GoToScrScriptureNoteRef(IScrScriptureNote note, bool sendSyncMsg)
{
// TODO (TE-1729): Use this method correctly from Annotations view.
ScrReference scrRef = new ScrReference(note.BeginRef, m_scr.Versification);
IScrBook book = BookFilter.GetBookByOrd(scrRef.Book);
if (book == null)
return;
int iBook = BookFilter.GetBookIndex(book);
using (new IgnoreSynchMessages(TheMainWnd))
{
if (note.Flid == CmPictureTags.kflidCaption)
{
SelectCitedTextInPictureCaption(iBook, note);
return;
}
int ichStart, ichEnd;
string citedText = note.CitedText;
ITsString citedTextTss = note.CitedTextTss;
IStTxtPara para = note.BeginObjectRA as IStTxtPara;
if (para != null && para.OwnerOfClass<IScrDraft>() == null)
{
if (para.Owner is IStFootnote)
{
// Make selection in footnote.
if (TextAtExpectedLoc(para.Contents.Text, citedText, note.BeginOffset, note.EndOffset))
{
// Select text in footnote.
IStFootnote footnote = (IStFootnote)para.Owner;
SelectionHelper selHelper = new SelectionHelper();
selHelper.AssocPrev = false;
selHelper.NumberOfLevels = 3;
selHelper.LevelInfo[2].tag = BookFilter.Tag;
selHelper.LevelInfo[2].ihvo = iBook;
selHelper.LevelInfo[1].tag = ScrBookTags.kflidFootnotes;
selHelper.LevelInfo[1].ihvo = footnote.IndexInOwner;
selHelper.LevelInfo[0].tag = StTextTags.kflidParagraphs;
selHelper.LevelInfo[0].ihvo = 0;
// Prepare to move the IP to the specified character in the paragraph.
selHelper.IchAnchor = note.BeginOffset;
selHelper.IchEnd = note.EndOffset;
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor, StTxtParaTags.kflidContents);
selHelper.SetTextPropId(SelectionHelper.SelLimitType.End, StTxtParaTags.kflidContents);
// Now that all the preparation to set the IP is done, set it.
selHelper.SetSelection(Callbacks.EditedRootBox.Site, true, true);
}
return;
}
// Make selection in Scripture text
if (TextAtExpectedLoc(para.Contents.Text, citedText, note.BeginOffset, note.EndOffset))
{
SelectRangeOfChars(iBook, para, note.BeginOffset, note.EndOffset);
return;
}
if (scrRef.Verse == 0)
{
// Either a missing chapter number or something in intro material.
// Not much chance of finding it by reference (even if the chapter number
// has been added, we never find the 0th verse, and 99% of the time that
// chapter number would have been added to the same paragraph where it
// was missing in the first place), so just try to find the text in the
// paragraph, if it still exists.
if (string.IsNullOrEmpty(citedText))
{
SelectRangeOfChars(iBook, para, note.BeginOffset, note.BeginOffset);
return;
}
// The text may be null if the paragraph only contains the prompt. TE-8315
if (para.Contents.Text != null)
{
int i = para.Contents.Text.IndexOf(citedText);
if (i >= 0)
{
SelectRangeOfChars(iBook, para, i, i + citedText.Length);
return;
}
}
}
}
// A selection could not be made at the specified location. Attempt to go to
//.........这里部分代码省略.........
示例12: SelectRangeOfChars
/// ------------------------------------------------------------------------------------
/// <summary>
/// Create a range selection (adapted from TePrintLayout.cs).
/// </summary>
/// <param name="rootbox">The rootbox.</param>
/// <param name="iPara">The 0-based index of the paragraph in which to put the insertion
/// point</param>
/// <param name="startCharacter">The 0-based index of the character at which the
/// selection begins (or before which the insertion point is to be placed if
/// startCharacter == endCharacter)</param>
/// <param name="endCharacter">The character location to end the selection</param>
/// <returns>The selection helper</returns>
/// ------------------------------------------------------------------------------------
private SelectionHelper SelectRangeOfChars(IVwRootBox rootbox, int iPara,
int startCharacter, int endCharacter)
{
if (rootbox == null)
return null; // can't make a selection
SelectionHelper selHelper = new SelectionHelper();
selHelper.NumberOfLevels = 1;
selHelper.LevelInfo[0].ihvo = iPara;
selHelper.LevelInfo[0].tag = StTextTags.kflidParagraphs;
selHelper.AssocPrev = true;
selHelper.SetLevelInfo(SelectionHelper.SelLimitType.End, selHelper.LevelInfo);
// Prepare to move the IP to the specified character in the paragraph.
selHelper.IchAnchor = startCharacter;
selHelper.IchEnd = endCharacter;
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor, StTxtParaTags.kflidContents);
selHelper.SetTextPropId(SelectionHelper.SelLimitType.End, StTxtParaTags.kflidContents);
// Now that all the preparation to set the IP is done, set it.
IVwSelection vwsel = selHelper.SetSelection(rootbox.Site, true, false,
VwScrollSelOpts.kssoDefault);
Assert.IsNotNull(vwsel);
Application.DoEvents();
return selHelper;
}
示例13: SetupSelectionFor
/// ------------------------------------------------------------------------------------
/// <summary>
/// Sets up the specifed SelectionHelper for the specified paragraph and StText.
/// </summary>
/// <param name="helper">The SelectionHelper.</param>
/// <param name="text">The StText.</param>
/// <param name="para">The para.</param>
/// <param name="limit">The limit.</param>
/// <param name="view">The view</param>
/// ------------------------------------------------------------------------------------
private void SetupSelectionFor(SelectionHelper helper, IStText text, IStTxtPara para,
SelectionHelper.SelLimitType limit, FwRootSite view)
{
Debug.Assert((view is DraftView && ((DraftView)view).TeEditingHelper != null) ||
(view is FootnoteView && ((FootnoteView)view).EditingHelper != null));
helper.SetTextPropId(limit, StTxtParaTags.kflidContents);
if (view is DraftView)
{
DraftView draftView = (DraftView)view;
if ((text.OwningFlid == ScrSectionTags.kflidContent ||
text.OwningFlid == ScrSectionTags.kflidHeading))
{
// text belongs to section heading or contents
IScrSection section = (IScrSection)text.Owner;
Debug.Assert(section.OwningFlid == ScrBookTags.kflidSections);
helper.SetNumberOfLevels(limit, 4);
SelLevInfo[] info = helper.GetLevelInfo(limit);
info[0].ihvo = para.IndexInOwner;
info[0].tag = StTextTags.kflidParagraphs;
info[1].ihvo = 0;
info[1].tag = text.OwningFlid;
info[2].ihvo = section.IndexInOwner;
info[2].tag = ScrBookTags.kflidSections;
info[3].ihvo = draftView.TeEditingHelper.BookFilter.GetBookIndex((IScrBook)section.Owner);
info[3].tag = draftView.TeEditingHelper.BookFilter.Tag;
}
else
{
// text belongs to a book title
Debug.Assert(text.OwningFlid == ScrBookTags.kflidTitle);
IScrBook book = (IScrBook)text.Owner;
helper.SetNumberOfLevels(limit, 3);
SelLevInfo[] info = helper.GetLevelInfo(limit);
info[0].ihvo = para.IndexInOwner;
info[0].tag = StTextTags.kflidParagraphs;
info[1].ihvo = 0;
info[1].tag = text.OwningFlid;
info[2].ihvo = draftView.TeEditingHelper.BookFilter.GetBookIndex(book);
info[2].tag = draftView.TeEditingHelper.BookFilter.Tag;
}
}
else if (view is FootnoteView && text.OwningFlid == ScrBookTags.kflidFootnotes)
{
// text belongs to a footnote
FootnoteView footnoteView = (FootnoteView)view;
IStFootnote footnote = (IStFootnote)para.Owner;
IScrBook book = (IScrBook)text.Owner;
helper.SetNumberOfLevels(limit, 3);
SelLevInfo[] info = helper.GetLevelInfo(limit);
info[0].hvo = text.Hvo;
info[0].tag = StTextTags.kflidParagraphs;
info[1].hvo = footnote.Hvo;
info[1].ihvo = footnote.IndexInOwner;
info[1].tag = ScrBookTags.kflidFootnotes;
info[2].hvo = book.Hvo;
info[2].ihvo = footnoteView.BookFilter.GetBookIndex(book);
info[2].tag = footnoteView.BookFilter.Tag;
info[0].ich = info[1].ich = info[2].ich = -1;
}
}
示例14: AdjustSelectionForPrompt
/// ------------------------------------------------------------------------------------
/// <summary>
/// Tests the both the anchor and the end of the specified selection. If its located in
/// a book title or a section head, then it sets the properties to a user prompt.
/// </summary>
/// <param name="helper">The selection</param>
/// <param name="paraAnchor">The paragraph at the anchor.</param>
/// <param name="paraEnd">The paragraph at the end.</param>
/// ------------------------------------------------------------------------------------
private void AdjustSelectionForPrompt(SelectionHelper helper, IStTxtPara paraAnchor,
IStTxtPara paraEnd)
{
SelectionHelper.SelLimitType limit = SelectionHelper.SelLimitType.Anchor;
if ((helper.IsFlidInLevelInfo(ScrSectionTags.kflidHeading, limit) ||
helper.IsFlidInLevelInfo(ScrBookTags.kflidTitle, limit)) &&
paraAnchor.Contents.Length == 0)
{
helper.SetTextPropId(SelectionHelper.SelLimitType.Anchor,
SimpleRootSite.kTagUserPrompt);
}
limit = SelectionHelper.SelLimitType.End;
if ((helper.IsFlidInLevelInfo(ScrSectionTags.kflidHeading, limit) ||
helper.IsFlidInLevelInfo(ScrBookTags.kflidTitle, limit)) &&
paraEnd.Contents.Length == 0)
{
helper.SetTextPropId(SelectionHelper.SelLimitType.End,
SimpleRootSite.kTagUserPrompt);
}
}
示例15: EnsureNoteIsVisible
/// ------------------------------------------------------------------------------------
/// <summary>
/// Ensures the annotation is mostly visible by making an uninstalled selection
/// toward the end of the modified date.
/// </summary>
/// ------------------------------------------------------------------------------------
internal void EnsureNoteIsVisible(TeNotesVc vc, int bookIndex, int iAnnotation,
IVwRootSite notesDataEntryView)
{
SelectionHelper selHelper = new SelectionHelper();
selHelper.NumberOfLevels = 2;
selHelper.LevelInfo[0].cpropPrevious = 0;
selHelper.LevelInfo[0].ich = -1;
selHelper.LevelInfo[0].ihvo = iAnnotation;
selHelper.LevelInfo[0].tag = vc.NotesSequenceHandler.Tag;
selHelper.LevelInfo[0].ws = 0;
selHelper.LevelInfo[1].cpropPrevious = 0;
selHelper.LevelInfo[1].ich = -1;
selHelper.LevelInfo[1].ihvo = bookIndex;
selHelper.LevelInfo[1].tag = (int)Scripture.ScriptureTags.kflidBookAnnotations;
selHelper.LevelInfo[1].ws = 0;
selHelper.AssocPrev = false;
// Put the selection at the end of the shortest possible date value. It doesn't
// have to be right at the end, but the closer it is, the more reliable it will
// be that it is fully scrolled into view.
selHelper.IchAnchor = 8;
selHelper.SetTextPropId(SelectionHelper.SelLimitType.Anchor,
(int)CmAnnotation.CmAnnotationTags.kflidDateModified);
selHelper.SetSelection(notesDataEntryView, false, true, VwScrollSelOpts.kssoDefault);
}