123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- using System;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using MaxCustomControls;
- using MaxSharp;
- using Color = System.Drawing.Color;
- namespace Max2Babylon
- {
- public partial class ExporterForm : MaxForm
- {
- private readonly BabylonExportActionItem babylonExportAction;
- public ExporterForm(BabylonExportActionItem babylonExportAction)
- {
- InitializeComponent();
- this.babylonExportAction = babylonExportAction;
- }
- private void ExporterForm_Load(object sender, EventArgs e)
- {
- txtFilename.Text = Kernel.Scene.RootNode.GetLocalData();
- }
- private void butBrowse_Click(object sender, EventArgs e)
- {
- if (saveFileDialog.ShowDialog(this) == DialogResult.OK)
- {
- txtFilename.Text = saveFileDialog.FileName;
- }
- }
- private async void butExport_Click(object sender, EventArgs e)
- {
- Kernel.Scene.RootNode.SetLocalData(txtFilename.Text);
- var exporter = new BabylonExporter();
- TreeNode currentNode = null;
- TreeNode previousNode = null;
- treeView.Nodes.Clear();
- exporter.OnImportProgressChanged += progress => Invoke(new Action(() =>
- {
- progressBar.Value = progress;
- }));
- exporter.OnWarning += (warning, asChild) => Invoke(new Action(() =>
- {
- previousNode = new TreeNode(warning) { ForeColor = Color.Orange };
- currentNode = CreateTreeNode(asChild, currentNode, previousNode);
- previousNode.EnsureVisible();
- }));
- exporter.OnError += (error, asChild) => Invoke(new Action(() =>
- {
- previousNode = new TreeNode(error) { ForeColor = Color.Red };
- currentNode = CreateTreeNode(asChild, currentNode, previousNode);
- previousNode.EnsureVisible();
- }));
- exporter.OnMessage += (message, asChild, emphasis, embed) => Invoke(new Action(() =>
- {
- var oldPrevious = previousNode;
- previousNode = new TreeNode(message);
- if (emphasis)
- {
- previousNode.ForeColor = Color.Green;
- }
- currentNode = CreateTreeNode(asChild || embed, embed ? oldPrevious : currentNode, previousNode);
- if (emphasis)
- {
- previousNode.EnsureVisible();
- }
- }));
- await Task.Run(() => exporter.Export(txtFilename.Text));
- }
- private TreeNode CreateTreeNode(bool asChild, TreeNode currentNode, TreeNode treeNode)
- {
- if (asChild)
- {
- currentNode.Nodes.Add(treeNode);
- }
- else
- {
- treeView.Nodes.Add(treeNode);
- }
- if (!asChild)
- {
- currentNode = treeNode;
- }
- return currentNode;
- }
- private void ExporterForm_FormClosed(object sender, FormClosedEventArgs e)
- {
- babylonExportAction.Close();
- }
- private void txtFilename_TextChanged(object sender, EventArgs e)
- {
- butExport.Enabled = !string.IsNullOrEmpty(txtFilename.Text.Trim());
- }
- }
- }
|