Commit graph

100 commits

Author SHA1 Message Date
Paul Davis
1ecb28da47 tweak local tempo scope infrastructure 2025-08-08 15:03:11 -06:00
Paul Davis
a07ba74c9d fix constness in relationship to EditingContext:: local tempo map 2025-08-08 14:34:03 -06:00
Paul Davis
e682e1fde4 refinements to infrastructure for an EditingContext's locally scoped tempo map 2025-08-08 14:34:03 -06:00
Paul Davis
28e0082868 use std::unique_ptr for a couple of EditingContext members 2025-08-08 12:12:09 -06:00
Paul Davis
4f5848d85c action-ify stationary playhead mgmt; fix up follow-playhead action handling 2025-08-08 11:35:20 -06:00
Paul Davis
d654d98661 fix a #warning about zoom focus state 2025-07-30 22:18:26 -06:00
Paul Davis
9c890f2690 zoom focus and snap mode get the stateful-action treatment 2025-07-30 15:28:46 -06:00
Paul Davis
1d4e3940d1 large-scale refactoring of Pianoroll, CueEditor and AudioClipEditor
Enables code-sharing between "clip editors"
2025-07-29 18:16:35 -06:00
Paul Davis
7be70d658b Revert "refactor pianoroll/cueeditor/audioclipeditor to share code and do the right stuff (compile success stage)"
This reverts commit 01beb00a5f.
2025-07-17 22:38:05 -06:00
Paul Davis
01beb00a5f refactor pianoroll/cueeditor/audioclipeditor to share code and do the right stuff (compile success stage) 2025-07-17 22:36:25 -06:00
Paul Davis
74a0272c50 Editor/EditingContext get proxyimplementations of HistoryOwner::add_commands() 2025-07-09 17:01:22 -06:00
Paul Davis
e448c3f4aa allow pianorolls not to show MIDI channel selector/dropdown
pianorolls have the visibility channel control. at some point we want the same idea
for the timeline, but it is not there yet
2025-06-23 16:16:12 -06:00
Paul Davis
c6a49fdd50 basic implementation of Live-style kbd-driven automation editing 2025-06-17 14:03:43 -06:00
Paul Davis
ea1695dbc0 code refactoring and action name handling to make follow-playhead work in multiple editing contexts 2025-06-15 21:17:42 -06:00
Robin Gareus
666a32499c
Move the follow_edits from toolbar to editor context bar 2025-06-12 22:11:33 +02:00
Paul Davis
08da5255fe tweak EditingContext APIs to get context menus in pianoroll working sensibly
There is now a separate context menu for note-context clicks and "region" context clicks.
Something similar may be desirable for timeline editing too
2025-06-12 12:09:11 -06:00
Paul Davis
6918a8a267 some rationalization to how Editor & CueEditor (Pianoroll) handle ZoomLevel and TimeOrigin changes 2025-05-19 14:57:19 -06:00
Paul Davis
94dbcaa7e2 provide a new EditingContext/Editor method to set the cursor appropriately for section selections 2025-05-14 11:37:01 -06:00
Paul Davis
8d7b4f7991 fixes so that cursor changes inside a MidiRegionView work as intended
They already worked in the PianorollMidiView, because that hands off enter/leave events
to the parent EditingContext (a Pianoroll). But MidiRegionView and Editor were
not interacting in the same way, so leaving a note object would not cause the Editor
to do the right thing with the cursor.
2025-04-25 11:28:45 -06:00
Paul Davis
5526880ac8 do not create an empty region for a cue slot when it is selected for editing
There's an assumption that slots with regions cannot be recorded into,
so adding a region to an empty slot makes it impossible to record to that
slot.

Create the region at the appropriate point during a NoteCreateDrag.

