tempo mapping: tempo group and mapping group are now only ever visible one at a time
Currently, the "switch" is in Edit > Tempo
This commit is contained in:
parent
a37d4dbacf
commit
13311b7a32
|
@ -332,7 +332,6 @@ Editor::Editor ()
|
|||
, timecode_label (_("Timecode"))
|
||||
, samples_label (_("Samples"))
|
||||
, tempo_label (_("Tempo"))
|
||||
, mapping_label (_("Tempo Mapping"))
|
||||
, meter_label (_("Time Signature"))
|
||||
, mark_label (_("Location Markers"))
|
||||
, range_mark_label (_("Range Markers"))
|
||||
|
@ -545,13 +544,6 @@ Editor::Editor ()
|
|||
tempo_label.hide();
|
||||
tempo_label.set_no_show_all();
|
||||
|
||||
mapping_label.set_name ("EditorRulerLabel");
|
||||
mapping_label.set_size_request (-1, (int)timebar_height);
|
||||
mapping_label.set_alignment (1.0, 0.5);
|
||||
mapping_label.set_padding (5,0);
|
||||
mapping_label.hide();
|
||||
mapping_label.set_no_show_all();
|
||||
|
||||
meter_label.set_name ("EditorRulerLabel");
|
||||
meter_label.set_size_request (-1, (int)timebar_height);
|
||||
meter_label.set_alignment (1.0, 0.5);
|
||||
|
@ -890,6 +882,9 @@ Editor::Editor ()
|
|||
UIConfiguration::instance().map_parameters (pc);
|
||||
|
||||
setup_fade_images ();
|
||||
|
||||
/* force correct state for tempo edit behavior */
|
||||
tempo_edit_behavior_toggled (_tempo_edit_behavior);
|
||||
}
|
||||
|
||||
Editor::~Editor()
|
||||
|
|
|
@ -917,6 +917,7 @@ private:
|
|||
Gtk::EventBox time_bars_event_box;
|
||||
Gtk::VBox time_bars_vbox;
|
||||
|
||||
ArdourCanvas::Container* tempo_meta_group;
|
||||
ArdourCanvas::Container* tempo_group;
|
||||
ArdourCanvas::Container* mapping_group;
|
||||
ArdourCanvas::Container* meter_group;
|
||||
|
@ -965,7 +966,6 @@ private:
|
|||
Glib::RefPtr<Gtk::ToggleAction> ruler_bbt_action;
|
||||
Glib::RefPtr<Gtk::ToggleAction> ruler_meter_action;
|
||||
Glib::RefPtr<Gtk::ToggleAction> ruler_tempo_action;
|
||||
Glib::RefPtr<Gtk::ToggleAction> ruler_mapping_action;
|
||||
Glib::RefPtr<Gtk::ToggleAction> ruler_range_action;
|
||||
Glib::RefPtr<Gtk::ToggleAction> ruler_loop_punch_action;
|
||||
Glib::RefPtr<Gtk::ToggleAction> ruler_cd_marker_action;
|
||||
|
@ -1070,7 +1070,6 @@ private:
|
|||
Gtk::Label timecode_label;
|
||||
Gtk::Label samples_label;
|
||||
Gtk::Label tempo_label;
|
||||
Gtk::Label mapping_label;
|
||||
Gtk::Label meter_label;
|
||||
Gtk::Label mark_label;
|
||||
Gtk::Label range_mark_label;
|
||||
|
@ -2529,6 +2528,7 @@ private:
|
|||
void choose_mapping_drag (ArdourCanvas::Item*, GdkEvent*);
|
||||
|
||||
Editing::TempoEditBehavior _tempo_edit_behavior;
|
||||
void tempo_edit_behavior_toggled (Editing::TempoEditBehavior);
|
||||
|
||||
template<typename T>
|
||||
Temporal::TimeDomain drag_time_domain (T* thing_with_time_domain) {
|
||||
|
|
|
@ -207,8 +207,8 @@ Editor::register_actions ()
|
|||
ActionManager::register_action (editor_actions, "lock", S_("Session|Lock"), sigc::mem_fun (*this, &Editor::lock));
|
||||
|
||||
RadioAction::Group tempo_edit_group;
|
||||
ActionManager::register_radio_action (editor_actions, tempo_edit_group, "tempo-edit-is-mapping", _("Map Tempo"), sigc::bind (sigc::mem_fun (*this, &Editor::set_tempo_edit_behavior), Editing::TempoMapping));
|
||||
ActionManager::register_radio_action (editor_actions, tempo_edit_group, "tempo-edit-is-change", _("Change Tempo"), sigc::bind (sigc::mem_fun (*this, &Editor::set_tempo_edit_behavior), Editing::TempoChanging));
|
||||
ActionManager::register_radio_action (editor_actions, tempo_edit_group, "tempo-edit-is-mapping", _("Map Tempo"), sigc::bind (sigc::mem_fun (*this, &Editor::tempo_edit_behavior_toggled), Editing::TempoMapping));
|
||||
ActionManager::register_radio_action (editor_actions, tempo_edit_group, "tempo-edit-is-changing", _("Change Tempo"), sigc::bind (sigc::mem_fun (*this, &Editor::tempo_edit_behavior_toggled), Editing::TempoChanging));
|
||||
|
||||
toggle_reg_sens (editor_actions, "show-editor-mixer", _("Show Editor Mixer"), sigc::mem_fun (*this, &Editor::editor_mixer_button_toggled));
|
||||
toggle_reg_sens (editor_actions, "show-editor-list", _("Show Editor List"), sigc::mem_fun (*this, &Editor::editor_list_button_toggled));
|
||||
|
@ -718,7 +718,6 @@ Editor::register_actions ()
|
|||
ruler_bbt_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-bbt-ruler"), _("Bars:Beats"), sigc::mem_fun(*this, &Editor::toggle_ruler_visibility)));
|
||||
ruler_meter_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-meter-ruler"), _("Time Signature"), sigc::mem_fun(*this, &Editor::toggle_ruler_visibility)));
|
||||
ruler_tempo_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-tempo-ruler"), _("Tempo"), sigc::mem_fun(*this, &Editor::toggle_ruler_visibility)));
|
||||
ruler_mapping_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-mapping-ruler"), _("Tempo Mapping"), sigc::mem_fun(*this, &Editor::toggle_ruler_visibility)));
|
||||
ruler_range_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-range-ruler"), _("Range Markers"), sigc::mem_fun(*this, &Editor::toggle_ruler_visibility)));
|
||||
ruler_loop_punch_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-loop-punch-ruler"), _("Loop/Punch Ranges"), sigc::mem_fun(*this, &Editor::toggle_ruler_visibility)));
|
||||
ruler_cd_marker_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-cd-marker-ruler"), _("CD Markers"), sigc::mem_fun(*this, &Editor::toggle_ruler_visibility)));
|
||||
|
|
|
@ -162,12 +162,14 @@ Editor::initialize_canvas ()
|
|||
CANVAS_DEBUG_NAME (transport_marker_group, "transport marker group");
|
||||
range_marker_group = new ArdourCanvas::Container (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 3.0) + 1.0));
|
||||
CANVAS_DEBUG_NAME (range_marker_group, "range marker group");
|
||||
tempo_group = new ArdourCanvas::Container (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 4.0) + 1.0));
|
||||
tempo_meta_group = new ArdourCanvas::Container (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 4.0) + 1.0));
|
||||
CANVAS_DEBUG_NAME (tempo_meta_group, "tempo meta group");
|
||||
tempo_group = new ArdourCanvas::Container (tempo_meta_group, ArdourCanvas::Duple (0.0, 0.0));
|
||||
CANVAS_DEBUG_NAME (tempo_group, "tempo group");
|
||||
mapping_group = new ArdourCanvas::Container (tempo_meta_group, ArdourCanvas::Duple (0.0, 0.0));
|
||||
CANVAS_DEBUG_NAME (tempo_group, "mapping group");
|
||||
meter_group = new ArdourCanvas::Container (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 5.0) + 1.0));
|
||||
CANVAS_DEBUG_NAME (meter_group, "meter group");
|
||||
mapping_group = new ArdourCanvas::Container (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 6.0) + 1.0));
|
||||
CANVAS_DEBUG_NAME (mapping_group, "mapping group");
|
||||
|
||||
float timebar_thickness = timebar_height; //was 4
|
||||
float timebar_top = (timebar_height - timebar_thickness)/2;
|
||||
|
@ -183,11 +185,12 @@ Editor::initialize_canvas ()
|
|||
tempo_bar->set_outline(false);
|
||||
tempo_bar->set_outline_what(ArdourCanvas::Rectangle::BOTTOM);
|
||||
|
||||
mapping_bar = new ArdourCanvas::Rectangle (mapping_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height));
|
||||
mapping_bar = new ArdourCanvas::Rectangle (tempo_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height));
|
||||
CANVAS_DEBUG_NAME (mapping_bar, "Mapping Bar");
|
||||
mapping_bar->set_fill(true);
|
||||
mapping_bar->set_outline(false);
|
||||
mapping_bar->set_outline_what(ArdourCanvas::Rectangle::BOTTOM);
|
||||
mapping_bar->hide ();
|
||||
|
||||
range_marker_bar = new ArdourCanvas::Rectangle (range_marker_group, ArdourCanvas::Rect (0.0, timebar_top, ArdourCanvas::COORD_MAX, timebar_btm));
|
||||
CANVAS_DEBUG_NAME (range_marker_bar, "Range Marker Bar");
|
||||
|
|
|
@ -173,7 +173,6 @@ Editor::initialize_rulers ()
|
|||
lab_children.push_back (Element(timecode_label, PACK_SHRINK, PACK_START));
|
||||
lab_children.push_back (Element(samples_label, PACK_SHRINK, PACK_START));
|
||||
lab_children.push_back (Element(bbt_label, PACK_SHRINK, PACK_START));
|
||||
lab_children.push_back (Element(mapping_label, PACK_SHRINK, PACK_START));
|
||||
lab_children.push_back (Element(tempo_label, PACK_SHRINK, PACK_START));
|
||||
lab_children.push_back (Element(meter_label, PACK_SHRINK, PACK_START));
|
||||
lab_children.push_back (Element(range_mark_label, PACK_SHRINK, PACK_START));
|
||||
|
@ -336,7 +335,6 @@ Editor::store_ruler_visibility ()
|
|||
node->set_property (X_("bbt"), ruler_bbt_action->get_active());
|
||||
node->set_property (X_("meter"), ruler_meter_action->get_active());
|
||||
node->set_property (X_("tempo"), ruler_tempo_action->get_active());
|
||||
node->set_property (X_("mapping"), ruler_mapping_action->get_active());
|
||||
node->set_property (X_("rangemarker"), ruler_range_action->get_active());
|
||||
node->set_property (X_("transportmarker"), ruler_loop_punch_action->get_active());
|
||||
node->set_property (X_("cdmarker"), ruler_cd_marker_action->get_active());
|
||||
|
@ -371,9 +369,6 @@ Editor::restore_ruler_visibility ()
|
|||
if (node->get_property ("tempo", yn)) {
|
||||
ruler_tempo_action->set_active (yn);
|
||||
}
|
||||
if (node->get_property ("mapping", yn)) {
|
||||
ruler_mapping_action->set_active (yn);
|
||||
}
|
||||
if (node->get_property ("meter", yn)) {
|
||||
ruler_meter_action->set_active (yn);
|
||||
}
|
||||
|
@ -453,7 +448,6 @@ Editor::update_ruler_visibility ()
|
|||
/* gtk update probs require this (damn) */
|
||||
meter_label.hide();
|
||||
tempo_label.hide();
|
||||
mapping_label.hide();
|
||||
range_mark_label.hide();
|
||||
transport_mark_label.hide();
|
||||
cd_mark_label.hide();
|
||||
|
@ -522,33 +516,18 @@ Editor::update_ruler_visibility ()
|
|||
bbt_label.hide();
|
||||
}
|
||||
|
||||
if (ruler_mapping_action->get_active()) {
|
||||
old_unit_pos = mapping_group->position().y;
|
||||
if (tbpos != old_unit_pos) {
|
||||
mapping_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||
}
|
||||
mapping_group->show();
|
||||
mapping_label.show();
|
||||
tbpos += timebar_height;
|
||||
tbgpos += timebar_height;
|
||||
visible_timebars++;
|
||||
} else {
|
||||
mapping_group->hide();
|
||||
mapping_label.hide();
|
||||
}
|
||||
|
||||
if (ruler_tempo_action->get_active()) {
|
||||
old_unit_pos = tempo_group->position().y;
|
||||
old_unit_pos = tempo_meta_group->position().y;
|
||||
if (tbpos != old_unit_pos) {
|
||||
tempo_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||
tempo_meta_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||
}
|
||||
tempo_group->show();
|
||||
tempo_meta_group->show();
|
||||
tempo_label.show();
|
||||
tbpos += timebar_height;
|
||||
tbgpos += timebar_height;
|
||||
visible_timebars++;
|
||||
} else {
|
||||
tempo_group->hide();
|
||||
tempo_meta_group->hide();
|
||||
tempo_label.hide();
|
||||
}
|
||||
|
||||
|
|
|
@ -898,5 +898,62 @@ Editor::mid_tempo_per_region_update (RegionView* rv)
|
|||
void
|
||||
Editor::set_tempo_edit_behavior (TempoEditBehavior teb)
|
||||
{
|
||||
_tempo_edit_behavior = teb;
|
||||
/* As with all things radio-action related, we carry out the change by
|
||||
toggling the action, and then actually do the model-view changes in
|
||||
the actions' toggled handler.
|
||||
*/
|
||||
|
||||
Glib::RefPtr<Action> act;
|
||||
|
||||
switch (teb) {
|
||||
case TempoMapping:
|
||||
act = ActionManager::get_action (X_("Editor"), X_("tempo-edit-is-mapping"));
|
||||
break;
|
||||
case TempoChanging:
|
||||
act = ActionManager::get_action (X_("Editor"), X_("tempo-edit-is-changing"));
|
||||
}
|
||||
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
|
||||
/* go there and back to ensure that the toggled handler is called to set up mouse_mode */
|
||||
tact->set_active (false);
|
||||
tact->set_active (true);
|
||||
}
|
||||
|
||||
void
|
||||
Editor::tempo_edit_behavior_toggled (TempoEditBehavior teb)
|
||||
{
|
||||
Glib::RefPtr<Action> act;
|
||||
|
||||
switch (teb) {
|
||||
case TempoMapping:
|
||||
act = ActionManager::get_action (X_("Editor"), X_("tempo-edit-is-mapping"));
|
||||
break;
|
||||
case TempoChanging:
|
||||
act = ActionManager::get_action (X_("Editor"), X_("tempo-edit-is-changing"));
|
||||
}
|
||||
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
|
||||
if (!tact->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
|
||||
* jiffy.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
/* change the ruler shown in the tempo position */
|
||||
_tempo_edit_behavior = teb;
|
||||
|
||||
switch (teb) {
|
||||
case TempoMapping:
|
||||
tempo_group->hide ();
|
||||
mapping_group->show ();
|
||||
break;
|
||||
case TempoChanging:
|
||||
tempo_group->show ();
|
||||
mapping_group->hide ();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue