public ILanguage GetLanguage(string language) { int index = GetLanguageIndex(language); if (index >= 0) { ILanguageCollection lc = this.LanguageManager.Languages; return(lc[index]); } return(null); }
public static bool Compare(this ILanguageCollection source, ILanguageCollection n, Func<ILanguage, ILanguage, bool> checkitem) { return Compare<ILanguage>(source,n,checkitem); }
public static bool Compare(this ILanguageCollection source, ILanguageCollection n, Func<ILanguage, ILanguage, Action<string, string>, bool> checkitem, Action<string, string> errAct) { return Compare<ILanguage>(source,n,checkitem,errAct); }
public static bool Compare(this ILanguageCollection source, ILanguageCollection n) { return Compare<ILanguage>(source,n); }
public static bool Compare(this ILanguageCollection source, ILanguageCollection n, Func <ILanguage, ILanguage, Action <string, string>, bool> checkitem, Action <string, string> errAct) { return(Compare <ILanguage>(source, n, checkitem, errAct)); }
public static bool Compare(this ILanguageCollection source, ILanguageCollection n, Func <ILanguage, ILanguage, bool> checkitem) { return(Compare <ILanguage>(source, n, checkitem)); }
public static bool Compare(this ILanguageCollection source, ILanguageCollection n) { return(Compare <ILanguage>(source, n)); }
/// <summary> /// Synchronize the example language sub menu with the current set of languages. /// Unfortunately, there is no add/remove event when languages are added and removed, /// and the DropDown event does not fire on submenus, so we need to synchronize here. /// </summary> private void OnOpenTopMenu(object sender, EventArgs e) { ICommandBarItemCollection exampleItems = myExampleLanguageMenu.Items; ILanguageCollection languages = myLanguageManager.Languages; ILanguage selectedLanguage = myConfiguration.ExampleLanguage; PLiXConfiguration plixConfig = (PLiXConfiguration)myConfiguration; object activeItem = myAssemblyBrowser.ActiveItem; bool activeItemIsTypeDeclaration = activeItem is ITypeDeclaration; bool activeItemIsNamespaceDeclaration = !activeItemIsTypeDeclaration && activeItem is INamespace; bool alreadyExpandedCurrentType = plixConfig.FullyExpandCurrentTypeDeclaration; bool alwaysExpandTypes = alreadyExpandedCurrentType ? false : myConfiguration.FullyExpandTypeDeclarations; if (activeItemIsNamespaceDeclaration) { myExpandCurrentNamespaceDeclarationButton.Visible = true; myExpandCurrentNamespaceDeclarationButton.Enabled = !plixConfig.FullyExpandCurrentNamespaceDeclaration; } else { myExpandCurrentNamespaceDeclarationButton.Visible = false; } if (activeItemIsTypeDeclaration) { myExpandCurrentTypeDeclarationButton.Visible = !alwaysExpandTypes; myExpandCurrentTypeDeclarationButton.Enabled = !alreadyExpandedCurrentType; } else { myExpandCurrentTypeDeclarationButton.Visible = false; } myFullyExpandTypeDeclarationsCheckBox.Checked = alwaysExpandTypes; myDisplayContextDataTypeQualifierCheckBox.Checked = plixConfig.DisplayContextDataTypeQualifier; StaticCallRenderingOption staticRender = plixConfig.StaticCallRenderingOption; myExplicitStaticCallCheckBox.Checked = staticRender == StaticCallRenderingOption.Explicit; myImplicitCurrentTypeStaticCallCheckBox.Checked = staticRender == StaticCallRenderingOption.ImplicitCurrentType; myImplicitBaseTypesStaticCallCheckBox.Checked = staticRender == StaticCallRenderingOption.ImplicitBaseTypes; int itemsCount = exampleItems.Count; ICommandBarCheckBox currentItem; if (itemsCount == 0) { currentItem = exampleItems.AddCheckBox("None"); currentItem.Checked = selectedLanguage == null; currentItem.Click += new EventHandler(OnExampleLanguageClick); ++itemsCount; } else { currentItem = (ICommandBarCheckBox)exampleItems[0]; if (currentItem.Checked ^ (selectedLanguage == null)) { currentItem.Checked = selectedLanguage == null; } } int languagesCount = languages.Count; int currentItemIndex = 1; // None is at the zero position for (int iLanguage = 0; iLanguage < languagesCount; ++iLanguage) { ILanguage currentLanguage = languages[iLanguage]; bool isChecked = currentLanguage == selectedLanguage; string languageName = currentLanguage.Name; if (currentLanguage != myLanguage && !languageName.StartsWith("IL")) { if (currentItemIndex >= itemsCount) { currentItem = exampleItems.AddCheckBox(languageName); currentItem.Value = currentLanguage; if (isChecked) { currentItem.Checked = true; } currentItem.Click += new EventHandler(OnExampleLanguageClick); // No need to adjust currentItemIndex here, we'll continue to add to the end of the list } else { currentItem = (ICommandBarCheckBox)exampleItems[currentItemIndex]; ILanguage testLanguage = (ILanguage)currentItem.Value; if (testLanguage == currentLanguage) { ++currentItemIndex; if (currentItem.Checked ^ isChecked) { currentItem.Checked = isChecked; } continue; } else { // If the testLanguage appears later in the language list, then we need // to insert the new language here. Otherwise, we need to remove the // existing item. int matchingLanguage = iLanguage + 1; for (; matchingLanguage < languagesCount; ++matchingLanguage) { if (testLanguage == languages[matchingLanguage]) { break; } } if (matchingLanguage < languagesCount) { // The language at this item will match later. Insert the currentLanguage at this position currentItem = exampleItems.InsertCheckBox(currentItemIndex, languageName); currentItem.Value = currentLanguage; if (isChecked) { currentItem.Checked = true; } currentItem.Click += new EventHandler(OnExampleLanguageClick); ++itemsCount; ++currentItemIndex; } else { // The item needs to be removed exampleItems.Remove(currentItem); --itemsCount; } } } } } // Remove any remaining items that we didn't match with a language if (currentItemIndex < itemsCount) { for (int i = itemsCount - 1; i >= currentItemIndex; --i) { exampleItems.RemoveAt(i); } } }