view FrmXmlExport.cs @ 243:425912324be5

Re #417: Improve install/first use experience * Handle file copy errors in WinForms and tell user
author IBBoard <dev@ibboard.co.uk>
date Sat, 19 May 2012 20:16:21 +0100
parents 72beddaffb71
children 4d25c42bbe7b
line wrap: on
line source

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.IO;
using System.Windows.Forms;
using System.Xml.Xsl;
using IBBoard.Lang;
using IBBoard.WarFoundry.API.Objects;
using IBBoard.WarFoundry.API.Exporters;

namespace IBBoard.WarFoundry.GUI.WinForms
{
    public partial class FrmXmlExport : Form
    {
        Army myArmy = null;
        public FrmXmlExport(Army army)
        {
            InitializeComponent();
            myArmy = army;
        }

        private void FrmXmlExport_Load(object sender, EventArgs e)
        {
            tbXslPath.Text = Directory.GetCurrentDirectory() + "\\xsl\\default_html.xsl";
        }

        private void bttnOutputSelect_Click(object sender, EventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "XML File|*.xml|HTML File|*.html|XHTML File|*.xhtml";
            sfd.Title = "Save XML output";
            sfd.ShowDialog();

            if (sfd.FileName != "")
            {
                tbOutputFile.Text = sfd.FileName;
            }
        }

        private void bttnCancel_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.Cancel;
            this.Hide();
        }

        private void bttnExport_Click(object sender, EventArgs e)
        {
            string errorMessage = "";
            // Catch potential errors with the file export or XSL compiliation
            try
            {
                if (cbApplyTransform.Checked)
                {
                    WarFoundryXmlWithXslExporter.GetDefault().ExportArmyWithTransform(myArmy, tbOutputFile.Text, tbXslPath.Text);
                }
                else
                {
                    WarFoundryXmlWithXslExporter.GetDefault().ExportArmy(myArmy, tbOutputFile.Text);
                }
            }
            catch (XsltCompileException ex)
            {
                errorMessage = Translation.GetTranslation("mbErrorCompileFailed", "") + 
                    ":\n" + ex.Message;
            }
            catch (XsltException ex)
            {

                errorMessage = Translation.GetTranslation("mbErrorXSLTFailed", "") +
                    ":\n" + ex.Message;
            }
            catch (FileNotFoundException ex)
            {
                errorMessage = Translation.GetTranslation("mbErrorFileNotFoundFailed", "") +
                    ":\n" + ex.Message;
            }
            catch (IOException ex)
            {
                errorMessage = Translation.GetTranslation("mbErrorIOFailed", "") +
                    ":\n" + ex.Message;
            }
            catch (Exception ex)
            {
                errorMessage = Translation.GetTranslation("mbErrorFailed", "") +
                    ":\n" + ex.Message;
            }
            if (errorMessage != "")
            {
                MessageBox.Show(errorMessage, "Error During Export", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            this.DialogResult = DialogResult.OK;
            this.Hide();
        }

        private void tbOutputFile_Change(object sender, EventArgs e)
        {
            if (tbOutputFile.Text != "")
            {
                bttnExport.Enabled = true;
            }
            else
            {
                bttnExport.Enabled = false;
            }
        }

        private void cbApplyTransform_CheckedChanged(object sender, EventArgs e)
        {
            if (cbApplyTransform.Checked)
            {
                tbXslPath.Enabled = true;
                bttnXslSelect.Enabled = true;
            }
            else
            {
                tbXslPath.Enabled = false;
                bttnXslSelect.Enabled = false;
            }
        }

        private void bttnXslSelect_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            
            ofd.InitialDirectory = Directory.GetCurrentDirectory() + "\\xsl";
            ofd.Filter = "XSL Files|*.xsl";
            DialogResult result = ofd.ShowDialog();

            if (result == DialogResult.OK)
            {
                tbXslPath.Text = ofd.FileName;
            }
          
        }
    }
}