private void UpdateResourcePackContextMenuItem_Click(object sender, EventArgs e)
        {
            if (SelectedImageMetadata.Count == 0)
            {
                return;
            }

            string fileName;

            using (var op = new OpenFileDialog {
                Filter = Consts.ExportResourcePackFilter
            })
            {
                if (op.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
                fileName = op.FileName;
            }

            var resourcePack = m_resourcePackManager.LoadFromFile(fileName);
            var images       = SelectedImageMetadata.Select(x =>
            {
                var imageData = m_firmware.ReadImage(x);
                var imageSize = imageData.GetSize();
                return(new ExportedImage(x.Index, imageSize, imageData));
            }).ToList();

            using (var createResourcePackWindow = new CreateResourcePackWindow(m_resourcePackManager, m_definitions, m_firmware.Definition.Name, images, resourcePack))
            {
                createResourcePackWindow.ShowDialog();
            }
        }
        private void ExportBinaryMenuItem_Click(object sender, EventArgs e)
        {
            if (SelectedImageMetadata.Count == 0)
            {
                return;
            }

            string directoryPath;

            using (var fb = new FolderBrowserDialog())
            {
                if (fb.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
                directoryPath = fb.SelectedPath;
            }

            var exportData = SelectedImageMetadata.Select(x => new { Metadata = x, ImageBytes = m_firmware.ReadImageAsByteArray(x) });

            foreach (var data in exportData)
            {
                try
                {
                    var fileName = Path.Combine(directoryPath, "0x" + data.Metadata.Index.ToString("X2") + ".bin");
                    File.WriteAllBytes(fileName, data.ImageBytes);
                }
                catch
                {
                    // Ignore
                }
            }
        }
        private void PasteButton_Click(object sender, EventArgs e)
        {
            if (SelectedImageMetadata.Count == 0)
            {
                return;
            }

            var copiedImages = m_clipboardManager.GetData();

            ImportImages(SelectedImageMetadata.Select(x => x.Index).ToList(), copiedImages);
        }
        private void ExportContextMenuItem_Click(object sender, EventArgs e)
        {
            if (SelectedImageMetadata.Count == 0)
            {
                return;
            }

            var images = SelectedImageMetadata.Select(x =>
            {
                var imageData = m_firmware.ReadImage(x);
                var imageSize = imageData.GetSize();
                return(new ExportedImage(x.Index, imageSize, imageData));
            }).ToList();

            using (var createResourcePackWindow = new CreateResourcePackWindow(m_resourcePackManager, m_firmware.Definition.Name, images))
            {
                createResourcePackWindow.ShowDialog();
            }
        }
        private void ExportBitmapMenuItem_Click(object sender, EventArgs e)
        {
            if (SelectedImageMetadata.Count == 0)
            {
                return;
            }

            string directoryPath;

            using (var fb = new FolderBrowserDialog())
            {
                if (fb.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
                directoryPath = fb.SelectedPath;
            }

            var exportData = SelectedImageMetadata.Select(x => new { Metadata = x, ImageData = m_firmware.ReadImage(x) });

            foreach (var data in exportData)
            {
                try
                {
                    using (var image = BitmapProcessor.Create1BitBitmapFromRaw(data.ImageData))
                    {
                        var fileName = Path.Combine(directoryPath, "0x" + data.Metadata.Index.ToString("X2") + Consts.BitmapFileExtensionWoAsterisk);
                        image.Save(fileName, ImageFormat.Bmp);
                    }
                }
                catch
                {
                    // Ignore
                }
            }
        }