open un-writable sessions without complaining, and desensitize all/most actions that...
[ardour.git] / gtk2_ardour / audio_streamview.cc
index 9666f7a33fdd7e5e0524cabbbf3596afca702616..8d12fef2c230847543daf44a362a4c8b2968d989 100644 (file)
@@ -31,6 +31,7 @@
 #include <ardour/playlist_templates.h>
 #include <ardour/source.h>
 #include <ardour/region_factory.h>
+#include <ardour/profile.h>
 
 #include "audio_streamview.h"
 #include "audio_region_view.h"
@@ -57,17 +58,10 @@ AudioStreamView::AudioStreamView (AudioTimeAxisView& tv)
        : StreamView (tv)
 {
        crossfades_visible = true;
-       outline_region = false;
        _waveform_scale = LinearWaveform;
        _waveform_shape = Traditional;
-       
-       if (tv.is_audio_track())
-               stream_base_color = ARDOUR_UI::config()->canvasvar_AudioTrackBase.get();
-       else
-               stream_base_color = ARDOUR_UI::config()->canvasvar_AudioBusBase.get();
-       
-       canvas_rect->property_fill_color_rgba() = stream_base_color;
-       canvas_rect->property_outline_color_rgba() = RGBA_BLACK;
+
+       color_handler ();
 
        _amplitude_above_axis = 1.0;
 
@@ -167,7 +161,7 @@ AudioStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wai
                                                   _samples_per_unit, region_color, recording, TimeAxisViewItem::Visibility(TimeAxisViewItem::ShowFrame | TimeAxisViewItem::HideFrameRight));
                } else {
                        region_view = new AudioRegionView (canvas_group, _trackview, region, 
-                                                  _samples_per_unit, region_color);
+                                                          _samples_per_unit, region_color);
                }
                break;
        case Destructive:
@@ -470,7 +464,7 @@ AudioStreamView::set_waveform_scale (WaveformScale scale)
 void
 AudioStreamView::setup_rec_box ()
 {
-       cerr << _trackview.name() << " streamview SRB region_views.size() = " << region_views.size() << endl;
+       //cerr << _trackview.name() << " streamview SRB region_views.size() = " << region_views.size() << endl;
 
        if (_trackview.session().transport_rolling()) {
 
@@ -479,7 +473,6 @@ AudioStreamView::setup_rec_box ()
                if (!rec_active && 
                    _trackview.session().record_status() == Session::Recording && 
                    _trackview.get_diskstream()->record_enabled()) {
-                       cerr << "rec_active = 0" << endl;
                        if (_trackview.audio_track()->mode() == Normal && use_rec_regions && rec_regions.size() == rec_rects.size()) {
 
                                /* add a new region, but don't bother if they set use_rec_regions mid-record */
@@ -566,11 +559,9 @@ AudioStreamView::setup_rec_box ()
                } else if (rec_active &&
                           (_trackview.session().record_status() != Session::Recording ||
                            !_trackview.get_diskstream()->record_enabled())) {
-                       cerr << "rec_active = 1" << endl;
                        screen_update_connection.disconnect();
                        rec_active = false;
                        rec_updating = false;
-                       outline_region = true;
                }
                
        } else {
@@ -657,7 +648,6 @@ void
 AudioStreamView::update_rec_regions ()
 {
        if (use_rec_regions) {
-               cerr << "AudioStreamView::update_rec_regions () outline_region = " << outline_region << endl;
                uint32_t n = 0;
 
                for (list<boost::shared_ptr<Region> >::iterator iter = rec_regions.begin(); iter != rec_regions.end(); n++) {
@@ -688,15 +678,6 @@ AudioStreamView::update_rec_regions ()
 
                                        if (nlen != region->length()) {
 
-                                               if (outline_region) {
-                                                       for (list<RegionView *>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
-                                                               if ((*i)->region() == region) {
-                                                                       (*i)->outline_entire_box();
-                                                                       outline_region = false;
-                                                               }
-                                                       }
-                                               }
-
                                                region->freeze ();
                                                region->set_position (_trackview.get_diskstream()->get_capture_start_frame(n), this);
                                                region->set_length (nlen, this);
@@ -705,14 +686,6 @@ AudioStreamView::update_rec_regions ()
                                                if (origlen == 1) {
                                                        /* our special initial length */
                                                        add_region_view_internal (region, false, true);
-                                                       if (outline_region) {
-                                                               outline_region = false;
-                                                               for (list<RegionView *>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
-                                                                       if ((*i)->region() == region) {
-                                                                               (*i)->outline_entire_box();
-                                                                       }
-                                                               }
-                                                       }
                                                }
 
                                                /* also update rect */
@@ -730,15 +703,6 @@ AudioStreamView::update_rec_regions ()
 
                                        if (region->source(0)->length() >= region->start() + nlen) {
 
-                                               if (outline_region) {
-                                                       for (list<RegionView *>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
-                                                               if ((*i)->region() == region) {
-                                                                       (*i)->outline_entire_box();
-                                                                       outline_region = false;
-                                                               }
-                                                       }
-                                               }
-
                                                region->freeze ();
                                                region->set_position (_trackview.get_diskstream()->get_capture_start_frame(n), this);
                                                region->set_length (nlen, this);
@@ -762,6 +726,28 @@ AudioStreamView::update_rec_regions ()
        }
 }
 
+void
+AudioStreamView::show_all_fades ()
+{
+       for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
+               AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
+               if (arv) {
+                       arv->set_fade_visibility (true);
+               }
+       }
+}
+
+void
+AudioStreamView::hide_all_fades ()
+{
+       for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
+               AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
+               if (arv) {
+                       arv->set_fade_visibility (false);
+               }
+       }
+}
+
 void
 AudioStreamView::show_all_xfades ()
 {
@@ -804,8 +790,11 @@ AudioStreamView::color_handler ()
        }
 
        if (!_trackview.is_track()) {
-               canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_AudioBusBase.get();
+               if (Profile->get_sae() && _trackview.route()->master()) {
+                       canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_AudioMasterBusBase.get();
+               } else {
+                       canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_AudioBusBase.get();
+               }
        }
 }