protected override void OnMouseDoubleClick(MouseEventArgs e) { base.OnMouseDoubleClick(e); bool left = (e.Button & MouseButtons.Left) != 0; bool inPatternZone = GetPatternForCoord(e.X, e.Y, out int channelIdx, out int barIdx); if (left && inPatternZone) { var channel = Song.Channels[channelIdx]; var pattern = channel.PatternInstances[barIdx]; if (pattern != null) { bool multiplePatternSelected = (maxSelectedChannelIdx != minSelectedChannelIdx) || (minSelectedPatternIdx != maxSelectedPatternIdx); var dlg = new RenameColorDialog(pattern.Name, pattern.Color, !multiplePatternSelected) { StartPosition = FormStartPosition.Manual, Location = PointToScreen(new System.Drawing.Point(e.X, e.Y)) }; if (dlg.ShowDialog() == DialogResult.OK) { App.UndoRedoManager.BeginTransaction(TransactionScope.Song, Song.Id); if (multiplePatternSelected) { for (int i = minSelectedChannelIdx; i <= maxSelectedChannelIdx; i++) { for (int j = minSelectedPatternIdx; j <= maxSelectedPatternIdx; j++) { Song.Channels[i].PatternInstances[j].Color = dlg.NewColor; } } } else if (Song.Channels[selectedChannel].RenamePattern(pattern, dlg.NewName)) { pattern.Color = dlg.NewColor; } ConditionalInvalidate(); App.UndoRedoManager.EndTransaction(); } } } }
protected override void OnMouseDoubleClick(MouseEventArgs e) { base.OnMouseDoubleClick(e); var buttonIndex = (e.Y + scrollY) / ButtonSizeY; var songIndex = buttonIndex - 1; var instrumentIndex = buttonIndex - (App.Project.Songs.Count + 2); if (songIndex >= 0 && songIndex < App.Project.Songs.Count) { var song = App.Project.Songs[songIndex]; var dlg = new SongEditDialog(song) { StartPosition = FormStartPosition.Manual, Location = PointToScreen(new System.Drawing.Point(e.X - 210, e.Y)) }; if (dlg.ShowDialog() == DialogResult.OK) { App.UndoRedoManager.BeginTransaction(TransactionScope.Project); App.Stop(); App.Seek(0); if (App.Project.RenameSong(song, dlg.NewName)) { song.Color = dlg.NewColor; song.Tempo = dlg.NewTempo; song.Speed = dlg.NewSpeed; song.Length = dlg.NewSongLength; song.PatternLength = dlg.NewPatternLength; song.BarLength = dlg.NewBarLength; ConditionalInvalidate(); SongModified?.Invoke(song); } App.UndoRedoManager.EndTransaction(); } } else if (instrumentIndex > 0 && instrumentIndex <= App.Project.Instruments.Count) { var instrument = App.Project.Instruments[instrumentIndex - 1]; var shiftY = (buttonIndex * ButtonSizeY - scrollY); var volRect = GetButtonRect(4, shiftY); if (e.X < volRect.Left) { var dlg = new RenameColorDialog(instrument.Name, instrument.Color) { StartPosition = FormStartPosition.Manual, Location = PointToScreen(new System.Drawing.Point(e.X - 160, e.Y)) }; if (dlg.ShowDialog() == DialogResult.OK) { App.UndoRedoManager.BeginTransaction(TransactionScope.Project); if (App.Project.RenameInstrument(instrument, dlg.NewName)) { instrument.Color = dlg.NewColor; InstrumentColorChanged?.Invoke(instrument); ConditionalInvalidate(); } App.UndoRedoManager.EndTransaction(); } } } }