public override void OnPropertyGridPopupContextMenu(object sender, EventArgs e) { if (CurrentGrid.SelectedObject == null) { return; } base.OnPropertyGridPopupContextMenu(sender, e); if (CurrentGrid.SelectedGridItem.PropertyDescriptor != null) { XmlNode selectedElement = GetSelectedGridObject(); XmlNodeList selectedSubElements = selectedElement.SelectNodes("*", WixFiles.WxsNsmgr); MenuItem menuItemSeparator1 = new IconMenuItem("-"); CurrentGridContextMenu.MenuItems.Add(1, menuItemSeparator1); if (selectedSubElements.Count == 0) { MenuItem subMenuItem = new IconMenuItem("Insert", new Bitmap(WixFiles.GetResourceStream("bmp.new.bmp"))); CurrentGridContextMenu.MenuItems.Add(1, subMenuItem); XmlNode definition = WixFiles.GetXsdElementNode("Property"); XmlNodeList subElements = definition.SelectNodes("xs:complexType/xs:sequence/xs:element", WixFiles.XsdNsmgr); foreach (XmlNode sub in subElements) { string subName = sub.Attributes["ref"].Value; MenuItem subSubMenuItem = new IconMenuItem(subName); subSubMenuItem.Click += new EventHandler(OnNewSubPropertyGridItem); subMenuItem.MenuItems.Add(subSubMenuItem); } } else if (selectedSubElements.Count == 1) { MenuItem subMenuItem = new IconMenuItem("Remove " + selectedSubElements[0].Name, new Bitmap(WixFiles.GetResourceStream("bmp.new.bmp"))); CurrentGridContextMenu.MenuItems.Add(1, subMenuItem); subMenuItem.Click += new EventHandler(OnRemoveSubPropertyGridItem); } else { MenuItem subMenuItem = new IconMenuItem("Multiple subitems in property are unsupported!", new Bitmap(WixFiles.GetResourceStream("bmp.new.bmp"))); subMenuItem.Enabled = false; CurrentGridContextMenu.MenuItems.Add(1, subMenuItem); } MenuItem menuItemSeparator2 = new IconMenuItem("-"); CurrentGridContextMenu.MenuItems.Add(1, menuItemSeparator2); } }
public XmlAttributeAdapter(XmlNode xmlNode, WixFiles wixFiles, bool editSubNodes) : base(wixFiles) { this.xmlNode = xmlNode; this.editSubNodes = editSubNodes; xmlNodeElement = WixFiles.GetXsdElementNode(xmlNode.Name); if (xmlNodeElement == null) { if (xmlNode.NodeType != XmlNodeType.ProcessingInstruction) { if (warnedNodeNames.Contains(xmlNode.Name) == false) { MessageBox.Show(String.Format("\"{0}\" is not supported in version {1} of WiX!\r\n\r\nPossibly this type is supported in another version of WiX and wix.xsd.", xmlNode.Name, WixEditSettings.Instance.WixBinariesVersion), xmlNode.Name, MessageBoxButtons.OK, MessageBoxIcon.Error); warnedNodeNames.Add(xmlNode.Name); } } } else { XmlNode deprecated = xmlNodeElement.SelectSingleNode("xs:annotation/xs:appinfo/xse:deprecated", wixFiles.XsdNsmgr); if (deprecated != null) { if (warnedNodeNames.Contains(xmlNode.Name) == false) { string msg = String.Format("\"{0}\" is deprecated in version {1} of WiX.", xmlNode.Name, WixEditSettings.Instance.WixBinariesVersion); if (deprecated.Attributes["ref"] != null) { msg = String.Format("{0}\r\n\r\nPlease use \"{1}\" instead.", msg, deprecated.Attributes["ref"].Value); } MessageBox.Show(msg, xmlNode.Name, MessageBoxButtons.OK, MessageBoxIcon.Warning); warnedNodeNames.Add(xmlNode.Name); } } if (xmlNodeElement.Attributes["type"] != null && xmlNodeElement.Attributes["type"].Value != null) { xmlNodeDefinition = wixFiles.XsdDocument.SelectSingleNode(String.Format("/xs:schema/xs:complexType[@name='{0}']/xs:simpleContent/xs:extension", xmlNodeElement.Attributes["type"].Value), wixFiles.XsdNsmgr); if (xmlNodeDefinition == null) { xmlNodeDefinition = wixFiles.XsdDocument.SelectSingleNode(String.Format("/xs:schema/xs:complexType[@name='{0}']", xmlNodeElement.Attributes["type"].Value), wixFiles.XsdNsmgr); showInnerTextIfEmpty = false; } else { showInnerTextIfEmpty = true; } } else { xmlNodeDefinition = xmlNodeElement.SelectSingleNode("xs:complexType/xs:simpleContent/xs:extension", wixFiles.XsdNsmgr); if (xmlNodeDefinition == null) { xmlNodeDefinition = xmlNodeElement.SelectSingleNode("xs:complexType", wixFiles.XsdNsmgr); if (xmlNodeDefinition == null) { // Nothing? xmlNodeDefinition = xmlNodeElement; showInnerTextIfEmpty = true; } else { showInnerTextIfEmpty = false; } } else { showInnerTextIfEmpty = true; } } } }