X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fzonebar.cpp;h=09f8f0ceab9f19919b7dfc0b53b8165fe5c0cbfe;hb=d2dfed1a38c5e8487532e9055fad464cf54efd83;hp=d4e049294fdc2b8dd600da4f24b188667c434275;hpb=7e27b311e33beda1746eb63e0945633f262427f6;p=r2c2.git diff --git a/source/designer/zonebar.cpp b/source/designer/zonebar.cpp index d4e0492..09f8f0c 100644 --- a/source/designer/zonebar.cpp +++ b/source/designer/zonebar.cpp @@ -1,11 +1,4 @@ -/* $Id$ - -This file is part of R²C² -Copyright © 2010 Mikkosoft Productions, Mikko Rasa -Distributed under the GPL -*/ - -#include +#include #include "libr2c2/zone.h" #include "designer.h" #include "zonebar.h" @@ -46,21 +39,24 @@ Zonebar::Zonebar(Designer &d): btn->set_tooltip("Add selected tracks to zone"); btn->signal_clicked.connect(sigc::mem_fun(&designer, &Designer::add_selection_to_zone)); - Layout &layout = designer.get_layout(); - layout.signal_zone_added.connect(sigc::mem_fun(this, &Zonebar::zone_added)); - layout.signal_zone_removed.connect(sigc::hide(sigc::mem_fun(this, &Zonebar::update_groups))); + Layout &rlayout = designer.get_layout(); + rlayout.signal_track_chain_added.connect(sigc::mem_fun(this, &Zonebar::track_chain_added)); + rlayout.signal_track_chain_removed.connect(sigc::hide(sigc::mem_fun(this, &Zonebar::update_groups))); - const Layout::ZoneSet &zones = layout.get_zones(); - for(Layout::ZoneSet::const_iterator i=zones.begin(); i!=zones.end(); ++i) + const set &zones = rlayout.get_all(); + for(set::const_iterator i=zones.begin(); i!=zones.end(); ++i) (*i)->signal_name_changed.connect(sigc::mem_fun(this, &Zonebar::zone_renamed)); update_groups(); } -void Zonebar::zone_added(Zone &zone) +void Zonebar::track_chain_added(TrackChain &chain) { - zone.signal_name_changed.connect(sigc::mem_fun(this, &Zonebar::zone_renamed)); - update_groups(); + if(Zone *zone = dynamic_cast(&chain)) + { + zone->signal_name_changed.connect(sigc::mem_fun(this, &Zonebar::zone_renamed)); + update_groups(); + } } void Zonebar::zone_renamed(const string &, const string &, unsigned) @@ -72,8 +68,7 @@ void Zonebar::group_selected(unsigned index, const string &group) { if(index==drp_groups->get_n_items()-1) { - Layout &layout = designer.get_layout(); - Zone *zone = new Zone(layout); + Zone *zone = new Zone(designer.get_layout()); zone->set_name("New zone", "track", 1); designer.edit_zone(zone); update_groups(); @@ -101,8 +96,7 @@ void Zonebar::number_selected(unsigned index, const string &) Zone *cur = designer.get_current_zone(); string qualifier = (cur ? cur->get_qualifier() : "track"); - Layout &layout = designer.get_layout(); - Zone *zone = new Zone(layout); + Zone *zone = new Zone(designer.get_layout()); zone->set_name(group, qualifier, zones.size()+1); designer.edit_zone(zone); if(cur) @@ -123,9 +117,9 @@ void Zonebar::delete_zone_clicked() void Zonebar::update_groups() { - const Layout::ZoneSet &zones = designer.get_layout().get_zones(); + const set &zones = designer.get_layout().get_all(); set groups; - for(Layout::ZoneSet::const_iterator i=zones.begin(); i!=zones.end(); ++i) + for(set::const_iterator i=zones.begin(); i!=zones.end(); ++i) groups.insert((*i)->get_group()); Zone *cur = designer.get_current_zone();