prepare GUI notifications for plugin scan
[ardour.git] / gtk2_ardour / editor_markers.cc
index c9a151f96ea0073b7acb2b20ac233b79e7ec1309..1302804cec2d31bce22e2203ec61b5318abcb8de 100644 (file)
@@ -68,6 +68,14 @@ Editor::add_new_location (Location *location)
 
        /* Do a full update of the markers in this group */
        update_marker_labels (group);
+       
+       if (location->is_auto_punch()) {
+               update_punch_range_view ();
+       }
+
+       if (location->is_auto_loop()) {
+               update_loop_range_view ();
+       }
 }
 
 /** Add a new location, without a time-consuming update of all marker labels;
@@ -523,8 +531,8 @@ Editor::refresh_location_display_internal (Locations::LocationList& locations)
                i = tmp;
        }
 
-       update_punch_range_view (false);
-       update_loop_range_view (false);
+       update_punch_range_view ();
+       update_loop_range_view ();
 }
 
 void
@@ -729,11 +737,11 @@ Editor::location_gone (Location *location)
        LocationMarkerMap::iterator i;
 
        if (location == transport_loop_location()) {
-               update_loop_range_view (true);
+               update_loop_range_view ();
        }
 
        if (location == transport_punch_location()) {
-               update_punch_range_view (true);
+               update_punch_range_view ();
        }
 
        for (i = location_markers.begin(); i != location_markers.end(); ++i) {
@@ -860,14 +868,14 @@ Editor::build_marker_menu (Location* loc)
        items.push_back (MenuElem (_("Rename..."), sigc::mem_fun(*this, &Editor::marker_menu_rename)));
 
        items.push_back (CheckMenuElem (_("Lock")));
-       CheckMenuItem* lock_item = static_cast<CheckMenuItem*> (&items.back());
+       Gtk::CheckMenuItem* lock_item = static_cast<Gtk::CheckMenuItem*> (&items.back());
        if (loc->locked ()) {
                lock_item->set_active ();
        }
        lock_item->signal_activate().connect (sigc::mem_fun (*this, &Editor::toggle_marker_menu_lock));
 
        items.push_back (CheckMenuElem (_("Glue to Bars and Beats")));
-       CheckMenuItem* glue_item = static_cast<CheckMenuItem*> (&items.back());
+       Gtk::CheckMenuItem* glue_item = static_cast<Gtk::CheckMenuItem*> (&items.back());
        if (loc->position_lock_style() == MusicTime) {
                glue_item->set_active ();
        }
@@ -1340,12 +1348,23 @@ Editor::marker_menu_rename ()
                /*NOTREACHED*/
        }
 
+
+       rename_marker (marker);
+}
+
+void
+Editor::rename_marker(Marker *marker)
+{
        Location* loc;
        bool is_start;
 
        loc = find_location_from_marker (marker, is_start);
 
-       if (!loc) return;
+       if (!loc)
+              return;
+
+       if (loc == transport_loop_location() || loc == transport_punch_location() || loc->is_session_range())
+               return;
 
        ArdourPrompter dialog (true);
        string txt;
@@ -1380,6 +1399,7 @@ Editor::marker_menu_rename ()
 
        dialog.get_result(txt);
        loc->set_name (txt);
+       _session->set_dirty ();
 
        XMLNode &after = _session->locations()->get_state();
        _session->add_command (new MementoCommand<Locations>(*(_session->locations()), &before, &after));
@@ -1408,7 +1428,7 @@ Editor::new_transport_marker_menu_set_punch ()
 }
 
 void
-Editor::update_loop_range_view (bool visibility)
+Editor::update_loop_range_view ()
 {
        if (_session == 0) {
                return;
@@ -1424,17 +1444,15 @@ Editor::update_loop_range_view (bool visibility)
                transport_loop_range_rect->set_x0 (x1);
                transport_loop_range_rect->set_x1 (x2);
 
-               if (visibility) {
-                       transport_loop_range_rect->show();
-               }
-
-       } else if (visibility) {
+               transport_loop_range_rect->show();
+               
+       } else {
                transport_loop_range_rect->hide();
        }
 }
 
 void
-Editor::update_punch_range_view (bool visibility)
+Editor::update_punch_range_view ()
 {
        if (_session == 0) {
                return;
@@ -1444,6 +1462,7 @@ Editor::update_punch_range_view (bool visibility)
 
        if ((_session->config.get_punch_in() || _session->config.get_punch_out()) && ((tpl = transport_punch_location()) != 0)) {
                ArdourCanvas::Rect const v = _track_canvas->visible_area ();
+
                if (_session->config.get_punch_in()) {
                        transport_punch_range_rect->set_x0 (sample_to_pixel (tpl->start()));
                        transport_punch_range_rect->set_x1 (_session->config.get_punch_out() ? sample_to_pixel (tpl->end()) : sample_to_pixel (JACK_MAX_FRAMES));
@@ -1451,11 +1470,11 @@ Editor::update_punch_range_view (bool visibility)
                        transport_punch_range_rect->set_x0 (0);
                        transport_punch_range_rect->set_x1 (_session->config.get_punch_out() ? sample_to_pixel (tpl->end()) : v.width ());
                }
+               
+               transport_punch_range_rect->show();
+
+       } else {
 
-               if (visibility) {
-                       transport_punch_range_rect->show();
-               }
-       } else if (visibility) {
                transport_punch_range_rect->hide();
        }
 }