private void RestoreMenuTree(XmlItem xi, List <ExportsTreeNode> nodes) { foreach (XmlItem item in xi.Items) { Type exportType = null; string typeProp = item.GetProp("ExportType"); if (!string.IsNullOrEmpty(typeProp)) { exportType = Type.GetType(typeProp); } string imageIndexProp = item.GetProp("Icon"); int imageIndex = -1; if (!string.IsNullOrEmpty(imageIndexProp)) { int.TryParse(imageIndexProp, out imageIndex); } string enabledProp = item.GetProp("Enabled"); bool enabled = true; if (!string.IsNullOrEmpty(imageIndexProp)) { int.TryParse(imageIndexProp, out imageIndex); } ExportsTreeNode currentNode = new ExportsTreeNode(item.Name, exportType, imageIndex, enabled); nodes.Add(currentNode); if (item.Items.Count > 0) { RestoreMenuTree(item, currentNode.Nodes); } } }
/// <summary> /// Sets Export visibility. /// </summary> /// <param name="exportType">Export type.</param> /// <param name="enabled">Visibility state.</param> public void SetExportEnabled(Type exportType, bool enabled) { ExportsTreeNode node = FindItem(null, exportType); if (node != null) { node.Enabled = enabled; } }
private void RegisterObject(ExportsTreeNode node, bool registerCategories) { if (node.ExportType == null && registerCategories) { RegisteredObjects.AddExportCategory(node.Name, node.ToString(), node.ImageIndex); } else if (node.ExportType != null && !registerCategories) { RegisteredObjects.AddExport(node.ExportType, node.ToString(), node.ImageIndex); } List <ObjectInfo> list = new List <ObjectInfo>(); RegisteredObjects.Objects.EnumItems(list); node.Tag = list[list.Count - 1]; }
/// <summary> /// /// </summary> public void RegisterExports() { Queue <ExportsTreeNode> queue = new Queue <ExportsTreeNode>(menuNodes); while (queue.Count != 0) { ExportsTreeNode node = queue.Dequeue(); if (node.ExportType != null) { RegisteredObjects.AddExport(node.ExportType, node.ToString(), node.ImageIndex); } List <ObjectInfo> list = new List <ObjectInfo>(); RegisteredObjects.Objects.EnumItems(list); node.Tag = list[list.Count - 1]; foreach (ExportsTreeNode nextNode in node.Nodes) { queue.Enqueue(nextNode); } } }
private ExportsTreeNode FindItem(string name, Type exportType) { Queue <ExportsTreeNode> queue = new Queue <ExportsTreeNode>(menuNodes); while (queue.Count != 0) { ExportsTreeNode node = queue.Dequeue(); if (exportType != null && node.ExportType == exportType || !string.IsNullOrEmpty(name) && node.Name == name) { return(node); } foreach (ExportsTreeNode nextNode in node.Nodes) { queue.Enqueue(nextNode); } } return(null); }
private ExportsTreeNode FindItem(string name, Type exportType, List <ExportsTreeNode> menu) { ExportsTreeNode res = null; foreach (ExportsTreeNode node in menu) { if (!string.IsNullOrEmpty(name) && node.Name == name) { res = node; } if (exportType != null && node.ExportType == exportType) { res = node; } if (node.ExportType == null) { res = FindItem(name, exportType, node.Nodes); } } return(res); }