+ mode = UIConfiguration::instance().get_primary_clock_delta_mode ();
+ } else {
+ mode = UIConfiguration::instance().get_secondary_clock_delta_mode ();
+ }
+
+ ops_items.push_back (RadioMenuElem (group, _("Display absolute time"), sigc::bind (sigc::mem_fun (*this, &MainClock::set_display_delta_mode), NoDelta)));
+ if (mode == NoDelta) {
+ RadioMenuItem* i = dynamic_cast<RadioMenuItem *> (&ops_items.back ());
+ i->set_active (true);
+ }
+ ops_items.push_back (RadioMenuElem (group, _("Display delta to edit cursor"), sigc::bind (sigc::mem_fun (*this, &MainClock::set_display_delta_mode), DeltaEditPoint)));
+ if (mode == DeltaEditPoint) {
+ RadioMenuItem* i = dynamic_cast<RadioMenuItem *> (&ops_items.back ());
+ i->set_active (true);
+ }
+ ops_items.push_back (RadioMenuElem (group, _("Display delta to origin marker"), sigc::bind (sigc::mem_fun (*this, &MainClock::set_display_delta_mode), DeltaOriginMarker)));
+ if (mode == DeltaOriginMarker) {
+ RadioMenuItem* i = dynamic_cast<RadioMenuItem *> (&ops_items.back ());
+ i->set_active (true);
+ }
+
+ ops_items.push_back (SeparatorElem());
+
+ ops_items.push_back (MenuElem (_("Edit Tempo"), sigc::mem_fun(*this, &MainClock::edit_current_tempo)));
+ ops_items.push_back (MenuElem (_("Edit Meter"), sigc::mem_fun(*this, &MainClock::edit_current_meter)));
+ ops_items.push_back (MenuElem (_("Insert Tempo Change"), sigc::mem_fun(*this, &MainClock::insert_new_tempo)));
+ ops_items.push_back (MenuElem (_("Insert Meter Change"), sigc::mem_fun(*this, &MainClock::insert_new_meter)));
+}
+
+samplepos_t
+MainClock::absolute_time () const
+{
+ if (get_is_duration ()) {
+ return current_time () + offset ();