]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/zonebar.cpp
Remove the scripting-based timetable
[r2c2.git] / source / designer / zonebar.cpp
index d4e049294fdc2b8dd600da4f24b188667c434275..09f8f0ceab9f19919b7dfc0b53b8165fe5c0cbfe 100644 (file)
@@ -1,11 +1,4 @@
-/* $Id$
-
-This file is part of R²C²
-Copyright © 2010 Mikkosoft Productions, Mikko Rasa
-Distributed under the GPL
-*/
-
-#include <msp/strings/formatter.h>
+#include <msp/strings/format.h>
 #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<Zone *> &zones = rlayout.get_all<Zone>();
+       for(set<Zone *>::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<Zone *>(&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<Zone *> &zones = designer.get_layout().get_all<Zone>();
        set<string> groups;
-       for(Layout::ZoneSet::const_iterator i=zones.begin(); i!=zones.end(); ++i)
+       for(set<Zone *>::const_iterator i=zones.begin(); i!=zones.end(); ++i)
                groups.insert((*i)->get_group());
 
        Zone *cur = designer.get_current_zone();