13
0
Commit Graph

680 Commits

Author SHA1 Message Date
4f8714a038 Fix alignment of automation paste.
Preserve alignment between notes and control points when doing an internal
copy/paste of both.

Relative alignment between points on multi-paste is still not preserved.  Both
behaviours here are actually useful, perhaps a modifier...
2014-12-07 23:16:42 -05:00
603748d68a Unify gain and draw tools.
There might be a few special cases lingering around from attempts at magic tool
business, but this seems to work fine as far as I can tell.
2014-12-07 20:37:46 -05:00
bfbb0f6178 Add legatize and remove overlap MIDI operations.
We're going to need the ability to apply MIDI edit operations to a note/control
selection soon...
2014-12-06 23:42:11 -05:00
fd9ccc7058 Use an enum for RoundMode instead of magic numbers.
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-16 22:35:45 -05:00
31acd96384 Implement "multi-paste" for notes, regions, and automation.
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-14 20:04:19 -05:00
f900711136 port changes to ARDOUR::Location and ARDOUR::Locations APIs from Tracks to Ardour.
Fixes deadlocks caused by mutex on Locations list, and clarifies the purposes and uses of the class-level and
object-level change-related signals.
2014-10-24 12:18:46 -04:00
b73f725676 remove mouse zoom mode; bind z to zoom-to-range 2014-10-21 12:47:53 -04:00
8d8717800d add tearoff reattach for the editor 2014-10-16 13:44:36 -04:00
6a971e645d use new ARDOUR::Location signals in GUI
Conflicts:
	gtk2_ardour/editor_markers.cc
2014-09-19 23:06:26 -04:00
e9ab53402c add action and menu item to control use of skip playback 2014-09-17 12:28:36 -04:00
02af7cb418 alternate layout with a full-height editor-mixer, for mixbus 2014-07-28 11:27:02 -05:00
61c66afd4c Revert previous select-strips-under-mouse behavior
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-24 11:28:31 -05:00
05f3adaba3 Allow deletion of processors in editor_mixer_strip by pointing and pressing 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-23 16:58:43 -05:00
d46081c275 holding Primary(ctrl/cmd) allows user to make noncontiguous strip selections 2014-07-23 16:13:55 -05:00
b22e136887 Add some new zoom-to-selection actions, so zoom tool is less needed.
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-23 11:31:06 -05:00
b69870dfe6 add Editor::trackviews_height() convenience function to determine height of 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-15 18:09:04 -04:00
d0bc4b55fa scroll up/down by tracks uses top edge as "focal point"; fix some other nasty code details 2014-07-14 12:36:51 -04:00
492c933a69 fix the visible_tracks_selector to show * when user tweaks a track height. various experimental tweaks to visible_tracks_selector and a new zoom_preset_selector for Mixbus. 2014-07-14 10:08:55 -05:00
07e0f785f8 add "fade range" operation, bound to alt-f at present by default 2014-07-10 08:17:22 -04:00
8eeb02fe75 add Editor::edit_mode_strings to allow for i18n; correctly size ArdourDropdowns using longest, translated strings 2014-07-09 16:48:36 -04:00
c1166c9f63 fix thinko with split selections. also ignore follow_edits when we are splitting, because the playlist freeze and the newly added regions cause the playhead to jump to unexpected locations 2014-07-08 15:00:19 -05:00
fcabd5d8ee initial implementation of "bring all media into session folder". Incomplete but basically functional for audio files 2014-07-08 00:53:13 -04:00
67eaa62ee9 fix build after copy-n-paste/code change collision 2014-07-07 10:21:47 -04:00
d97199088b some code shuffling to make sure that cut mode always operates at the mouse location, with (maybe) the right regions 2014-07-07 10:13:26 -04:00
779fe6c082 add functionality for cut tool 2014-07-07 07:05:44 -04:00
7ec397c019 add basics of Cut mouse mode, no functionality yet. Icon images are still required 2014-07-07 07:05:43 -04:00
6d97d72999 remove some cruft with previous commits. remove option link-region-and-track-selection since they are now exclusive, and rename select-all-regions to select-all-objects to match the implementation 2014-07-06 14:02:13 -05:00
db60bc86b8 now that track and region selections are mutually exclusive, you need a 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-06 12:57:36 -05:00
555a5d6348 lots of keybinding changes. added a new action to allow removing markers at 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-03 17:50:14 -05:00
3dbf37eab7 simplify zooming, remove Editor::clamp_samples_per_pixel(), fix getting "stuck" at max and min zoom levels 2014-07-02 15:53:24 -04:00
4c79d35838 remove unused "zoom range clock" from code as part of zoom simplifications 2014-07-02 14:56:36 -04:00
e5e12acc56 Merge branch 'ripple-mode-cc' into cairocanvas
Fix up merge conflicts in
	gtk2_ardour/editor_mouse.cc
	gtk2_ardour/editor_ops.cc

