Delta Cursor option backported from trunk

git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2111 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Doug McLain 2007-07-05 06:12:46 +00:00
parent 291a186cba
commit 77b77b88a3
11 changed files with 87 additions and 11 deletions

View file

@ -361,6 +361,9 @@
<menuitem action='StopRecordingOnXrun'/>
<menuitem action='StopTransportAtEndOfSession'/>
<menuitem action='GainReduceFastTransport'/>
<menuitem action='PrimaryClockDeltaEditCursor'/>
<menuitem action='SecondaryClockDeltaEditCursor'/>
<separator/>
</menu>
<menu name='Help' action='Help'>
<menuitem action='About'/>

View file

@ -667,6 +667,11 @@ style "transport_clock_display_delta" = "transport_clock_display"
fg[NORMAL] = { 0.30, 0.30, 1.0 }
}
style "transport_clock_display_delta" = "transport_clock_display"
{
fg[NORMAL] = { 0.30, 0.30, 1.0 }
}
style "tempo_meter_clock_display"
{
font_name = "sans 7"
@ -1523,4 +1528,6 @@ widget "*ChannelCountSelector" style:highest "medium_bold_entry"
widget "*ChannelCountSelector.GtkArrow" style:highest "default_buttons_menus"
widget "*RegionListWholeFile" style:highest "treeview_parent_node"
widget "*EditorHScrollbar" style:highest "editor_hscrollbar"
widget "*TransportClockDisplayDelta" style:highest "transport_clock_display_delta"
widget "*SecondaryClockDisplayDelta" style:highest "transport_clock_display_delta"

View file

@ -671,6 +671,11 @@ style "transport_clock_display_delta" = "transport_clock_display"
fg[NORMAL] = { 0.30, 0.30, 1.0 }
}
style "transport_clock_display_delta" = "transport_clock_display"
{
fg[NORMAL] = { 0.30, 0.30, 1.0 }
}
style "tempo_meter_clock_display"
{
font_name = "sans 7"
@ -1522,4 +1527,6 @@ widget "*ChannelCountSelector" style:highest "medium_bold_entry"
widget "*ChannelCountSelector.GtkArrow" style:highest "default_buttons_menus"
widget "*RegionListWholeFile" style:highest "treeview_parent_node"
widget "*EditorHScrollbar" style:highest "editor_hscrollbar"
widget "*TransportClockDisplayDelta" style:highest "transport_clock_display_delta"
widget "*SecondaryClockDisplayDelta" style:highest "transport_clock_display_delta"

View file

@ -92,7 +92,7 @@ UIConfiguration *ARDOUR_UI::ui_config = 0;
sigc::signal<void,bool> ARDOUR_UI::Blink;
sigc::signal<void> ARDOUR_UI::RapidScreenUpdate;
sigc::signal<void> ARDOUR_UI::SuperRapidScreenUpdate;
sigc::signal<void,nframes_t> ARDOUR_UI::Clock;
sigc::signal<void,nframes_t, bool, nframes_t> ARDOUR_UI::Clock;
ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
@ -1486,7 +1486,7 @@ void
ARDOUR_UI::update_clocks ()
{
if (!editor || !editor->dragging_playhead()) {
Clock (session->audible_frame()); /* EMIT_SIGNAL */
Clock (session->audible_frame(), false, editor->edit_cursor_position(false)); /* EMIT_SIGNAL */
}
}
@ -2609,8 +2609,17 @@ ARDOUR_UI::use_config ()
void
ARDOUR_UI::update_transport_clocks (nframes_t pos)
{
primary_clock.set (pos);
secondary_clock.set (pos);
if (Config->get_primary_clock_delta_edit_cursor()) {
primary_clock.set (pos, false, editor->edit_cursor_position(false), 1);
} else {
primary_clock.set (pos, 0, true);
}
if (Config->get_secondary_clock_delta_edit_cursor()) {
secondary_clock.set (pos, false, editor->edit_cursor_position(false), 2);
} else {
secondary_clock.set (pos);
}
if (big_clock_window) {
big_clock.set (pos);

View file

@ -160,7 +160,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI
static sigc::signal<void,bool> Blink;
static sigc::signal<void> RapidScreenUpdate;
static sigc::signal<void> SuperRapidScreenUpdate;
static sigc::signal<void,nframes_t> Clock;
static sigc::signal<void,nframes_t, bool, nframes_t> Clock;
/* this is a helper function to centralize the (complex) logic for
blinking rec-enable buttons.
@ -692,6 +692,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI
void toggle_ShowSoloMutes();
void toggle_LatchedRecordEnable ();
void toggle_RegionEquivalentsOverlap ();
void toggle_PrimaryClockDeltaEditCursor ();
void toggle_SecondaryClockDeltaEditCursor ();
void mtc_port_changed ();
void map_solo_model ();

View file

@ -271,8 +271,8 @@ ARDOUR_UI::setup_transport ()
/* clocks, etc. */
ARDOUR_UI::Clock.connect (bind (mem_fun (primary_clock, &AudioClock::set), false));
ARDOUR_UI::Clock.connect (bind (mem_fun (secondary_clock, &AudioClock::set), false));
ARDOUR_UI::Clock.connect (bind (mem_fun (primary_clock, &AudioClock::set), 1));
ARDOUR_UI::Clock.connect (bind (mem_fun (secondary_clock, &AudioClock::set), 2));
primary_clock.ValueChanged.connect (mem_fun(*this, &ARDOUR_UI::primary_clock_value_changed));
secondary_clock.ValueChanged.connect (mem_fun(*this, &ARDOUR_UI::secondary_clock_value_changed));

View file

@ -413,6 +413,8 @@ ARDOUR_UI::install_actions ()
ActionManager::register_toggle_action (option_actions, X_("GainReduceFastTransport"), _("-12dB gain reduce ffwd/rewind"), mem_fun (*this, &ARDOUR_UI::toggle_GainReduceFastTransport));
ActionManager::register_toggle_action (option_actions, X_("LatchedRecordEnable"), _("Rec-enable stays engaged at stop"), mem_fun (*this, &ARDOUR_UI::toggle_LatchedRecordEnable));
ActionManager::register_toggle_action (option_actions, X_("RegionEquivalentsOverlap"), _("Region equivalents overlap"), mem_fun (*this, &ARDOUR_UI::toggle_RegionEquivalentsOverlap));
ActionManager::register_toggle_action (option_actions, X_("PrimaryClockDeltaEditCursor"), _("Primary Clock delta to edit cursor"), mem_fun (*this, &ARDOUR_UI::toggle_PrimaryClockDeltaEditCursor));
ActionManager::register_toggle_action (option_actions, X_("SecondaryClockDeltaEditCursor"), _("Secondary Clock delta to edit cursor"), mem_fun (*this, &ARDOUR_UI::toggle_SecondaryClockDeltaEditCursor));
RadioAction::Group denormal_group;

View file

@ -479,6 +479,18 @@ ARDOUR_UI::toggle_ShowSoloMutes()
ActionManager::toggle_config_state ("options", "ShowSoloMutes", &Configuration::set_show_solo_mutes, &Configuration::get_show_solo_mutes);
}
void
ARDOUR_UI::toggle_PrimaryClockDeltaEditCursor()
{
ActionManager::toggle_config_state ("options", "PrimaryClockDeltaEditCursor", &Configuration::set_primary_clock_delta_edit_cursor, &Configuration::get_primary_clock_delta_edit_cursor);
}
void
ARDOUR_UI::toggle_SecondaryClockDeltaEditCursor()
{
ActionManager::toggle_config_state ("options", "SecondaryClockDeltaEditCursor", &Configuration::set_secondary_clock_delta_edit_cursor, &Configuration::get_secondary_clock_delta_edit_cursor);
}
void
ARDOUR_UI::mtc_port_changed ()
{
@ -1039,7 +1051,11 @@ ARDOUR_UI::parameter_changed (const char* parameter_name)
}
} else if (PARAM_IS ("use-overlap-equivalency")) {
ActionManager::map_some_state ("options", "RegionEquivalentsOverlap", &Configuration::get_use_overlap_equivalency);
}
} else if (PARAM_IS ("primary-clock-delta-edit-cursor")) {
ActionManager::map_some_state ("options", "PrimaryClockDeltaEditCursor", &Configuration::get_primary_clock_delta_edit_cursor);
} else if (PARAM_IS ("secondary-clock-delta-edit-cursor")) {
ActionManager::map_some_state ("options", "SecondaryClockDeltaEditCursor", &Configuration::get_secondary_clock_delta_edit_cursor);
}
#undef PARAM_IS

