mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 06:44:57 +01:00
add local tempo scope calls to CueEditor, PianoRoll and AudioClipEditor
This commit is contained in:
parent
1ecb28da47
commit
56647acc25
3 changed files with 388 additions and 0 deletions
|
|
@ -123,6 +123,8 @@ AudioClipEditor::AudioClipEditor (std::string const & name, bool with_transport)
|
|||
void
|
||||
AudioClipEditor::load_shared_bindings ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
/* Full shared binding loading must have preceded this in some other EditingContext */
|
||||
assert (!need_shared_actions);
|
||||
|
||||
|
|
@ -144,6 +146,8 @@ AudioClipEditor::load_shared_bindings ()
|
|||
void
|
||||
AudioClipEditor::pack_inner (Gtk::Box& box)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
box.pack_start (snap_box, false, false);
|
||||
box.pack_start (grid_box, false, false);
|
||||
}
|
||||
|
|
@ -151,6 +155,8 @@ AudioClipEditor::pack_inner (Gtk::Box& box)
|
|||
void
|
||||
AudioClipEditor::pack_outer (Gtk::Box& box)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (with_transport_controls) {
|
||||
box.pack_start (play_box, false, false);
|
||||
}
|
||||
|
|
@ -162,12 +168,16 @@ AudioClipEditor::pack_outer (Gtk::Box& box)
|
|||
void
|
||||
AudioClipEditor::build_lower_toolbar ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
_toolbox.pack_start (*_canvas_hscrollbar, false, false);
|
||||
}
|
||||
|
||||
void
|
||||
AudioClipEditor::build_canvas ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
_canvas.set_background_color (UIConfiguration::instance().color ("arrange base"));
|
||||
_canvas.signal_event().connect (sigc::mem_fun (*this, &CueEditor::canvas_pre_event), false);
|
||||
_canvas.use_nsglview (UIConfiguration::instance().get_nsgl_view_mode () == NSGLHiRes);
|
||||
|
|
@ -270,6 +280,8 @@ AudioClipEditor::build_canvas ()
|
|||
|
||||
AudioClipEditor::~AudioClipEditor ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
drop_waves ();
|
||||
delete clip_metric;
|
||||
}
|
||||
|
|
@ -277,6 +289,8 @@ AudioClipEditor::~AudioClipEditor ()
|
|||
bool
|
||||
AudioClipEditor::line_event_handler (GdkEvent* ev, ArdourCanvas::Line* l)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
std::cerr << "event type " << Gtkmm2ext::event_type_string (ev->type) << " on line " << std::endl;
|
||||
|
||||
switch (ev->type) {
|
||||
|
|
@ -313,12 +327,16 @@ AudioClipEditor::line_event_handler (GdkEvent* ev, ArdourCanvas::Line* l)
|
|||
bool
|
||||
AudioClipEditor::key_press (GdkEventKey* ev)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
AudioClipEditor::position_lines ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!_region) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -358,6 +376,8 @@ AudioClipEditor::LineDrag::motion (GdkEventMotion* ev)
|
|||
void
|
||||
AudioClipEditor::set_colors ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
_canvas.set_background_color (UIConfiguration::instance ().color (X_("theme:bg")));
|
||||
|
||||
start_line->set_outline_color (UIConfiguration::instance ().color (X_("theme:contrasting clock")));
|
||||
|
|
@ -370,6 +390,8 @@ AudioClipEditor::set_colors ()
|
|||
void
|
||||
AudioClipEditor::drop_waves ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
for (auto& wave : waves) {
|
||||
delete wave;
|
||||
}
|
||||
|
|
@ -380,6 +402,8 @@ AudioClipEditor::drop_waves ()
|
|||
void
|
||||
AudioClipEditor::set_trigger (TriggerReference& tr)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (tr == ref) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -394,6 +418,8 @@ AudioClipEditor::set_trigger (TriggerReference& tr)
|
|||
void
|
||||
AudioClipEditor::set_region (std::shared_ptr<Region> region)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
CueEditor::set_region (region);
|
||||
|
||||
if (_visible_pending_region) {
|
||||
|
|
@ -470,6 +496,8 @@ AudioClipEditor::set_region (std::shared_ptr<Region> region)
|
|||
void
|
||||
AudioClipEditor::canvas_allocate (Gtk::Allocation& alloc)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
_canvas.size_allocate (alloc);
|
||||
|
||||
_visible_canvas_width = alloc.get_width();
|
||||
|
|
@ -496,6 +524,8 @@ AudioClipEditor::canvas_allocate (Gtk::Allocation& alloc)
|
|||
void
|
||||
AudioClipEditor::set_spp_from_length (samplecnt_t len)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (_visible_canvas_width) {
|
||||
set_samples_per_pixel (floor (len / _visible_canvas_width));
|
||||
}
|
||||
|
|
@ -504,6 +534,8 @@ AudioClipEditor::set_spp_from_length (samplecnt_t len)
|
|||
void
|
||||
AudioClipEditor::set_wave_heights ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (waves.empty ()) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -522,6 +554,8 @@ AudioClipEditor::set_wave_heights ()
|
|||
void
|
||||
AudioClipEditor::set_waveform_colors ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
Gtkmm2ext::Color clip = UIConfiguration::instance ().color ("clipped waveform");
|
||||
Gtkmm2ext::Color zero = UIConfiguration::instance ().color ("zero line");
|
||||
Gtkmm2ext::Color fill = UIConfiguration::instance ().color ("waveform fill");
|
||||
|
|
@ -538,17 +572,23 @@ AudioClipEditor::set_waveform_colors ()
|
|||
Gtk::Widget&
|
||||
AudioClipEditor::contents ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return _contents;
|
||||
}
|
||||
|
||||
void
|
||||
AudioClipEditor::region_changed (const PBD::PropertyChange& what_changed)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
AudioClipEditor::set_samples_per_pixel (samplecnt_t spp)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
CueEditor::set_samples_per_pixel (spp);
|
||||
|
||||
clip_metric->units_per_pixel = samples_per_pixel;
|
||||
|
|
@ -568,12 +608,16 @@ AudioClipEditor::set_samples_per_pixel (samplecnt_t spp)
|
|||
samplecnt_t
|
||||
AudioClipEditor::current_page_samples() const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return (samplecnt_t) _track_canvas_width * samples_per_pixel;
|
||||
}
|
||||
|
||||
bool
|
||||
AudioClipEditor::canvas_enter_leave (GdkEventCrossing* ev)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
switch (ev->type) {
|
||||
case GDK_ENTER_NOTIFY:
|
||||
if (ev->detail != GDK_NOTIFY_INFERIOR) {
|
||||
|
|
@ -598,26 +642,36 @@ AudioClipEditor::canvas_enter_leave (GdkEventCrossing* ev)
|
|||
void
|
||||
AudioClipEditor::begin_write ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
AudioClipEditor::end_write ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
AudioClipEditor::show_count_in (std::string const &)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
AudioClipEditor::hide_count_in ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
AudioClipEditor::maybe_update ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
ARDOUR::TriggerPtr playing_trigger;
|
||||
|
||||
if (ref.trigger()) {
|
||||
|
|
@ -675,6 +729,8 @@ AudioClipEditor::maybe_update ()
|
|||
void
|
||||
AudioClipEditor::unset (bool trigger_too)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
drop_waves ();
|
||||
CueEditor::unset (trigger_too);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,11 +71,15 @@ CueEditor::~CueEditor ()
|
|||
void
|
||||
CueEditor::set_snapped_cursor_position (Temporal::timepos_t const & pos)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
std::vector<MidiRegionView*>
|
||||
CueEditor::filter_to_unique_midi_region_views (RegionSelection const & ms) const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
std::vector<MidiRegionView*> mrv;
|
||||
return mrv;
|
||||
}
|
||||
|
|
@ -83,17 +87,23 @@ CueEditor::filter_to_unique_midi_region_views (RegionSelection const & ms) const
|
|||
void
|
||||
CueEditor::get_regionviews_by_id (PBD::ID const id, RegionSelection & regions) const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
StripableTimeAxisView*
|
||||
CueEditor::get_stripable_time_axis_by_id (const PBD::ID& id) const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
TrackViewList
|
||||
CueEditor::axis_views_from_routes (std::shared_ptr<ARDOUR::RouteList>) const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
TrackViewList tvl;
|
||||
return tvl;
|
||||
}
|
||||
|
|
@ -101,42 +111,56 @@ CueEditor::axis_views_from_routes (std::shared_ptr<ARDOUR::RouteList>) const
|
|||
ARDOUR::Location*
|
||||
CueEditor::find_location_from_marker (ArdourMarker*, bool&) const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
ArdourMarker*
|
||||
CueEditor::find_marker_from_location_id (PBD::ID const&, bool) const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
TempoMarker*
|
||||
CueEditor::find_marker_for_tempo (Temporal::TempoPoint const &)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
MeterMarker*
|
||||
CueEditor::find_marker_for_meter (Temporal::MeterPoint const &)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
CueEditor::redisplay_grid (bool immediate_redraw)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
update_grid ();
|
||||
}
|
||||
|
||||
Temporal::timecnt_t
|
||||
CueEditor::get_nudge_distance (Temporal::timepos_t const & pos, Temporal::timecnt_t& next) const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return Temporal::timecnt_t (Temporal::AudioTime);
|
||||
}
|
||||
|
||||
void
|
||||
CueEditor::instant_save()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!_region) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -158,42 +182,58 @@ CueEditor::instant_save()
|
|||
void
|
||||
CueEditor::begin_selection_op_history ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
CueEditor::begin_reversible_selection_op (std::string cmd_name)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
CueEditor::commit_reversible_selection_op ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
CueEditor::abort_reversible_selection_op ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
CueEditor::undo_selection_op ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
CueEditor::redo_selection_op ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
double
|
||||
CueEditor::get_y_origin () const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return 0.;
|
||||
}
|
||||
|
||||
void
|
||||
CueEditor::set_zoom_focus (Editing::ZoomFocus zf)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
using namespace Editing;
|
||||
|
||||
/* We don't allow playhead for zoom focus here */
|
||||
|
|
@ -208,6 +248,8 @@ CueEditor::set_zoom_focus (Editing::ZoomFocus zf)
|
|||
void
|
||||
CueEditor::set_samples_per_pixel (samplecnt_t n)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
samples_per_pixel = n;
|
||||
ZoomChanged(); /* EMIT SIGNAL */
|
||||
}
|
||||
|
|
@ -215,12 +257,16 @@ CueEditor::set_samples_per_pixel (samplecnt_t n)
|
|||
samplecnt_t
|
||||
CueEditor::get_current_zoom () const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return samples_per_pixel;
|
||||
}
|
||||
|
||||
void
|
||||
CueEditor::reposition_and_zoom (samplepos_t pos, double spp)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
pending_visual_change.add (VisualChange::ZoomLevel);
|
||||
pending_visual_change.samples_per_pixel = spp;
|
||||
|
||||
|
|
@ -233,22 +279,30 @@ CueEditor::reposition_and_zoom (samplepos_t pos, double spp)
|
|||
void
|
||||
CueEditor::set_mouse_mode (Editing::MouseMode, bool force)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
CueEditor::step_mouse_mode (bool next)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
Gdk::Cursor*
|
||||
CueEditor::get_canvas_cursor () const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::shared_ptr<Temporal::TempoMap const>
|
||||
CueEditor::start_local_tempo_map (std::shared_ptr<Temporal::TempoMap> map)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
std::shared_ptr<Temporal::TempoMap const> tmp = Temporal::TempoMap::use();
|
||||
Temporal::TempoMap::set (map);
|
||||
return tmp;
|
||||
|
|
@ -257,12 +311,16 @@ CueEditor::start_local_tempo_map (std::shared_ptr<Temporal::TempoMap> map)
|
|||
void
|
||||
CueEditor::end_local_tempo_map (std::shared_ptr<Temporal::TempoMap const> map)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
Temporal::TempoMap::set (map);
|
||||
}
|
||||
|
||||
void
|
||||
CueEditor::do_undo (uint32_t n)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (_drags->active ()) {
|
||||
_drags->abort ();
|
||||
}
|
||||
|
|
@ -273,6 +331,8 @@ CueEditor::do_undo (uint32_t n)
|
|||
void
|
||||
CueEditor::do_redo (uint32_t n)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (_drags->active ()) {
|
||||
_drags->abort ();
|
||||
}
|
||||
|
|
@ -283,12 +343,16 @@ CueEditor::do_redo (uint32_t n)
|
|||
void
|
||||
CueEditor::history_changed ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
update_undo_redo_actions (_history);
|
||||
}
|
||||
|
||||
Temporal::timepos_t
|
||||
CueEditor::_get_preferred_edit_position (Editing::EditIgnoreOption ignore, bool from_context_menu, bool from_outside_canvas)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
samplepos_t where;
|
||||
bool in_track_canvas = false;
|
||||
|
||||
|
|
@ -302,6 +366,8 @@ CueEditor::_get_preferred_edit_position (Editing::EditIgnoreOption ignore, bool
|
|||
void
|
||||
CueEditor::build_upper_toolbar ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
using namespace Gtk::Menu_Helpers;
|
||||
|
||||
Gtk::HBox* mode_box = manage(new Gtk::HBox);
|
||||
|
|
@ -423,6 +489,8 @@ CueEditor::build_upper_toolbar ()
|
|||
void
|
||||
CueEditor::build_zoom_focus_menu ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
using namespace Gtk::Menu_Helpers;
|
||||
using namespace Editing;
|
||||
|
||||
|
|
@ -436,6 +504,8 @@ CueEditor::build_zoom_focus_menu ()
|
|||
bool
|
||||
CueEditor::bang_button_press (GdkEventButton* ev)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!ref.trigger()) {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -448,6 +518,8 @@ CueEditor::bang_button_press (GdkEventButton* ev)
|
|||
bool
|
||||
CueEditor::play_button_press (GdkEventButton* ev)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (_session && _region) {
|
||||
_session->request_locate (_region->position().samples());
|
||||
_session->request_roll ();
|
||||
|
|
@ -459,6 +531,8 @@ CueEditor::play_button_press (GdkEventButton* ev)
|
|||
bool
|
||||
CueEditor::loop_button_press (GdkEventButton* ev)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!_region) {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -476,6 +550,8 @@ CueEditor::loop_button_press (GdkEventButton* ev)
|
|||
bool
|
||||
CueEditor::solo_button_press (GdkEventButton* ev)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!_track) {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -488,6 +564,8 @@ CueEditor::solo_button_press (GdkEventButton* ev)
|
|||
bool
|
||||
CueEditor::rec_button_press (GdkEventButton* ev)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (ev->button != 1) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -510,6 +588,8 @@ CueEditor::rec_button_press (GdkEventButton* ev)
|
|||
void
|
||||
CueEditor::blink_rec_enable (bool onoff)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (onoff) {
|
||||
rec_enable_button.set_active_state (Gtkmm2ext::ExplicitActive);
|
||||
} else {
|
||||
|
|
@ -520,6 +600,8 @@ CueEditor::blink_rec_enable (bool onoff)
|
|||
void
|
||||
CueEditor::trigger_arm_change ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!ref.trigger()) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -536,6 +618,8 @@ CueEditor::trigger_arm_change ()
|
|||
void
|
||||
CueEditor::rec_enable_change ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!ref.box()) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -568,12 +652,16 @@ CueEditor::rec_enable_change ()
|
|||
void
|
||||
CueEditor::set_recording_length (Temporal::BBT_Offset dur)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
rec_length = dur;
|
||||
}
|
||||
|
||||
void
|
||||
CueEditor::scrolled ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
pending_visual_change.add (VisualChange::TimeOrigin);
|
||||
pending_visual_change.time_origin = horizontal_adjustment.get_value() * samples_per_pixel;
|
||||
ensure_visual_change_idle_handler ();
|
||||
|
|
@ -582,6 +670,8 @@ CueEditor::scrolled ()
|
|||
bool
|
||||
CueEditor::canvas_pre_event (GdkEvent* ev)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
switch (ev->type) {
|
||||
case GDK_ENTER_NOTIFY:
|
||||
case GDK_LEAVE_NOTIFY:
|
||||
|
|
@ -599,6 +689,8 @@ CueEditor::canvas_pre_event (GdkEvent* ev)
|
|||
bool
|
||||
CueEditor::autoscroll_active () const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return autoscroll_connection.connected ();
|
||||
}
|
||||
|
||||
|
|
@ -610,6 +702,8 @@ CueEditor::autoscroll_active () const
|
|||
void
|
||||
CueEditor::maybe_autoscroll (bool allow_horiz, bool allow_vert, bool from_headers)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!UIConfiguration::instance().get_autoscroll_editor () || autoscroll_active ()) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -681,6 +775,8 @@ CueEditor::maybe_autoscroll (bool allow_horiz, bool allow_vert, bool from_header
|
|||
bool
|
||||
CueEditor::autoscroll_canvas ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
using std::max;
|
||||
using std::min;
|
||||
int x, y;
|
||||
|
|
@ -881,6 +977,8 @@ CueEditor::autoscroll_canvas ()
|
|||
void
|
||||
CueEditor::start_canvas_autoscroll (bool allow_horiz, bool allow_vert, const ArdourCanvas::Rect& boundary)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!_session) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -904,6 +1002,8 @@ CueEditor::start_canvas_autoscroll (bool allow_horiz, bool allow_vert, const Ard
|
|||
void
|
||||
CueEditor::stop_canvas_autoscroll ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
autoscroll_connection.disconnect ();
|
||||
autoscroll_cnt = 0;
|
||||
}
|
||||
|
|
@ -911,6 +1011,8 @@ CueEditor::stop_canvas_autoscroll ()
|
|||
void
|
||||
CueEditor::visual_changer (const VisualChange& vc)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
/**
|
||||
* Changed first so the correct horizontal canvas position is calculated in
|
||||
* EditingContext::set_horizontal_position
|
||||
|
|
@ -951,6 +1053,8 @@ CueEditor::visual_changer (const VisualChange& vc)
|
|||
void
|
||||
CueEditor::catch_pending_show_region ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (_visible_pending_region) {
|
||||
std::shared_ptr<Region> r (_visible_pending_region);
|
||||
_visible_pending_region.reset ();
|
||||
|
|
@ -961,6 +1065,8 @@ CueEditor::catch_pending_show_region ()
|
|||
RegionSelection
|
||||
CueEditor::region_selection()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
RegionSelection rs;
|
||||
/* there is never any region-level selection in a pianoroll */
|
||||
return rs;
|
||||
|
|
@ -969,6 +1075,8 @@ CueEditor::region_selection()
|
|||
void
|
||||
CueEditor::mouse_mode_chosen (Editing::MouseMode m)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!mouse_mode_actions[m]->get_active()) {
|
||||
/* this was just the notification that the old mode has been
|
||||
* left. we'll get called again with the new mode active in a
|
||||
|
|
@ -989,6 +1097,8 @@ CueEditor::mouse_mode_chosen (Editing::MouseMode m)
|
|||
std::pair<Temporal::timepos_t,Temporal::timepos_t>
|
||||
CueEditor::max_zoom_extent() const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (_region) {
|
||||
|
||||
Temporal::Beats len;
|
||||
|
|
@ -1011,6 +1121,8 @@ CueEditor::max_zoom_extent() const
|
|||
void
|
||||
CueEditor::zoom_to_show (Temporal::timecnt_t const & duration)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!_track_canvas_width) {
|
||||
zoom_in_allocate = true;
|
||||
return;
|
||||
|
|
@ -1022,6 +1134,8 @@ CueEditor::zoom_to_show (Temporal::timecnt_t const & duration)
|
|||
void
|
||||
CueEditor::full_zoom_clicked()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
/* XXXX NEED LOCAL TEMPO MAP */
|
||||
|
||||
std::pair<Temporal::timepos_t,Temporal::timepos_t> dur (max_zoom_extent());
|
||||
|
|
@ -1032,12 +1146,16 @@ CueEditor::full_zoom_clicked()
|
|||
void
|
||||
CueEditor::set_show_source (bool yn)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
show_source = yn;
|
||||
}
|
||||
|
||||
void
|
||||
CueEditor::update_solo_display ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (_track->solo_control()->get_value()) {
|
||||
solo_button.set_active_state (Gtkmm2ext::ExplicitActive);
|
||||
} else {
|
||||
|
|
@ -1048,6 +1166,8 @@ CueEditor::update_solo_display ()
|
|||
void
|
||||
CueEditor::set_track (std::shared_ptr<Track> t)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
_track = t;
|
||||
_track->solo_control()->Changed.connect (object_connections, invalidator (*this), std::bind (&CueEditor::update_solo_display, this), gui_context());
|
||||
update_solo_display ();
|
||||
|
|
@ -1056,6 +1176,8 @@ CueEditor::set_track (std::shared_ptr<Track> t)
|
|||
void
|
||||
CueEditor::set_region (std::shared_ptr<Region> r)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (r == _region) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1074,6 +1196,8 @@ CueEditor::set_region (std::shared_ptr<Region> r)
|
|||
void
|
||||
CueEditor::maybe_set_from_rsu ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
RegionUISettingsManager::iterator rsu = ARDOUR_UI::instance()->region_ui_settings_manager.find (_region->id());
|
||||
if (rsu != ARDOUR_UI::instance()->region_ui_settings_manager.end()) {
|
||||
set_from_rsu (rsu->second);
|
||||
|
|
@ -1083,6 +1207,8 @@ CueEditor::maybe_set_from_rsu ()
|
|||
void
|
||||
CueEditor::set_from_rsu (RegionUISettings& rsu)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
follow_playhead_action->set_active (rsu.follow_playhead);
|
||||
|
||||
/* XXXX play selection */
|
||||
|
|
@ -1101,6 +1227,8 @@ CueEditor::set_from_rsu (RegionUISettings& rsu)
|
|||
void
|
||||
CueEditor::set_trigger (TriggerReference& tref)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (tref == ref) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1122,6 +1250,8 @@ CueEditor::set_trigger (TriggerReference& tref)
|
|||
void
|
||||
CueEditor::ruler_locate (GdkEventButton* ev)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!_session) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1143,6 +1273,8 @@ CueEditor::ruler_locate (GdkEventButton* ev)
|
|||
void
|
||||
CueEditor::maybe_set_count_in ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!ref.box()) {
|
||||
std::cerr << "msci no box\n";
|
||||
return;
|
||||
|
|
@ -1179,6 +1311,8 @@ CueEditor::maybe_set_count_in ()
|
|||
void
|
||||
CueEditor::count_in (Temporal::timepos_t audible, unsigned int clock_interval_msecs)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!_session) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1224,6 +1358,8 @@ CueEditor::count_in (Temporal::timepos_t audible, unsigned int clock_interval_ms
|
|||
bool
|
||||
CueEditor::ruler_event (GdkEvent* ev)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
switch (ev->type) {
|
||||
case GDK_BUTTON_RELEASE:
|
||||
if (ev->button.button == 1) {
|
||||
|
|
@ -1240,6 +1376,8 @@ CueEditor::ruler_event (GdkEvent* ev)
|
|||
void
|
||||
CueEditor::data_captured (samplecnt_t total_duration)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
data_capture_duration = total_duration;
|
||||
|
||||
if (!idle_update_queued.exchange (1)) {
|
||||
|
|
@ -1250,6 +1388,8 @@ CueEditor::data_captured (samplecnt_t total_duration)
|
|||
bool
|
||||
CueEditor::idle_data_captured ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!ref.box()) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1274,6 +1414,8 @@ CueEditor::idle_data_captured ()
|
|||
void
|
||||
CueEditor::unset (bool trigger_too)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
_history.clear ();
|
||||
history_connection.disconnect();
|
||||
_update_connection.disconnect();
|
||||
|
|
@ -1293,6 +1435,8 @@ CueEditor::unset (bool trigger_too)
|
|||
void
|
||||
CueEditor::session_going_away ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
EditingContext::session_going_away ();
|
||||
unset (true);
|
||||
}
|
||||
|
|
@ -1300,6 +1444,8 @@ CueEditor::session_going_away ()
|
|||
void
|
||||
CueEditor::load_bindings ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
load_shared_bindings ();
|
||||
for (auto & b : bindings) {
|
||||
b->associate ();
|
||||
|
|
@ -1310,6 +1456,8 @@ CueEditor::load_bindings ()
|
|||
void
|
||||
CueEditor::register_actions ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
editor_actions = ActionManager::create_action_group (own_bindings, editor_name());
|
||||
bind_mouse_mode_buttons ();
|
||||
}
|
||||
|
|
@ -1317,12 +1465,16 @@ CueEditor::register_actions ()
|
|||
ArdourCanvas::GtkCanvasViewport*
|
||||
CueEditor::get_canvas_viewport() const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return const_cast<ArdourCanvas::GtkCanvasViewport*>(&_canvas_viewport);
|
||||
}
|
||||
|
||||
ArdourCanvas::GtkCanvas*
|
||||
CueEditor::get_canvas() const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return &_canvas;
|
||||
}
|
||||
|
||||
|
|
@ -1330,6 +1482,8 @@ CueEditor::get_canvas() const
|
|||
int
|
||||
CueEditor::set_state (XMLNode const & node, int version)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
set_common_editing_state (node);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1337,6 +1491,8 @@ CueEditor::set_state (XMLNode const & node, int version)
|
|||
XMLNode&
|
||||
CueEditor::get_state () const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
XMLNode* node (new XMLNode (editor_name()));
|
||||
get_common_editing_state (*node);
|
||||
return *node;
|
||||
|
|
@ -1354,6 +1510,8 @@ edit_last_mark_label (std::vector<ArdourCanvas::Ruler::Mark>& marks, const std::
|
|||
void
|
||||
CueEditor::metric_get_bbt (std::vector<ArdourCanvas::Ruler::Mark>& marks, samplepos_t leftmost, samplepos_t rightmost, gint /*maxchars*/)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!_session) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,6 +105,8 @@ Pianoroll::~Pianoroll ()
|
|||
void
|
||||
Pianoroll::set_show_source (bool yn)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
CueEditor::set_show_source (yn);
|
||||
if (view) {
|
||||
view->set_show_source (yn);
|
||||
|
|
@ -114,6 +116,8 @@ Pianoroll::set_show_source (bool yn)
|
|||
void
|
||||
Pianoroll::rebuild_parameter_button_map()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
parameter_button_map.clear ();
|
||||
parameter_button_map.insert (std::make_pair (velocity_button, Evoral::Parameter (ARDOUR::MidiVelocityAutomation, _visible_channel)));
|
||||
parameter_button_map.insert (std::make_pair (bender_button, Evoral::Parameter (ARDOUR::MidiPitchBenderAutomation, _visible_channel)));
|
||||
|
|
@ -129,6 +133,8 @@ Pianoroll::rebuild_parameter_button_map()
|
|||
void
|
||||
Pianoroll::reset_user_cc_choice (std::string name, Evoral::Parameter param, MetaButton* metabutton)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
ParameterButtonMap::iterator iter;
|
||||
|
||||
for (iter = parameter_button_map.begin(); iter != parameter_button_map.end(); ++iter) {
|
||||
|
|
@ -149,6 +155,8 @@ Pianoroll::add_single_controller_item (Gtk::Menu_Helpers::MenuList& ctl_items,
|
|||
const std::string& name,
|
||||
ArdourWidgets::MetaButton* mb)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
using namespace Gtk::Menu_Helpers;
|
||||
|
||||
const uint16_t selected_channels = 0xffff;
|
||||
|
|
@ -174,6 +182,8 @@ Pianoroll::add_multi_controller_item (Gtk::Menu_Helpers::MenuList&,
|
|||
const std::string& name,
|
||||
MetaButton* mb)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
using namespace Gtk;
|
||||
using namespace Gtk::Menu_Helpers;
|
||||
|
||||
|
|
@ -223,6 +233,8 @@ Pianoroll::add_multi_controller_item (Gtk::Menu_Helpers::MenuList&,
|
|||
void
|
||||
Pianoroll::build_lower_toolbar ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
horizontal_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &Pianoroll::scrolled));
|
||||
|
||||
ArdourButton::Element elements = ArdourButton::Element (ArdourButton::Text|ArdourButton::Indicator|ArdourButton::Edge|ArdourButton::Body);
|
||||
|
|
@ -292,6 +304,8 @@ Pianoroll::build_lower_toolbar ()
|
|||
void
|
||||
Pianoroll::pack_inner (Gtk::Box& box)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
box.pack_start (snap_box, false, false);
|
||||
box.pack_start (grid_box, false, false);
|
||||
box.pack_start (draw_box, false, false);
|
||||
|
|
@ -300,6 +314,8 @@ Pianoroll::pack_inner (Gtk::Box& box)
|
|||
void
|
||||
Pianoroll::pack_outer (Gtk::Box& box)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (with_transport_controls) {
|
||||
box.pack_start (play_box, false, false);
|
||||
}
|
||||
|
|
@ -314,6 +330,8 @@ Pianoroll::pack_outer (Gtk::Box& box)
|
|||
void
|
||||
Pianoroll::set_visible_channel (int n)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
PBD::Unwinder<bool> uw (ignore_channel_changes, true);
|
||||
|
||||
_visible_channel = n;
|
||||
|
|
@ -332,6 +350,8 @@ Pianoroll::set_visible_channel (int n)
|
|||
void
|
||||
Pianoroll::build_canvas ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
_canvas.set_background_color (UIConfiguration::instance().color ("arrange base"));
|
||||
_canvas.signal_event().connect (sigc::mem_fun (*this, &Pianoroll::canvas_pre_event), false);
|
||||
dynamic_cast<ArdourCanvas::GtkCanvas*>(&_canvas)->use_nsglview (UIConfiguration::instance().get_nsgl_view_mode () == NSGLHiRes);
|
||||
|
|
@ -473,6 +493,8 @@ Pianoroll::build_canvas ()
|
|||
void
|
||||
Pianoroll::visible_channel_changed ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (ignore_channel_changes) {
|
||||
/* We're changing it */
|
||||
return;
|
||||
|
|
@ -491,6 +513,8 @@ Pianoroll::visible_channel_changed ()
|
|||
void
|
||||
Pianoroll::bindings_changed ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
bindings.clear ();
|
||||
load_shared_bindings ();
|
||||
}
|
||||
|
|
@ -498,6 +522,8 @@ Pianoroll::bindings_changed ()
|
|||
void
|
||||
Pianoroll::maybe_update ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
ARDOUR::TriggerPtr playing_trigger;
|
||||
|
||||
if (ref.trigger()) {
|
||||
|
|
@ -555,6 +581,8 @@ Pianoroll::maybe_update ()
|
|||
bool
|
||||
Pianoroll::canvas_enter_leave (GdkEventCrossing* ev)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
switch (ev->type) {
|
||||
case GDK_ENTER_NOTIFY:
|
||||
if (ev->detail != GDK_NOTIFY_INFERIOR) {
|
||||
|
|
@ -579,6 +607,8 @@ Pianoroll::canvas_enter_leave (GdkEventCrossing* ev)
|
|||
void
|
||||
Pianoroll::canvas_allocate (Gtk::Allocation alloc)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
_visible_canvas_width = alloc.get_width();
|
||||
_visible_canvas_height = alloc.get_height();
|
||||
|
||||
|
|
@ -610,6 +640,8 @@ Pianoroll::canvas_allocate (Gtk::Allocation alloc)
|
|||
timepos_t
|
||||
Pianoroll::snap_to_grid (timepos_t const & presnap, Temporal::RoundMode direction, SnapPref gpref) const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
/* BBT time only */
|
||||
return snap_to_bbt (presnap, direction, gpref);
|
||||
}
|
||||
|
|
@ -617,6 +649,8 @@ Pianoroll::snap_to_grid (timepos_t const & presnap, Temporal::RoundMode directio
|
|||
void
|
||||
Pianoroll::snap_to_internal (timepos_t& start, Temporal::RoundMode direction, SnapPref pref, bool ensure_snap) const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
UIConfiguration const& uic (UIConfiguration::instance ());
|
||||
const timepos_t presnap = start;
|
||||
|
||||
|
|
@ -649,6 +683,8 @@ Pianoroll::snap_to_internal (timepos_t& start, Temporal::RoundMode direction, Sn
|
|||
void
|
||||
Pianoroll::set_samples_per_pixel (samplecnt_t spp)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
CueEditor::set_samples_per_pixel (spp);
|
||||
|
||||
if (view) {
|
||||
|
|
@ -666,54 +702,72 @@ Pianoroll::set_samples_per_pixel (samplecnt_t spp)
|
|||
samplecnt_t
|
||||
Pianoroll::current_page_samples() const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return (samplecnt_t) _track_canvas_width * samples_per_pixel;
|
||||
}
|
||||
|
||||
bool
|
||||
Pianoroll::canvas_bg_event (GdkEvent* event, ArdourCanvas::Item* item)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return typed_event (item, event, RegionItem);
|
||||
}
|
||||
|
||||
bool
|
||||
Pianoroll::canvas_control_point_event (GdkEvent* event, ArdourCanvas::Item* item, ControlPoint* cp)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return typed_event (item, event, ControlPointItem);
|
||||
}
|
||||
|
||||
bool
|
||||
Pianoroll::canvas_note_event (GdkEvent* event, ArdourCanvas::Item* item)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return typed_event (item, event, NoteItem);
|
||||
}
|
||||
|
||||
bool
|
||||
Pianoroll::canvas_velocity_base_event (GdkEvent* event, ArdourCanvas::Item* item)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return typed_event (item, event, VelocityBaseItem);
|
||||
}
|
||||
|
||||
bool
|
||||
Pianoroll::canvas_velocity_event (GdkEvent* event, ArdourCanvas::Item* item)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return typed_event (item, event, VelocityItem);
|
||||
}
|
||||
|
||||
bool
|
||||
Pianoroll::canvas_cue_start_event (GdkEvent* event, ArdourCanvas::Item* item)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return typed_event (item, event, ClipStartItem);
|
||||
}
|
||||
|
||||
bool
|
||||
Pianoroll::canvas_cue_end_event (GdkEvent* event, ArdourCanvas::Item* item)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return typed_event (item, event, ClipEndItem);
|
||||
}
|
||||
|
||||
void
|
||||
Pianoroll::set_trigger_start (Temporal::timepos_t const & p)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (ref.trigger()) {
|
||||
ref.trigger()->the_region()->trim_front (p);
|
||||
} else {
|
||||
|
|
@ -728,6 +782,8 @@ Pianoroll::set_trigger_start (Temporal::timepos_t const & p)
|
|||
void
|
||||
Pianoroll::set_trigger_end (Temporal::timepos_t const & p)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (ref.trigger()) {
|
||||
ref.trigger()->the_region()->trim_end (p);
|
||||
} else {
|
||||
|
|
@ -742,12 +798,16 @@ Pianoroll::set_trigger_end (Temporal::timepos_t const & p)
|
|||
Gtk::Widget&
|
||||
Pianoroll::contents ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return _contents;
|
||||
}
|
||||
|
||||
bool
|
||||
Pianoroll::idle_data_captured ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!ref.box()) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -764,6 +824,8 @@ Pianoroll::idle_data_captured ()
|
|||
bool
|
||||
Pianoroll::button_press_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (event->type != GDK_BUTTON_PRESS) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -792,6 +854,8 @@ Pianoroll::button_press_handler (ArdourCanvas::Item* item, GdkEvent* event, Item
|
|||
bool
|
||||
Pianoroll::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
NoteBase* note = nullptr;
|
||||
Editing::MouseMode mouse_mode = current_mouse_mode();
|
||||
switch (item_type) {
|
||||
|
|
@ -894,12 +958,16 @@ Pianoroll::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, It
|
|||
bool
|
||||
Pianoroll::button_press_handler_2 (ArdourCanvas::Item*, GdkEvent*, ItemType)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
Pianoroll::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!Keyboard::is_context_menu_event (&event->button)) {
|
||||
|
||||
/* see if we're finishing a drag */
|
||||
|
|
@ -941,6 +1009,8 @@ Pianoroll::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, It
|
|||
void
|
||||
Pianoroll::popup_region_context_menu (ArdourCanvas::Item* item, GdkEvent* event)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
using namespace Gtk::Menu_Helpers;
|
||||
|
||||
if (!view) {
|
||||
|
|
@ -976,6 +1046,8 @@ Pianoroll::popup_region_context_menu (ArdourCanvas::Item* item, GdkEvent* event)
|
|||
bool
|
||||
Pianoroll::button_press_dispatch (GdkEventButton* ev)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
/* this function is intended only for buttons 4 and above. */
|
||||
|
||||
Gtkmm2ext::MouseButton b (ev->state, ev->button);
|
||||
|
|
@ -985,6 +1057,8 @@ Pianoroll::button_press_dispatch (GdkEventButton* ev)
|
|||
bool
|
||||
Pianoroll::button_release_dispatch (GdkEventButton* ev)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
/* this function is intended only for buttons 4 and above. */
|
||||
|
||||
Gtkmm2ext::MouseButton b (ev->state, ev->button);
|
||||
|
|
@ -994,6 +1068,8 @@ Pianoroll::button_release_dispatch (GdkEventButton* ev)
|
|||
bool
|
||||
Pianoroll::motion_handler (ArdourCanvas::Item*, GdkEvent* event, bool from_autoscroll)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (_drags->active ()) {
|
||||
//drags change the snapped_cursor location, because we are snapping the thing being dragged, not the actual mouse cursor
|
||||
return _drags->motion_handler (event, from_autoscroll);
|
||||
|
|
@ -1005,6 +1081,8 @@ Pianoroll::motion_handler (ArdourCanvas::Item*, GdkEvent* event, bool from_autos
|
|||
bool
|
||||
Pianoroll::key_press_handler (ArdourCanvas::Item*, GdkEvent* ev, ItemType)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
|
||||
switch (ev->key.keyval) {
|
||||
case GDK_d:
|
||||
|
|
@ -1021,12 +1099,16 @@ Pianoroll::key_press_handler (ArdourCanvas::Item*, GdkEvent* ev, ItemType)
|
|||
bool
|
||||
Pianoroll::key_release_handler (ArdourCanvas::Item*, GdkEvent*, ItemType)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
Pianoroll::set_mouse_mode (Editing::MouseMode m, bool force)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (m != Editing::MouseDraw && m != Editing::MouseContent) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1037,6 +1119,8 @@ Pianoroll::set_mouse_mode (Editing::MouseMode m, bool force)
|
|||
void
|
||||
Pianoroll::midi_action (void (MidiView::*method)())
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!view) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1047,6 +1131,8 @@ Pianoroll::midi_action (void (MidiView::*method)())
|
|||
void
|
||||
Pianoroll::escape ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!view) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1057,12 +1143,16 @@ Pianoroll::escape ()
|
|||
Gdk::Cursor*
|
||||
Pianoroll::which_track_cursor () const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
return _cursors->grabber;
|
||||
}
|
||||
|
||||
Gdk::Cursor*
|
||||
Pianoroll::which_mode_cursor () const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
Gdk::Cursor* mode_cursor = MouseCursors::invalid_cursor ();
|
||||
|
||||
switch (current_mouse_mode()) {
|
||||
|
|
@ -1084,6 +1174,8 @@ Pianoroll::which_mode_cursor () const
|
|||
Gdk::Cursor*
|
||||
Pianoroll::which_trim_cursor (bool left_side) const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
abort ();
|
||||
/*NOTREACHED*/
|
||||
return nullptr;
|
||||
|
|
@ -1093,6 +1185,8 @@ Pianoroll::which_trim_cursor (bool left_side) const
|
|||
Gdk::Cursor*
|
||||
Pianoroll::which_canvas_cursor (ItemType type) const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
Gdk::Cursor* cursor = which_mode_cursor ();
|
||||
Editing::MouseMode mouse_mode = current_mouse_mode ();
|
||||
|
||||
|
|
@ -1180,6 +1274,8 @@ Pianoroll::which_canvas_cursor (ItemType type) const
|
|||
bool
|
||||
Pianoroll::enter_handler (ArdourCanvas::Item* item, GdkEvent* ev, ItemType item_type)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
choose_canvas_cursor_on_entry (item_type);
|
||||
|
||||
switch (item_type) {
|
||||
|
|
@ -1209,6 +1305,8 @@ Pianoroll::enter_handler (ArdourCanvas::Item* item, GdkEvent* ev, ItemType item_
|
|||
bool
|
||||
Pianoroll::leave_handler (ArdourCanvas::Item* item, GdkEvent* ev, ItemType item_type)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
EditorAutomationLine* al;
|
||||
|
||||
set_canvas_cursor (which_mode_cursor());
|
||||
|
|
@ -1242,6 +1340,8 @@ Pianoroll::leave_handler (ArdourCanvas::Item* item, GdkEvent* ev, ItemType item_
|
|||
std::list<SelectableOwner*>
|
||||
Pianoroll::selectable_owners()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (view) {
|
||||
return view->selectable_owners();
|
||||
}
|
||||
|
|
@ -1252,6 +1352,8 @@ Pianoroll::selectable_owners()
|
|||
void
|
||||
Pianoroll::trigger_prop_change (PBD::PropertyChange const & what_changed)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (what_changed.contains (Properties::region)) {
|
||||
std::shared_ptr<MidiRegion> mr = std::dynamic_pointer_cast<MidiRegion> (ref.trigger()->the_region());
|
||||
if (mr) {
|
||||
|
|
@ -1263,6 +1365,8 @@ Pianoroll::trigger_prop_change (PBD::PropertyChange const & what_changed)
|
|||
void
|
||||
Pianoroll::region_prop_change (PBD::PropertyChange const & what_changed)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (what_changed.contains (Properties::length)) {
|
||||
std::shared_ptr<MidiRegion> mr = view->midi_region();
|
||||
if (mr) {
|
||||
|
|
@ -1274,6 +1378,8 @@ Pianoroll::region_prop_change (PBD::PropertyChange const & what_changed)
|
|||
void
|
||||
Pianoroll::set_trigger (TriggerReference & tref)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (ref == tref) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1309,6 +1415,8 @@ Pianoroll::set_trigger (TriggerReference & tref)
|
|||
void
|
||||
Pianoroll::make_a_region ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
std::shared_ptr<MidiSource> new_source = _session->create_midi_source_for_session (_track->name());
|
||||
SourceList sources;
|
||||
sources.push_back (new_source);
|
||||
|
|
@ -1334,6 +1442,8 @@ Pianoroll::make_a_region ()
|
|||
void
|
||||
Pianoroll::unset (bool trigger_too)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
CueEditor::unset (trigger_too);
|
||||
view->set_region (nullptr);
|
||||
}
|
||||
|
|
@ -1341,6 +1451,8 @@ Pianoroll::unset (bool trigger_too)
|
|||
void
|
||||
Pianoroll::set_track (std::shared_ptr<ARDOUR::Track> track)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
CueEditor::set_track (track);
|
||||
|
||||
if (view) {
|
||||
|
|
@ -1369,6 +1481,8 @@ Pianoroll::set_track (std::shared_ptr<ARDOUR::Track> track)
|
|||
void
|
||||
Pianoroll::set_region (std::shared_ptr<ARDOUR::Region> region)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
CueEditor::set_region (region);
|
||||
|
||||
if (_visible_pending_region) {
|
||||
|
|
@ -1438,6 +1552,8 @@ Pianoroll::set_region (std::shared_ptr<ARDOUR::Region> region)
|
|||
bool
|
||||
Pianoroll::user_automation_button_event (GdkEventButton* ev, MetaButton* mb)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (mb->is_menu_popup_event (ev)) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1462,6 +1578,8 @@ Pianoroll::user_automation_button_event (GdkEventButton* ev, MetaButton* mb)
|
|||
void
|
||||
Pianoroll::user_led_click (GdkEventButton* ev, MetaButton* metabutton)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (ev->button != 1) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1478,6 +1596,8 @@ Pianoroll::user_led_click (GdkEventButton* ev, MetaButton* metabutton)
|
|||
bool
|
||||
Pianoroll::automation_button_event (GdkEventButton* ev, Evoral::ParameterType type, int id)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (ev->button != 1) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1492,6 +1612,8 @@ Pianoroll::automation_button_event (GdkEventButton* ev, Evoral::ParameterType ty
|
|||
void
|
||||
Pianoroll::automation_led_click (GdkEventButton* ev, Evoral::ParameterType type, int id)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (ev->button != 1) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1511,6 +1633,8 @@ Pianoroll::automation_led_click (GdkEventButton* ev, Evoral::ParameterType type,
|
|||
void
|
||||
Pianoroll::automation_state_changed ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
assert (view);
|
||||
|
||||
for (ParameterButtonMap::iterator i = parameter_button_map.begin(); i != parameter_button_map.end(); ++i) {
|
||||
|
|
@ -1537,6 +1661,8 @@ Pianoroll::automation_state_changed ()
|
|||
void
|
||||
Pianoroll::note_mode_clicked ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
assert (bg);
|
||||
|
||||
if (bg->note_mode() == Sustained) {
|
||||
|
|
@ -1549,6 +1675,8 @@ Pianoroll::note_mode_clicked ()
|
|||
void
|
||||
Pianoroll::set_note_mode (NoteMode nm)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
assert (bg);
|
||||
|
||||
if (nm != bg->note_mode()) {
|
||||
|
|
@ -1564,6 +1692,8 @@ Pianoroll::set_note_mode (NoteMode nm)
|
|||
void
|
||||
Pianoroll::point_selection_changed ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (view) {
|
||||
view->point_selection_changed ();
|
||||
}
|
||||
|
|
@ -1572,6 +1702,8 @@ Pianoroll::point_selection_changed ()
|
|||
void
|
||||
Pianoroll::delete_ ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
/* Editor has a lot to do here, potentially. But we don't */
|
||||
cut_copy (Editing::Delete);
|
||||
}
|
||||
|
|
@ -1579,6 +1711,8 @@ Pianoroll::delete_ ()
|
|||
void
|
||||
Pianoroll::paste (float times, bool from_context_menu)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (view) {
|
||||
// view->paste (Editing::Cut);
|
||||
}
|
||||
|
|
@ -1587,6 +1721,8 @@ Pianoroll::paste (float times, bool from_context_menu)
|
|||
void
|
||||
Pianoroll::keyboard_paste ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
}
|
||||
|
||||
/** Cut, copy or clear selected regions, automation points or a time range.
|
||||
|
|
@ -1596,6 +1732,8 @@ Pianoroll::keyboard_paste ()
|
|||
void
|
||||
Pianoroll::cut_copy (Editing::CutCopyOp op)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
using namespace Editing;
|
||||
|
||||
/* only cancel selection if cut/copy is successful.*/
|
||||
|
|
@ -1655,6 +1793,8 @@ Pianoroll::cut_copy (Editing::CutCopyOp op)
|
|||
void
|
||||
Pianoroll::select_all_within (Temporal::timepos_t const & start, Temporal::timepos_t const & end, double y0, double y1, std::list<SelectableOwner*> const & ignored, ARDOUR::SelectionOperation op, bool preserve_if_selected)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
std::list<Selectable*> found;
|
||||
|
||||
if (!view) {
|
||||
|
|
@ -1737,6 +1877,8 @@ Pianoroll::select_all_within (Temporal::timepos_t const & start, Temporal::timep
|
|||
void
|
||||
Pianoroll::set_session (ARDOUR::Session* s)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
CueEditor::set_session (s);
|
||||
|
||||
if (with_transport_controls) {
|
||||
|
|
@ -1757,6 +1899,8 @@ Pianoroll::set_session (ARDOUR::Session* s)
|
|||
void
|
||||
Pianoroll::map_transport_state ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!_session) {
|
||||
loop_button.unset_active_state ();
|
||||
play_button.unset_active_state ();
|
||||
|
|
@ -1794,6 +1938,8 @@ Pianoroll::map_transport_state ()
|
|||
bool
|
||||
Pianoroll::allow_trim_cursors () const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
auto mouse_mode = current_mouse_mode ();
|
||||
return mouse_mode == Editing::MouseContent || mouse_mode == Editing::MouseTimeFX;
|
||||
}
|
||||
|
|
@ -1801,6 +1947,8 @@ Pianoroll::allow_trim_cursors () const
|
|||
void
|
||||
Pianoroll::shift_midi (timepos_t const & t, bool model)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!view) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1811,6 +1959,8 @@ Pianoroll::shift_midi (timepos_t const & t, bool model)
|
|||
InstrumentInfo*
|
||||
Pianoroll::instrument_info () const
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!view || !view->midi_track()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
|
@ -1821,6 +1971,8 @@ Pianoroll::instrument_info () const
|
|||
void
|
||||
Pianoroll::update_tempo_based_rulers ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!_session) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1833,6 +1985,8 @@ Pianoroll::update_tempo_based_rulers ()
|
|||
void
|
||||
Pianoroll::set_note_selection (uint8_t note)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!view) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1847,6 +2001,8 @@ Pianoroll::set_note_selection (uint8_t note)
|
|||
void
|
||||
Pianoroll::add_note_selection (uint8_t note)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!view) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1861,6 +2017,8 @@ Pianoroll::add_note_selection (uint8_t note)
|
|||
void
|
||||
Pianoroll::extend_note_selection (uint8_t note)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!view) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1875,6 +2033,8 @@ Pianoroll::extend_note_selection (uint8_t note)
|
|||
void
|
||||
Pianoroll::toggle_note_selection (uint8_t note)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (!view) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1889,6 +2049,8 @@ Pianoroll::toggle_note_selection (uint8_t note)
|
|||
void
|
||||
Pianoroll::begin_write ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (view) {
|
||||
view->begin_write ();
|
||||
}
|
||||
|
|
@ -1897,6 +2059,8 @@ Pianoroll::begin_write ()
|
|||
void
|
||||
Pianoroll::end_write ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (view) {
|
||||
view->end_write ();
|
||||
}
|
||||
|
|
@ -1905,6 +2069,8 @@ Pianoroll::end_write ()
|
|||
void
|
||||
Pianoroll::manage_possible_header (Gtk::Allocation& alloc)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (prh) {
|
||||
double w, h;
|
||||
prh->size_request (w, h);
|
||||
|
|
@ -1916,6 +2082,8 @@ Pianoroll::manage_possible_header (Gtk::Allocation& alloc)
|
|||
void
|
||||
Pianoroll::show_count_in (std::string const & str)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (view) {
|
||||
view->set_overlay_text (str);
|
||||
}
|
||||
|
|
@ -1924,6 +2092,8 @@ Pianoroll::show_count_in (std::string const & str)
|
|||
void
|
||||
Pianoroll::hide_count_in ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (view) {
|
||||
view->hide_overlay_text ();
|
||||
}
|
||||
|
|
@ -1932,6 +2102,8 @@ Pianoroll::hide_count_in ()
|
|||
void
|
||||
Pianoroll::instant_save ()
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
region_ui_settings.draw_length = draw_length();
|
||||
region_ui_settings.draw_velocity = draw_velocity();
|
||||
region_ui_settings.channel = draw_channel();
|
||||
|
|
@ -1944,6 +2116,8 @@ Pianoroll::instant_save ()
|
|||
void
|
||||
Pianoroll::parameter_changed (std::string param)
|
||||
{
|
||||
EC_LOCAL_TEMPO_SCOPE;
|
||||
|
||||
if (param == X_("note-name-display")) {
|
||||
if (prh) {
|
||||
prh->instrument_info_change ();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue