summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorDoug McLain <doug@nostar.net>2007-05-14 02:48:28 +0000
committerDoug McLain <doug@nostar.net>2007-05-14 02:48:28 +0000
commit9383499ce675fe046b9143c0380fcbc7447b79cc (patch)
tree82c2b10b728a5c54dadad9e924e56c42caf328a5 /gtk2_ardour
parent90f3128d73bc32288d8ce99e81255ea02f54ffbc (diff)
Add 'delta edit cursor' option to primary and secondary clocks. When in this mode, the clocks display the absolute difference between the playhead and the edit cursor
git-svn-id: svn://localhost/ardour2/trunk@1838 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour.colors4
-rw-r--r--gtk2_ardour/ardour.menus3
-rw-r--r--gtk2_ardour/ardour2_ui.rc10
-rw-r--r--gtk2_ardour/ardour_ui.cc17
-rw-r--r--gtk2_ardour/ardour_ui.h4
-rw-r--r--gtk2_ardour/ardour_ui2.cc4
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc2
-rw-r--r--gtk2_ardour/ardour_ui_options.cc18
-rw-r--r--gtk2_ardour/audio_clock.cc30
-rw-r--r--gtk2_ardour/audio_clock.h4
10 files changed, 82 insertions, 14 deletions
diff --git a/gtk2_ardour/ardour.colors b/gtk2_ardour/ardour.colors
index 0bc9565c8a..181896589f 100644
--- a/gtk2_ardour/ardour.colors
+++ b/gtk2_ardour/ardour.colors
@@ -105,6 +105,6 @@ cTrimHandleLockedStart 0.92 0.06 0.06 0.16
cTrimHandleLockedEnd 0.92 0.06 0.06 0.16
cTrimHandleStart 0.10 0.00 1.00 0.27
cTrimHandleEnd 0.10 0.00 1.00 0.27
-cEditCursor 0.00 0.00 1.00 1.00
-cPlayHead 1.00 0.00 0.00 1.00
+cPlayHead 1.00 0.00 0.00 1.00
+cEditCursor 0.00 0.00 1.00 1.00
diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus
index 635def7794..2c40704e4e 100644
--- a/gtk2_ardour/ardour.menus
+++ b/gtk2_ardour/ardour.menus
@@ -354,6 +354,9 @@
<menuitem action='StopTransportAtEndOfSession'/>
<menuitem action='GainReduceFastTransport'/>
<separator/>
+ <menuitem action='PrimaryClockDeltaEditCursor'/>
+ <menuitem action='SecondaryClockDeltaEditCursor'/>
+ <separator/>
</menu>
<menu name='Help' action='Help'>
<menuitem action='About'/>
diff --git a/gtk2_ardour/ardour2_ui.rc b/gtk2_ardour/ardour2_ui.rc
index 82da69ebf5..d16e8fbe20 100644
--- a/gtk2_ardour/ardour2_ui.rc
+++ b/gtk2_ardour/ardour2_ui.rc
@@ -85,6 +85,7 @@ style "time_axis_view_item_name"
style "default_base" = "medium_text"
{
+
GtkWidget::cursor_color = {1.0, 1.0, 1.0 }
GtkButton::default_border = { 0, 0, 0, 0 }
GtkButton::default_outside_border = { 0, 0, 0, 0 }
@@ -144,7 +145,7 @@ style "transport_base" = "medium_bold_text"
/*
style "black_mackie_menu_bar"
{
- font_name = "sans bold 9"
+ font_name = "sans bold 8"
fg[NORMAL] = { 1.0, 1.0, 1.0 }
bg[NORMAL] = { 0, 0, 0 }
}
@@ -664,6 +665,11 @@ style "transport_clock_display"
bg[ACTIVE] = { 0.0, 0.0, 0.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"
@@ -1282,6 +1288,8 @@ widget "*BigClockNonRecording" style:highest "non_recording_big_clock_display"
widget "*BigClockRecording" style:highest "recording_big_clock_display"
widget "*TransportClockDisplay" style:highest "transport_clock_display"
widget "*SecondaryClockDisplay" style:highest "transport_clock_display"
+widget "*TransportClockDisplayDelta" style:highest "transport_clock_display_delta"
+widget "*SecondaryClockDisplayDelta" style:highest "transport_clock_display_delta"
widget "*AudioClockFramesUpperInfo" style:highest "tempo_meter_clock_display"
widget "*AudioClockFramesLowerInfo" style:highest "tempo_meter_clock_display"
widget "*AudioClockSMPTEUpperInfo" style:highest "tempo_meter_clock_display"
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index a38196d642..e3c476a854 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -94,7 +94,7 @@ ARDOUR_UI *ARDOUR_UI::theArdourUI = 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[], string rcfile)
@@ -1520,7 +1520,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 */
}
}
@@ -2654,8 +2654,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);
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index d0c1e7194a..920cb97f44 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -156,7 +156,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.
@@ -690,6 +690,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 ();
diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc
index f3e8b6e344..806ee8999e 100644
--- a/gtk2_ardour/ardour_ui2.cc
+++ b/gtk2_ardour/ardour_ui2.cc
@@ -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));
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index 22ef689a0b..d4a7a183e4 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -412,6 +412,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));
act = ActionManager::register_toggle_action (option_actions, X_("DoNotRunPluginsWhileRecording"), _("Do not run plugins while recording"), mem_fun (*this, &ARDOUR_UI::toggle_DoNotRunPluginsWhileRecording));
ActionManager::session_sensitive_actions.push_back (act);
diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc
index 34431aeafb..d456e30146 100644
--- a/gtk2_ardour/ardour_ui_options.cc
+++ b/gtk2_ardour/ardour_ui_options.cc
@@ -435,6 +435,18 @@ ARDOUR_UI::toggle_ShowSoloMutes()
}
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 ()
{
bool have_mtc;
@@ -962,7 +974,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
diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc
index 28505ab46d..a86b51d1fb 100644
--- a/gtk2_ardour/audio_clock.cc
+++ b/gtk2_ardour/audio_clock.cc
@@ -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;
@@ -383,17 +385,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);
diff --git a/gtk2_ardour/audio_clock.h b/gtk2_ardour/audio_clock.h
index f0790dcbc8..d0c5afb658 100644
--- a/gtk2_ardour/audio_clock.h
+++ b/gtk2_ardour/audio_clock.h
@@ -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);
@@ -149,6 +149,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;