private void CreateOpenWithList() { ReleaseOpenWithList(); m_dynMenu.Clear(); m_dynMenu.AddSeparator(); m_lOpenWith = new List <OpenWithItem>(); FindAppsByKnown(); FindAppsByRegistry(); if (m_lOpenWith.Count == 0) { m_dynMenu.Clear(); // Remove separator } }
private void CreateOpenWithList() { ReleaseOpenWithList(); m_dynMenu.Clear(); m_dynMenu.AddSeparator(); m_lOpenWith = new List <OpenWithItem>(); FindAppsByKnown(); FindAppsByRegistry(); FinishOpenWithList(); if (m_lOpenWith.Count == 0) { m_dynMenu.Clear(); // Remove separator } else { List <char> lAvailKeys = new List <char>(PwCharSet.MenuAccels); // Remove keys that are used by non-dynamic menu items foreach (ToolStripItem tsi in m_tsmiHost.DropDownItems) { string str = ((tsi != null) ? tsi.Text : null); if (!string.IsNullOrEmpty(str)) { str = str.Replace(@"&&", string.Empty); int i = str.IndexOf('&'); Debug.Assert(i == str.LastIndexOf('&')); if ((i >= 0) && (i < (str.Length - 1))) { lAvailKeys.Remove(char.ToLowerInvariant(str[i + 1])); lAvailKeys.Remove(char.ToUpperInvariant(str[i + 1])); } } } foreach (OpenWithItem it in m_lOpenWith) { it.AddMenuItem(lAvailKeys); } } }
private void UpdateTagsMenu(DynamicMenu dm, bool bWithSeparator, bool bPrefixTag, TagsMenuMode tmm) { if(dm == null) { Debug.Assert(false); return; } dm.Clear(); if(bWithSeparator) dm.AddSeparator(); string strNoTags = "(" + KPRes.TagsNotFound + ")"; PwDatabase pd = m_docMgr.ActiveDatabase; if(!pd.IsOpen || (tmm == TagsMenuMode.EnsurePopupOnly)) { ToolStripMenuItem tsmi = dm.AddItem(strNoTags, null, string.Empty); tsmi.Enabled = false; return; } bool bReqEntrySel = ((tmm == TagsMenuMode.Add) || (tmm == TagsMenuMode.Remove)); IDictionary<string, uint> dAllTags = pd.RootGroup.BuildEntryTagsDict(true); PwGroup pgSel = GetSelectedEntriesAsGroup(); uint uSelCount = pgSel.Entries.UCount; bool bForceDisabled = (bReqEntrySel && (uSelCount == 0)); Dictionary<string, bool> dEnabledTags = null; if((tmm == TagsMenuMode.Add) && (uSelCount > 0)) { dEnabledTags = new Dictionary<string, bool>(StrUtil.CaseIgnoreComparer); List<string> lIntersect = pgSel.Entries.GetAt(0).Tags; for(uint u = 1; u < uSelCount; ++u) lIntersect = new List<string>(MemUtil.Intersect(lIntersect, pgSel.Entries.GetAt(u).Tags, StrUtil.CaseIgnoreComparer)); foreach(string strTag in MemUtil.Except(dAllTags.Keys, lIntersect, StrUtil.CaseIgnoreComparer)) dEnabledTags[strTag] = true; } else if(tmm == TagsMenuMode.Remove) { dEnabledTags = new Dictionary<string, bool>(StrUtil.CaseIgnoreComparer); List<string> lSelectedTags = pgSel.BuildEntryTagsList(false); foreach(string strTag in lSelectedTags) dEnabledTags[strTag] = true; } string strPrefix = StrUtil.EncodeMenuText(KPRes.Tag + ": "); Image imgIcon = Properties.Resources.B16x16_KNotes; List<char> lAvailKeys = new List<char>(PwCharSet.MenuAccels); foreach(KeyValuePair<string, uint> kvp in dAllTags) { string strTag = kvp.Key; string strText = StrUtil.EncodeMenuText(strTag); strText = StrUtil.AddAccelerator(strText, lAvailKeys); if(bPrefixTag) strText = strPrefix + strText; ToolStripMenuItem tsmi = dm.AddItem(strText, imgIcon, strTag); if(tmm == TagsMenuMode.All) tsmi.ShortcutKeyDisplayString = "(" + kvp.Value.ToString() + ")"; if(bForceDisabled) tsmi.Enabled = false; else if(dEnabledTags != null) { if(!dEnabledTags.ContainsKey(strTag)) tsmi.Enabled = false; } } if(dAllTags.Count == 0) { ToolStripMenuItem tsmi = dm.AddItem(strNoTags, null, string.Empty); tsmi.Enabled = false; } }
private void UpdateTagsMenu(DynamicMenu dm, bool bWithSeparator, bool bPrefixTag, bool bRequireEntrySelected, bool bEnableOnlySelected) { if(dm == null) { Debug.Assert(false); return; } dm.Clear(); if(bWithSeparator) dm.AddSeparator(); string strNoTags = "(" + KPRes.TagsNotFound + ")"; PwDatabase pd = m_docMgr.ActiveDatabase; if(!pd.IsOpen) { ToolStripMenuItem tsmi = dm.AddItem(strNoTags, null, string.Empty); tsmi.Enabled = false; return; } List<string> vTags = pd.RootGroup.BuildEntryTagsList(true); string strPrefix = KPRes.Tag + ": "; Image imgIcon = Properties.Resources.B16x16_KNotes; bool bEnable = (m_lvEntries.SelectedIndices.Count > 0); List<string> vEnabledTags = null; if(bEnableOnlySelected) { PwGroup pgSel = GetSelectedEntriesAsGroup(); vEnabledTags = pgSel.BuildEntryTagsList(true); } for(int i = 0; i < vTags.Count; ++i) { string strTag = vTags[i]; ToolStripMenuItem tsmi = dm.AddItem(bPrefixTag ? (strPrefix + strTag) : strTag, imgIcon, strTag); if(bRequireEntrySelected && !bEnable) tsmi.Enabled = false; else if(vEnabledTags != null) { if(vEnabledTags.IndexOf(strTag) < 0) tsmi.Enabled = false; } } if(vTags.Count == 0) { ToolStripMenuItem tsmi = dm.AddItem(strNoTags, null, string.Empty); tsmi.Enabled = false; } }