private void ChartArea_MouseDoubleClick(object sender, MouseEventArgs e) { if (!CanEditReadBounds) { return; } FirstTrack = 0; LastTrack = MainForm.MaxTrack; Repaint(); ReadBoundsChanged?.Invoke(this, null); }
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(); }
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(); }