public PresetGenerate(TiaPortal portal, IEngineeringCompositionOrObject top, List <HmiTarget> hmiTargets, string culture) { InitializeComponent(); tiaPortal = portal; FormClosing += FormClosingEventHandler; presetListView.AutoGenerateColumns = false; presetList = new PresetTagList { Culture = culture }; presetListView.DataSource = presetList; writeButton.Enabled = false; exportButton.Enabled = false; parser = new TagParser(portal); parser.HandleTag += HandleTag; parser.ParseDone += ParseDone; parser.ParseAsync(top, log); IEngineeringCompositionOrObject node = top; while (node.Parent is PlcBlockGroup) { node = node.Parent; } PlcBlockGroup top_group = (PlcBlockGroup)node; resultGroup = top_group.Groups.Find("Preset"); if (resultGroup == null) { resultGroup = top_group.Groups.Create("Preset"); } while (node != null && !(node is PlcSoftware)) { node = node.Parent; } if (node == null) { throw new Exception("No PlcSoftware node found"); } plcSoftware = (PlcSoftware)node; typeGroup = plcSoftware.TypeGroup.Groups.Find("Preset"); if (typeGroup == null) { typeGroup = plcSoftware.TypeGroup.Groups.Create("Preset"); } this.hmiTargets = hmiTargets; Project proj = tiaPortal.Projects[0]; LanguageAssociation langs = proj.LanguageSettings.ActiveLanguages; cultureComboBox.Items.Clear(); cultureComboBox.Items.AddRange(langs.Select(l => l.Culture.Name).ToArray()); cultureComboBox.SelectedItem = culture; }
public List <string> GetAllDataTypesNames(PlcTypeGroup SearchGroup, List <string> result) { foreach (PlcType ty in SearchGroup.Types) { result.Add(ty.Name); } foreach (PlcTypeGroup group in SearchGroup.Groups) { result = GetAllDataTypesNames(group, result); } return(result); }
private void AddTypes(PlcTypeGroup group) { foreach (PlcType type in group.Types) { worker.ReportProgress(50, new NodeData(NodeDest.From, type.Name, type)); } foreach (PlcTypeGroup child in group.Groups) { worker.ReportProgress(50, new NodeEnter(NodeDest.From, child.Name, true)); AddTypes(child); worker.ReportProgress(50, new NodeExit(NodeDest.From)); } }
public void AddPlcTypes(PlcTypeGroup plcTypeGroup, TreeNode node) { foreach (PlcType ty in plcTypeGroup.Types) { TreeNode n = new TreeNode(ty.Name); n.Tag = ty; n.ImageIndex = 9; n.SelectedImageIndex = n.ImageIndex; node.Nodes.Add(n); } // then add groups and search recursive foreach (PlcTypeGroup tGroup in plcTypeGroup.Groups) { TreeNode n = new TreeNode(tGroup.Name); n.Tag = tGroup; n.ImageIndex = 1; n.SelectedImageIndex = 1; node.Nodes.Add(n); AddPlcTypes(tGroup, n); } }
static public void ImportPlcTypeXML(XmlDocument doc, PlcTypeGroup group) { FileInfo path = TempFile.File("import_type_", "xml"); try { XmlWriter writer = XmlWriter.Create(path.ToString()); doc.Save(writer); writer.Close(); group.Types.Import(path, ImportOptions.Override); } finally { try { path.Delete(); } catch (IOException e) { Console.WriteLine("Failed to delete temporary file: " + e.Message); } } }
protected override void DoWork() { lock (portal) { try { Stack <string> group_names = new Stack <string>(); IEngineeringObject obj = fromType.Parent; while (obj is PlcTypeUserGroup) { group_names.Push(((PlcTypeGroup)obj).Name); obj = obj.Parent; } PlcTypeGroup group = toPlc.TypeGroup; foreach (string group_name in group_names) { PlcTypeUserGroup child = group.Groups.Find(group_name); if (child != null) { group = child; } else { group = group.Groups.Create(group_name); } } FileInfo file = TempFile.File("copy_type_", "xml"); fromType.Export(file, ExportOptions.None); group.Types.Import(file, overwrite ? ImportOptions.Override : ImportOptions.None); } catch (Exception ex) { LogMessage(MessageLog.Severity.Error, "Failed to copy from " + fromType.Name + " to " + toPlc.Name + ":\n" + ex.Message); return; } } }