This may also be needed for some automation drawing drag operations.
2025-04-24 12:07:19 -06:00
Paul Davis
fad3c32267 better handling of cloned bindings/actions 2025-04-01 14:55:32 -06:00
Paul Davis
51dbe70b44 no more trim cursor in drae mode in the pianoroll
For some reason, we allow users to trim notes on the timeline when in
draw mode. Not sure why. We don't allow this in pianorolls, so make
sure the cursors don't suggest otherwise
2025-03-20 14:14:08 -06:00
Paul Davis
04a8fb1eb6 add mostly-function play/loop/solo buttons to pianoroll
These need to be hidden when working on cues
2025-03-15 10:56:47 -06:00
Paul Davis
179fd25715 some fixes for sigc::connection mgmt and lifetime mgmt for EditingContext 2025-03-14 15:56:21 -06:00
Paul Davis
49d9701aaf cleanup a virtual method that is no longer relevant after the prior commit 2025-03-12 21:15:32 -06:00
Paul Davis
252be10a73 fix action group used for Editor/set-mouse-mode-object-range 2025-03-12 21:10:44 -06:00
Paul Davis
56e587476e continuing work managing bindings, actions and action groups 2025-03-12 17:59:24 -06:00
Paul Davis
83d2adfd67 remove current_editing_context concept
All bindings, actions and members of an EditingContext are now per-EditingContext,
and have no impact on others (other than cursors).
2025-03-12 12:36:34 -06:00
Paul Davis
801099e057 use Gtkmm2ext::BindingSet for the GUI 2025-03-10 18:49:02 -06:00
Robin Gareus
d8e7e24f59
Use dedicated common actions per edit context
Pianoroll and main editor mouse-mode/tool actions are
now separate.
2025-03-05 22:49:37 +01:00
Paul Davis
852ad9a7da move grid updating code and members into EditingContext 2025-01-29 17:40:57 -07:00
Paul Davis
ef6502d88d initial refactoring to prepare for grid lines in pianoroll 2025-01-29 17:40:57 -07:00
Paul Davis
b82ae5590c ensure that a Pianoroll window (and its action groups) are deleted when appropriate 2025-01-28 13:29:40 -07:00
Paul Davis
454f87568a pianoroll window needs to forward key press events to make MIDI bindings active 2025-01-26 19:57:41 -07:00
Paul Davis
698ae7ca9f fix Pianoroll::zoom_to_show() so that it does what it says
... and also interacts with EditingContext::reset_zoom() correctly due to the
scaling factor that, for the Pianoroll, tries to show a bit more time than
is represented by the data
2025-01-26 15:51:18 -07:00
Paul Davis
22a5113b59 change how mouse mode actions are defined
they now use a lambda for the functor, and the lambda calls
current_editing_context() to pick which EditingContext will
be affected.

this design replaces one where each EditingContext had its
own set of mouse mode actions defined, using its own name
as the action group
2025-01-16 12:30:15 -07:00
Paul Davis
4e8591da99 move cut/copy/delete/paste operations into EditingContext
derived classes (Editor and Pianoroll) provide ::cut_copy() to wrap the
context-specific logic, and then both defer to MidiView for MIDI-specific
operations.

Note that this also changes several action names in ardour.keys.in
2025-01-14 15:31:53 -07:00
Paul Davis
13161a3975 refactor point-selection-changed logic "up" into EditingContext 2025-01-14 15:28:51 -07:00
Paul Davis
bd9ab55fa0 move zoom in/out buttons to EditingContext and use on the pianoroll 2025-01-07 12:59:13 -07:00
Paul Davis
d0890abe9c bring in change from bf7d4f895e but also try to fix API ambiguity and bug in that commit and existing code
_grid_type is an EditingContext member; grid_type is a method parameter
2025-01-05 11:49:18 -07:00
Paul Davis
0a40b50b86 refactor zoom focus handling so that all EditingContexts can use the same code 2024-12-29 11:24:16 -07:00
Paul Davis
25b830b032 fix event handling/routing from MidiView up to EditingContext
in particular, rename MidiView::canvas_group_event() to
avoid confusion with TimeAxisViewItem::canvas_group_event()
since a MidiRegionView inherits from both these classes.
2024-12-27 14:00:55 -07:00
Paul Davis
4c34f3cd29 provide rudimentary button control over percussive/sustained drawing in clip editor
Note that the note length selector can always be used to change the length of a note added
via a click
2024-12-13 21:48:18 -07:00
Paul Davis
0ff0d4df8b get mouse-centered zoom working in cue editor 2024-12-12 11:53:15 -07:00
Paul Davis
fb4fefe573 fix some issues with zoom focus after refactoring it into EditingContext 2024-12-12 11:53:15 -07:00
Paul Davis
a6ca9be006 refactor editor-y zooms into EditingContext 2024-12-12 11:53:15 -07:00
Paul Davis
15c86492fa use RAII for cursor mgmt around thread-waits 2024-12-08 15:09:32 -07:00
Paul Davis
98c9c03e9f remove all trace of cursor stacks; canvas cursor is always "just set" 2024-12-08 12:13:41 -07:00
Paul Davis
5b112e489b move zoom in/out actions into shared "Editing" group 2024-12-07 08:00:46 -07:00
Robin Gareus
d44ceb3ab7
Add API to consistently round start/end to duration to pixels 2024-11-28 15:00:40 +01:00