summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_ops.cc
AgeCommit message (Collapse)Author
2014-12-01Replace half-baked param metadata with descriptor.David Robillard
Among other things, this means that automation controls/lists have the actual min/max/normal/toggled of parameters, and not those inferred from the Parameter ID, which is not correct for things like plugin parameters. Pushing things down to the Evoral::ParmeterDescriptor may be useful in the future to have lists do smarter things based on parameter range, but currently I have just pushed down the above-mentioned currently used attributes.
2014-12-01Add comment about parameters to coverage() including the end point.Colin Fletcher
2014-11-25Remove dead code.David Robillard
2014-11-22Fix quantization and other time-related ops.David Robillard
2014-11-22Wrap MusicalTime in a class.David Robillard
This lets us get a more explicit handle on time conversions, and is the main step towards using actual beat:tick time and getting away from floating point precision problems.
2014-11-18Fix incredibly unlikely NULL pointer dereference.David Robillard
2014-11-18Fix zoom out limiting logic to actually limit minimum zoom.David Robillard
2014-11-16Support cut/copy/paste of MIDI notes and controllers at the same time.David Robillard
2014-11-16Support cut/copy/paste of several regions and lines at once.David Robillard
The idea here is to do the reasonable thing, and copy objects of some type (e.g. MIDI region, gain line) to tracks with a matching type. The user can override this with a track selection, which will be used straight-up. Lost: ability to copy/paste lines across types, e.g. gain to pan. This is often questionable, but sometimes useful, so we will need to implement some sort of "greedy mode" to make it possible. Implementation simple, but not sure what to do. Perhaps this should only be possible if one automation track is explicitly (i.e. via track selection) involved, and the types are at least compatible-ish?
2014-11-16Don't add spurious points when copy/pasting automation.David Robillard
2014-11-16Reset repeated paste state on cut/copy.David Robillard
2014-11-16Use an enum for RoundMode instead of magic numbers.David Robillard
No functional changes in this one (for easier auditing), but towards having round up/down only if necessary modes, rather than kludging around that situation with a double round as we do currently.
2014-11-14Implement "multi-paste" for notes, regions, and automation.David Robillard
The idea here is that pasting several times to the same location doesn't make sense. Instead, the paste is appended past the last paste, snapped to the grid. This make it simple to replicate a given section a number of times, simply by copying once and pasting several times. This behaviour only appears when successive pastes are done to the same location (whatever the edit point is). When the paste point changes, the "multi-paste" state is reset. Boots 'n cats 'n boots 'n cats.
2014-11-14Fix MIDI note cut/copy/paste.David Robillard
2014-11-14add abort() to non-reached codeRobin Gareus
This cleans up a lot of false-positives in static analysis and also helps compilers to optimize code paths in general. (tagging the fatal stingstream operator as ‘noreturn’ is far less trivial)
2014-11-13Fix crash when deleting overlapped regions.David Robillard
Use RegionSelection for MIDI regions as well, since the old dumb stub didn't do some things correctly. There's probably no reason to have a separate class for this at all, and some good ones for putting all regions in the same selection, so we should probably do that. For now they are still separate in the selection but use the same base class.
2014-10-29fix vertical canvas scrolling Robin Gareus
* properly account for hidden tracks * allow to scroll to last track
2014-10-21a few tweaks to zoom computations so that zoom-to-range works correctlyPaul Davis
2014-10-02Don't select newly created regions after splitting selected regions (except ↵Colin Fletcher
on Mixbus) I can't see a reason to select the newly-created regions after splitting selected regions: I can't think of any case where you'd want the next operation to apply to both the regions, and it makes it very easy (in my experience) to trim/move/&c. both regions afterwards by mistake. However, this behaviour is desired for Mixbus, so make the selection of regions after a split of selected regions dependent on Profile->get_mixbus() for now.
2014-10-02Text tweaks and typo fixesColin Fletcher
2014-09-17do not stupidly try to save punch/loop/session ranges during clear_ranges opPaul Davis
2014-09-15fix various loop-initiation faultsBen Loftis
2014-09-13Make zoom-to-session include regions currently being recordedColin Fletcher
2014-09-06fundamentally change ArdourButton PangoLayout handlingRobin Gareus
This fixes issues where button text was set during static initialization where the widget style was not yet available, and a lot of related issues where the text was set before style.
2014-09-03fix Play Loop from range context menuBen Loftis
2014-08-31update track-header width when removing track(s).Robin Gareus
2014-07-24several fixes to make processor selection and deletion feel right, for both ↵Ben Loftis
mixer and editor-mixer strips
2014-07-24Remove "implicit" selection for plugin deletion.Ben Loftis
Allow deletions in the mixer strip to fall through to editor if nothing was selected.
2014-07-24Revert previous select-strips-under-mouse behaviorBen Loftis
However, keep the path for deletions in the editor-mixer via _entered_mixer_strip TODO: if nothing was deleted, assume the user was trying to delete something in the editor instead Show selected plugins by a red border TODO: more work on the selection model for plugins and mixer strips
2014-07-23Allow deletion of processors in editor_mixer_strip by pointing and pressing ↵Ben Loftis
Delete This had to be hacked because the editor_mixer strip is on the editor and doesnt respond to mixer keybindings. Also force the gain intry to lose focus if the user leaves the mixer strip. this will probably solve some long-standing complaints. although perhaps a more elegant solution is possible.
2014-07-23Add some new zoom-to-selection actions, so zoom tool is less needed.Ben Loftis
Reverse order of items in the zoom menus to match Ardour. Consolidate the extra zoom math into a function; this fixes a problem in zoom-to-session.
2014-07-15add Editor::trackviews_height() convenience function to determine height of ↵Paul Davis
trackview area of canvas; use to help fix set_visible_track_count(); don't consider hidden tracks in that function; add "Selected" to that selector menu
2014-07-14scroll up/down by tracks uses top edge as "focal point"; fix some other ↵Paul Davis
nasty code details
2014-07-11restore correct functioning of fit-tracks, which was mistakenly removed ↵Paul Davis
because of a failure to understand its complexities
2014-07-10add "fade range" operation, bound to alt-f at present by defaultPaul Davis
2014-07-08fix thinko with split selections. also ignore follow_edits when we are ↵Ben Loftis
splitting, because the playlist freeze and the newly added regions cause the playhead to jump to unexpected locations
2014-07-08initial implementation of "bring all media into session folder". Incomplete ↵Paul Davis
but basically functional for audio files
2014-07-06now that track and region selections are mutually exclusive, you need a ↵Ben Loftis
separate action to select-all-tracks and select-all-regions. also, preserve region selection during a split, iff we are working on a region selection: only add the newly created regions, dont change anything else in the selection; leave that in control of the user
2014-07-05new approach to selections which will help rationalize Split and similar ↵Ben Loftis
functions. Object and Track selections are now mutually exclusive. a split will happen at (a) selection->regions (b) the intersection of edit_point and selection->tracks or (c) the region under the mouse, IFF nothing else is selected.
2014-07-05further rationalization of the editor. after a split, ardour was switching ↵Ben Loftis
the tool to object mode. this is the only place were ardour switched the tool for the user. that has been removed. Delete operation should not depend on the mouse mode, but rather the existence of selections. this solves the problem where you have selected regions in smart mode, but cant delete them because the mouse is in the top half (fange mode) of a track
2014-07-03add new regions created by split to selection after operation is completePaul Davis
2014-07-03lots of keybinding changes. added a new action to allow removing markers at ↵Ben Loftis
the playhead location. numpad now allows you to access marks higher than 9. to locate to a marker, use the numpad decimal to start and end the operation - for example press .19. to locate to marker 19. also added alternate bindings for redo, delete, and several other alternates that will be needed in subsequent commits. tab is not working, using either Tab or nabla in the binding.in file
2014-07-03fix the naming and behavior of always-play-range to match the button, which ↵Ben Loftis
is follow-edits. when you select a range, the playhead should jump to the start of the range and begin to play the selection. BUT (unlike previous implementation) if the user wants to relocate the playhead, then that should be allowed. The user should always remain in charge of the playhead location. NOTE: your previous config setting will be invalidated. You must re-save a session to overwrite with the new config variable
2014-07-02simplify zooming, remove Editor::clamp_samples_per_pixel(), fix getting ↵Paul Davis
"stuck" at max and min zoom levels
2014-07-01Merge branch 'ripple-mode-cc' into cairocanvasColin Fletcher
Fix up merge conflicts in gtk2_ardour/editor_mouse.cc gtk2_ardour/editor_ops.cc Also fix up compile errors.
2014-07-01Remove unused codeColin Fletcher
This code was changed to implement ripple mode, but meanwhile it was removed altogether in cairocanvas. Remove it here too to simplify merging.
2014-06-29suspend route redisplay for (rec-en, solo, mute and monitor) batch changesRobin Gareus
2014-06-28use state Session::StateProtectorRobin Gareus
2014-06-27replace old implementation of Editor::_ensure_time_axis_view_is_visible() ↵Paul Davis
with the guts of Editor::ensure_track_is_visible(), then remove the latter. Also change all users of ensure_track_is_visible() to use _ensure_time_axis_view_is_visible()
2014-06-25move utility functions into a dedicated namespaceRobin Gareus