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
|
||||
};
|
||||
|
||||
#define PX_SCALE(px) std::max((float)px, rintf((float)px * UIConfiguration::instance().get_ui_scale()))
|
||||
|
||||
ApplicationBar::ApplicationBar ()
|
||||
: _have_layout (false)
|
||||
, _basic_ui (0)
|
||||
@ -126,13 +128,27 @@ ApplicationBar::on_parent_changed (Gtk::Widget*)
|
||||
_transport_ctrl.setup (ARDOUR_UI::instance ());
|
||||
_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 hpadding = 2;
|
||||
int col = 0;
|
||||
#define TCOL col, col + 1
|
||||
|
||||
_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;
|
||||
|
||||
|
||||
@ -140,8 +156,21 @@ ApplicationBar::on_parent_changed (Gtk::Widget*)
|
||||
_table.set_spacings (0);
|
||||
_table.set_row_spacings (4);
|
||||
_table.set_border_width (1);
|
||||
_table.show_all(); //TODO: update visibility somewhere else
|
||||
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
|
||||
ApplicationBar::set_session (Session *s)
|
||||
@ -149,10 +178,154 @@ ApplicationBar::set_session (Session *s)
|
||||
SessionHandlePtr::set_session (s);
|
||||
|
||||
_transport_ctrl.set_session (s);
|
||||
_shuttle_box.set_session (s);
|
||||
|
||||
if (_basic_ui) {
|
||||
delete _basic_ui;
|
||||
}
|
||||
|
||||
map_transport_state ();
|
||||
|
||||
if (!_session) {
|
||||
_blink_connection.disconnect ();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
_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:
|
||||
void on_parent_changed (Gtk::Widget*);
|
||||
|
||||
bool _have_layout;
|
||||
BasicUI* _basic_ui;
|
||||
Gtk::Table _table;
|
||||
TransportControlUI _transport_ctrl;
|
||||
bool sync_button_clicked (GdkEventButton*);
|
||||
void parameter_changed (std::string);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
button_height_size_group = SizeGroup::create (Gtk::SIZE_GROUP_VERTICAL);
|
||||
|
||||
if (theArdourUI == 0) {
|
||||
theArdourUI = this;
|
||||
@ -971,9 +972,6 @@ ARDOUR_UI::set_transport_controllable_state (const XMLNode& node)
|
||||
if (node.get_property ("rec", str)) {
|
||||
rec_controllable->set_id (str);
|
||||
}
|
||||
if (node.get_property ("shuttle", str)) {
|
||||
shuttle_box.controllable()->set_id (str);
|
||||
}
|
||||
}
|
||||
|
||||
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_("play-selection"), play_selection_controllable->id());
|
||||
node->set_property (X_("rec"), rec_controllable->id());
|
||||
node->set_property (X_("shuttle"), shuttle_box.controllable()->id());
|
||||
|
||||
return *node;
|
||||
}
|
||||
@ -2171,8 +2168,6 @@ ARDOUR_UI::map_transport_state ()
|
||||
return;
|
||||
}
|
||||
|
||||
shuttle_box.map_transport_state ();
|
||||
|
||||
float sp = _session->transport_speed();
|
||||
|
||||
if (sp != 0.0f) {
|
||||
@ -2189,15 +2184,10 @@ ARDOUR_UI::map_transport_state ()
|
||||
void
|
||||
ARDOUR_UI::blink_handler (bool blink_on)
|
||||
{
|
||||
sync_blink (blink_on);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -61,6 +61,7 @@
|
||||
#include <gtkmm/notebook.h>
|
||||
#include <gtkmm/button.h>
|
||||
#include <gtkmm/togglebutton.h>
|
||||
#include <gtkmm/sizegroup.h>
|
||||
#include <gtkmm/treeview.h>
|
||||
#include <gtkmm/menubar.h>
|
||||
#include <gtkmm/textbuffer.h>
|
||||
@ -305,6 +306,8 @@ public:
|
||||
void xrun_handler (samplepos_t);
|
||||
void create_xrun_marker (samplepos_t);
|
||||
|
||||
Glib::RefPtr<Gtk::SizeGroup> button_height_size_group;
|
||||
|
||||
GUIObjectState* gui_object_state;
|
||||
|
||||
MainClock* primary_clock;
|
||||
@ -561,7 +564,6 @@ private:
|
||||
Gtk::Label io_latency_label;
|
||||
Gtk::Label io_latency_value;
|
||||
|
||||
ShuttleControl shuttle_box;
|
||||
MiniTimeline mini_timeline;
|
||||
TimeInfoBox* time_info_box;
|
||||
|
||||
@ -571,7 +573,6 @@ private:
|
||||
|
||||
ArdourWidgets::ArdourButton auto_return_button;
|
||||
ArdourWidgets::ArdourButton follow_edits_button;
|
||||
ArdourWidgets::ArdourButton sync_button;
|
||||
|
||||
ArdourWidgets::ArdourButton auditioning_alert_button;
|
||||
ArdourWidgets::ArdourButton solo_alert_button;
|
||||
@ -595,7 +596,6 @@ private:
|
||||
|
||||
void cancel_solo ();
|
||||
void solo_blink (bool);
|
||||
void sync_blink (bool);
|
||||
void audition_blink (bool);
|
||||
void feedback_blink (bool);
|
||||
void error_blink (bool);
|
||||
@ -675,7 +675,6 @@ private:
|
||||
void edit_metadata ();
|
||||
void import_metadata ();
|
||||
|
||||
void set_transport_sensitivity (bool);
|
||||
void set_punch_sensitivity ();
|
||||
|
||||
//stuff for ProTools-style numpad
|
||||
@ -871,7 +870,6 @@ private:
|
||||
int ambiguous_file (std::string file, std::vector<std::string> hits);
|
||||
|
||||
bool click_button_clicked (GdkEventButton *);
|
||||
bool sync_button_clicked (GdkEventButton *);
|
||||
|
||||
VisibilityGroup _status_bar_visibility;
|
||||
|
||||
|
@ -323,12 +323,6 @@ ARDOUR_UI::setup_transport ()
|
||||
RefPtr<Action> act;
|
||||
/* 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 */
|
||||
act = ActionManager::get_action (X_("Main"), X_("cancel-solo"));
|
||||
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_mute_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text));
|
||||
|
||||
sync_button.set_name ("transport active option button");
|
||||
|
||||
/* and widget text */
|
||||
auto_return_button.set_text(_("Auto Return"));
|
||||
follow_edits_button.set_text(_("Follow Range"));
|
||||
@ -546,14 +538,12 @@ ARDOUR_UI::setup_transport ()
|
||||
monitor_box->pack_start (monitor_mute_button, true, true);
|
||||
|
||||
/* 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 (*primary_clock->left_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->right_btn());
|
||||
|
||||
button_height_size_group->add_widget (sync_button);
|
||||
button_height_size_group->add_widget (auto_return_button);
|
||||
|
||||
//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->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 */
|
||||
int vpadding = 1;
|
||||
int hpadding = 2;
|
||||
int col = 0;
|
||||
#define TCOL col, col + 1
|
||||
|
||||
transport_table.attach (*application_bar, TCOL, 0, 1 , SHRINK, SHRINK, 0, 0);
|
||||
transport_table.attach (*ssbox, TCOL, 1, 2 , FILL, SHRINK, 0, 0);
|
||||
transport_table.attach (*application_bar, TCOL, 0, 2 , EXPAND|FILL, EXPAND|FILL, 3, 0);
|
||||
++col;
|
||||
|
||||
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);
|
||||
auditioning_alert_button.set_sensitive (false);
|
||||
auditioning_alert_button.set_visual_state (Gtkmm2ext::NoVisualState);
|
||||
|
||||
set_transport_sensitivity (false);
|
||||
}
|
||||
#undef PX_SCALE
|
||||
#undef TCOL
|
||||
|
||||
|
||||
void
|
||||
ARDOUR_UI::latency_switch_changed ()
|
||||
{
|
||||
@ -773,7 +751,6 @@ ARDOUR_UI::_auditioning_changed (bool onoff)
|
||||
if (!onoff) {
|
||||
auditioning_alert_button.set_visual_state (Gtkmm2ext::NoVisualState);
|
||||
}
|
||||
set_transport_sensitivity (!onoff);
|
||||
}
|
||||
|
||||
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
|
||||
ARDOUR_UI::audition_blink (bool onoff)
|
||||
{
|
||||
@ -925,12 +879,6 @@ ARDOUR_UI::error_blink (bool onoff)
|
||||
break;
|
||||
}
|
||||
}
|
||||
void
|
||||
ARDOUR_UI::set_transport_sensitivity (bool yn)
|
||||
{
|
||||
ActionManager::set_sensitive (ActionManager::transport_sensitive_actions, yn);
|
||||
shuttle_box.set_sensitive (yn);
|
||||
}
|
||||
|
||||
void
|
||||
ARDOUR_UI::set_punch_sensitivity ()
|
||||
@ -1005,19 +953,6 @@ ARDOUR_UI::click_button_clicked (GdkEventButton* ev)
|
||||
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
|
||||
ARDOUR_UI::toggle_follow_edits ()
|
||||
{
|
||||
|
@ -157,7 +157,6 @@ ARDOUR_UI::set_session (Session *s)
|
||||
|
||||
AutomationWatch::instance().set_session (s);
|
||||
|
||||
shuttle_box.set_session (s);
|
||||
mini_timeline.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));
|
||||
|
||||
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", "ToggleAutoReturn")->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") {
|
||||
|
||||
/* 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") {
|
||||
|
||||
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"));
|
||||
|
||||
if (!act) {
|
||||
if (!act || !_session) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_session) {
|
||||
goto just_label;
|
||||
}
|
||||
|
||||
if (_session->config.get_video_pullup() == 0.0f) {
|
||||
/* with no video pull up/down, any sync source is OK */
|
||||
act->set_sensitive (true);
|
||||
@ -585,17 +567,4 @@ ARDOUR_UI::synchronize_sync_source_and_video_pullup ()
|
||||
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