Also fix up compile errors.
2014-07-01 19:10:47 +01:00
23e7cf1019 merge with master.
Manually resolved conflicts in import.cc and session.cc
2014-07-01 09:46:18 -04:00
77216ac468 add RAII DisplaySuspender 2014-06-28 23:22:15 +02:00
fd7cddb847 use a hash-table to cache gui properties 2014-06-28 22:02:20 +02:00
c706b1c4bb replace old implementation of Editor::_ensure_time_axis_view_is_visible() 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-27 10:49:05 -04:00
be37432bef removed no-longer-used Editor::track_canvas_motion() 2014-06-26 15:10:24 -04:00
298085eec2 use new ruler dialog class for context clicks on ruler labels area 2014-06-25 15:23:25 -04:00
4b515c178c remove unused code 2014-06-25 13:37:59 -04:00
66be061449 lock dialog MUST be a Gtk::Dialog so that it does not forward key (or other) events to the Editor 2014-06-25 11:47:35 -04:00
d5ef8f5f1e new timer-based GUI locking code 2014-06-25 08:28:36 -04:00
a12f43fa46 add a modal lock dialog for better testing (and someone might find it useful, too) 2014-06-24 10:14:07 -04:00
f147846863 add ability to save current action sensitivities and restore them, and to disable all action sensitivity.
This is needed to be able to lock the application fully on OS X, where the global menu bar would still allow interaction
even when a modal dialog is displayed.
2014-06-24 09:56:16 -04:00
6a5d805b38 more canvas refactoring.
Remove Canvas::Layout, use Canvas::Container for the same purpose, move child-rendering into Item::render_children() so that it
could theoretically be used by any derived type.
2014-06-22 11:41:05 -04:00
0796ccfb65 use newly factored canvas in gtk2_ardour 2014-06-21 11:44:22 -04:00
e7895e1f80 more work on cursor tracking state 2014-06-18 21:03:25 -04:00
becf857f48 a whole slew of changes related to centralizing and rationalizing cursor management.
Debugging output left in place to help address the reports that will come in as people test this more
2014-06-18 10:24:59 -04:00
f7844f4893 do most of the work related to adding new anchored trim cursors (but debugging/analysis continues) 2014-06-13 18:43:53 -04:00
7a0b2e1c18 fix scrolling behaviour in track headers (event was stolen by rulers because event coordinates made it look as if the event happened there) 2014-06-13 14:27:59 -04:00
6958409187 remove no-longer-used code 2014-06-12 16:18:38 -04:00
ea355bfe15 add canvas rulers event dispatch and reinstate scrolling behaviour 2014-06-12 15:58:05 -04:00
4b07d01532 remove header file includes of now-removed gtk custom ruler 2014-06-12 00:18:15 -04:00
b73352880e use canvas rulers now instead of gtk widgets
Some bugs that exist in master are still present.
2014-06-11 23:54:28 -04:00
c56d309bd7 make the icon set selector actually do something 2014-06-10 14:39:28 -04:00
d36afa6b8b forward scroll events from track control headers to the canvas, to get consistent scroll behaviour (whatever that behaviour is) 2014-06-09 10:02:38 -04:00
b530e8649e rename Editor::_canvas_bottom_rect as Editor::_canvas_drop_zone; increase its size; remove debug message 2014-06-09 09:09:21 -04:00
92bb0e0d7f fix problem with calls to Editor::trackview_by_y_position() when using motion events. The coordinate passed in was in canvas space and the method expected trackview space
To handle any further issues like this, I generalized and added an optional argument specifying that the canvas=>trackview transform is required, thus
centralizing where this done.
2014-06-08 14:41:29 -04:00
ad346dc638 reinstate a canvas group where we reparent regions while dragging, so that they are always on top.
I mistakenly removed this during the onecanvas changes.
2014-06-05 15:16:55 -04:00
e0533e9dd7 more profound changes to canvas scrolling, in particular find appropriate ScrollGroup for Canvas::{window,canvas}_to_{canvas,window}() 2014-06-03 16:13:12 -04:00
da7a860256 remove useless groups from timebar area, clarify scroll group naming in editor 2014-06-03 16:11:24 -04:00
5696199daf remove timebar canvas and just use a single canvas instead. This is just part one - lots of minor fixes to be done 2014-06-03 16:10:27 -04:00
6019f06bdf different approach to independent scrolling, involving ArdourCanvas::ScrollGroup
The idea now is that a scroll group item can be added to the canvas which will causes its children to scroll in either or both
directions (horizontal or vertical). There are few complications: the position() of the ScrollGroup is ambiguous depending
on whether you want it with scroll taken into account or not, so Item::canvas_position() was added, which defaults to
the same value as Item::position() but is overridden by ScrollGroup to return the position independent of scrolling. This
method is used when translating between item/canvas/window coordinate systems.

