summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-03-30 23:40:28 +0000
committerCarl Hetherington <carl@carlh.net>2010-03-30 23:40:28 +0000
commite3dd8cc3ee481924997a1650e3a130b2579be209 (patch)
treec14bd1999d9e7887f6ec05dff2a697aa0323223a /gtk2_ardour
parent6721d997b159842e2c977ec0dd0c94002c0e1e47 (diff)
Move region naming stuff from Session into RegionFactory, cleaning up some vestiges of when Session had a list of regions.
git-svn-id: svn://localhost/ardour2/branches/3.0@6812 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor_ops.cc6
-rw-r--r--gtk2_ardour/editor_regions.cc50
-rw-r--r--gtk2_ardour/editor_regions.h7
-rw-r--r--gtk2_ardour/editor_summary.cc6
4 files changed, 17 insertions, 52 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index f7fe6e7b4a..f9022a04ff 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -2668,7 +2668,7 @@ Editor::region_from_selection ()
}
internal_start = start - current->position();
- _session->region_name (new_name, current->name(), true);
+ RegionFactory::region_name (new_name, current->name(), true);
PropertyList plist;
@@ -2708,7 +2708,7 @@ Editor::create_region_from_selection (vector<boost::shared_ptr<Region> >& new_re
}
internal_start = start - current->position();
- _session->region_name (new_name, current->name(), true);
+ RegionFactory::region_name (new_name, current->name(), true);
PropertyList plist;
@@ -5927,7 +5927,7 @@ Editor::split_region_at_points (boost::shared_ptr<Region> r, AnalysisFeatureList
string new_name;
- if (_session->region_name (new_name, r->name())) {
+ if (RegionFactory::region_name (new_name, r->name())) {
break;
}
diff --git a/gtk2_ardour/editor_regions.cc b/gtk2_ardour/editor_regions.cc
index 981ada3eff..c33fc13bf2 100644
--- a/gtk2_ardour/editor_regions.cc
+++ b/gtk2_ardour/editor_regions.cc
@@ -129,48 +129,17 @@ EditorRegions::EditorRegions (Editor* e)
//ARDOUR_UI::instance()->secondary_clock.mode_changed.connect (sigc::mem_fun(*this, &Editor::redisplay_regions));
ARDOUR_UI::instance()->secondary_clock.mode_changed.connect (sigc::mem_fun(*this, &EditorRegions::update_all_rows));
- ARDOUR::Region::RegionPropertyChanged.connect (region_property_connection, MISSING_INVALIDATOR, ui_bind (&EditorRegions::update_row, this, _1), gui_context());
-
+ ARDOUR::Region::RegionPropertyChanged.connect (region_property_connection, MISSING_INVALIDATOR, ui_bind (&EditorRegions::region_changed, this, _1, _2), gui_context());
+ ARDOUR::RegionFactory::CheckNewRegion.connect (check_new_region_connection, MISSING_INVALIDATOR, ui_bind (&EditorRegions::add_region, this, _1), gui_context());
}
void
EditorRegions::set_session (ARDOUR::Session* s)
{
EditorComponent::set_session (s);
-
- if (_session) {
- _session->RegionsAdded.connect (_session_connections, MISSING_INVALIDATOR, ui_bind (&EditorRegions::handle_new_regions, this, _1), gui_context());
- _session->RegionHiddenChange.connect (_session_connections, MISSING_INVALIDATOR, ui_bind (&EditorRegions::region_hidden, this, _1), gui_context());
- }
-
- redisplay ();
-}
-
-void
-EditorRegions::handle_new_regions (vector<boost::shared_ptr<Region> >& v)
-{
- ENSURE_GUI_THREAD (*this, &EditorRegions::handle_new_regions, v)
- add_regions (v);
-}
-
-void
-EditorRegions::region_hidden_weak (boost::weak_ptr<Region> wr)
-{
- boost::shared_ptr<Region> r (wr.lock());
-
- if (r) {
- region_hidden (r);
- }
-}
-
-void
-EditorRegions::region_hidden (boost::shared_ptr<Region> r)
-{
- ENSURE_GUI_THREAD (*this, &EditorRegions::region_hidden, r)
redisplay ();
}
-
void
EditorRegions::add_regions (vector<boost::shared_ptr<Region> >& regions)
{
@@ -334,18 +303,9 @@ EditorRegions::add_region (boost::shared_ptr<Region> region)
populate_row(region, (*row));
}
-
void
-EditorRegions::region_changed (const PropertyChange& what_changed, boost::weak_ptr<Region> region)
+EditorRegions::region_changed (boost::shared_ptr<Region> r, const PropertyChange& what_changed)
{
- ENSURE_GUI_THREAD (*this, &EditorRegions::region_changed, what_changed, region)
-
- boost::shared_ptr<Region> r = region.lock ();
-
- if (!r) {
- return;
- }
-
if (what_changed.contains (ARDOUR::Properties::name)) {
/* find the region in our model and change its name */
TreeModel::Children rows = _model->children ();
@@ -370,6 +330,10 @@ EditorRegions::region_changed (const PropertyChange& what_changed, boost::weak_p
}
}
+
+ if (what_changed.contains (ARDOUR::Properties::hidden)) {
+ redisplay ();
+ }
}
void
diff --git a/gtk2_ardour/editor_regions.h b/gtk2_ardour/editor_regions.h
index c4ec4a1ba2..54f891950f 100644
--- a/gtk2_ardour/editor_regions.h
+++ b/gtk2_ardour/editor_regions.h
@@ -104,7 +104,7 @@ private:
Columns _columns;
- void region_changed (const PBD::PropertyChange&, boost::weak_ptr<ARDOUR::Region>);
+ void region_changed (boost::shared_ptr<ARDOUR::Region>, PBD::PropertyChange const &);
void selection_changed ();
sigc::connection _change_connection;
bool set_selected_in_subrow (boost::shared_ptr<ARDOUR::Region>, Gtk::TreeModel::Row const &, int);
@@ -120,12 +120,8 @@ private:
int sorter (Gtk::TreeModel::iterator, Gtk::TreeModel::iterator);
- void handle_new_region (boost::weak_ptr<ARDOUR::Region>);
- void handle_new_regions (std::vector<boost::shared_ptr<ARDOUR::Region> >& );
void add_region (boost::shared_ptr<ARDOUR::Region>);
void add_regions (std::vector<boost::shared_ptr<ARDOUR::Region> > & );
- void region_hidden (boost::shared_ptr<ARDOUR::Region>);
- void region_hidden_weak (boost::weak_ptr<ARDOUR::Region>);
void populate_row (boost::shared_ptr<ARDOUR::Region>, Gtk::TreeModel::Row const &);
void update_row (boost::shared_ptr<ARDOUR::Region>);
bool update_subrows (boost::shared_ptr<ARDOUR::Region>, Gtk::TreeModel::Row const &, int);
@@ -149,6 +145,7 @@ private:
bool _no_redisplay;
std::list<boost::shared_ptr<ARDOUR::Region> > tmp_region_list;
PBD::ScopedConnection region_property_connection;
+ PBD::ScopedConnection check_new_region_connection;
bool ignore_region_list_selection_change;
bool ignore_selected_region_change;
};
diff --git a/gtk2_ardour/editor_summary.cc b/gtk2_ardour/editor_summary.cc
index 27cbaefdba..fd4422bc08 100644
--- a/gtk2_ardour/editor_summary.cc
+++ b/gtk2_ardour/editor_summary.cc
@@ -61,8 +61,12 @@ EditorSummary::set_session (Session* s)
set_dirty ();
+ /* Note: the EditorSummary already finds out about new regions from Editor::region_view_added
+ * (which attaches to StreamView::RegionViewAdded), and cut regions by the RegionPropertyChanged
+ * emitted when a cut region is added to the `cutlist' playlist.
+ */
+
if (_session) {
- _session->RegionRemoved.connect (_session_connections, invalidator (*this), boost::bind (&EditorSummary::set_dirty, this), gui_context());
_session->StartTimeChanged.connect (_session_connections, invalidator (*this), boost::bind (&EditorSummary::set_dirty, this), gui_context());
_session->EndTimeChanged.connect (_session_connections, invalidator (*this), boost::bind (&EditorSummary::set_dirty, this), gui_context());
}