void writeManifest(PackageManifest manifest)
        {
            foreach (SampleEntry sample in manifest.Samples)
            {
                if (sample.StartPackFile != null) sample.StartPart = Path.GetFileName(sample.StartPackFile.Name);
                if (sample.LoopPackFile != null) sample.LoopPart = Path.GetFileName(sample.LoopPackFile.Name);
                if (sample.EndPackFile != null) sample.EndPart = Path.GetFileName(sample.EndPackFile.Name);
            }

            using (System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(Path.Combine(Path.GetTempPath(), "info.xml"), new System.Xml.XmlWriterSettings { Encoding = Encoding.UTF8, Indent = true }))
            {
                XmlSerializer ser = new XmlSerializer(typeof(PackageManifest));
                XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
                ns.Add(string.Empty, string.Empty);
                ser.Serialize(writer, manifest, ns);
                writer.Flush();
            }
        }
        void refreshSamples()
        {
            manifest = pack.GetManifest();
            if (manifest == null)
            {
                MessageBox.Show(this, "Package does not contain manifest!", Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            packAuthorTextBox.Text = manifest.Author;
            packWebTextBox.Text = manifest.Website;
            packDescriptionTextBox.Text = manifest.Description;

            foreach (SampleEntry entry in manifest.Samples)
            {
                samplesListView.Items.Add(new ListViewItem(new string[] { entry.Name, entry.Type, entry.Description }) { Tag = entry });
            }

            samplesListView.SelectedIndices.Clear();
        }
        void openFile()
        {
            if (pack != null) pack.Close();
            samplesListView.Items.Clear();
            ClearDetails();
            packAuthorTextBox.Text = packDescriptionTextBox.Text = packWebTextBox.Text = string.Empty;
            fileNameLabel.Text = string.Empty;
            pack = null;
            manifest = null;
            curEntry = null;

            pack = new Package(File.OpenRead(openFileDialog.FileName));
            pack.Load();
            fileNameLabel.Text = Path.GetFileName(openFileDialog.FileName);

            refreshSamples();
        }