Note that the basic idea is that we MOVE the scroll group when a scroll happens. This mirrors what happens in the GnomeCanvas,
where Nick Mainsbridge came up with a great idea that allowed unification of the time bar and track canvases.
2014-06-03 16:10:27 -04:00
74bc0c8468 substantive changes to the logic and safety for naming of (audio/MIDI) sources, especially when created via import 2014-06-02 11:20:37 -04:00
4843c5d5cf towards region-trims preserving fade duration 2014-05-31 03:53:59 +02:00
918a0ac5f9 update x-fade context-menu 2014-05-29 07:49:26 +02:00
356c1013ae change return type of Editor::axis_view_from_route() 2014-05-19 14:00:36 -04:00
d75c7151d4 Ripple mode: basic implementation
Add a value for Ripple to EditMode enum.

Add Ripple edit mode to edit mode dropdown, by adding it to the
Editor::build_edit_mode_menu() helper function, and remove the old code that
added items to the (now unused) Editor::edit_mode_strings.

Add the regions that should be affected by the drag to RegionDrag::_views so
that the drag carries them along automatically.

Use a copy of the RegionList in Playlist::core_ripple(), since bad things
happen when iterating over regions and they get moved around in the list.

Handle rippling in removal of regions from playlist.

When dragging in ripple mode, exclude all regions that lie before the
original start position of the selected regions being dragged from
rippling: this is what Mixbus does.

Make editor dragging respect snap-to settings, by using the existing
compute_x_delta() function, which did almost the right thing. Move setting
of _last_frame_position out of that function so all ripple-dragged regions
can move.

Ripple when dragging from region list: even though Mixbus doesn't do this, it
seems like a good idea.

Prevent multi-track selection being dragged across tracks, by making
RegionMotionDrag::y_movement_allowed() virtual, and overriding it in
RegionRippleDrag to forbid dragging of selections containing regions on more
than one track to dofferent tracks in ripple mode.

Remember which TimeAxisView a ripple-mode drag that's allowed cross-track
drags started from, so that the effect of rippling regions after any region
that's dragged off that track can be undone.
2014-05-07 19:46:24 +01:00
38125d60c9 "sequence regions" operation (remove space between selected regions) added, c/o Thomas Brand 2014-04-29 00:11:05 -04:00
5668eea2a3 add a transparent rect that is always located at the bottom of the track canvas
This gives us an event/drag-n-drop/click target for things "at the bottom"
2014-04-16 04:16:56 -04:00
dbb8501429 make our intentions even clearer when call Editor::track_canvas_viewport_size_allocated() 2014-04-16 02:55:08 -04:00
6bcee4e9c8 rename ArdourMenu to ArdourDropdown 2014-03-26 11:40:25 -05:00
4e5d977fb1 add back track shrink/expand buttons 2014-03-25 10:43:04 -04:00
200a67fba8 most of the support for save/restore of visible track count 2014-03-25 10:33:18 -04:00
da36a8ee09 first part of switch from shrink/expand tracks to pyramix-style "pick number of visible tracks". function to follow shortly, this is the control widget part 2014-03-25 08:21:08 -04:00
95f81e2d24 add optional arg to Editor::ensure_time_axis_view_is_visible() to "force" "make it visible as the top track" behaviour 2014-03-24 19:46:45 -04:00
harrison
b9708d5f6b New theme for editor window using ArdourMenu 2014-03-23 18:11:42 -05:00
4f7d94ea67 latest tweaks to autoscroll: symmetrical boundary on both sides, stop runaway scrolling, and more 2014-03-21 09:49:35 -04:00
65b4308c84 first pass at quantizing vertical scroll to whole tracks.
Dragging regions vertically does the quantization BUT speed control is lacking and the region ends up on
a track that is still invisible ... to be fixed as the sun rises.
2014-03-21 07:02:32 -04:00
9df3157dfc big rework of scrolling, horizontal part considered almost 100% done.
Many more changes than I would typically like in a single commit, but this was all very intertwined.
Vertical scrolling using track-stepping still to follow.
2014-03-20 13:29:45 -04:00
5cbb60d339 fix display of time selection rect(s) when switching mouse modes 2014-02-26 10:50:51 -05:00
c04285addf convert canvas_event_frame() and window_event_frame() to canvas_event_sample() and window_event_sample() to go along with the convention adopted in cairocanvas code re: frames+samples 2014-02-26 08:43:53 -05:00
d00dc6a706 various work to make loop/punch display work better (including fixes for bugs present in master also) 2014-01-27 21:27:13 -05:00
d23c2499bf rationalize, consolidate and make work dbl-click editing for regions and markers, as part of the Drag model rather than discretely 2014-01-27 10:09:58 -05:00
b2895eaa50 fix visibility of punch and loop rects.
They used to be in the time_line_group but this is regularly cleared of all its members (which were assumed to be time lines).
2014-01-26 14:04:23 -05:00
84f55440a3 fix redrawing of canvas with an optimized build
Best guess right now is that optimization does something bad when ceil() is called twice on a very large dbl-precision number,
which results in a zero (empty) redraw area. Without the removal of the redundant ceil & floor functions, no expose events
would be delivered to the canvas in an optimized build during drags (and maybe more).
2013-12-23 15:35:49 -05:00
dc7878760d vtl: do not lock audio [to video] when extracting audio-only. 2013-12-23 10:28:32 +01:00
ea1ccb869a fix merge with master 2013-10-31 13:16:51 -04:00
abb05680b4 Make double-click on marker pop up rename dialogue. 2013-10-25 17:03:45 +01:00
89193dc40b Add a double-click handler for items in the editor window. 2013-10-25 17:03:45 +01:00
e5888d3983 merge with master and fix 2 conflicts 2013-10-16 22:06:56 -04:00
c2b2953f8c export video-range: add to context menu 2013-10-12 22:56:08 +02:00
1da655c2eb Fix special handling of 'zoom vertical' scroll wheel modifier key.
gtkmm2ext/keyboard.cc has a special case to emit a signal on the key-up of
the modifier key used to adjust track heights in conjunction with the
scroll wheel, so that the same track continues to be resized even when
it's shrunk to no longer be under the mouse cursor. However, this code
assumed that the modifier key for this was <Shift>.

