예제 #1
0
        private void ExportBtn_Click(object sender, EventArgs e)
        {
            bool locked = false;

            Monitor.TryEnter(portal, 100, ref locked);
            if (!locked)
            {
                return;
            }
            try
            {
                TreeNode node = blockTree.SelectedNode;
                if (node.Tag is Siemens.Engineering.SW.Blocks.PlcBlock)
                {
                    Siemens.Engineering.SW.Blocks.PlcBlock block = node.Tag as Siemens.Engineering.SW.Blocks.PlcBlock;
                    String block_name = block.GetAttribute("Name") as String;
                    if (block_name != null)
                    {
                        exportFileDialog.FileName = block_name + ".xml";
                    }
                    if (exportFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        try
                        {
                            block.Export(new FileInfo(exportFileDialog.FileName), ExportOptions.WithDefaults);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Failed to export block: " + ex.Message);
                        }
                    }
                }
                else if (node.Tag is Siemens.Engineering.Hmi.Screen.Screen)
                {
                    Siemens.Engineering.Hmi.Screen.Screen screen = node.Tag as Siemens.Engineering.Hmi.Screen.Screen;
                    String screen_name = screen.Name;
                    if (screen_name != null)
                    {
                        exportFileDialog.FileName = screen_name + ".xml";
                    }
                    if (exportFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        try
                        {
                            screen.Export(new FileInfo(exportFileDialog.FileName), ExportOptions.WithDefaults);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Failed to export screen: " + ex.Message);
                        }
                    }
                }
                else if (node.Tag is Siemens.Engineering.Hmi.Screen.ScreenTemplate)
                {
                    Siemens.Engineering.Hmi.Screen.ScreenTemplate template = node.Tag as Siemens.Engineering.Hmi.Screen.ScreenTemplate;
                    String name = template.Name;
                    if (name != null)
                    {
                        exportFileDialog.FileName = name + ".xml";
                    }
                    if (exportFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        try
                        {
                            template.Export(new FileInfo(exportFileDialog.FileName), ExportOptions.WithDefaults);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Failed to export screen template: " + ex.Message);
                        }
                    }
                }
                else if (node.Tag is Siemens.Engineering.Hmi.Screen.ScreenPopup)
                {
                    Siemens.Engineering.Hmi.Screen.ScreenPopup popup = node.Tag as Siemens.Engineering.Hmi.Screen.ScreenPopup;
                    String name = popup.Name;
                    if (name != null)
                    {
                        exportFileDialog.FileName = name + ".xml";
                    }
                    if (exportFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        try
                        {
                            popup.Export(new FileInfo(exportFileDialog.FileName), ExportOptions.WithDefaults);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Failed to export screen popup: " + ex.Message);
                        }
                    }
                }
            }
            finally
            {
                Monitor.Exit(portal);
            }
        }