Compare commits

...

5 Commits

Author SHA1 Message Date
Ben Loftis bae336129f Add action to create named-range from Selection, and prefer that over the Region variant
* shortcut is currently already assigned to Secondary+Tertiary+R
* perhaps we could instead assign an easier shortcut Primary+M  ?
2022-11-08 19:12:56 -06:00
Ben Loftis 3b49422277 Policy change: hiding a group should not affect its enablement
* in the past, the default behavior was: hiding a group would disable it,
    and then showing the group would re-enable it

* problem occurs when user has disabled a group; hiding and showing it
    unexpectedly re-enable the group

* there was a config variable to disable this behavior, but it was never
    shown on the GUI and therefore not discoverable

Despite the longstanding policy, there's really no reason for
  group visibility and enablement to be intertwined.

If this chnage causes a big problem for someone, they can revert to
  the prior behavior by setting the new config variable in the text file
2022-11-08 18:17:44 -06:00
Ben Loftis 70251c758d MixerScenes: show last-selected scene (gui part) 2022-11-08 17:30:07 -06:00
Ben Loftis 44ff0e46ba MixerScenes: show last-selected scene (libardour part) 2022-11-08 17:29:40 -06:00
Ben Loftis f55f0409f8 MixerScenes : scenes should report a Change when applied
* this is a convenience so the GUI can show last-selected scene
2022-11-08 17:29:13 -06:00
9 changed files with 27 additions and 5 deletions

View File

@ -168,7 +168,7 @@ This mode provides many different operations on both regions and control points,
@wvis|Common/show-recorder| <@SECONDARY@>r|show recorder page
@edit|Editor/redo| <@PRIMARY@>r|redo
@edit|Editor/select-from-regions| <@PRIMARY@><@TERTIARY@>r|set Range to selected regions
@rop|Region/add-range-marker-from-region| <@SECONDARY@><@TERTIARY@>r|Add single Range marker from selection
@edit|Editor/add-range-marker-from-selection| <@SECONDARY@><@TERTIARY@>r|Add single Range marker from selection
@trans|Transport/Record| <@TERTIARY@>r|engage record
@mmode|MouseMode/set-mouse-mode-timefx| t|timefx mode
@gselect|Common/select-all-visible-lanes| <@PRIMARY@>t|select all visible lanes

View File

@ -210,6 +210,8 @@
<menuitem action='select-punch-range'/>
<menuitem action='select-from-regions'/>
<separator/>
<menuitem action='add-range-marker-from-selection'/>
<separator/>
<menuitem action='select-all-after-edit-cursor'/>
<menuitem action='select-all-before-edit-cursor'/>
<menuitem action='select-all-between-cursors'/>

View File

@ -402,6 +402,9 @@ Editor::register_actions ()
act = reg_sens (editor_actions, "editor-crop", _("Crop"), sigc::mem_fun(*this, &Editor::crop_region_to_selection));
ActionManager::time_selection_sensitive_actions.push_back (act);
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, "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

