Prepare for re-use of TimeInfoBox w/o punch-clock
This commit is contained in:
parent
6941d0b74d
commit
f6dc24b901
@ -644,7 +644,7 @@ Editor::Editor ()
|
|||||||
_regions = new EditorRegions (this);
|
_regions = new EditorRegions (this);
|
||||||
_snapshots = new EditorSnapshots (this);
|
_snapshots = new EditorSnapshots (this);
|
||||||
_locations = new EditorLocations (this);
|
_locations = new EditorLocations (this);
|
||||||
_time_info_box = new TimeInfoBox ();
|
_time_info_box = new TimeInfoBox (true);
|
||||||
|
|
||||||
/* these are static location signals */
|
/* these are static location signals */
|
||||||
|
|
||||||
|
@ -43,10 +43,13 @@ using namespace ARDOUR;
|
|||||||
using std::min;
|
using std::min;
|
||||||
using std::max;
|
using std::max;
|
||||||
|
|
||||||
TimeInfoBox::TimeInfoBox ()
|
TimeInfoBox::TimeInfoBox (bool with_punch)
|
||||||
: table (3, 4)
|
: table (3, 3)
|
||||||
|
, punch_start (0)
|
||||||
|
, punch_end (0)
|
||||||
, syncing_selection (false)
|
, syncing_selection (false)
|
||||||
, syncing_punch (false)
|
, syncing_punch (false)
|
||||||
|
, with_punch_clock (with_punch)
|
||||||
{
|
{
|
||||||
set_name (X_("TimeInfoBox"));
|
set_name (X_("TimeInfoBox"));
|
||||||
|
|
||||||
@ -54,11 +57,7 @@ TimeInfoBox::TimeInfoBox ()
|
|||||||
selection_end = new AudioClock ("selection-end", false, "selection", false, false, false, false);
|
selection_end = new AudioClock ("selection-end", false, "selection", false, false, false, false);
|
||||||
selection_length = new AudioClock ("selection-length", false, "selection", false, false, true, false);
|
selection_length = new AudioClock ("selection-length", false, "selection", false, false, true, false);
|
||||||
|
|
||||||
punch_start = new AudioClock ("punch-start", false, "punch", false, false, false, false);
|
|
||||||
punch_end = new AudioClock ("punch-end", false, "punch", false, false, false, false);
|
|
||||||
|
|
||||||
selection_title.set_text (_("Selection"));
|
selection_title.set_text (_("Selection"));
|
||||||
punch_title.set_text (_("Punch"));
|
|
||||||
|
|
||||||
set_homogeneous (false);
|
set_homogeneous (false);
|
||||||
set_spacing (0);
|
set_spacing (0);
|
||||||
@ -74,7 +73,9 @@ TimeInfoBox::TimeInfoBox ()
|
|||||||
Gtk::Label* l;
|
Gtk::Label* l;
|
||||||
|
|
||||||
selection_title.set_name ("TimeInfoSelectionTitle");
|
selection_title.set_name ("TimeInfoSelectionTitle");
|
||||||
|
if (with_punch_clock) {
|
||||||
table.attach (selection_title, 1, 2, 0, 1);
|
table.attach (selection_title, 1, 2, 0, 1);
|
||||||
|
}
|
||||||
l = manage (new Label);
|
l = manage (new Label);
|
||||||
l->set_text (_("Start"));
|
l->set_text (_("Start"));
|
||||||
l->set_alignment (1.0, 0.5);
|
l->set_alignment (1.0, 0.5);
|
||||||
@ -96,10 +97,16 @@ TimeInfoBox::TimeInfoBox ()
|
|||||||
table.attach (*l, 0, 1, 3, 4, FILL);
|
table.attach (*l, 0, 1, 3, 4, FILL);
|
||||||
table.attach (*selection_length, 1, 2, 3, 4);
|
table.attach (*selection_length, 1, 2, 3, 4);
|
||||||
|
|
||||||
|
if (with_punch_clock) {
|
||||||
|
punch_start = new AudioClock ("punch-start", false, "punch", false, false, false, false);
|
||||||
|
punch_end = new AudioClock ("punch-end", false, "punch", false, false, false, false);
|
||||||
|
punch_title.set_text (_("Punch"));
|
||||||
|
|
||||||
punch_title.set_name ("TimeInfoSelectionTitle");
|
punch_title.set_name ("TimeInfoSelectionTitle");
|
||||||
table.attach (punch_title, 2, 3, 0, 1);
|
table.attach (punch_title, 2, 3, 0, 1);
|
||||||
table.attach (*punch_start, 2, 3, 1, 2);
|
table.attach (*punch_start, 2, 3, 1, 2);
|
||||||
table.attach (*punch_end, 2, 3, 2, 3);
|
table.attach (*punch_end, 2, 3, 2, 3);
|
||||||
|
}
|
||||||
|
|
||||||
show_all ();
|
show_all ();
|
||||||
|
|
||||||
@ -107,14 +114,16 @@ TimeInfoBox::TimeInfoBox ()
|
|||||||
selection_end->mode_changed.connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::sync_selection_mode), selection_end));
|
selection_end->mode_changed.connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::sync_selection_mode), selection_end));
|
||||||
selection_length->mode_changed.connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::sync_selection_mode), selection_length));
|
selection_length->mode_changed.connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::sync_selection_mode), selection_length));
|
||||||
|
|
||||||
punch_start->mode_changed.connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::sync_punch_mode), punch_start));
|
|
||||||
punch_end->mode_changed.connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::sync_punch_mode), punch_end));
|
|
||||||
|
|
||||||
selection_start->signal_button_release_event().connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::clock_button_release_event), selection_start), true);
|
selection_start->signal_button_release_event().connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::clock_button_release_event), selection_start), true);
|
||||||
selection_end->signal_button_release_event().connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::clock_button_release_event), selection_end), true);
|
selection_end->signal_button_release_event().connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::clock_button_release_event), selection_end), true);
|
||||||
|
|
||||||
|
if (with_punch_clock) {
|
||||||
|
punch_start->mode_changed.connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::sync_punch_mode), punch_start));
|
||||||
|
punch_end->mode_changed.connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::sync_punch_mode), punch_end));
|
||||||
|
|
||||||
punch_start->signal_button_release_event().connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::clock_button_release_event), punch_start), true);
|
punch_start->signal_button_release_event().connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::clock_button_release_event), punch_start), true);
|
||||||
punch_end->signal_button_release_event().connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::clock_button_release_event), punch_end), true);
|
punch_end->signal_button_release_event().connect (sigc::bind (sigc::mem_fun (*this, &TimeInfoBox::clock_button_release_event), punch_end), true);
|
||||||
|
}
|
||||||
|
|
||||||
Editor::instance().get_selection().TimeChanged.connect (sigc::mem_fun (*this, &TimeInfoBox::selection_changed));
|
Editor::instance().get_selection().TimeChanged.connect (sigc::mem_fun (*this, &TimeInfoBox::selection_changed));
|
||||||
Editor::instance().get_selection().RegionsChanged.connect (sigc::mem_fun (*this, &TimeInfoBox::selection_changed));
|
Editor::instance().get_selection().RegionsChanged.connect (sigc::mem_fun (*this, &TimeInfoBox::selection_changed));
|
||||||
@ -198,6 +207,9 @@ TimeInfoBox::sync_selection_mode (AudioClock* src)
|
|||||||
void
|
void
|
||||||
TimeInfoBox::sync_punch_mode (AudioClock* src)
|
TimeInfoBox::sync_punch_mode (AudioClock* src)
|
||||||
{
|
{
|
||||||
|
if (!with_punch_clock) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!syncing_punch) {
|
if (!syncing_punch) {
|
||||||
syncing_punch = true;
|
syncing_punch = true;
|
||||||
punch_start->set_mode (src->mode());
|
punch_start->set_mode (src->mode());
|
||||||
@ -216,6 +228,10 @@ TimeInfoBox::set_session (Session* s)
|
|||||||
selection_end->set_session (s);
|
selection_end->set_session (s);
|
||||||
selection_length->set_session (s);
|
selection_length->set_session (s);
|
||||||
|
|
||||||
|
if (!with_punch_clock) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
punch_start->set_session (s);
|
punch_start->set_session (s);
|
||||||
punch_end->set_session (s);
|
punch_end->set_session (s);
|
||||||
|
|
||||||
@ -335,7 +351,7 @@ TimeInfoBox::selection_changed ()
|
|||||||
void
|
void
|
||||||
TimeInfoBox::punch_location_changed (Location* loc)
|
TimeInfoBox::punch_location_changed (Location* loc)
|
||||||
{
|
{
|
||||||
if (loc) {
|
if (loc && with_punch_clock) {
|
||||||
watch_punch (loc);
|
watch_punch (loc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -343,6 +359,7 @@ TimeInfoBox::punch_location_changed (Location* loc)
|
|||||||
void
|
void
|
||||||
TimeInfoBox::watch_punch (Location* punch)
|
TimeInfoBox::watch_punch (Location* punch)
|
||||||
{
|
{
|
||||||
|
assert (with_punch_clock);
|
||||||
punch_connections.drop_connections ();
|
punch_connections.drop_connections ();
|
||||||
|
|
||||||
punch->start_changed.connect (punch_connections, MISSING_INVALIDATOR, boost::bind (&TimeInfoBox::punch_changed, this, _1), gui_context());
|
punch->start_changed.connect (punch_connections, MISSING_INVALIDATOR, boost::bind (&TimeInfoBox::punch_changed, this, _1), gui_context());
|
||||||
@ -354,6 +371,7 @@ TimeInfoBox::watch_punch (Location* punch)
|
|||||||
void
|
void
|
||||||
TimeInfoBox::punch_changed (Location* loc)
|
TimeInfoBox::punch_changed (Location* loc)
|
||||||
{
|
{
|
||||||
|
assert (with_punch_clock);
|
||||||
if (!loc) {
|
if (!loc) {
|
||||||
punch_start->set_off (true);
|
punch_start->set_off (true);
|
||||||
punch_end->set_off (true);
|
punch_end->set_off (true);
|
||||||
@ -366,4 +384,3 @@ TimeInfoBox::punch_changed (Location* loc)
|
|||||||
punch_start->set (loc->start());
|
punch_start->set (loc->start());
|
||||||
punch_end->set (loc->end());
|
punch_end->set (loc->end());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,13 +42,13 @@ class AudioClock;
|
|||||||
|
|
||||||
class TimeInfoBox : public CairoHPacker, public ARDOUR::SessionHandlePtr
|
class TimeInfoBox : public CairoHPacker, public ARDOUR::SessionHandlePtr
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TimeInfoBox ();
|
TimeInfoBox (bool with_punch);
|
||||||
~TimeInfoBox ();
|
~TimeInfoBox ();
|
||||||
|
|
||||||
void set_session (ARDOUR::Session*);
|
void set_session (ARDOUR::Session*);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Gtk::Table table;
|
Gtk::Table table;
|
||||||
|
|
||||||
AudioClock* selection_start;
|
AudioClock* selection_start;
|
||||||
@ -62,6 +62,7 @@ class TimeInfoBox : public CairoHPacker, public ARDOUR::SessionHandlePtr
|
|||||||
Gtk::Label punch_title;
|
Gtk::Label punch_title;
|
||||||
bool syncing_selection;
|
bool syncing_selection;
|
||||||
bool syncing_punch;
|
bool syncing_punch;
|
||||||
|
bool with_punch_clock;
|
||||||
|
|
||||||
void punch_changed (ARDOUR::Location*);
|
void punch_changed (ARDOUR::Location*);
|
||||||
void punch_location_changed (ARDOUR::Location*);
|
void punch_location_changed (ARDOUR::Location*);
|
||||||
@ -80,5 +81,4 @@ class TimeInfoBox : public CairoHPacker, public ARDOUR::SessionHandlePtr
|
|||||||
void region_property_change (boost::shared_ptr<ARDOUR::Region> r, const PBD::PropertyChange& what_changed);
|
void region_property_change (boost::shared_ptr<ARDOUR::Region> r, const PBD::PropertyChange& what_changed);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif /* __time_info_box_h__ */
|
#endif /* __time_info_box_h__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user