Fix it to use the event->state bit corresponding to
ScrollZoomVerticalModifier instead, and rename the relevant functions to
clarify that it's the 'zoom vertical' modifier key they're dealing with.

Partially fixes #5610.
2013-08-08 15:24:15 -04:00
c222acecaa fix #5609 (import with 1 track per channel mis-associates tracks + channels)
when using ImportDistinctChannels, correctly name regions so that playlists for each channel/track
are also named differently, and thus reloaded properly when the session is reloaded.
2013-08-08 15:24:15 -04:00
8e376f7a2a Fix special handling of 'zoom vertical' scroll wheel modifier key.
gtkmm2ext/keyboard.cc has a special case to emit a signal on the key-up of
the modifier key used to adjust track heights in conjunction with the
scroll wheel, so that the same track continues to be resized even when
it's shrunk to no longer be under the mouse cursor. However, this code
assumed that the modifier key for this was <Shift>.

Fix it to use the event->state bit corresponding to
ScrollZoomVerticalModifier instead, and rename the relevant functions to
clarify that it's the 'zoom vertical' modifier key they're dealing with.

Partially fixes #5610.
2013-07-23 16:42:34 +01:00
d5209cb4bf fix #5609 (import with 1 track per channel mis-associates tracks + channels)
when using ImportDistinctChannels, correctly name regions so that playlists for each channel/track
are also named differently, and thus reloaded properly when the session is reloaded.
2013-07-23 11:29:10 -04:00
aaaeb958c1 switch samples_per_pixel to integer type 2013-06-18 23:02:54 -04:00
11619a37bf Merge branch 'master' into cairocanvas
Conflicts:
	gtk2_ardour/editor_canvas.cc
	gtk2_ardour/imageframe_time_axis.cc
	gtk2_ardour/imageframe_time_axis.h
	gtk2_ardour/imageframe_time_axis_group.cc
	gtk2_ardour/imageframe_time_axis_group.h
	gtk2_ardour/imageframe_time_axis_view.cc
	gtk2_ardour/imageframe_time_axis_view.h
	gtk2_ardour/imageframe_view.cc
	gtk2_ardour/imageframe_view.h
	gtk2_ardour/marker_time_axis.cc
	gtk2_ardour/marker_time_axis.h
	gtk2_ardour/marker_time_axis_view.cc
	gtk2_ardour/marker_time_axis_view.h
	gtk2_ardour/marker_view.cc
	gtk2_ardour/marker_view.h
	gtk2_ardour/video_image_frame.cc
	gtk2_ardour/visual_time_axis.cc
	gtk2_ardour/visual_time_axis.h
	libs/canvas/canvas/circle.h
2013-06-14 21:09:24 +02:00
084af4727d remove cruft - old CMT imageframe* 2013-06-14 17:18:59 +02:00
f00b3b7f11 merge with master 2013-06-13 23:00:24 -04:00
6b480bb2f7 vtl: make "Remove Video" insensitive if N/A 2013-06-13 00:58:19 +02:00