private Set <int> GetHvoSlots() { Set <int> hvoSlots; IPartOfSpeech pos = PartOfSpeech.CreateFromDBObject(m_cache, m_selectedMainPOSHvo); if (m_morphType == null) { // Not called by InsertEntryDlg; need to figure out the morphtype(s) LexEntry lex = m_mediator.PropertyTable.GetValue("ActiveClerkSelectedObject") as LexEntry; if (lex != null) { hvoSlots = MoInflAffMsa.GetSetOfSlots(m_cache, lex, pos); } else { hvoSlots = new Set <int>(pos.AllAffixSlotIDs); } } else { // Called by InsertEntryDlg so we know the morphtype bool fIsPrefixal = false; bool fIsSuffixal = false; if (MoMorphType.IsPrefixishType(m_cache, m_morphType.Hvo)) { fIsPrefixal = true; } if (MoMorphType.IsSuffixishType(m_cache, m_morphType.Hvo)) { fIsSuffixal = true; } if (fIsPrefixal && fIsSuffixal) { hvoSlots = new Set <int>(pos.AllAffixSlotIDs); } else { hvoSlots = MoInflAffixTemplate.GetSomeSlots(m_cache, new Set <int>(pos.AllAffixSlotIDs), fIsPrefixal); } } return(hvoSlots); }