public void DeleteCode <T>() where T : ParsedScopeBlock { // make a list of existing items for this type var existingList = _parsedItems.Where(item => item.GetType() == typeof(T)).Cast <T>().ToList(); object nameToDelete = new ProCodeDelete { Value = string.Join("|", existingList.Select(arg => arg.Name)) }; if (string.IsNullOrEmpty(((ProCodeDelete)nameToDelete).Value)) { UserCommunication.Notify("Sorry, there was nothing to do!", MessageImg.MsgInfo, "Delete code", "Nothing to delete!", 5); return; } if (UserCommunication.Input(ref nameToDelete, "Please select which piece of code should be deleted", MessageImg.MsgQuestion, "Delete code", "Select the item to delete") != 0) { return; } var delete = (ProCodeDelete)nameToDelete; if (string.IsNullOrEmpty(delete.Value)) { return; } var toDelete = existingList.FirstOrDefault(item => item.Name.Equals(delete.Value)); if (toDelete != null) { DeleteCode(toDelete); } // in the case of a new function, update the prototype if needed if (typeof(ParsedImplementation) == typeof(T)) { ParseNow(); UpdateFunctionPrototypes(true); } }
public static void DeleteCode <T>() where T : ParsedScopeItem { // make sure to parse the current document before doing anything ParserHandler.ParseCurrentDocument(true, true); // make a list of existing items for this type var existingList = ParserHandler.AblParser.ParsedItemsList.Where(item => item.GetType() == typeof(T)).Cast <T>().ToList(); object nameToDelete = new ProCodeDelete { Value = string.Join("|", existingList.Select(arg => arg.Name)) }; if (string.IsNullOrEmpty(((ProCodeDelete)nameToDelete).Value)) { UserCommunication.Notify("Sorry, there was nothing to do!", MessageImg.MsgInfo, "Delete code", "Nothing to delete!", 5); return; } if (UserCommunication.Input(ref nameToDelete, "Please select which piece of code should be deleted", MessageImg.MsgQuestion, "Delete code", "Select the item to delete") != 0) { return; } var delete = (ProCodeDelete)nameToDelete; if (string.IsNullOrEmpty(delete.Value)) { return; } var toDelete = existingList.FirstOrDefault(item => item.Name.Equals(delete.Value)); if (toDelete != null) { DeleteCode(toDelete); } }