derive TriggerPortSelectionOption for trigger default input port preference (incomplete)
This commit is contained in:
parent
e677863424
commit
af02413aef
@ -1515,6 +1515,83 @@ public:
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TriggerPortSelectOption : public PortSelectOption
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TriggerPortSelectOption (RCConfiguration* c, SessionHandlePtr* shp)
|
||||||
|
: PortSelectOption (c, shp,
|
||||||
|
_("TriggerBoxes will be connected to this port when it is set."),
|
||||||
|
X_("default-trigger-input-port"),
|
||||||
|
_("Default trigger input:"),
|
||||||
|
ARDOUR::DataType::MIDI,
|
||||||
|
ARDOUR::PortFlags (ARDOUR::IsOutput|ARDOUR::IsTerminal)) {
|
||||||
|
/* cannot call from parent due to the method being pure virtual */
|
||||||
|
update_port_combo ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void port_changed ()
|
||||||
|
{
|
||||||
|
if (_ignore_change) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
TreeModel::iterator active = _combo.get_active ();
|
||||||
|
string new_port = (*active)[_port_columns.full_name];
|
||||||
|
_rc_config->set_default_trigger_input_port (new_port);
|
||||||
|
|
||||||
|
/* TriggerBox::reconnect_default (); // EMIT SIGNAL */
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void update_selection ()
|
||||||
|
{
|
||||||
|
int n;
|
||||||
|
Gtk::TreeModel::Children children = _store->children();
|
||||||
|
Gtk::TreeModel::Children::iterator i = children.begin();
|
||||||
|
++i; /* skip "Disconnected" */
|
||||||
|
|
||||||
|
std::string const& pn = _rc_config->get_default_trigger_input_port ();
|
||||||
|
boost::shared_ptr<Port> port;
|
||||||
|
|
||||||
|
PBD::Unwinder<bool> uw (_ignore_change, true);
|
||||||
|
|
||||||
|
/* try match preference with available port-names */
|
||||||
|
for (n = 1; i != children.end(); ++i, ++n) {
|
||||||
|
string port_name = (*i)[_port_columns.full_name];
|
||||||
|
if (port_name == pn) {
|
||||||
|
_combo.set_active (n);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
|
/* Set preference to current port connection
|
||||||
|
* (LTC is auto-connected at session load).
|
||||||
|
*/
|
||||||
|
if (ltc_port) {
|
||||||
|
i = children.begin();
|
||||||
|
++i; /* skip "Disconnected" */
|
||||||
|
for (n = 1; i != children.end(); ++i, ++n) {
|
||||||
|
string port_name = (*i)[_port_columns.full_name];
|
||||||
|
if (ltc_port->connected_to (port_name)) {
|
||||||
|
_combo.set_active (n);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pn.empty ()) {
|
||||||
|
_combo.set_active (0); /* disconnected */
|
||||||
|
} else {
|
||||||
|
/* The port is currently not available, retain preference */
|
||||||
|
TreeModel::Row row = *_store->append ();
|
||||||
|
row[_port_columns.full_name] = pn;
|
||||||
|
row[_port_columns.short_name] = (pn).substr ((pn).find (':') + 1);
|
||||||
|
_combo.set_active (n);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
class ControlSurfacesOptions : public OptionEditorMiniPage
|
class ControlSurfacesOptions : public OptionEditorMiniPage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -4616,6 +4693,19 @@ These settings will only take effect after %1 is restarted.\n\
|
|||||||
add_option (_("Video"), new OptionEditorHeading (_("Video Server")));
|
add_option (_("Video"), new OptionEditorHeading (_("Video Server")));
|
||||||
add_option (_("Video"), new VideoTimelineOptions (_rc_config));
|
add_option (_("Video"), new VideoTimelineOptions (_rc_config));
|
||||||
|
|
||||||
|
/* trigger launcing */
|
||||||
|
|
||||||
|
add_option (_("Triggering"), new OptionEditorHeading (_("Triggering")));
|
||||||
|
|
||||||
|
TriggerPortSelectOption* dtip = new TriggerPortSelectOption (_rc_config, this);
|
||||||
|
|
||||||
|
set_tooltip (dtip->tip_widget(), _("If set, the identifies the input MIDI port that will be automatically connected to trigger boxes.\n\n"
|
||||||
|
"It is intended to be either an NxN pad device such as the Ableton Push 2 or Novation Launchpad\n"
|
||||||
|
"or a regular MIDI device capable of sending sequential note numbers (like a typical keyboard)"));
|
||||||
|
add_option (_("Triggering"), dtip);
|
||||||
|
|
||||||
|
/* END OF SECTIONS/OPTIONS etc */
|
||||||
|
|
||||||
Widget::show_all ();
|
Widget::show_all ();
|
||||||
|
|
||||||
//trigger some parameter-changed messages which affect widget-visibility or -sensitivity
|
//trigger some parameter-changed messages which affect widget-visibility or -sensitivity
|
||||||
|
Loading…
Reference in New Issue
Block a user