mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-08 07:45:00 +01:00
Tweaks to Mixer and Monitor keybindings:
Add Mixer-specific view keybindings for list, vca, mon. (thanks to: the_CLA) Move monitor keybindings (mute, dim, mono) to be globally-accessible. Implement new mixer-specific actions to show/hide monitor,vcas,mixbuses (the_CLA) Move monitor funcs (mute,dim,mono) to globally-accessible actions. Make a new Monitor group insted of using Transport group. Allow use-monitor-section to be controlled by both menu and session-options dialog.
This commit is contained in:
parent
19cb8cf138
commit
65bda27d42
17 changed files with 391 additions and 171 deletions
|
|
@ -57,6 +57,8 @@ just align the first region and moves other selected regions to maintain relativ
|
|||
|
||||
%gmode Global Global Transport Modes
|
||||
|
||||
%gmon Global Global Monitor Operations
|
||||
|
||||
%movp Global Global Playhead Operations
|
||||
A left click in the rulers positions the playhead unless Ardour is recording. You can use {\tt KP$\_$n} to move the
|
||||
playhead to the n-th marker.
|
||||
|
|
@ -150,6 +152,7 @@ This mode provides many different operations on both regions and control points,
|
|||
@gmark|Common/jump-backward-to-mark|q|to previous mark
|
||||
@sess|Common/Quit|<@PRIMARY@>q|quit
|
||||
@gmark|Common/jump-forward-to-mark|w|to next mark
|
||||
@mmode|MouseMode/set-mouse-mode-content|e|content mode
|
||||
@select|Editor/select-all-before-edit-cursor|<@PRIMARY@>e|select all before EP
|
||||
@rop|Region/export-region|<@PRIMARY@><@SECONDARY@>e|export selected region(s)
|
||||
@sess|Main/ExportAudio|<@SECONDARY@>e|export session
|
||||
|
|
@ -167,8 +170,6 @@ This mode provides many different operations on both regions and control points,
|
|||
@sess|Common/addExistingAudioFiles|<@PRIMARY@>i|import audio files
|
||||
@gselect|Common/invert-selection|<@TERTIARY@>i|invert selection
|
||||
@edtrk|Editor/toggle-midi-input-active|<@SECONDARY@>i|toggle sel. track MIDI input
|
||||
@mmode|MouseMode/set-mouse-mode-object|g|object mode
|
||||
@mmode|MouseMode/set-mouse-mode-content|e|content mode
|
||||
@sess|Main/Open|<@PRIMARY@>o|open an existing session
|
||||
@sess|Main/Recent|<@PRIMARY@><@TERTIARY@>o|open a recent session
|
||||
@wvis|Window/toggle-session-options-editor|<@SECONDARY@>o|toggle preferences dialog
|
||||
|
|
@ -187,6 +188,7 @@ This mode provides many different operations on both regions and control points,
|
|||
@sess|Common/Save|<@PRIMARY@>s|save session
|
||||
@sess|Main/SnapshotStay|<@PRIMARY@><@TERTIARY@>s|snapshot session
|
||||
@edtrk|Editor/track-solo-toggle|<@SECONDARY@>s|toggle track solo status
|
||||
@edit|Editor/ToggleSummary|<@TERTIARY@>s|toggle summary
|
||||
@mmode|MouseMode/set-mouse-mode-draw|d|note-draw mode
|
||||
@edit|Editor/duplicate|<@SECONDARY@>d|duplicate (once)
|
||||
@edit|Editor/multi-duplicate|<@TERTIARY@>d|duplicate (multi)
|
||||
|
|
@ -197,6 +199,7 @@ This mode provides many different operations on both regions and control points,
|
|||
@rop|Region/show-rhythm-ferret|<@SECONDARY@>f|show rhythm ferret window
|
||||
@wvis|Common/ToggleMaximalEditor|<@PRIMARY@><@SECONDARY@>f|maximise editor space
|
||||
@wvis|Common/ToggleMaximalMixer|<@PRIMARY@><@TERTIARY@>f|maximise mixer space
|
||||
@mmode|MouseMode/set-mouse-mode-object|g|object mode
|
||||
@edit|Region/play-selected-regions|h|play selected region(s)
|
||||
@eep|Region/trim-front|j|trim front
|
||||
@eep|Region/trim-back|k|trim back
|
||||
|
|
@ -204,6 +207,7 @@ This mode provides many different operations on both regions and control points,
|
|||
@trans|Transport/Loop|l|loop play (the loop range)
|
||||
@select|Editor/select-all-in-loop-range|<@PRIMARY@>l|select all in loop range
|
||||
@wvis|Window/toggle-locations|<@SECONDARY@>l| toggle locations dialog
|
||||
@edit|Editor/show-editor-list|<@TERTIARY@>l| show editor list
|
||||
|
||||
;; BOTTOM ROW
|
||||
|
||||
|
|
@ -227,6 +231,10 @@ This mode provides many different operations on both regions and control points,
|
|||
@wvis|Window/toggle-midi-connection-manager|<@SECONDARY@><@TERTIARY@>m|toggle global midi patchbay
|
||||
@wvis|Window/show-mixer|<@SECONDARY@>m|show mixer window
|
||||
|
||||
@gmon|Monitor/monitor-cut-all|<@PRIMARY@>m|monitor cut all
|
||||
@gmon|Monitor/monitor-mono|<@PRIMARY@><@SECONDARY@>m|monitor mono
|
||||
@gmon|Monitor/monitor-dim-all|<@PRIMARY@><@TERTIARY@>m|monitor dim
|
||||
|
||||
;; arrow keys, navigation etc.
|
||||
|
||||
@vis|Editor/step-tracks-up|Up|scroll up (step)
|
||||
|
|
|
|||
|
|
@ -34,6 +34,14 @@
|
|||
</menu>
|
||||
<separator/>
|
||||
<menuitem action='toggle-session-options-editor'/>
|
||||
|
||||
<menu name='MonitorMenu' action='MonitorMenu'>
|
||||
<menuitem action='UseMonitorSection'/>
|
||||
<menuitem action='monitor-cut-all'/>
|
||||
<menuitem action='monitor-dim-all'/>
|
||||
<menuitem action='monitor-mono'/>
|
||||
</menu>
|
||||
|
||||
<menu name='Metadata' action='Metadata'>
|
||||
<menuitem action='EditMetadata'/>
|
||||
<menuitem action='ImportMetadata'/>
|
||||
|
|
@ -76,11 +84,6 @@
|
|||
<menuitem action='toggle-skip-playback'/>
|
||||
#endif
|
||||
|
||||
<separator/>
|
||||
<menuitem action='set-loop-from-edit-range'/>
|
||||
<menuitem action='set-punch-from-edit-range'/>
|
||||
<menuitem action='set-session-from-edit-range'/>
|
||||
|
||||
<separator/>
|
||||
<menuitem action='Forward'/>
|
||||
<menuitem action='Rewind'/>
|
||||
|
|
@ -88,6 +91,10 @@
|
|||
<menuitem action='TransitionToReverse'/>
|
||||
<separator/>
|
||||
|
||||
<separator/>
|
||||
<menuitem action='set-loop-from-edit-range'/>
|
||||
<menuitem action='set-punch-from-edit-range'/>
|
||||
<menuitem action='set-session-from-edit-range'/>
|
||||
|
||||
<menu action="MovePlayHeadMenu">
|
||||
<menuitem action='set-playhead'/>
|
||||
|
|
@ -512,15 +519,18 @@
|
|||
|
||||
<menuitem action='show-editor-mixer'/>
|
||||
<menuitem action='show-editor-list'/>
|
||||
|
||||
<menuitem action='ToggleSummary'/>
|
||||
<menuitem action='ToggleGroupTabs'/>
|
||||
<menuitem action='show-marker-lines'/>
|
||||
|
||||
<separator/>
|
||||
<menuitem action='ToggleMixerList'/>
|
||||
<menuitem action='ToggleMonitorSection'/>
|
||||
#ifdef MIXBUS
|
||||
<menuitem action='ToggleMixbusPane'/>
|
||||
#endif
|
||||
<menuitem action='ToggleVCAPane'/>
|
||||
<menuitem action='ToggleSummary'/>
|
||||
<menuitem action='ToggleGroupTabs'/>
|
||||
<menuitem action='show-marker-lines'/>
|
||||
<menuitem action='ToggleMonitorSection'/>
|
||||
|
||||
</menu>
|
||||
<menu action = 'WindowMenu'>
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@
|
|||
#include "ardour/filename_extensions.h"
|
||||
#include "ardour/filesystem_paths.h"
|
||||
#include "ardour/ltc_file_reader.h"
|
||||
#include "ardour/monitor_control.h"
|
||||
#include "ardour/midi_track.h"
|
||||
#include "ardour/port.h"
|
||||
#include "ardour/plugin_manager.h"
|
||||
|
|
@ -5985,3 +5986,45 @@ ARDOUR_UI::reset_focus (Gtk::Widget* w)
|
|||
gtk_window_set_focus (GTK_WINDOW(top->gobj()), 0);
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
ARDOUR_UI::monitor_dim_all ()
|
||||
{
|
||||
boost::shared_ptr<Route> mon = _session->monitor_out ();
|
||||
if (!mon) {
|
||||
return;
|
||||
}
|
||||
boost::shared_ptr<ARDOUR::MonitorProcessor> _monitor = mon->monitor_control ();
|
||||
|
||||
Glib::RefPtr<Action> act = global_actions.find_action (X_("Monitor"), "monitor-dim-all");
|
||||
assert (act); Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
assert (tact); _monitor->set_dim_all (tact->get_active());
|
||||
}
|
||||
|
||||
void
|
||||
ARDOUR_UI::monitor_cut_all ()
|
||||
{
|
||||
boost::shared_ptr<Route> mon = _session->monitor_out ();
|
||||
if (!mon) {
|
||||
return;
|
||||
}
|
||||
boost::shared_ptr<ARDOUR::MonitorProcessor> _monitor = mon->monitor_control ();
|
||||
|
||||
Glib::RefPtr<Action> act = global_actions.find_action (X_("Monitor"), "monitor-cut-all");
|
||||
assert (act); Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
assert (tact); _monitor->set_cut_all (tact->get_active());
|
||||
}
|
||||
|
||||
void
|
||||
ARDOUR_UI::monitor_mono ()
|
||||
{
|
||||
boost::shared_ptr<Route> mon = _session->monitor_out ();
|
||||
if (!mon) {
|
||||
return;
|
||||
}
|
||||
boost::shared_ptr<ARDOUR::MonitorProcessor> _monitor = mon->monitor_control ();
|
||||
|
||||
Glib::RefPtr<Action> act = global_actions.find_action (X_("Monitor"), "monitor-mono");
|
||||
assert (act); Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
assert (tact);_monitor->set_mono (tact->get_active());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -231,15 +231,8 @@ public:
|
|||
void new_midi_tracer_window ();
|
||||
void toggle_editing_space();
|
||||
void toggle_mixer_space();
|
||||
void toggle_mixer_list();
|
||||
void toggle_monitor_section_visibility ();
|
||||
void toggle_keep_tearoffs();
|
||||
|
||||
void toggle_vca_pane();
|
||||
#ifdef MIXBUS
|
||||
void toggle_mixbus_pane();
|
||||
#endif
|
||||
|
||||
void reset_focus (Gtk::Widget*);
|
||||
|
||||
static PublicEditor* _instance;
|
||||
|
|
@ -372,6 +365,11 @@ public:
|
|||
protected:
|
||||
friend class PublicEditor;
|
||||
|
||||
void toggle_use_monitor_section ();
|
||||
void monitor_dim_all ();
|
||||
void monitor_cut_all ();
|
||||
void monitor_mono ();
|
||||
|
||||
void toggle_auto_play ();
|
||||
void toggle_auto_input ();
|
||||
void toggle_punch ();
|
||||
|
|
|
|||
|
|
@ -817,3 +817,21 @@ ARDOUR_UI::update_title ()
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
ARDOUR_UI::toggle_use_monitor_section ()
|
||||
{
|
||||
RefPtr<Action> act = ActionManager::get_action (X_("Monitor"), "UseMonitorSection");
|
||||
assert (act); RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
||||
assert (tact);
|
||||
|
||||
bool yn = tact->get_active ();
|
||||
|
||||
if (yn) {
|
||||
_session->add_monitor_section ();
|
||||
} else {
|
||||
_session->remove_monitor_section ();
|
||||
}
|
||||
|
||||
Config->set_use_monitor_bus (yn);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -959,49 +959,3 @@ ARDOUR_UI::toggle_mixer_space()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ARDOUR_UI::toggle_mixer_list()
|
||||
{
|
||||
Glib::RefPtr<Action> act = ActionManager::get_action ("Common", "ToggleMixerList");
|
||||
|
||||
if (act) {
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
mixer->show_mixer_list (tact->get_active());
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ARDOUR_UI::toggle_monitor_section_visibility ()
|
||||
{
|
||||
Glib::RefPtr<Action> act = ActionManager::get_action ("Common", "ToggleMonitorSection");
|
||||
|
||||
if (act) {
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
mixer->show_monitor_section (tact->get_active());
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ARDOUR_UI::toggle_vca_pane ()
|
||||
{
|
||||
Glib::RefPtr<Action> act = ActionManager::get_action ("Common", "ToggleVCAPane");
|
||||
|
||||
if (act) {
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
mixer->showhide_vcas (tact->get_active());
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MIXBUS
|
||||
void
|
||||
ARDOUR_UI::toggle_mixbus_pane ()
|
||||
{
|
||||
Glib::RefPtr<Action> act = ActionManager::get_action ("Common", "ToggleMixbusPane");
|
||||
|
||||
if (act) {
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
mixer->showhide_mixbusses (tact->get_active());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -376,22 +376,6 @@ ARDOUR_UI::install_actions ()
|
|||
global_actions.register_toggle_action (common_actions, X_("ToggleMaximalMixer"), _("Maximise Mixer Space"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_mixer_space));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
act = global_actions.register_toggle_action (common_actions, X_("ToggleMixerList"), _("Toggle Mixer List"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_mixer_list));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
act = global_actions.register_toggle_action (common_actions, X_("ToggleVCAPane"), _("Toggle VCA Pane"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_vca_pane));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
Glib::RefPtr<ToggleAction>::cast_dynamic(act)->set_active (true);
|
||||
|
||||
#ifdef MIXBUS
|
||||
act = global_actions.register_toggle_action (common_actions, X_("ToggleMixbusPane"), _("Toggle Mixbus Pane"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_mixbus_pane));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
Glib::RefPtr<ToggleAction>::cast_dynamic(act)->set_active (true);
|
||||
#endif
|
||||
|
||||
act = global_actions.register_toggle_action (common_actions, X_("ToggleMonitorSection"), _("Toggle Monitor Section Visibility"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_monitor_section_visibility));
|
||||
act->set_sensitive (false);
|
||||
|
||||
if (Profile->get_mixbus()) {
|
||||
global_actions.register_action (common_actions, X_("show-ui-prefs"), _("Show more UI preferences"), sigc::mem_fun (*this, &ARDOUR_UI::show_ui_prefs));
|
||||
}
|
||||
|
|
@ -640,6 +624,22 @@ ARDOUR_UI::install_actions ()
|
|||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
ActionManager::transport_sensitive_actions.push_back (act);
|
||||
|
||||
/* Monitor actions (accessible globally) */
|
||||
/* ...will get sensitized if a mon-section is added */
|
||||
|
||||
act = global_actions.register_action (main_actions, X_("MonitorMenu"), _("Monitor Section"));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
Glib::RefPtr<ActionGroup> monitor_actions = global_actions.create_action_group (X_("Monitor"));
|
||||
|
||||
act = global_actions.register_toggle_action (monitor_actions, X_("UseMonitorSection"), _("Use Monitor Section"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_use_monitor_section));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = global_actions.register_toggle_action (monitor_actions, "monitor-mono", _("Monitor Section: Mono"), sigc::mem_fun (*this, &ARDOUR_UI::monitor_mono));
|
||||
act->set_sensitive(false);
|
||||
act = global_actions.register_toggle_action (monitor_actions, "monitor-cut-all", _("Monitor Section: Mute"), sigc::mem_fun (*this, &ARDOUR_UI::monitor_cut_all));
|
||||
act->set_sensitive(false);
|
||||
act = global_actions.register_toggle_action (monitor_actions, "monitor-dim-all", _("Monitor Section: Dim"), sigc::mem_fun (*this, &ARDOUR_UI::monitor_dim_all));
|
||||
act->set_sensitive(false);
|
||||
|
||||
act = global_actions.register_toggle_action (transport_actions, X_("ToggleVideoSync"), _("Sync Startup to Video"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_video_sync));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
|
|
|||
|
|
@ -20,5 +20,9 @@
|
|||
<Binding key="Secondary-m" action="Mixer/show-editor" group="Window Visibility"/>
|
||||
<Binding key="Secondary-Down" action="Mixer/select-next-stripable" group="Window Visibility"/>
|
||||
<Binding key="Secondary-Up" action="Mixer/select-prev-stripable" group="Window Visibility"/>
|
||||
|
||||
<Binding key="Tertiary-l" action="Mixer/ToggleMixerList" group="Window Visibility"/>
|
||||
<Binding key="Tertiary-v" action="Mixer/ToggleVCAPane" group="Window Visibility"/>
|
||||
<Binding key="Tertiary-m" action="Mixer/ToggleMonitorSection" group="Window Visibility"/>
|
||||
</Press>
|
||||
</Bindings>
|
||||
|
|
|
|||
|
|
@ -581,7 +581,7 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
|
|||
solo_iso_table.set_sensitive(false);
|
||||
control_slave_ui.set_sensitive(false);
|
||||
if (monitor_section_button == 0) {
|
||||
Glib::RefPtr<Action> act = ActionManager::get_action ("Common", "ToggleMonitorSection");
|
||||
Glib::RefPtr<Action> act = ActionManager::get_action ("Mixer", "ToggleMonitorSection");
|
||||
_session->MonitorChanged.connect (route_connections, invalidator (*this), boost::bind (&MixerStrip::monitor_changed, this), gui_context());
|
||||
|
||||
monitor_section_button = manage (new ArdourButton);
|
||||
|
|
|
|||
|
|
@ -112,7 +112,6 @@ Mixer_UI::Mixer_UI ()
|
|||
, _in_group_rebuild_or_clear (false)
|
||||
, _route_deletion_in_progress (false)
|
||||
, _maximised (false)
|
||||
, _show_mixer_list (true)
|
||||
, _strip_selection_change_without_scroll (false)
|
||||
, _selection (*this, *this)
|
||||
{
|
||||
|
|
@ -572,6 +571,8 @@ Mixer_UI::add_stripables (StripableList& slist)
|
|||
if (mnode) {
|
||||
_monitor_section->tearoff().set_state (*mnode);
|
||||
}
|
||||
|
||||
set_monitor_action_sensitivity(true);
|
||||
}
|
||||
|
||||
out_packer.pack_end (_monitor_section->tearoff(), false, false);
|
||||
|
|
@ -1526,24 +1527,28 @@ Mixer_UI::redisplay_track_list ()
|
|||
/* update visibility of VCA assign buttons */
|
||||
|
||||
if (n_masters == 0) {
|
||||
//show/hide the channelstrip VCA assign buttons on channelstrips:
|
||||
UIConfiguration::instance().set_mixer_strip_visibility (VisibilityGroup::remove_element (UIConfiguration::instance().get_mixer_strip_visibility(), X_("VCA")));
|
||||
vca_vpacker.hide ();
|
||||
Glib::RefPtr<Action> act = ActionManager::get_action ("Common", "ToggleVCAPane");
|
||||
|
||||
Glib::RefPtr<Action> act = myactions.find_action ("Mixer", "ToggleVCAPane");
|
||||
if (act) {
|
||||
act->set_sensitive (false);
|
||||
}
|
||||
|
||||
//remove the VCA packer, but don't change our prior setting for show/hide:
|
||||
vca_vpacker.hide ();
|
||||
} else {
|
||||
//show/hide the channelstrip VCA assign buttons on channelstrips:
|
||||
UIConfiguration::instance().set_mixer_strip_visibility (VisibilityGroup::add_element (UIConfiguration::instance().get_mixer_strip_visibility(), X_("VCA")));
|
||||
|
||||
Glib::RefPtr<Action> act = ActionManager::get_action ("Common", "ToggleVCAPane");
|
||||
if (act) {
|
||||
act->set_sensitive (true);
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
showhide_vcas (tact->get_active());
|
||||
} else {
|
||||
vca_vpacker.show ();
|
||||
}
|
||||
Glib::RefPtr<Action> act = myactions.find_action ("Mixer", "ToggleVCAPane");
|
||||
assert (act);
|
||||
act->set_sensitive (true);
|
||||
|
||||
//if we were showing VCAs before, show them now:
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
assert (tact);
|
||||
showhide_vcas ( tact->get_active () );
|
||||
}
|
||||
|
||||
_group_tabs->set_dirty ();
|
||||
|
|
@ -1934,19 +1939,38 @@ Mixer_UI::route_group_property_changed (RouteGroup* group, const PropertyChange&
|
|||
}
|
||||
|
||||
void
|
||||
Mixer_UI::show_mixer_list (bool yn)
|
||||
Mixer_UI::toggle_mixer_list ()
|
||||
{
|
||||
Glib::RefPtr<Action> act = myactions.find_action ("Mixer", "ToggleMixerList");
|
||||
if (act) {
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
showhide_mixer_list (tact->get_active());
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Mixer_UI::showhide_mixer_list (bool yn)
|
||||
{
|
||||
if (yn) {
|
||||
list_vpacker.show ();
|
||||
} else {
|
||||
list_vpacker.hide ();
|
||||
}
|
||||
|
||||
_show_mixer_list = yn;
|
||||
}
|
||||
|
||||
void
|
||||
Mixer_UI::show_monitor_section (bool yn)
|
||||
Mixer_UI::toggle_monitor_section ()
|
||||
{
|
||||
Glib::RefPtr<Action> act = myactions.find_action ("Mixer", "ToggleMonitorSection");
|
||||
if (act) {
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
showhide_monitor_section (tact->get_active());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
Mixer_UI::showhide_monitor_section (bool yn)
|
||||
{
|
||||
if (!monitor_section()) {
|
||||
return;
|
||||
|
|
@ -1962,6 +1986,49 @@ Mixer_UI::show_monitor_section (bool yn)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
Mixer_UI::toggle_vcas ()
|
||||
{
|
||||
Glib::RefPtr<Action> act = myactions.find_action ("Mixer", "ToggleVCAPane");
|
||||
if (act) {
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
showhide_vcas (tact->get_active());
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Mixer_UI::showhide_vcas (bool yn)
|
||||
{
|
||||
if (yn) {
|
||||
vca_vpacker.show();
|
||||
} else {
|
||||
vca_vpacker.hide();
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MIXBUS
|
||||
void
|
||||
Mixer_UI::toggle_mixbuses ()
|
||||
{
|
||||
Glib::RefPtr<Action> act = myactions.find_action ("Mixer", "ToggleMixbusPane");
|
||||
if (act) {
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
showhide_mixbuses (tact->get_active());
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Mixer_UI::showhide_mixbuses (bool on)
|
||||
{
|
||||
if (on) {
|
||||
mb_vpacker.show();
|
||||
} else {
|
||||
mb_vpacker.hide();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void
|
||||
Mixer_UI::route_group_name_edit (const std::string& path, const std::string& new_text)
|
||||
{
|
||||
|
|
@ -2169,9 +2236,10 @@ Mixer_UI::set_state (const XMLNode& node, int version)
|
|||
}
|
||||
|
||||
if (node.get_property ("show-mixer-list", yn)) {
|
||||
Glib::RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("ToggleMixerList"));
|
||||
Glib::RefPtr<Action> act = myactions.find_action (X_("Mixer"), X_("ToggleMixerList"));
|
||||
assert (act);
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
assert (tact);
|
||||
|
||||
/* do it twice to force the change */
|
||||
tact->set_active (!yn);
|
||||
|
|
@ -2179,13 +2247,41 @@ Mixer_UI::set_state (const XMLNode& node, int version)
|
|||
}
|
||||
|
||||
if (node.get_property ("monitor-section-visible", yn)) {
|
||||
Glib::RefPtr<Action> act = ActionManager::get_action ("Common", "ToggleMonitorSection");
|
||||
Glib::RefPtr<Action> act = myactions.find_action (X_("Mixer"), X_("ToggleMonitorSection"));
|
||||
assert (act);
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
assert (tact);
|
||||
|
||||
/* do it twice to force the change */
|
||||
tact->set_active (!yn);
|
||||
tact->set_active (yn);
|
||||
show_monitor_section (yn);
|
||||
}
|
||||
|
||||
if (node.get_property ("show-vca-pane", yn)) {
|
||||
Glib::RefPtr<Action> act = myactions.find_action (X_("Mixer"), X_("ToggleVCAPane"));
|
||||
assert (act);
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
assert (tact);
|
||||
|
||||
/* do it twice to force the change */
|
||||
tact->set_active (!yn);
|
||||
tact->set_active (yn);
|
||||
}
|
||||
|
||||
#ifdef MIXBUS
|
||||
if (node.get_property ("show-mixbus-pane", yn)) {
|
||||
Glib::RefPtr<Action> act = myactions.find_action (X_("Mixer"), X_("ToggleMixbusPane"));
|
||||
assert (act);
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
assert (tact);
|
||||
|
||||
/* do it twice to force the change */
|
||||
tact->set_active (!yn);
|
||||
tact->set_active (yn);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
//check for the user's plugin_order file
|
||||
XMLNode plugin_order_new(X_("PO"));
|
||||
if (PluginManager::instance().load_plugin_order_file(plugin_order_new)) {
|
||||
|
|
@ -2272,13 +2368,25 @@ Mixer_UI::get_state ()
|
|||
|
||||
node->set_property ("narrow-strips", (_strip_width == Narrow));
|
||||
node->set_property ("show-mixer", _visible);
|
||||
node->set_property ("show-mixer-list", _show_mixer_list);
|
||||
node->set_property ("maximised", _maximised);
|
||||
|
||||
Glib::RefPtr<Action> act = ActionManager::get_action ("Common", "ToggleMonitorSection");
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
assert (tact);
|
||||
node->set_property ("monitor-section-visible", tact->get_active ());
|
||||
Glib::RefPtr<Action> act = myactions.find_action ("Mixer", "ToggleMixerList");
|
||||
assert (act); Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
assert (tact); node->set_property ("show-mixer-list", tact->get_active ());
|
||||
|
||||
act = myactions.find_action ("Mixer", "ToggleMonitorSection");
|
||||
assert (act); tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
assert (tact); node->set_property ("monitor-section-visible", tact->get_active ());
|
||||
|
||||
act = myactions.find_action ("Mixer", "ToggleVCAPane");
|
||||
assert (act); tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
assert (tact); node->set_property ("show-vca-pane", tact->get_active ());
|
||||
|
||||
#ifdef MIXBUS
|
||||
act = myactions.find_action ("Mixer", "ToggleMixbusPane");
|
||||
assert (act); tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
assert (tact); node->set_property ("show-mixbus-pane", tact->get_active ());
|
||||
#endif
|
||||
|
||||
return *node;
|
||||
}
|
||||
|
|
@ -2525,10 +2633,38 @@ Mixer_UI::set_axis_targets_for_operation ()
|
|||
|
||||
}
|
||||
|
||||
void
|
||||
Mixer_UI::set_monitor_action_sensitivity (bool yn)
|
||||
{
|
||||
Glib::RefPtr<Action> act;
|
||||
Glib::RefPtr<ToggleAction> tact;
|
||||
|
||||
act = ActionManager::get_action (X_("Monitor"), "UseMonitorSection");
|
||||
assert (act); tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
||||
assert (tact); tact->set_active ( yn );
|
||||
|
||||
act = ActionManager::get_action (X_("Monitor"), "monitor-cut-all");
|
||||
assert (act); tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
||||
assert (tact); tact->set_sensitive ( yn );
|
||||
|
||||
act = ActionManager::get_action (X_("Monitor"), "monitor-dim-all");
|
||||
assert (act); tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
||||
assert (tact); tact->set_sensitive ( yn );
|
||||
|
||||
act = ActionManager::get_action (X_("Monitor"), "monitor-mono");
|
||||
assert (act); tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
||||
assert (tact); tact->set_sensitive ( yn );
|
||||
}
|
||||
|
||||
void
|
||||
Mixer_UI::monitor_section_going_away ()
|
||||
{
|
||||
/* Set sensitivity based on existence of the monitor bus */
|
||||
|
||||
set_monitor_action_sensitivity(false);
|
||||
|
||||
if (_monitor_section) {
|
||||
|
||||
XMLNode* ui_node = Config->extra_xml(X_("UI"));
|
||||
/* immediate state save.
|
||||
*
|
||||
|
|
@ -2606,16 +2742,18 @@ Mixer_UI::restore_mixer_space ()
|
|||
void
|
||||
Mixer_UI::monitor_section_attached ()
|
||||
{
|
||||
Glib::RefPtr<Action> act = ActionManager::get_action ("Common", "ToggleMonitorSection");
|
||||
Glib::RefPtr<Action> act = myactions.find_action ("Mixer", "ToggleMonitorSection");
|
||||
assert (act); act->set_sensitive (true);
|
||||
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
|
||||
act->set_sensitive (true);
|
||||
show_monitor_section (tact->get_active ());
|
||||
assert (tact);
|
||||
showhide_monitor_section ( tact->get_active () );
|
||||
}
|
||||
|
||||
void
|
||||
Mixer_UI::monitor_section_detached ()
|
||||
{
|
||||
Glib::RefPtr<Action> act = ActionManager::get_action ("Common", "ToggleMonitorSection");
|
||||
Glib::RefPtr<Action> act = myactions.find_action ("Mixer", "ToggleMonitorSection");
|
||||
act->set_sensitive (false);
|
||||
}
|
||||
|
||||
|
|
@ -3102,6 +3240,16 @@ Mixer_UI::register_actions ()
|
|||
|
||||
myactions.register_action (group, "toggle-midi-input-active", _("Toggle MIDI Input Active for Mixer-Selected Tracks/Busses"),
|
||||
sigc::bind (sigc::mem_fun (*this, &Mixer_UI::toggle_midi_input_active), false));
|
||||
|
||||
myactions.register_toggle_action (group, X_("ToggleMixerList"), _("Mixer: Show Mixer List"), sigc::mem_fun (*this, &Mixer_UI::toggle_mixer_list));
|
||||
|
||||
myactions.register_toggle_action (group, X_("ToggleVCAPane"), _("Mixer: Show VCAs"), sigc::mem_fun (*this, &Mixer_UI::toggle_vcas));
|
||||
|
||||
#ifdef MIXBUS
|
||||
myactions.register_toggle_action (group, X_("ToggleMixbusPane"), _("Mixer: Show Mixbuses"), sigc::mem_fun (*this, &Mixer_UI::toggle_mixbus_pane));
|
||||
#endif
|
||||
|
||||
myactions.register_toggle_action (group, X_("ToggleMonitorSection"), _("Mixer: Show Monitor Section"), sigc::mem_fun (*this, &Mixer_UI::toggle_monitor_section));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -101,9 +101,6 @@ public:
|
|||
|
||||
void save_plugin_order_file ();
|
||||
|
||||
void show_mixer_list (bool yn);
|
||||
void show_monitor_section (bool);
|
||||
|
||||
void show_strip (MixerStrip *);
|
||||
void hide_strip (MixerStrip *);
|
||||
|
||||
|
|
@ -135,13 +132,18 @@ public:
|
|||
void load_bindings ();
|
||||
Gtkmm2ext::Bindings* bindings;
|
||||
|
||||
void showhide_vcas (bool on) {
|
||||
if (on) { vca_vpacker.show(); } else { vca_vpacker.hide(); }
|
||||
}
|
||||
void toggle_mixer_list ();
|
||||
void showhide_mixer_list (bool yn);
|
||||
|
||||
void toggle_monitor_section ();
|
||||
void showhide_monitor_section (bool);
|
||||
|
||||
void toggle_vcas ();
|
||||
void showhide_vcas (bool on);
|
||||
|
||||
#ifdef MIXBUS
|
||||
void showhide_mixbusses (bool on) {
|
||||
if (on) { mb_vpacker.show(); } else { mb_vpacker.hide(); }
|
||||
}
|
||||
void toggle_mixbuses ();
|
||||
void showhide_mixbusses (bool on);
|
||||
#endif
|
||||
|
||||
protected:
|
||||
|
|
@ -376,6 +378,8 @@ private:
|
|||
|
||||
friend class MixerGroupTabs;
|
||||
|
||||
void set_monitor_action_sensitivity (bool);
|
||||
|
||||
void monitor_section_going_away ();
|
||||
|
||||
void monitor_section_attached ();
|
||||
|
|
@ -398,9 +402,6 @@ private:
|
|||
/// true if we are in fullscreen mode
|
||||
bool _maximised;
|
||||
|
||||
// true if mixer list is visible
|
||||
bool _show_mixer_list;
|
||||
|
||||
bool _strip_selection_change_without_scroll;
|
||||
|
||||
mutable boost::weak_ptr<ARDOUR::Stripable> spilled_strip;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,5 @@
|
|||
<Bindings name="Monitor Section">
|
||||
<Press>
|
||||
<Binding key="m" action="Monitor/monitor-mono"/>
|
||||
<Binding key="c" action="Monitor/monitor-cut-all"/>
|
||||
<Binding key="d" action="Monitor/monitor-dim-all"/>
|
||||
<Binding key="e" action="Monitor/toggle-exclusive-solo"/>
|
||||
<Binding key="Shift-o" action="Monitor/toggle-mute-overrides-solo"/>
|
||||
<Binding key="b" action="Monitor/toggle-monitor-processor-box"/>
|
||||
|
|
|
|||
|
|
@ -927,15 +927,6 @@ MonitorSection::register_actions ()
|
|||
|
||||
monitor_actions = myactions.create_action_group (X_("Monitor"));
|
||||
|
||||
myactions.register_toggle_action (monitor_actions, "monitor-mono", _("Switch monitor to mono"),
|
||||
sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), MonitorMono));
|
||||
|
||||
myactions.register_toggle_action (monitor_actions, "monitor-cut-all", _("Cut monitor"),
|
||||
sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), MonitorCutAll));
|
||||
|
||||
myactions.register_toggle_action (monitor_actions, "monitor-dim-all", _("Dim monitor"),
|
||||
sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), MonitorDimAll));
|
||||
|
||||
act = myactions.register_toggle_action (monitor_actions, "toggle-exclusive-solo", _("Toggle exclusive solo mode"),
|
||||
sigc::bind (sigc::ptr_fun (MonitorSection::action_proxy0), ToggleExclusiveSolo));
|
||||
|
||||
|
|
@ -1103,13 +1094,14 @@ MonitorSection::map_state ()
|
|||
return;
|
||||
}
|
||||
|
||||
Glib::RefPtr<Action> act;
|
||||
|
||||
update_solo_model ();
|
||||
|
||||
Glib::RefPtr<Action> act;
|
||||
Glib::RefPtr<ToggleAction> tact;
|
||||
|
||||
act = ActionManager::get_action (X_("Monitor"), "monitor-cut-all");
|
||||
if (act) {
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
||||
tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
||||
if (tact) {
|
||||
tact->set_active (_monitor->cut_all());
|
||||
}
|
||||
|
|
@ -1117,7 +1109,7 @@ MonitorSection::map_state ()
|
|||
|
||||
act = ActionManager::get_action (X_("Monitor"), "monitor-dim-all");
|
||||
if (act) {
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
||||
tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
||||
if (tact) {
|
||||
tact->set_active (_monitor->dim_all());
|
||||
}
|
||||
|
|
@ -1125,7 +1117,7 @@ MonitorSection::map_state ()
|
|||
|
||||
act = ActionManager::get_action (X_("Monitor"), "monitor-mono");
|
||||
if (act) {
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
||||
tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
||||
if (tact) {
|
||||
tact->set_active (_monitor->mono());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -202,6 +202,55 @@ RcActionButton::add_to_page (OptionEditorPage *p)
|
|||
}
|
||||
}
|
||||
|
||||
/*--------------------------*/
|
||||
|
||||
CheckOption::CheckOption (string const & i, string const & n, Glib::RefPtr<Gtk::Action> act)
|
||||
{
|
||||
_button = manage (new CheckButton);
|
||||
_label = manage (new Label);
|
||||
_label->set_markup (n);
|
||||
_button->add (*_label);
|
||||
_button->signal_toggled().connect (sigc::mem_fun (*this, &CheckOption::toggled));
|
||||
|
||||
Gtkmm2ext::Activatable::set_related_action (act);
|
||||
if (_action) {
|
||||
|
||||
action_sensitivity_changed ();
|
||||
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (_action);
|
||||
if (tact) {
|
||||
action_toggled ();
|
||||
tact->signal_toggled().connect (sigc::mem_fun (*this, &CheckOption::action_toggled));
|
||||
}
|
||||
|
||||
_action->connect_property_changed ("sensitive", sigc::mem_fun (*this, &CheckOption::action_sensitivity_changed));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
CheckOption::action_toggled ()
|
||||
{
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (_action);
|
||||
if (tact) {
|
||||
_button->set_active(tact->get_active());
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
CheckOption::add_to_page (OptionEditorPage* p)
|
||||
{
|
||||
add_widget_to_page (p, _button);
|
||||
}
|
||||
|
||||
void
|
||||
CheckOption::toggled ()
|
||||
{
|
||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (_action);
|
||||
|
||||
tact->set_active( _button->get_active() );
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------*/
|
||||
|
||||
BoolOption::BoolOption (string const & i, string const & n, sigc::slot<bool> g, sigc::slot<bool, bool> s)
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
|
||||
#include "widgets/slider_controller.h"
|
||||
|
||||
#include "actions.h"
|
||||
#include "ardour_window.h"
|
||||
#include "audio_clock.h"
|
||||
#include "ardour/types.h"
|
||||
|
|
@ -187,6 +188,34 @@ protected:
|
|||
std::string _name;
|
||||
};
|
||||
|
||||
/** Just a Gtk Checkbutton, masquerading as an option component */
|
||||
class CheckOption : public OptionEditorComponent , public Gtkmm2ext::Activatable
|
||||
{
|
||||
public:
|
||||
CheckOption (std::string const &, std::string const &, Glib::RefPtr<Gtk::Action> act );
|
||||
void set_state_from_config () {}
|
||||
void parameter_changed (std::string const &) {}
|
||||
void add_to_page (OptionEditorPage*);
|
||||
|
||||
void set_sensitive (bool yn) {
|
||||
_button->set_sensitive (yn);
|
||||
}
|
||||
|
||||
Gtk::Widget& tip_widget() { return *_button; }
|
||||
|
||||
void action_toggled ();
|
||||
void action_sensitivity_changed () {}
|
||||
void action_visibility_changed () {}
|
||||
|
||||
protected:
|
||||
virtual void toggled ();
|
||||
|
||||
sigc::slot<bool> _get; ///< slot to get the configuration variable's value
|
||||
sigc::slot<bool, bool> _set; ///< slot to set the configuration variable's value
|
||||
Gtk::CheckButton* _button; ///< UI button
|
||||
Gtk::Label* _label; ///< label for button, so we can use markup
|
||||
};
|
||||
|
||||
/** Component which provides the UI to handle a boolean option using a GTK CheckButton */
|
||||
class BoolOption : public Option
|
||||
{
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
#include "ardour/session.h"
|
||||
#include "ardour/transport_master_manager.h"
|
||||
|
||||
#include "actions.h"
|
||||
#include "gui_thread.h"
|
||||
#include "session_option_editor.h"
|
||||
#include "search_path_option.h"
|
||||
|
|
@ -273,11 +274,10 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
|
|||
sigc::mem_fun (*_session_config, &SessionConfiguration::set_auto_input)
|
||||
));
|
||||
|
||||
add_option (_("Monitoring"), new BoolOption (
|
||||
add_option (_("Monitoring"), new CheckOption (
|
||||
"have-monitor-section",
|
||||
_("Use monitor section in this session"),
|
||||
sigc::mem_fun (*this, &SessionOptionEditor::get_use_monitor_section),
|
||||
sigc::mem_fun (*this, &SessionOptionEditor::set_use_monitor_section)
|
||||
ActionManager::get_action(X_("Monitor"), "UseMonitorSection")
|
||||
));
|
||||
|
||||
add_option (_("Monitoring"), new OptionEditorBlank ());
|
||||
|
|
@ -448,34 +448,6 @@ SessionOptionEditor::parameter_changed (std::string const & p)
|
|||
}
|
||||
}
|
||||
|
||||
/* the presence of absence of a monitor section is not really a regular session
|
||||
* property so we provide these two functions to act as setter/getter slots
|
||||
*/
|
||||
|
||||
bool
|
||||
SessionOptionEditor::set_use_monitor_section (bool yn)
|
||||
{
|
||||
bool had_monitor_section = _session->monitor_out() != 0;
|
||||
|
||||
if (yn) {
|
||||
_session->add_monitor_section ();
|
||||
} else {
|
||||
_session->remove_monitor_section ();
|
||||
}
|
||||
|
||||
/* store this choice for any new sessions */
|
||||
|
||||
Config->set_use_monitor_bus (yn);
|
||||
|
||||
return had_monitor_section != (_session->monitor_out() != 0);
|
||||
}
|
||||
|
||||
bool
|
||||
SessionOptionEditor::get_use_monitor_section ()
|
||||
{
|
||||
return _session->monitor_out() != 0;
|
||||
}
|
||||
|
||||
void
|
||||
SessionOptionEditor::save_defaults ()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -37,9 +37,6 @@ private:
|
|||
|
||||
ARDOUR::SessionConfiguration* _session_config;
|
||||
|
||||
bool set_use_monitor_section (bool);
|
||||
bool get_use_monitor_section ();
|
||||
|
||||
ComboOption<float>* _vpu;
|
||||
ComboOption<ARDOUR::SampleFormat>* _sf;
|
||||
EntryOption* _take_name;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue