private string[] ProduceSubitemTexts(MyNodeConfig nodeConfig, MyObsoleteAttribute obsolete, out bool complete) { string author; string status; string summary; string labels = ""; complete = m_mainForm.Documentation.HasAuthor(nodeConfig.NodeType, out author); complete &= m_mainForm.Documentation.HasStatus(nodeConfig.NodeType, out status); complete &= m_mainForm.Documentation.HasSummary(nodeConfig.NodeType, out summary); if (obsolete != null) { status = "Obsolete"; summary = "Replaced by: " + MyProject.ShortenNodeTypeName(obsolete.ReplacedBy); } else if (!complete) { summary = "INCOMPLETE DOCUMENTATION! " + summary; } if ((nodeConfig.Labels != null) && (nodeConfig.Labels.Count > 0)) { labels = EscapeAmpersands(string.Join(" ", nodeConfig.Labels.Select(label => "#" + label))); } author = EscapeAmpersands(author); status = EscapeAmpersands(status); summary = EscapeAmpersands(summary); string nodeName = MyProject.ShortenNodeTypeName(nodeConfig.NodeType); return(new string[] { nodeName, author, status, summary, labels }); }
private static Image GenerateDefaultImage(Type nodeType, bool bigIcon) { string back_fileName = bigIcon ? @"plain_big.png" : @"plain.png"; float x = 0; float y = bigIcon ? 6 : 3; float size = bigIcon ? 36 : 17; string label = ""; string typeName = MyProject.ShortenNodeTypeName(nodeType); for (int i = 0; i < typeName.Length; i++) { if (Char.IsUpper(typeName[i])) { label += typeName[i]; if (label.Length == 2) { break; } } } if (label.Length < 2) { label = typeName.Substring(0, 2); } Image background = MyResources.GetImage(back_fileName); Graphics g = Graphics.FromImage(background); g.DrawString(label, new Font(new FontFamily("Consolas"), 17, FontStyle.Bold), Brushes.White, x, y); return(background); }
public ObserverForm(MainForm mainForm, MyAbstractObserver observer, MyNode declaredOwner) { InitializeComponent(); m_mainForm = mainForm; Observer = observer; observer.TriggerReset(); Text = MyProject.ShortenNodeTypeName(observer.GetType()) + ": " + observer.GetTargetName(declaredOwner); }
private void AddNodeButton(MyNodeConfig nodeConfig) { var newButton = new ToolStripButton { ToolTipText = MyProject.ShortenNodeTypeName(nodeConfig.NodeType), DisplayStyle = ToolStripItemDisplayStyle.Image }; newButton.MouseUp += newButton_MouseUp; ToolStripItemCollection targetItems = nodesToolStrip.Items; InnerAddNodeButtonOrMenuItem(newButton, nodeConfig, targetItems); }
private void AddNodeButtonToCategoryMenu(MyNodeConfig nodeConfig) { ToolStripDropDownButton targetMenuButton = FindTargetMenuButton(CategorySortingHat.DetectCategoryName(nodeConfig)); // TODO: optimize with HashSet if (targetMenuButton == null) { return; } ToolStripItem newButton = new ToolStripMenuItem() { Text = MyProject.ShortenNodeTypeName(nodeConfig.NodeType), DisplayStyle = ToolStripItemDisplayStyle.ImageAndText }; ToolStripItemCollection targetItems = targetMenuButton.DropDownItems; InnerAddNodeButtonOrMenuItem(newButton, nodeConfig, targetItems, addSeparators: true); }
protected static Image GenerateDefaultImage(Type nodeType, bool bigIcon) { string typeName = MyProject.ShortenNodeTypeName(nodeType); return(GenerateDefaultImage(typeName, bigIcon)); }
public override string ToString() { return(MyProject.ShortenNodeTypeName(NodeType)); }
private void PopulateNodeListView() { HashSet <string> enabledNodes = new HashSet <string>(); if (Properties.Settings.Default.ToolBarNodes != null) { foreach (string nodeTypeName in Properties.Settings.Default.ToolBarNodes) { enabledNodes.Add(nodeTypeName); } } Dictionary <string, List <MyNodeConfig> > knownNodes = new Dictionary <string, List <MyNodeConfig> >(); foreach (MyNodeConfig nc in MyConfiguration.KnownNodes.Values) { if (!nc.IsBasicNode && nc.CanBeAdded) { if (!knownNodes.ContainsKey(nc.NodeType.Namespace)) { knownNodes[nc.NodeType.Namespace] = new List <MyNodeConfig>(); } knownNodes[nc.NodeType.Namespace].Add(nc); } } knownNodes["Worlds"] = new List <MyNodeConfig>(); foreach (MyNodeConfig nc in MyConfiguration.KnownWorlds.Values) { if (!nc.IsBasicNode) { knownNodes["Worlds"].Add(nc); } } int i = 0; nodeImageList.Images.Add(GeneratePaddedIcon(Properties.Resources.group)); i++; nodeImageList.Images.Add(GeneratePaddedIcon(Properties.Resources.world)); i++; List <string> nmspaces = knownNodes.Keys.ToList().OrderBy(x => x).ToList(); foreach (string nmspace in nmspaces) { ListViewGroup group = new ListViewGroup(nmspace, nmspace.Replace("BrainSimulator.", "")); nodeListView.Groups.Add(group); List <MyNodeConfig> nodesInGroup = knownNodes[nmspace].OrderBy(x => x.NodeType.Name).ToList();; int row = 0; foreach (MyNodeConfig nc in nodesInGroup) { string author; string status; string summary; bool complete = m_mainForm.Documentation.HasAuthor(nc.NodeType, out author); complete &= m_mainForm.Documentation.HasStatus(nc.NodeType, out status); complete &= m_mainForm.Documentation.HasSummary(nc.NodeType, out summary); MyObsoleteAttribute obsolete = nc.NodeType.GetCustomAttribute <MyObsoleteAttribute>(true); if (obsolete != null) { status = "Obsolete"; summary = "Replaced by: " + MyProject.ShortenNodeTypeName(obsolete.ReplacedBy); } else { if (!complete) { summary = "INCOMPLETE DOCUMENTATION! " + summary; } else { author = author.Replace("&", "&&"); status = status.Replace("&", "&&"); summary = summary.Replace("&", "&&"); } } ListViewItem item = new ListViewItem( new string[4] { MyProject.ShortenNodeTypeName(nc.NodeType), author, status, summary }); if (row % 2 == 1) { item.BackColor = Color.FromArgb(245, 245, 245); } item.Tag = nc; item.Group = group; item.Checked = enabledNodes.Contains(nc.NodeType.Name); // forbid to remove currently selected world if (nc.NodeType == m_mainForm.Project.World.GetType()) { item.BackColor = Color.FromArgb(150, 200, 240); // (light gray-blue) item.ToolTipText = "This world is being used by the current project (can't be deselected)."; // NOTE: the item's checkbox can't be disabled, we just override changes in nodeListView_ItemCheck() } if (obsolete != null) { item.ForeColor = SystemColors.GrayText; } else { if (!complete) { item.ForeColor = Color.Red; } } if (nmspace != "Worlds") { item.ImageIndex = i; nodeImageList.Images.Add(GeneratePaddedIcon(nc.SmallImage)); i++; } else { item.ImageIndex = 1; } nodeListView.Items.Add(item); row++; } } nodeListView.GridLines = true; }