@ -2223,6 +2223,7 @@ Editor::add_location_from_selection ()
string rangename;
if (selection->time.empty()) {
add_location_from_region();
return;
}
@ -2230,8 +2231,8 @@ Editor::add_location_from_selection ()
return;
}
timepos_t start = selection->time[clicked_selection].start();
timepos_t end = selection->time[clicked_selection].end();
timepos_t start = selection->time.start_time();
timepos_t end = selection->time.end_time();
_session->locations()->next_available_name(rangename,"selection");
if (!choose_new_marker_name(rangename, true)) {

View File

@ -4168,8 +4168,10 @@ Mixer_UI::update_scene_buttons ()
for (size_t idx = 0; idx < _mixer_scene_buttons.size (); ++idx) {
boost::shared_ptr<MixerScene> scn;
bool last = false;
if (_session) {
scn = _session->nth_mixer_scene (idx);
last = (idx == _session->last_touched_mixer_scene_idx());
}
Gtk::Label* l = _mixer_scene_labels[idx];
@ -4182,7 +4184,11 @@ Mixer_UI::update_scene_buttons ()
"%1 for Momentary Restore\n"
"Right-Click for Context menu")
, Keyboard::momentary_push_name() ) );
l->set_text (scn->name());
if (last) {
l->set_markup(string_compose ("<b>>%1</b>", scn->name()));
} else {
l->set_text (scn->name());
}
all_unset = false;
} else {
l->set_text((""));

View File

@ -196,7 +196,7 @@ CONFIG_VARIABLE (bool, copy_demo_sessions, "copy-demo-sessions", true)
CONFIG_VARIABLE (std::string, auditioner_output_left, "auditioner-output-left", "default")
CONFIG_VARIABLE (std::string, auditioner_output_right, "auditioner-output-right", "default")
CONFIG_VARIABLE (bool, replicate_missing_region_channels, "replicate-missing-region-channels", true)
CONFIG_VARIABLE (bool, hiding_groups_deactivates_groups, "hiding-groups-deactivates-groups", true)
CONFIG_VARIABLE (bool, hiding_groups_deactivates_groups, "deprecated-hiding-groups-deactivates-groups", false) /*deprecated*/
CONFIG_VARIABLE (bool, group_override_inverts, "group-override-inverts", true)
CONFIG_VARIABLE (bool, verify_remove_last_capture, "verify-remove-last-capture", true)
CONFIG_VARIABLE (bool, save_history, "save-history", true)

View File

@ -1218,6 +1218,7 @@ public:
bool apply_nth_mixer_scene (size_t, RouteList const&);
void store_nth_mixer_scene (size_t);
bool nth_mixer_scene_valid (size_t) const;
size_t last_touched_mixer_scene_idx () {return _last_touched_mixer_scene_idx;}
boost::shared_ptr<MixerScene> nth_mixer_scene (size_t, bool create_if_missing = false);
std::vector<boost::shared_ptr<MixerScene>> mixer_scenes () const;
@ -1437,6 +1438,7 @@ private:
bool _session_range_is_free;
bool _silent;
samplecnt_t _remaining_latency_preroll;
size_t _last_touched_mixer_scene_idx;
// varispeed playback -- TODO: move out of session to backend.
double _engine_speed;

View File

@ -146,6 +146,7 @@ MixerScene::apply () const
rv |= recurse_to_master (c, done, ts);
}
Change (); /* EMIT SIGNAL */
return rv;
}
@ -159,6 +160,7 @@ MixerScene::apply (PBD::ControllableSet const& acs, AutomationTypeSet const& ts)
rv |= recurse_to_master (c, done, ts);
}
Change (); /* EMIT SIGNAL */
return rv;
}

View File

@ -198,6 +198,7 @@ Session::Session (AudioEngine &eng,
, _session_range_is_free (true)
, _silent (false)
, _remaining_latency_preroll (0)
, _last_touched_mixer_scene_idx (999)
, _engine_speed (1.0)
, _signalled_varispeed (0)
, auto_play_legal (false)
@ -7537,6 +7538,8 @@ Session::apply_nth_mixer_scene (size_t nth)
scene = _mixer_scenes[nth];
}
assert (scene);
_last_touched_mixer_scene_idx = nth;
return scene->apply ();
}
@ -7561,6 +7564,7 @@ Session::apply_nth_mixer_scene (size_t nth, RouteList const& rl)
r->automatables (acs);
}
_last_touched_mixer_scene_idx = nth;
return scene->apply (acs);
}
@ -7568,6 +7572,8 @@ void
Session::store_nth_mixer_scene (size_t nth)
{
boost::shared_ptr<MixerScene> scn = nth_mixer_scene (nth, true);
_last_touched_mixer_scene_idx = nth;
scn->snapshot ();
//calling code is expected to set a name, but we need to initalize with 'something'