private void NewImage(object sender, EventArgs e)
        {
            if (Image != null && Image.Modified)
            {
                if (MessageBox.Show("Образ не был сохранен. Продолжить?", "", MessageBoxButtons.YesNo) != DialogResult.Yes)
                {
                    return;
                }
            }
            string value = newImageName;

            if (!InputBox.Query("", "Введите имя образа", ref value))
            {
                return;
            }
            int size = newImageSize;

            if (!InputBox.InputInt32("", "Введите размер в треках", ref size, 1, MainForm.MaxTrack))
            {
                return;
            }
            newImageName = value;
            newImageSize = size;
            Image        = new IsDosImage(size * SectorsOnTrack, map)
            {
                Name = value
            };
            map.Image   = Image;
            stats.Image = Image;
            SetEnabled();
            Log.Info?.Out($"Образ диска создан. Имя: {value} | Размер: {size} треков ({size * SectorsOnTrack} секторов).");
        }
        private void MergeImage(object sender, EventArgs e)
        {
            OpenFileDialog openDialog = new OpenFileDialog()
            {
                Filter = "FDI Files (*.fdi)|*.fdi|All Files (*.*)|*.*"
            };

            if (openDialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            IsDosImage image = new IsDosImage();
            string     text;

            if (image.LoadFdi(openDialog.FileName, File.ReadAllBytes(openDialog.FileName), out text) != 0)
            {
                Log.Error?.Out($"Ошибка при чтении файла: {openDialog.FileName}");
                return;
            }
            int addedReadSectors;

            Image.Merge(image, out addedReadSectors);
            map.Repaint();
            stats.Repaint();
            Log.Info?.Out($"Образ слит с образом из файла: {openDialog.FileName}. Добавлено прочитанных секторов: {addedReadSectors}");
        }
 public IsDosReader(Control parent, DiskReaderParams dparams) : base(parent, 1024, 5, dparams)
 {
     upperSidePanel.Visible   = false;
     readModePanel.Visible    = false;
     map.FileL.Visible        = false;
     map.FileLV.Visible       = false;
     map.ExtenstionLV.Visible = false;
     readCatalogue.Visible    = false;
     showCatalogue.Visible    = false;
     showCatFromTrack.Visible = false;
     Image = new IsDosImage(160 * SectorsOnTrack, map)
     {
         Name = ""
     };
     map.Image   = Image;
     stats.Image = Image;
     map.Repaint();
     stats.Repaint();
     loadImage.Click         += LoadImage;
     mergeImage.Click        += MergeImage;
     newImage.Click          += NewImage;
     saveImage.Click         += SaveImage;
     readForward.Click       += ReadForward;
     readBackward.Click      += ReadBackward;
     readRandomSectors.Click += ReadRandomSectors;
 }
        private void LoadImage(object sender, EventArgs e)
        {
            if (Image != null && Image.Modified)
            {
                if (MessageBox.Show("Образ не был сохранен. Продолжить?", "", MessageBoxButtons.YesNo) != DialogResult.Yes)
                {
                    return;
                }
            }
            OpenFileDialog openDialog = new OpenFileDialog()
            {
                Filter = "FDI Files (*.fdi)|*.fdi|All Files (*.*)|*.*"
            };

            if (openDialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            IsDosImage image = new IsDosImage();
            string     text;

            if (image.LoadFdi(openDialog.FileName, File.ReadAllBytes(openDialog.FileName), out text, map) != 0)
            {
                Log.Error?.Out($"Ошибка при чтении файла: {openDialog.FileName}");
                return;
            }
            Image       = image;
            map.Image   = Image;
            stats.Image = Image;
            map.Repaint();
            stats.Repaint();
            SetEnabled();
            int loadedSize = Image.SizeTracks;

            Log.Info?.Out($"Образ загружен. Имя: {Image.Name} | Размер: {loadedSize} треков | FileName: {openDialog.FileName}");
        }