View file

@ -77,6 +77,8 @@ AudioClock::AudioClock (std::string clock_name, bool transient, std::string widg
{
session = 0;
last_when = 0;
last_pdelta = 0;
last_sdelta = 0;
key_entry_state = 0;
ops_menu = 0;
dragging = false;
@ -404,17 +406,41 @@ AudioClock::on_realize ()
}
void
AudioClock::set (nframes_t when, bool force)
AudioClock::set (nframes_t when, bool force, nframes_t offset, int which)
{
if ((!force && !is_visible()) || session == 0) {
return;
}
if (when == last_when && !force) {
if (when == last_when && !offset && !force) {
return;
}
bool pdelta = Config->get_primary_clock_delta_edit_cursor();
bool sdelta = Config->get_secondary_clock_delta_edit_cursor();
if (offset && which == 1 && pdelta) {
when = (when > offset) ? when - offset : offset - when;
} else if (offset && which == 2 && sdelta) {
when = (when > offset) ? when - offset : offset - when;
}
if (which == 1 && pdelta && !last_pdelta) {
cout << "set_widget_name() called" << endl;
set_widget_name("TransportClockDisplayDelta");
last_pdelta = true;
} else if (which == 1 && !pdelta && last_pdelta) {
set_widget_name("TransportClockDisplay");
last_pdelta = false;
} else if (which == 2 && sdelta && !last_sdelta) {
set_widget_name("SecondaryClockDisplayDelta");
last_sdelta = true;
} else if (which == 2 && !sdelta && last_sdelta) {
set_widget_name("SecondaryClockDisplay");
last_sdelta = false;
}
switch (_mode) {
case SMPTE:
set_smpte (when, force);

View file

@ -46,7 +46,7 @@ class AudioClock : public Gtk::HBox
Mode mode() const { return _mode; }
void set (nframes_t, bool force = false);
void set (nframes_t, bool force = false, nframes_t offset = 0, int which = 0);
void set_mode (Mode);
void set_widget_name (std::string);
@ -151,6 +151,8 @@ class AudioClock : public Gtk::HBox
Gtk::Frame clock_frame;
nframes_t last_when;
bool last_pdelta;
bool last_sdelta;
uint32_t last_hrs;
uint32_t last_mins;

View file

@ -112,6 +112,8 @@ CONFIG_VARIABLE (SlaveSource, slave_source, "slave-source", None)
CONFIG_VARIABLE (ShuttleBehaviour, shuttle_behaviour, "shuttle-behaviour", Sprung)
CONFIG_VARIABLE (ShuttleUnits, shuttle_units, "shuttle-units", Percentage)
CONFIG_VARIABLE (bool, quieten_at_speed, "quieten-at-speed", true)
CONFIG_VARIABLE (bool, primary_clock_delta_edit_cursor, "primary-clock-delta-edit-cursor", false)
CONFIG_VARIABLE (bool, secondary_clock_delta_edit_cursor, "secondary-clock-delta-edit-cursor", false)
/* timecode and sync */