diff options
author | Doug McLain <doug@nostar.net> | 2007-05-14 02:48:28 +0000 |
---|---|---|
committer | Doug McLain <doug@nostar.net> | 2007-05-14 02:48:28 +0000 |
commit | 9383499ce675fe046b9143c0380fcbc7447b79cc (patch) | |
tree | 82c2b10b728a5c54dadad9e924e56c42caf328a5 /gtk2_ardour | |
parent | 90f3128d73bc32288d8ce99e81255ea02f54ffbc (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.colors | 4 | ||||
-rw-r--r-- | gtk2_ardour/ardour.menus | 3 | ||||
-rw-r--r-- | gtk2_ardour/ardour2_ui.rc | 10 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 17 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui2.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_ed.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_options.cc | 18 | ||||
-rw-r--r-- | gtk2_ardour/audio_clock.cc | 30 | ||||
-rw-r--r-- | gtk2_ardour/audio_clock.h | 4 |
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; |