Cont'd work on editor rulers (actions and style)

This commit is contained in:
Robin Gareus 2025-01-10 01:56:19 +01:00
parent c47a3e79e8
commit 3c43628344
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04
6 changed files with 78 additions and 10 deletions

View file

@ -594,6 +594,22 @@ ARDOUR_UI::install_dependent_actions ()
sigc::bind (sigc::mem_fun(*editor, &PublicEditor::jump_forward_to_mark_flagged), Location::Flags (0), Location::Flags (0), Location::IsMark));
ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_action (common_actions, "jump-backward-to-range", _("Jump to Previous Range"),
sigc::bind (sigc::mem_fun(*editor, &PublicEditor::jump_backward_to_mark_flagged), Location::Flags (Location::IsRangeMarker | Location::IsSessionRange), Location::Flags (0), Location::Flags (0)));
ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_action (common_actions, "jump-forward-to-range", _("Jump to Next Range"),
sigc::bind (sigc::mem_fun(*editor, &PublicEditor::jump_forward_to_mark_flagged), Location::Flags(Location::IsRangeMarker | Location::IsSessionRange), Location::Flags (0), Location::Flags (0)));
ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_action (common_actions, "jump-backward-to-section-mark", _("Jump to Previous Arrangment Mark"),
sigc::bind (sigc::mem_fun(*editor, &PublicEditor::jump_backward_to_mark_flagged), Location::Flags (0), Location::Flags (0), Location::Flags (Location::IsMark | Location::IsSection)));
ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_action (common_actions, "jump-forward-to-section-mark", _("Jump to Next Arrangment Mark"),
sigc::bind (sigc::mem_fun(*editor, &PublicEditor::jump_forward_to_mark_flagged), Location::Flags (0), Location::Flags (0), Location::Flags(Location::IsMark | Location::IsSection)));
ActionManager::session_sensitive_actions.push_back (act);
for (int i = 1; i <= 9; ++i) {
string const a = string_compose(X_("goto-mark-%1"), i);
string const n = string_compose(_("Locate to Mark %1"), i);

View file

@ -275,10 +275,17 @@ Editor::Editor ()
, range_marker_bar (0)
, section_marker_bar (0)
, ruler_separator (0)
, _ruler_btn_section_add ("+")
, _ruler_btn_tempo_add ("+")
, _ruler_btn_meter_add ("+")
, _ruler_btn_range_prev ("<")
, _ruler_btn_range_next (">")
, _ruler_btn_range_add ("+")
, _ruler_btn_loc_prev ("<")
, _ruler_btn_loc_next (">")
, _ruler_btn_loc_add ("+")
, _ruler_btn_section_prev ("<")
, _ruler_btn_section_next (">")
, _ruler_btn_section_add ("+")
, videotl_label (_("Video Timeline"))
, videotl_group (0)
, _region_boundary_cache_dirty (true)
@ -422,18 +429,25 @@ Editor::Editor ()
rtbl = setup_ruler_new (_ruler_box_bbt, _("Bars:Beats"));
rtbl = setup_ruler_new (_ruler_box_tempo, _("Tempo"));
setup_ruler_add (rtbl, _ruler_btn_tempo_add);
rtbl = setup_ruler_new (_ruler_box_meter, _("Time Signature"));
setup_ruler_add (rtbl, _ruler_btn_meter_add);
rtbl = setup_ruler_new (_ruler_box_range, _("Range Markers"));
setup_ruler_add (rtbl, _ruler_btn_range_prev, 0);
setup_ruler_add (rtbl, _ruler_btn_range_add, 1);
setup_ruler_add (rtbl, _ruler_btn_range_next, 2);
rtbl = setup_ruler_new (_ruler_box_marker, _("Location Markers"));
setup_ruler_add (rtbl, _ruler_btn_loc_prev, 0);
setup_ruler_add (rtbl, _ruler_btn_loc_next, 1);
setup_ruler_add (rtbl, _ruler_btn_loc_add, 2);
setup_ruler_add (rtbl, _ruler_btn_loc_add, 1);
setup_ruler_add (rtbl, _ruler_btn_loc_next, 2);
rtbl = setup_ruler_new (_ruler_box_section, _("Arrangement Markers"));
setup_ruler_add (rtbl, _ruler_btn_section_add);
setup_ruler_add (rtbl, _ruler_btn_section_prev, 0);
setup_ruler_add (rtbl, _ruler_btn_section_add, 1);
setup_ruler_add (rtbl, _ruler_btn_section_next, 2);
rtbl = setup_ruler_new (_ruler_box_videotl, &videotl_label);
videotl_label.set_size_request (-1, 4 * timebar_height);
@ -751,13 +765,14 @@ Editor::setup_ruler_new (Gtk::HBox& box, Gtk::Label* rlbl)
{
rlbl->set_name ("EditorRulerLabel");
rlbl->set_size_request (-1, (int)timebar_height);
rlbl->set_alignment (1.0, 0);
rlbl->show ();
Gtk::Table* rtbl = manage (new Gtk::Table);
rtbl->attach (*rlbl, 0, 1, 0, 1, SHRINK, SHRINK, 2, 0);
rtbl->attach (*rlbl, 0, 1, 0, 1, EXPAND|FILL, SHRINK, 2, 0);
rtbl->show ();
box.pack_end (*rtbl, false, false);
box.pack_start (*rtbl, true, true);
box.hide();
box.set_no_show_all();
return rtbl;
@ -768,8 +783,10 @@ Editor::setup_ruler_add (Gtk::Table* rtbl, ArdourWidgets::ArdourButton& b, int p
{
b.set_name ("editor ruler button");
b.set_size_request (-1, (int)timebar_height -2);
b.set_tweaks(ArdourButton::Tweaks(ArdourButton::ForceBoxy | ArdourButton::ForceFlat));
b.set_elements (ArdourButton::Element(ArdourButton::Text));
b.show ();
rtbl->attach (b, pos + 1, pos + 2, 0, 1, SHRINK, SHRINK, 2, 1);
rtbl->attach (b, pos + 1, pos + 2, 0, 1, SHRINK, SHRINK, 0, 1);
}
bool

View file

@ -935,10 +935,17 @@ private:
Gtk::HBox _ruler_box_section;
Gtk::HBox _ruler_box_videotl;
ArdourWidgets::ArdourButton _ruler_btn_section_add;
ArdourWidgets::ArdourButton _ruler_btn_tempo_add;
ArdourWidgets::ArdourButton _ruler_btn_meter_add;
ArdourWidgets::ArdourButton _ruler_btn_range_prev;
ArdourWidgets::ArdourButton _ruler_btn_range_next;
ArdourWidgets::ArdourButton _ruler_btn_range_add;
ArdourWidgets::ArdourButton _ruler_btn_loc_prev;
ArdourWidgets::ArdourButton _ruler_btn_loc_next;
ArdourWidgets::ArdourButton _ruler_btn_loc_add;
ArdourWidgets::ArdourButton _ruler_btn_section_prev;
ArdourWidgets::ArdourButton _ruler_btn_section_next;
ArdourWidgets::ArdourButton _ruler_btn_section_add;
/* videtimline related actions */
Gtk::Label videotl_label;
@ -1411,6 +1418,9 @@ private:
void set_loop_range (Temporal::timepos_t const & start, Temporal::timepos_t const & end, std::string cmd);
void set_punch_range (Temporal::timepos_t const & start, Temporal::timepos_t const & end, std::string cmd);
void add_tempo_from_playhead_cursor ();
void add_meter_from_playhead_cursor ();
void toggle_location_at_playhead_cursor ();
void add_location_from_playhead_cursor ();
bool do_remove_location_at_playhead_cursor ();

View file

@ -403,6 +403,12 @@ Editor::register_actions ()
act = reg_sens (editor_actions, "add-range-marker-from-selection", _("Add Range Marker from Selection"), sigc::mem_fun(*this, &Editor::add_location_from_selection));
ActionManager::session_sensitive_actions.push_back (act);
act = reg_sens (editor_actions, "add-tempo-from-playhead", _("Add Tempo Marker at Playhead"), sigc::mem_fun(*this, &Editor::add_tempo_from_playhead_cursor));
ActionManager::session_sensitive_actions.push_back (act);
act = reg_sens (editor_actions, "add-meter-from-playhead", _("Add Time Signature at Playhead"), sigc::mem_fun(*this, &Editor::add_meter_from_playhead_cursor));
ActionManager::session_sensitive_actions.push_back (act);
act = reg_sens (editor_actions, "editor-consolidate-with-processing", _("Consolidate Range (with processing)"), sigc::bind (sigc::mem_fun(*this, &Editor::bounce_range_selection), ReplaceRange, true));
ActionManager::time_selection_sensitive_actions.push_back (act);
act = reg_sens (editor_actions, "editor-consolidate", _("Consolidate Range"), sigc::bind (sigc::mem_fun(*this, &Editor::bounce_range_selection), ReplaceRange, false));

View file

@ -2150,6 +2150,17 @@ Editor::add_section_from_playhead ()
add_location_mark_with_flag (timepos_t (_session->audible_sample()), Location::Flags(Location::IsMark | Location::IsSection), 0);
}
void
Editor::add_tempo_from_playhead_cursor ()
{
mouse_add_new_tempo_event (timepos_t (_session->audible_sample()));
}
void
Editor::add_meter_from_playhead_cursor ()
{
mouse_add_new_meter_event (timepos_t (_session->audible_sample()));
}
/** Add a single range marker around all selected regions */
void

View file

@ -197,12 +197,20 @@ Editor::initialize_rulers ()
void
Editor::initialize_ruler_actions ()
{
_ruler_btn_loc_prev.set_related_action (ActionManager::get_action (X_("Common"), X_("jump-backward-to-mark")));
_ruler_btn_loc_next.set_related_action (ActionManager::get_action (X_("Common"), X_("jump-forward-to-mark")));
_ruler_btn_loc_prev.set_related_action (ActionManager::get_action (X_("Common"), X_("jump-backward-to-location-mark")));
_ruler_btn_loc_next.set_related_action (ActionManager::get_action (X_("Common"), X_("jump-forward-to-location-mark")));
_ruler_btn_loc_add.set_related_action (ActionManager::get_action (X_("Common"), X_("add-location-from-playhead")));
_ruler_btn_section_prev.set_related_action (ActionManager::get_action (X_("Common"), X_("jump-backward-to-section-mark")));
_ruler_btn_section_next.set_related_action (ActionManager::get_action (X_("Common"), X_("jump-forward-to-section-mark")));
_ruler_btn_section_add.set_related_action (ActionManager::get_action (X_("Common"), X_("add-section-from-playhead")));
_ruler_btn_range_add.set_related_action (ActionManager::get_action (X_("Editor"), X_("add-range-marker-from-selection")));
_ruler_btn_range_prev.set_related_action (ActionManager::get_action (X_("Common"), X_("jump-backward-to-range")));
_ruler_btn_range_next.set_related_action (ActionManager::get_action (X_("Common"), X_("jump-forward-to-range")));
_ruler_btn_tempo_add.set_related_action (ActionManager::get_action (X_("Editor"), X_("add-tempo-from-playhead")));
_ruler_btn_meter_add.set_related_action (ActionManager::get_action (X_("Editor"), X_("add-meter-from-playhead")));
}
bool