get blinking rec status closer to correct for clip recording
This commit is contained in:
parent
596c54d742
commit
e089953e78
@ -69,6 +69,7 @@ TriggerEntry::TriggerEntry (Item* item, TriggerStrip& s, TriggerReference tr)
|
|||||||
, _strip (s)
|
, _strip (s)
|
||||||
, _grabbed (false)
|
, _grabbed (false)
|
||||||
, _drag_active (false)
|
, _drag_active (false)
|
||||||
|
, rec_blink_on (false)
|
||||||
{
|
{
|
||||||
set_layout_sensitive (true); // why???
|
set_layout_sensitive (true); // why???
|
||||||
|
|
||||||
@ -104,6 +105,7 @@ TriggerEntry::TriggerEntry (Item* item, TriggerStrip& s, TriggerReference tr)
|
|||||||
set_trigger (tr);
|
set_trigger (tr);
|
||||||
|
|
||||||
trigger()->ArmChanged.connect (_rec_enable_connections, MISSING_INVALIDATOR, boost::bind (&TriggerEntry::rec_enable_change, this), gui_context());
|
trigger()->ArmChanged.connect (_rec_enable_connections, MISSING_INVALIDATOR, boost::bind (&TriggerEntry::rec_enable_change, this), gui_context());
|
||||||
|
tref.box()->RecEnableChanged.connect (_rec_enable_connections, MISSING_INVALIDATOR, boost::bind (&TriggerEntry::rec_enable_change, this), gui_context());
|
||||||
|
|
||||||
/* DnD Source */
|
/* DnD Source */
|
||||||
GtkCanvas* gtkcanvas = static_cast<GtkCanvas*> (canvas ());
|
GtkCanvas* gtkcanvas = static_cast<GtkCanvas*> (canvas ());
|
||||||
@ -128,7 +130,7 @@ TriggerEntry::TriggerEntry (Item* item, TriggerStrip& s, TriggerReference tr)
|
|||||||
dynamic_cast<Stripable*> (tref.box()->owner ())->presentation_info ().Change.connect (_owner_prop_connection, MISSING_INVALIDATOR, boost::bind (&TriggerEntry::owner_prop_change, this, _1), gui_context ());
|
dynamic_cast<Stripable*> (tref.box()->owner ())->presentation_info ().Change.connect (_owner_prop_connection, MISSING_INVALIDATOR, boost::bind (&TriggerEntry::owner_prop_change, this, _1), gui_context ());
|
||||||
|
|
||||||
selection_change ();
|
selection_change ();
|
||||||
tref.box()->RecEnableChanged.connect (_rec_enable_connections, MISSING_INVALIDATOR, boost::bind (&TriggerEntry::rec_enable_change, this), gui_context());
|
rec_enable_change ();
|
||||||
}
|
}
|
||||||
|
|
||||||
TriggerEntry::~TriggerEntry ()
|
TriggerEntry::~TriggerEntry ()
|
||||||
@ -138,16 +140,39 @@ TriggerEntry::~TriggerEntry ()
|
|||||||
void
|
void
|
||||||
TriggerEntry::rec_enable_change ()
|
TriggerEntry::rec_enable_change ()
|
||||||
{
|
{
|
||||||
|
switch (tref.box()->record_enabled()) {
|
||||||
|
case Recording:
|
||||||
|
break;
|
||||||
|
case Enabled:
|
||||||
|
if (!UIConfiguration::instance().get_no_strobe() && trigger()->armed()) {
|
||||||
|
rec_blink_connection = Timers::blink_connect (sigc::mem_fun (*this, &TriggerEntry::blink_rec_enable));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Disabled:
|
||||||
|
rec_blink_connection.disconnect ();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
set_play_button_tooltip ();
|
set_play_button_tooltip ();
|
||||||
redraw ();
|
redraw ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TriggerEntry::blink_rec_enable (bool onoff)
|
||||||
|
{
|
||||||
|
rec_blink_on = onoff;
|
||||||
|
redraw ();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
TriggerEntry::set_play_button_tooltip ()
|
TriggerEntry::set_play_button_tooltip ()
|
||||||
{
|
{
|
||||||
if (tref.box()->record_enabled()) {
|
switch (tref.box()->record_enabled()) {
|
||||||
|
case Recording:
|
||||||
|
case Enabled:
|
||||||
play_button->set_tooltip (_("Record into this clip\nRight-click to select Launch Options for this clip"));
|
play_button->set_tooltip (_("Record into this clip\nRight-click to select Launch Options for this clip"));
|
||||||
} else {
|
break;
|
||||||
|
default:
|
||||||
play_button->set_tooltip (_("Stop other clips on this track.\nRight-click to select Launch Options for this clip"));
|
play_button->set_tooltip (_("Stop other clips on this track.\nRight-click to select Launch Options for this clip"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -291,22 +316,30 @@ TriggerEntry::draw_launch_icon (Cairo::RefPtr<Cairo::Context> context, float sz,
|
|||||||
bool active = trigger ()->active ();
|
bool active = trigger ()->active ();
|
||||||
|
|
||||||
if (!trigger ()->region ()) {
|
if (!trigger ()->region ()) {
|
||||||
if (tref.box()->record_enabled()) {
|
|
||||||
|
|
||||||
context->arc (margin + (size * 0.75), margin + (size * 0.75), (size * 0.75), 0., 360.0 * (M_PI/180.0));
|
bool solid = false;
|
||||||
|
context->arc (margin + (size * 0.75), margin + (size * 0.75), (size * 0.75), 0., 360.0 * (M_PI/180.0));
|
||||||
|
|
||||||
|
switch (tref.box()->record_enabled()) {
|
||||||
|
case Enabled:
|
||||||
if (trigger()->armed()) {
|
if (trigger()->armed()) {
|
||||||
set_source_rgba (context, UIConfiguration::instance ().color ("record enable button: fill active"));
|
solid = rec_blink_on;
|
||||||
context->fill ();
|
|
||||||
} else {
|
} else {
|
||||||
set_source_rgba (context, bg_color());
|
solid = false;
|
||||||
context->fill_preserve ();
|
|
||||||
set_source_rgba (context, UIConfiguration::instance ().color ("record enable button: fill active"));
|
|
||||||
context->stroke ();
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
} else {
|
case Recording:
|
||||||
/* no content in this slot, it is only a Stop button */
|
if (trigger()->armed()) {
|
||||||
|
solid = true;
|
||||||
|
} else {
|
||||||
|
solid = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Disabled:
|
||||||
|
/* not recording and no content in this slot, it is only a Stop button */
|
||||||
|
std::cerr << tref.box() << " => Disabled!\n";
|
||||||
context->move_to (margin, margin);
|
context->move_to (margin, margin);
|
||||||
context->rel_line_to (size, 0);
|
context->rel_line_to (size, 0);
|
||||||
context->rel_line_to (0, size);
|
context->rel_line_to (0, size);
|
||||||
@ -314,7 +347,19 @@ TriggerEntry::draw_launch_icon (Cairo::RefPtr<Cairo::Context> context, float sz,
|
|||||||
context->rel_line_to (0, -size);
|
context->rel_line_to (0, -size);
|
||||||
set_source_rgba (context, UIConfiguration::instance ().color ("neutral:midground"));
|
set_source_rgba (context, UIConfiguration::instance ().color ("neutral:midground"));
|
||||||
context->stroke ();
|
context->stroke ();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (solid) {
|
||||||
|
set_source_rgba (context, UIConfiguration::instance ().color ("record enable button: fill active"));
|
||||||
|
context->fill ();
|
||||||
|
} else {
|
||||||
|
set_source_rgba (context, bg_color());
|
||||||
|
context->fill_preserve ();
|
||||||
|
set_source_rgba (context, UIConfiguration::instance ().color ("record enable button: fill active"));
|
||||||
|
context->stroke ();
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,6 +91,7 @@ private:
|
|||||||
int _drag_start_x;
|
int _drag_start_x;
|
||||||
int _drag_start_y;
|
int _drag_start_y;
|
||||||
bool _drag_active;
|
bool _drag_active;
|
||||||
|
bool rec_blink_on;
|
||||||
|
|
||||||
bool event (GdkEvent*);
|
bool event (GdkEvent*);
|
||||||
void drag_begin (Glib::RefPtr<Gdk::DragContext> const&);
|
void drag_begin (Glib::RefPtr<Gdk::DragContext> const&);
|
||||||
@ -107,6 +108,8 @@ private:
|
|||||||
void rec_enable_change ();
|
void rec_enable_change ();
|
||||||
void set_play_button_tooltip ();
|
void set_play_button_tooltip ();
|
||||||
Gtkmm2ext::Color bg_color () const;
|
Gtkmm2ext::Color bg_color () const;
|
||||||
|
void blink_rec_enable (bool);
|
||||||
|
sigc::connection rec_blink_connection;
|
||||||
|
|
||||||
PBD::ScopedConnection _owner_prop_connection;
|
PBD::ScopedConnection _owner_prop_connection;
|
||||||
PBD::ScopedConnectionList _rec_enable_connections;
|
PBD::ScopedConnectionList _rec_enable_connections;
|
||||||
|
Loading…
Reference in New Issue
Block a user