Esempio n. 1
0
 private void ChartArea_MouseDoubleClick(object sender, MouseEventArgs e)
 {
     if (!CanEditReadBounds)
     {
         return;
     }
     FirstTrack = 0;
     LastTrack  = MainForm.MaxTrack;
     Repaint();
     ReadBoundsChanged?.Invoke(this, null);
 }
Esempio n. 2
0
        private void ChartArea_MouseMove(object sender, MouseEventArgs e)
        {
            if (Image == null)
            {
                return;
            }
            int track;
            int sectorIndex;

            GetTrackSectorByMousePosition(e.X, e.Y, out track, out sectorIndex);
            TrackFormat tf = (track >= 0 && track < Image.Tracks.Cnt) ? Image.Tracks[track] : null;

            if (selecting)
            {
                int minTrack = Math.Min(track, this.track);
                minTrack = Math.Max(0, minTrack);
                int maxTrack = Math.Max(track, this.track);
                maxTrack = Math.Min(maxTrack, MainForm.MaxTrack);
                if (maxTrack == minTrack)
                {
                    maxTrack++;
                }
                if (maxTrack > MainForm.MaxTrack)
                {
                    maxTrack--;
                    minTrack--;
                    if (minTrack < 0)
                    {
                        minTrack = 0;
                    }
                }
                Select(minTrack, maxTrack);
                ReadBoundsChanged?.Invoke(this, null);
            }
            TrackLV.Text = track.ToString();
            if (sectorIndex >= 0)
            {
                int diskSector = tf.Layout.Data[sectorIndex].SectorNumber;
                SectorLV.Text     = diskSector.ToString();
                StatusLV.Text     = tf.Layout.Data[sectorIndex].ProcessResult.ToString();
                SectorSizeLV.Text = tf.Layout.Data[sectorIndex].SizeBytes.ToString();
                CylLV.Text        = tf.Layout.Data[sectorIndex].Cylinder.ToString();
                HeadLV.Text       = tf.Layout.Data[sectorIndex].Head.ToString();
                if (!selecting)
                {
                    ClearHighlight(MapCell.Highlighted | MapCell.Hover);
                    tf.Layout.Data[sectorIndex].MapCellValue |= MapCell.Hover;
                    tf.MapModified = true;
                }
            }
            else
            {
                if (track >= 0 && track < Image.Tracks.Cnt)
                {
                    if (Image[track].FormatName == TrackFormatName.Unscanned)
                    {
                        StatusLV.Text = TrackFormatName.Unscanned.ToString();
                    }
                    else if (Image[track].Scanning)
                    {
                        StatusLV.Text = "Scanning";
                    }
                    else
                    {
                        StatusLV.Text = "";
                    }
                    ClearSectorInfo(false, false);
                }
                else
                {
                    ClearSectorInfo(false, true);
                }
                ClearHighlight(MapCell.Hover);
            }
            Repaint();
        }
Esempio n. 3
0
        private void ChartArea_MouseMove(object sender, MouseEventArgs e)
        {
            if (Image == null)
            {
                return;
            }
            int track;
            int sector;

            GetTrackSectorByMousePosition(e.X, e.Y, out track, out sector);
            int  sectorNumber   = track * SectorsOnTrack + sector;
            bool sectorSelected = sector >= 0 && sector < SectorsOnTrack && track >= 0 && track < MainForm.MaxTrack && sectorNumber < Image.SizeSectors;

            if (selecting)
            {
                int minTrack = Math.Min(track, this.track);
                minTrack = Math.Max(0, minTrack);
                int maxTrack = Math.Max(track, this.track);
                maxTrack = Math.Min(maxTrack, MainForm.MaxTrack);
                if (maxTrack == minTrack)
                {
                    maxTrack++;
                }
                if (maxTrack > MainForm.MaxTrack)
                {
                    maxTrack--;
                    minTrack--;
                    if (minTrack < 0)
                    {
                        minTrack = 0;
                    }
                }
                Select(minTrack, maxTrack);
                ReadBoundsChanged?.Invoke(this, null);
            }
            TrackLV.Text = track.ToString();
            if (sectorSelected)
            {
                int diskSector = Image.StandardFormat.Layout.Data[sector].SectorNumber;
                SectorLV.Text = diskSector.ToString();
                StatusLV.Text = Image.Sectors[sectorNumber].ToString();
                if (Image is TrDosImage)
                {
                    FileData file = ((TrDosImage)Image).GetFileByDiskAddress(track, sector);
                    if (file != null)
                    {
                        FileLV.Text       = file.FileName;
                        ExtenstionLV.Text = file.Extension.ToString();
                    }
                    else
                    {
                        FileLV.Text       = "";
                        ExtenstionLV.Text = "";
                    }
                    if (!selecting)
                    {
                        ClearHighlight(MapCell.Highlighted | MapCell.Hover);
                        WorkMap[sectorNumber] |= MapCell.Hover;
                        if (file != null)
                        {
                            int sn = file.Track * SectorsOnTrack + file.Sector;
                            HighlightFile(sn, Math.Min(file.Size, Image.SizeSectors - sn));
                        }
                    }
                }
                else if (!selecting)
                {
                    ClearHighlight(MapCell.Highlighted | MapCell.Hover);
                    WorkMap[sectorNumber] |= MapCell.Hover;
                }
            }
            else
            {
                ClearTrackSectorFileName(false);
                ClearHighlight(MapCell.Hover);
            }
            Repaint();
        }