Transfer from ardour_ui (sync and shuttle)
This commit is contained in:
parent
1557e41f5e
commit
7b75c6f8de
@ -107,6 +107,8 @@ static const gchar *_record_mode_strings[] = {
|
|||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define PX_SCALE(px) std::max((float)px, rintf((float)px * UIConfiguration::instance().get_ui_scale()))
|
||||||
|
|
||||||
ApplicationBar::ApplicationBar ()
|
ApplicationBar::ApplicationBar ()
|
||||||
: _have_layout (false)
|
: _have_layout (false)
|
||||||
, _basic_ui (0)
|
, _basic_ui (0)
|
||||||
@ -126,13 +128,27 @@ ApplicationBar::on_parent_changed (Gtk::Widget*)
|
|||||||
_transport_ctrl.setup (ARDOUR_UI::instance ());
|
_transport_ctrl.setup (ARDOUR_UI::instance ());
|
||||||
_transport_ctrl.map_actions ();
|
_transport_ctrl.map_actions ();
|
||||||
|
|
||||||
|
/* sync_button */
|
||||||
|
Glib::RefPtr<Action> act = ActionManager::get_action (X_("Transport"), X_("ToggleExternalSync"));
|
||||||
|
_sync_button.set_related_action (act);
|
||||||
|
_sync_button.signal_button_press_event().connect (sigc::mem_fun (*this, &ApplicationBar::sync_button_clicked), false);
|
||||||
|
_sync_button.set_sizing_text (S_("LogestSync|M-Clk"));
|
||||||
|
|
||||||
|
/* sub-layout for Sync | Shuttle (grow) */
|
||||||
|
HBox* ssbox = manage (new HBox);
|
||||||
|
ssbox->set_spacing (PX_SCALE(2));
|
||||||
|
ssbox->pack_start (_sync_button, false, false, 0);
|
||||||
|
ssbox->pack_start (_shuttle_box, true, true, 0);
|
||||||
|
ssbox->pack_start (*_shuttle_box.vari_button(), false, false, 0);
|
||||||
|
ssbox->pack_start (*_shuttle_box.info_button(), false, false, 0);
|
||||||
|
|
||||||
int vpadding = 1;
|
int vpadding = 1;
|
||||||
int hpadding = 2;
|
int hpadding = 2;
|
||||||
int col = 0;
|
int col = 0;
|
||||||
#define TCOL col, col + 1
|
#define TCOL col, col + 1
|
||||||
|
|
||||||
_table.attach (_transport_ctrl, TCOL, 0, 1 , SHRINK, SHRINK, 0, 0);
|
_table.attach (_transport_ctrl, TCOL, 0, 1 , SHRINK, SHRINK, 0, 0);
|
||||||
// _table.attach (*ssbox, TCOL, 1, 2 , FILL, SHRINK, 0, 0);
|
_table.attach (*ssbox, TCOL, 1, 2 , FILL, SHRINK, 0, 0);
|
||||||
++col;
|
++col;
|
||||||
|
|
||||||
|
|
||||||
@ -140,8 +156,21 @@ ApplicationBar::on_parent_changed (Gtk::Widget*)
|
|||||||
_table.set_spacings (0);
|
_table.set_spacings (0);
|
||||||
_table.set_row_spacings (4);
|
_table.set_row_spacings (4);
|
||||||
_table.set_border_width (1);
|
_table.set_border_width (1);
|
||||||
|
_table.show_all(); //TODO: update visibility somewhere else
|
||||||
pack_start(_table, false, false);
|
pack_start(_table, false, false);
|
||||||
|
|
||||||
|
/*sizing */
|
||||||
|
Glib::RefPtr<SizeGroup> button_height_size_group = ARDOUR_UI::instance()->button_height_size_group;
|
||||||
|
button_height_size_group->add_widget (_transport_ctrl.size_button ());
|
||||||
|
button_height_size_group->add_widget (_sync_button);
|
||||||
|
|
||||||
|
/* theming */
|
||||||
|
_sync_button.set_name ("transport active option button");
|
||||||
|
|
||||||
|
set_transport_sensitivity (false);
|
||||||
}
|
}
|
||||||
|
#undef PX_SCALE
|
||||||
|
#undef TCOL
|
||||||
|
|
||||||
void
|
void
|
||||||
ApplicationBar::set_session (Session *s)
|
ApplicationBar::set_session (Session *s)
|
||||||
@ -149,10 +178,154 @@ ApplicationBar::set_session (Session *s)
|
|||||||
SessionHandlePtr::set_session (s);
|
SessionHandlePtr::set_session (s);
|
||||||
|
|
||||||
_transport_ctrl.set_session (s);
|
_transport_ctrl.set_session (s);
|
||||||
|
_shuttle_box.set_session (s);
|
||||||
|
|
||||||
if (_basic_ui) {
|
if (_basic_ui) {
|
||||||
delete _basic_ui;
|
delete _basic_ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
map_transport_state ();
|
||||||
|
|
||||||
|
if (!_session) {
|
||||||
|
_blink_connection.disconnect ();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
_basic_ui = new BasicUI (*s);
|
_basic_ui = new BasicUI (*s);
|
||||||
|
|
||||||
|
_session->AuditionActive.connect (_session_connections, MISSING_INVALIDATOR, std::bind (&ApplicationBar::auditioning_changed, this, _1), gui_context());
|
||||||
|
_session->TransportStateChange.connect (_session_connections, MISSING_INVALIDATOR, std::bind (&ApplicationBar::map_transport_state, this), gui_context());
|
||||||
|
|
||||||
|
_blink_connection = Timers::blink_connect (sigc::mem_fun(*this, &ApplicationBar::blink_handler));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ApplicationBar::set_transport_sensitivity (bool yn)
|
||||||
|
{
|
||||||
|
ActionManager::set_sensitive (ActionManager::transport_sensitive_actions, yn);
|
||||||
|
_shuttle_box.set_sensitive (yn);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ApplicationBar::_auditioning_changed (bool onoff)
|
||||||
|
{
|
||||||
|
// auditioning_alert_button.set_active (onoff);
|
||||||
|
// auditioning_alert_button.set_sensitive (onoff);
|
||||||
|
// if (!onoff) {
|
||||||
|
// auditioning_alert_button.set_visual_state (Gtkmm2ext::NoVisualState);
|
||||||
|
// }
|
||||||
|
set_transport_sensitivity (!onoff);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ApplicationBar::auditioning_changed (bool onoff)
|
||||||
|
{
|
||||||
|
UI::instance()->call_slot (MISSING_INVALIDATOR, std::bind (&ApplicationBar::_auditioning_changed, this, onoff));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ApplicationBar::parameter_changed (std::string p)
|
||||||
|
{
|
||||||
|
if (p == "external-sync") {
|
||||||
|
|
||||||
|
if (!_session->config.get_external_sync()) {
|
||||||
|
_sync_button.set_text (S_("SyncSource|Int."));
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (p == "sync-source") {
|
||||||
|
if (_session) {
|
||||||
|
if (!_session->config.get_external_sync()) {
|
||||||
|
_sync_button.set_text (S_("SyncSource|Int."));
|
||||||
|
} else {
|
||||||
|
_sync_button.set_text (TransportMasterManager::instance().current()->display_name());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* changing sync source without a session is unlikely/impossible , except during startup */
|
||||||
|
_sync_button.set_text (TransportMasterManager::instance().current()->display_name());
|
||||||
|
}
|
||||||
|
if (_session->config.get_video_pullup() == 0.0f || TransportMasterManager::instance().current()->type() != Engine) {
|
||||||
|
UI::instance()->set_tip (_sync_button, _("Enable/Disable external positional sync"));
|
||||||
|
} else {
|
||||||
|
UI::instance()->set_tip (_sync_button, _("External sync is not possible: video pull up/down is set"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
ApplicationBar::sync_button_clicked (GdkEventButton* ev)
|
||||||
|
{
|
||||||
|
if (ev->button != 3) {
|
||||||
|
/* this handler is just for button-3 clicks */
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Glib::RefPtr<ToggleAction> tact = ActionManager::get_toggle_action ("Window", "toggle-transport-masters");
|
||||||
|
tact->set_active();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ApplicationBar::sync_blink (bool onoff)
|
||||||
|
{
|
||||||
|
if (_session == 0 || !_session->config.get_external_sync()) {
|
||||||
|
/* internal sync */
|
||||||
|
_sync_button.set_active (false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!_session->transport_locked()) {
|
||||||
|
/* not locked, so blink on and off according to the onoff argument */
|
||||||
|
|
||||||
|
if (onoff) {
|
||||||
|
_sync_button.set_active (true);
|
||||||
|
} else {
|
||||||
|
_sync_button.set_active (false);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* locked */
|
||||||
|
_sync_button.set_active (true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ApplicationBar::blink_handler (bool blink_on)
|
||||||
|
{
|
||||||
|
sync_blink (blink_on);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
if (UIConfiguration::instance().get_no_strobe() || !UIConfiguration::instance().get_blink_alert_indicators()) {
|
||||||
|
blink_on = true;
|
||||||
|
}
|
||||||
|
error_blink (blink_on);
|
||||||
|
solo_blink (blink_on);
|
||||||
|
audition_blink (blink_on);
|
||||||
|
feedback_blink (blink_on);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ApplicationBar::map_transport_state ()
|
||||||
|
{
|
||||||
|
_shuttle_box.map_transport_state ();
|
||||||
|
|
||||||
|
/* if (!_session) {
|
||||||
|
record_mode_selector.set_sensitive (false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
float sp = _session->transport_speed();
|
||||||
|
|
||||||
|
if (sp != 0.0f) {
|
||||||
|
record_mode_selector.set_sensitive (!_session->actively_recording ());
|
||||||
|
} else {
|
||||||
|
record_mode_selector.set_sensitive (true);
|
||||||
|
update_disk_space ();
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
@ -61,8 +61,25 @@ public:
|
|||||||
private:
|
private:
|
||||||
void on_parent_changed (Gtk::Widget*);
|
void on_parent_changed (Gtk::Widget*);
|
||||||
|
|
||||||
bool _have_layout;
|
bool sync_button_clicked (GdkEventButton*);
|
||||||
BasicUI* _basic_ui;
|
void parameter_changed (std::string);
|
||||||
Gtk::Table _table;
|
|
||||||
TransportControlUI _transport_ctrl;
|
void map_transport_state ();
|
||||||
|
void set_transport_sensitivity (bool);
|
||||||
|
|
||||||
|
void auditioning_changed (bool);
|
||||||
|
void _auditioning_changed (bool);
|
||||||
|
|
||||||
|
/* blinking alerts */
|
||||||
|
void sync_blink (bool);
|
||||||
|
void blink_handler (bool);
|
||||||
|
|
||||||
|
bool _have_layout;
|
||||||
|
BasicUI* _basic_ui;
|
||||||
|
Gtk::Table _table;
|
||||||
|
TransportControlUI _transport_ctrl;
|
||||||
|
ShuttleControl _shuttle_box;
|
||||||
|
ArdourWidgets::ArdourButton _sync_button;
|
||||||
|
|
||||||
|
sigc::connection _blink_connection;
|
||||||
};
|
};
|
||||||
|
@ -392,6 +392,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
|
|||||||
_exit (EXIT_SUCCESS);
|
_exit (EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
button_height_size_group = SizeGroup::create (Gtk::SIZE_GROUP_VERTICAL);
|
||||||
|
|
||||||
if (theArdourUI == 0) {
|
if (theArdourUI == 0) {
|
||||||
theArdourUI = this;
|
theArdourUI = this;
|
||||||
@ -971,9 +972,6 @@ ARDOUR_UI::set_transport_controllable_state (const XMLNode& node)
|
|||||||
if (node.get_property ("rec", str)) {
|
if (node.get_property ("rec", str)) {
|
||||||
rec_controllable->set_id (str);
|
rec_controllable->set_id (str);
|
||||||
}
|
}
|
||||||
if (node.get_property ("shuttle", str)) {
|
|
||||||
shuttle_box.controllable()->set_id (str);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
XMLNode&
|
XMLNode&
|
||||||
@ -988,7 +986,6 @@ ARDOUR_UI::get_transport_controllable_state ()
|
|||||||
node->set_property (X_("auto-loop"), auto_loop_controllable->id());
|
node->set_property (X_("auto-loop"), auto_loop_controllable->id());
|
||||||
node->set_property (X_("play-selection"), play_selection_controllable->id());
|
node->set_property (X_("play-selection"), play_selection_controllable->id());
|
||||||
node->set_property (X_("rec"), rec_controllable->id());
|
node->set_property (X_("rec"), rec_controllable->id());
|
||||||
node->set_property (X_("shuttle"), shuttle_box.controllable()->id());
|
|
||||||
|
|
||||||
return *node;
|
return *node;
|
||||||
}
|
}
|
||||||
@ -2171,8 +2168,6 @@ ARDOUR_UI::map_transport_state ()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
shuttle_box.map_transport_state ();
|
|
||||||
|
|
||||||
float sp = _session->transport_speed();
|
float sp = _session->transport_speed();
|
||||||
|
|
||||||
if (sp != 0.0f) {
|
if (sp != 0.0f) {
|
||||||
@ -2189,15 +2184,10 @@ ARDOUR_UI::map_transport_state ()
|
|||||||
void
|
void
|
||||||
ARDOUR_UI::blink_handler (bool blink_on)
|
ARDOUR_UI::blink_handler (bool blink_on)
|
||||||
{
|
{
|
||||||
sync_blink (blink_on);
|
|
||||||
|
|
||||||
if (UIConfiguration::instance().get_no_strobe() || !UIConfiguration::instance().get_blink_alert_indicators()) {
|
if (UIConfiguration::instance().get_no_strobe() || !UIConfiguration::instance().get_blink_alert_indicators()) {
|
||||||
blink_on = true;
|
blink_on = true;
|
||||||
}
|
}
|
||||||
error_blink (blink_on);
|
error_blink (blink_on);
|
||||||
solo_blink (blink_on);
|
|
||||||
audition_blink (blink_on);
|
|
||||||
feedback_blink (blink_on);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -61,6 +61,7 @@
|
|||||||
#include <gtkmm/notebook.h>
|
#include <gtkmm/notebook.h>
|
||||||
#include <gtkmm/button.h>
|
#include <gtkmm/button.h>
|
||||||
#include <gtkmm/togglebutton.h>
|
#include <gtkmm/togglebutton.h>
|
||||||
|
#include <gtkmm/sizegroup.h>
|
||||||
#include <gtkmm/treeview.h>
|
#include <gtkmm/treeview.h>
|
||||||
#include <gtkmm/menubar.h>
|
#include <gtkmm/menubar.h>
|
||||||
#include <gtkmm/textbuffer.h>
|
#include <gtkmm/textbuffer.h>
|
||||||
@ -305,6 +306,8 @@ public:
|
|||||||
void xrun_handler (samplepos_t);
|
void xrun_handler (samplepos_t);
|
||||||
void create_xrun_marker (samplepos_t);
|
void create_xrun_marker (samplepos_t);
|
||||||
|
|
||||||
|
Glib::RefPtr<Gtk::SizeGroup> button_height_size_group;
|
||||||
|
|
||||||
GUIObjectState* gui_object_state;
|
GUIObjectState* gui_object_state;
|
||||||
|
|
||||||
MainClock* primary_clock;
|
MainClock* primary_clock;
|
||||||
@ -561,7 +564,6 @@ private:
|
|||||||
Gtk::Label io_latency_label;
|
Gtk::Label io_latency_label;
|
||||||
Gtk::Label io_latency_value;
|
Gtk::Label io_latency_value;
|
||||||
|
|
||||||
ShuttleControl shuttle_box;
|
|
||||||
MiniTimeline mini_timeline;
|
MiniTimeline mini_timeline;
|
||||||
TimeInfoBox* time_info_box;
|
TimeInfoBox* time_info_box;
|
||||||
|
|
||||||
@ -571,7 +573,6 @@ private:
|
|||||||
|
|
||||||
ArdourWidgets::ArdourButton auto_return_button;
|
ArdourWidgets::ArdourButton auto_return_button;
|
||||||
ArdourWidgets::ArdourButton follow_edits_button;
|
ArdourWidgets::ArdourButton follow_edits_button;
|
||||||
ArdourWidgets::ArdourButton sync_button;
|
|
||||||
|
|
||||||
ArdourWidgets::ArdourButton auditioning_alert_button;
|
ArdourWidgets::ArdourButton auditioning_alert_button;
|
||||||
ArdourWidgets::ArdourButton solo_alert_button;
|
ArdourWidgets::ArdourButton solo_alert_button;
|
||||||
@ -595,7 +596,6 @@ private:
|
|||||||
|
|
||||||
void cancel_solo ();
|
void cancel_solo ();
|
||||||
void solo_blink (bool);
|
void solo_blink (bool);
|
||||||
void sync_blink (bool);
|
|
||||||
void audition_blink (bool);
|
void audition_blink (bool);
|
||||||
void feedback_blink (bool);
|
void feedback_blink (bool);
|
||||||
void error_blink (bool);
|
void error_blink (bool);
|
||||||
@ -675,7 +675,6 @@ private:
|
|||||||
void edit_metadata ();
|
void edit_metadata ();
|
||||||
void import_metadata ();
|
void import_metadata ();
|
||||||
|
|
||||||
void set_transport_sensitivity (bool);
|
|
||||||
void set_punch_sensitivity ();
|
void set_punch_sensitivity ();
|
||||||
|
|
||||||
//stuff for ProTools-style numpad
|
//stuff for ProTools-style numpad
|
||||||
@ -871,7 +870,6 @@ private:
|
|||||||
int ambiguous_file (std::string file, std::vector<std::string> hits);
|
int ambiguous_file (std::string file, std::vector<std::string> hits);
|
||||||
|
|
||||||
bool click_button_clicked (GdkEventButton *);
|
bool click_button_clicked (GdkEventButton *);
|
||||||
bool sync_button_clicked (GdkEventButton *);
|
|
||||||
|
|
||||||
VisibilityGroup _status_bar_visibility;
|
VisibilityGroup _status_bar_visibility;
|
||||||
|
|
||||||
|
@ -323,12 +323,6 @@ ARDOUR_UI::setup_transport ()
|
|||||||
RefPtr<Action> act;
|
RefPtr<Action> act;
|
||||||
/* setup actions */
|
/* setup actions */
|
||||||
|
|
||||||
act = ActionManager::get_action (X_("Transport"), X_("ToggleExternalSync"));
|
|
||||||
sync_button.set_related_action (act);
|
|
||||||
sync_button.signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::sync_button_clicked), false);
|
|
||||||
|
|
||||||
sync_button.set_sizing_text (S_("LogestSync|M-Clk"));
|
|
||||||
|
|
||||||
/* CANNOT sigc::bind these to clicked or toggled, must use pressed or released */
|
/* CANNOT sigc::bind these to clicked or toggled, must use pressed or released */
|
||||||
act = ActionManager::get_action (X_("Main"), X_("cancel-solo"));
|
act = ActionManager::get_action (X_("Main"), X_("cancel-solo"));
|
||||||
solo_alert_button.set_related_action (act);
|
solo_alert_button.set_related_action (act);
|
||||||
@ -441,8 +435,6 @@ ARDOUR_UI::setup_transport ()
|
|||||||
monitor_mono_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text));
|
monitor_mono_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text));
|
||||||
monitor_mute_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text));
|
monitor_mute_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text));
|
||||||
|
|
||||||
sync_button.set_name ("transport active option button");
|
|
||||||
|
|
||||||
/* and widget text */
|
/* and widget text */
|
||||||
auto_return_button.set_text(_("Auto Return"));
|
auto_return_button.set_text(_("Auto Return"));
|
||||||
follow_edits_button.set_text(_("Follow Range"));
|
follow_edits_button.set_text(_("Follow Range"));
|
||||||
@ -546,14 +538,12 @@ ARDOUR_UI::setup_transport ()
|
|||||||
monitor_box->pack_start (monitor_mute_button, true, true);
|
monitor_box->pack_start (monitor_mute_button, true, true);
|
||||||
|
|
||||||
/* clock button size groups */
|
/* clock button size groups */
|
||||||
Glib::RefPtr<SizeGroup> button_height_size_group = SizeGroup::create (Gtk::SIZE_GROUP_VERTICAL);
|
|
||||||
button_height_size_group->add_widget (follow_edits_button);
|
button_height_size_group->add_widget (follow_edits_button);
|
||||||
button_height_size_group->add_widget (*primary_clock->left_btn());
|
button_height_size_group->add_widget (*primary_clock->left_btn());
|
||||||
button_height_size_group->add_widget (*primary_clock->right_btn());
|
button_height_size_group->add_widget (*primary_clock->right_btn());
|
||||||
button_height_size_group->add_widget (*secondary_clock->left_btn());
|
button_height_size_group->add_widget (*secondary_clock->left_btn());
|
||||||
button_height_size_group->add_widget (*secondary_clock->right_btn());
|
button_height_size_group->add_widget (*secondary_clock->right_btn());
|
||||||
|
|
||||||
button_height_size_group->add_widget (sync_button);
|
|
||||||
button_height_size_group->add_widget (auto_return_button);
|
button_height_size_group->add_widget (auto_return_button);
|
||||||
|
|
||||||
//tab selections
|
//tab selections
|
||||||
@ -583,22 +573,13 @@ ARDOUR_UI::setup_transport ()
|
|||||||
clock2_size_group->add_widget (*secondary_clock->left_btn());
|
clock2_size_group->add_widget (*secondary_clock->left_btn());
|
||||||
clock2_size_group->add_widget (*secondary_clock->right_btn());
|
clock2_size_group->add_widget (*secondary_clock->right_btn());
|
||||||
|
|
||||||
/* sub-layout for Sync | Shuttle (grow) */
|
|
||||||
HBox* ssbox = manage (new HBox);
|
|
||||||
ssbox->set_spacing (PX_SCALE(2));
|
|
||||||
ssbox->pack_start (sync_button, false, false, 0);
|
|
||||||
ssbox->pack_start (shuttle_box, true, true, 0);
|
|
||||||
ssbox->pack_start (*shuttle_box.vari_button(), false, false, 0);
|
|
||||||
ssbox->pack_start (*shuttle_box.info_button(), false, false, 0);
|
|
||||||
|
|
||||||
/* and the main table layout */
|
/* and the main table layout */
|
||||||
int vpadding = 1;
|
int vpadding = 1;
|
||||||
int hpadding = 2;
|
int hpadding = 2;
|
||||||
int col = 0;
|
int col = 0;
|
||||||
#define TCOL col, col + 1
|
#define TCOL col, col + 1
|
||||||
|
|
||||||
transport_table.attach (*application_bar, TCOL, 0, 1 , SHRINK, SHRINK, 0, 0);
|
transport_table.attach (*application_bar, TCOL, 0, 2 , EXPAND|FILL, EXPAND|FILL, 3, 0);
|
||||||
transport_table.attach (*ssbox, TCOL, 1, 2 , FILL, SHRINK, 0, 0);
|
|
||||||
++col;
|
++col;
|
||||||
|
|
||||||
transport_table.attach (*(manage (new ArdourVSpacer ())), TCOL, 0, 2 , SHRINK, EXPAND|FILL, 3, 0);
|
transport_table.attach (*(manage (new ArdourVSpacer ())), TCOL, 0, 2 , SHRINK, EXPAND|FILL, 3, 0);
|
||||||
@ -710,13 +691,10 @@ ARDOUR_UI::setup_transport ()
|
|||||||
feedback_alert_button.set_visual_state (Gtkmm2ext::NoVisualState);
|
feedback_alert_button.set_visual_state (Gtkmm2ext::NoVisualState);
|
||||||
auditioning_alert_button.set_sensitive (false);
|
auditioning_alert_button.set_sensitive (false);
|
||||||
auditioning_alert_button.set_visual_state (Gtkmm2ext::NoVisualState);
|
auditioning_alert_button.set_visual_state (Gtkmm2ext::NoVisualState);
|
||||||
|
|
||||||
set_transport_sensitivity (false);
|
|
||||||
}
|
}
|
||||||
#undef PX_SCALE
|
#undef PX_SCALE
|
||||||
#undef TCOL
|
#undef TCOL
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ARDOUR_UI::latency_switch_changed ()
|
ARDOUR_UI::latency_switch_changed ()
|
||||||
{
|
{
|
||||||
@ -773,7 +751,6 @@ ARDOUR_UI::_auditioning_changed (bool onoff)
|
|||||||
if (!onoff) {
|
if (!onoff) {
|
||||||
auditioning_alert_button.set_visual_state (Gtkmm2ext::NoVisualState);
|
auditioning_alert_button.set_visual_state (Gtkmm2ext::NoVisualState);
|
||||||
}
|
}
|
||||||
set_transport_sensitivity (!onoff);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -835,29 +812,6 @@ ARDOUR_UI::solo_blink (bool onoff)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
ARDOUR_UI::sync_blink (bool onoff)
|
|
||||||
{
|
|
||||||
if (_session == 0 || !_session->config.get_external_sync()) {
|
|
||||||
/* internal sync */
|
|
||||||
sync_button.set_active (false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!_session->transport_locked()) {
|
|
||||||
/* not locked, so blink on and off according to the onoff argument */
|
|
||||||
|
|
||||||
if (onoff) {
|
|
||||||
sync_button.set_active (true);
|
|
||||||
} else {
|
|
||||||
sync_button.set_active (false);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* locked */
|
|
||||||
sync_button.set_active (true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ARDOUR_UI::audition_blink (bool onoff)
|
ARDOUR_UI::audition_blink (bool onoff)
|
||||||
{
|
{
|
||||||
@ -925,12 +879,6 @@ ARDOUR_UI::error_blink (bool onoff)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void
|
|
||||||
ARDOUR_UI::set_transport_sensitivity (bool yn)
|
|
||||||
{
|
|
||||||
ActionManager::set_sensitive (ActionManager::transport_sensitive_actions, yn);
|
|
||||||
shuttle_box.set_sensitive (yn);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ARDOUR_UI::set_punch_sensitivity ()
|
ARDOUR_UI::set_punch_sensitivity ()
|
||||||
@ -1005,19 +953,6 @@ ARDOUR_UI::click_button_clicked (GdkEventButton* ev)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
|
||||||
ARDOUR_UI::sync_button_clicked (GdkEventButton* ev)
|
|
||||||
{
|
|
||||||
if (ev->button != 3) {
|
|
||||||
/* this handler is just for button-3 clicks */
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Glib::RefPtr<ToggleAction> tact = ActionManager::get_toggle_action ("Window", "toggle-transport-masters");
|
|
||||||
tact->set_active();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ARDOUR_UI::toggle_follow_edits ()
|
ARDOUR_UI::toggle_follow_edits ()
|
||||||
{
|
{
|
||||||
|
@ -157,7 +157,6 @@ ARDOUR_UI::set_session (Session *s)
|
|||||||
|
|
||||||
AutomationWatch::instance().set_session (s);
|
AutomationWatch::instance().set_session (s);
|
||||||
|
|
||||||
shuttle_box.set_session (s);
|
|
||||||
mini_timeline.set_session (s);
|
mini_timeline.set_session (s);
|
||||||
time_info_box->set_session (s);
|
time_info_box->set_session (s);
|
||||||
|
|
||||||
|
@ -323,7 +323,6 @@ ARDOUR_UI::parameter_changed (std::string p)
|
|||||||
ActionManager::map_some_state ("Transport", "ToggleExternalSync", sigc::mem_fun (_session->config, &SessionConfiguration::get_external_sync));
|
ActionManager::map_some_state ("Transport", "ToggleExternalSync", sigc::mem_fun (_session->config, &SessionConfiguration::get_external_sync));
|
||||||
|
|
||||||
if (!_session->config.get_external_sync()) {
|
if (!_session->config.get_external_sync()) {
|
||||||
sync_button.set_text (S_("SyncSource|Int."));
|
|
||||||
ActionManager::get_action ("Transport", "ToggleAutoPlay")->set_sensitive (true);
|
ActionManager::get_action ("Transport", "ToggleAutoPlay")->set_sensitive (true);
|
||||||
ActionManager::get_action ("Transport", "ToggleAutoReturn")->set_sensitive (true);
|
ActionManager::get_action ("Transport", "ToggleAutoReturn")->set_sensitive (true);
|
||||||
ActionManager::get_action ("Transport", "ToggleFollowEdits")->set_sensitive (true);
|
ActionManager::get_action ("Transport", "ToggleFollowEdits")->set_sensitive (true);
|
||||||
@ -339,19 +338,6 @@ ARDOUR_UI::parameter_changed (std::string p)
|
|||||||
|
|
||||||
} else if (p == "sync-source") {
|
} else if (p == "sync-source") {
|
||||||
|
|
||||||
/* app parameter (RC config) */
|
|
||||||
|
|
||||||
if (_session) {
|
|
||||||
if (!_session->config.get_external_sync()) {
|
|
||||||
sync_button.set_text (S_("SyncSource|Int."));
|
|
||||||
} else {
|
|
||||||
sync_button.set_text (TransportMasterManager::instance().current()->display_name());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* changing sync source without a session is unlikely/impossible , except during startup */
|
|
||||||
sync_button.set_text (TransportMasterManager::instance().current()->display_name());
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (p == "follow-edits") {
|
} else if (p == "follow-edits") {
|
||||||
|
|
||||||
ActionManager::map_some_state ("Transport", "ToggleFollowEdits", &UIConfiguration::get_follow_edits);
|
ActionManager::map_some_state ("Transport", "ToggleFollowEdits", &UIConfiguration::get_follow_edits);
|
||||||
@ -566,14 +552,10 @@ ARDOUR_UI::synchronize_sync_source_and_video_pullup ()
|
|||||||
{
|
{
|
||||||
Glib::RefPtr<Action> act = ActionManager::get_action (X_("Transport"), X_("ToggleExternalSync"));
|
Glib::RefPtr<Action> act = ActionManager::get_action (X_("Transport"), X_("ToggleExternalSync"));
|
||||||
|
|
||||||
if (!act) {
|
if (!act || !_session) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_session) {
|
|
||||||
goto just_label;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_session->config.get_video_pullup() == 0.0f) {
|
if (_session->config.get_video_pullup() == 0.0f) {
|
||||||
/* with no video pull up/down, any sync source is OK */
|
/* with no video pull up/down, any sync source is OK */
|
||||||
act->set_sensitive (true);
|
act->set_sensitive (true);
|
||||||
@ -585,17 +567,4 @@ ARDOUR_UI::synchronize_sync_source_and_video_pullup ()
|
|||||||
act->set_sensitive (true);
|
act->set_sensitive (true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX should really be able to set the video pull up
|
|
||||||
action to insensitive/sensitive, but there is no action.
|
|
||||||
FIXME
|
|
||||||
*/
|
|
||||||
|
|
||||||
just_label:
|
|
||||||
if (act->get_sensitive ()) {
|
|
||||||
set_tip (sync_button, _("Enable/Disable external positional sync"));
|
|
||||||
} else {
|
|
||||||
set_tip (sync_button, _("Sync to JACK is not possible: video pull up/down is set"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user