Пример #1
0
        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;
        }
Пример #2
0
 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);
 }
Пример #3
0
 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));
     }
 }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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);
                }
            }
        }
Пример #6
0
 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;
         }
     }
 }