mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-10 08:36:32 +01:00
triggerbox UI: clean up class heirachy for *TriggerPropertiesBox and catch trigger swaps
This commit is contained in:
parent
4be38042a2
commit
e3293db126
5 changed files with 45 additions and 26 deletions
|
|
@ -44,6 +44,35 @@ using namespace ArdourWidgets;
|
||||||
using std::max;
|
using std::max;
|
||||||
using std::min;
|
using std::min;
|
||||||
|
|
||||||
|
void
|
||||||
|
TriggerPropertiesBox::set_trigger (TriggerReference tr)
|
||||||
|
{
|
||||||
|
tref = tr;
|
||||||
|
tref.trigger()->PropertyChanged.connect (_state_connection, invalidator (*this), boost::bind (&TriggerPropertiesBox::trigger_changed, this, _1), gui_context ());
|
||||||
|
tref.box->TriggerSwapped.connect (trigger_swap_connection, MISSING_INVALIDATOR, boost::bind (&TriggerPropertiesBox::trigger_swap, this, _1), gui_context ());
|
||||||
|
|
||||||
|
PBD::PropertyChange changed;
|
||||||
|
changed.add (ARDOUR::Properties::name);
|
||||||
|
changed.add (ARDOUR::Properties::running);
|
||||||
|
trigger_changed (changed);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TriggerPropertiesBox::trigger_swap (uint32_t n)
|
||||||
|
{
|
||||||
|
if (n != tref.slot) {
|
||||||
|
/* some other slot in the same box got swapped. we don't care */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_state_connection.disconnect ();
|
||||||
|
tref.trigger()->PropertyChanged.connect (_state_connection, invalidator (*this), boost::bind (&TriggerPropertiesBox::trigger_changed, this, _1), gui_context ());
|
||||||
|
|
||||||
|
PBD::PropertyChange changed;
|
||||||
|
changed.add (ARDOUR::Properties::name);
|
||||||
|
changed.add (ARDOUR::Properties::running);
|
||||||
|
trigger_changed (changed);
|
||||||
|
}
|
||||||
|
|
||||||
AudioTriggerPropertiesBox::AudioTriggerPropertiesBox ()
|
AudioTriggerPropertiesBox::AudioTriggerPropertiesBox ()
|
||||||
: _length_clock (X_("regionlength"), true, "", true, false, true)
|
: _length_clock (X_("regionlength"), true, "", true, false, true)
|
||||||
, _start_clock (X_("regionstart"), true, "", false, false)
|
, _start_clock (X_("regionstart"), true, "", false, false)
|
||||||
|
|
@ -179,13 +208,7 @@ AudioTriggerPropertiesBox::set_trigger (ARDOUR::TriggerReference tr)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
tref = tr;
|
TriggerPropertiesBox::set_trigger (tr);
|
||||||
tref.trigger()->PropertyChanged.connect (_state_connection, invalidator (*this), boost::bind (&AudioTriggerPropertiesBox::trigger_changed, this, _1), gui_context ());
|
|
||||||
|
|
||||||
PBD::PropertyChange changed;
|
|
||||||
changed.add (ARDOUR::Properties::name);
|
|
||||||
changed.add (ARDOUR::Properties::running);
|
|
||||||
trigger_changed (changed);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,16 @@ public:
|
||||||
~TriggerPropertiesBox () {}
|
~TriggerPropertiesBox () {}
|
||||||
|
|
||||||
virtual void set_trigger (ARDOUR::TriggerReference) = 0;
|
virtual void set_trigger (ARDOUR::TriggerReference) = 0;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
ARDOUR::TriggerReference tref;
|
||||||
|
Gtk::Label _header_label;
|
||||||
|
|
||||||
|
virtual void trigger_changed (const PBD::PropertyChange& what_changed) = 0;
|
||||||
|
void trigger_swap (uint32_t);
|
||||||
|
|
||||||
|
PBD::ScopedConnection _state_connection;
|
||||||
|
PBD::ScopedConnection trigger_swap_connection;
|
||||||
};
|
};
|
||||||
|
|
||||||
class AudioTriggerPropertiesBox : public TriggerPropertiesBox
|
class AudioTriggerPropertiesBox : public TriggerPropertiesBox
|
||||||
|
|
@ -51,14 +61,10 @@ public:
|
||||||
void set_session (ARDOUR::Session*);
|
void set_session (ARDOUR::Session*);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
void toggle_stretch ();
|
||||||
void trigger_changed (const PBD::PropertyChange& what_changed);
|
void trigger_changed (const PBD::PropertyChange& what_changed);
|
||||||
|
|
||||||
void toggle_stretch ();
|
|
||||||
|
|
||||||
Gtk::Label _header_label;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ARDOUR::TriggerReference tref;
|
|
||||||
|
|
||||||
Gtk::Table _table;
|
Gtk::Table _table;
|
||||||
Gtk::Label _abpm_label;
|
Gtk::Label _abpm_label;
|
||||||
|
|
@ -76,7 +82,6 @@ private:
|
||||||
ArdourWidgets::ArdourButton _gain_control;
|
ArdourWidgets::ArdourButton _gain_control;
|
||||||
ArdourWidgets::ArdourButton _stretch_selector;
|
ArdourWidgets::ArdourButton _stretch_selector;
|
||||||
|
|
||||||
PBD::ScopedConnection _state_connection;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ MidiTriggerPropertiesBox::~MidiTriggerPropertiesBox ()
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MidiTriggerPropertiesBox::set_trigger (ARDOUR::TriggerReference tref)
|
MidiTriggerPropertiesBox::set_trigger (ARDOUR::TriggerReference tr)
|
||||||
{
|
{
|
||||||
boost::shared_ptr<ARDOUR::MIDITrigger> midi_trigger = boost::dynamic_pointer_cast<ARDOUR::MIDITrigger> (tref.trigger());
|
boost::shared_ptr<ARDOUR::MIDITrigger> midi_trigger = boost::dynamic_pointer_cast<ARDOUR::MIDITrigger> (tref.trigger());
|
||||||
|
|
||||||
|
|
@ -87,12 +87,7 @@ MidiTriggerPropertiesBox::set_trigger (ARDOUR::TriggerReference tref)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
tref.trigger()->PropertyChanged.connect (_midi_state_connection, invalidator (*this), boost::bind (&MidiTriggerPropertiesBox::trigger_changed, this, _1), gui_context ());
|
TriggerPropertiesBox::set_trigger (tr);
|
||||||
|
|
||||||
PBD::PropertyChange changed;
|
|
||||||
changed.add (ARDOUR::Properties::name);
|
|
||||||
changed.add (ARDOUR::Properties::running);
|
|
||||||
trigger_changed (changed);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -34,16 +34,13 @@ public:
|
||||||
|
|
||||||
void set_trigger (ARDOUR::TriggerReference);
|
void set_trigger (ARDOUR::TriggerReference);
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
void trigger_changed (const PBD::PropertyChange& what_changed);
|
void trigger_changed (const PBD::PropertyChange& what_changed);
|
||||||
|
|
||||||
boost::shared_ptr<ARDOUR::MIDITrigger> _trigger;
|
private:
|
||||||
|
|
||||||
Gtk::Label _header_label;
|
|
||||||
ArdourWidgets::ArdourButton _patch_enable_button;
|
ArdourWidgets::ArdourButton _patch_enable_button;
|
||||||
ArdourWidgets::ArdourButton _cc_enable_button;
|
ArdourWidgets::ArdourButton _cc_enable_button;
|
||||||
|
|
||||||
PBD::ScopedConnection _midi_state_connection;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -789,6 +789,5 @@ TriggerUI::set_trigger (ARDOUR::TriggerReference tr)
|
||||||
trigger_changed (pc);
|
trigger_changed (pc);
|
||||||
|
|
||||||
trigger()->PropertyChanged.connect (trigger_connections, MISSING_INVALIDATOR, boost::bind (&TriggerUI::trigger_changed, this, _1), gui_context());
|
trigger()->PropertyChanged.connect (trigger_connections, MISSING_INVALIDATOR, boost::bind (&TriggerUI::trigger_changed, this, _1), gui_context());
|
||||||
|
|
||||||
tref.box->TriggerSwapped.connect (trigger_swap_connection, MISSING_INVALIDATOR, boost::bind (&TriggerUI::trigger_swap, this, _1), gui_context ());
|
tref.box->TriggerSwapped.connect (trigger_swap_connection, MISSING_INVALIDATOR, boost::bind (&TriggerUI::trigger_swap, this, _1), gui_context ());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue