X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fzone.cpp;h=dc60a3a2630f13ccb3b02cd2d72ef8d722412799;hb=1124a98ce5e1edee1904eeec089976d446601afd;hp=00edb5799f6d4d9b49f481f7d7ef3f76113666ce;hpb=73edcbd8841752a2722fc8b3927fee2abbbba750;p=r2c2.git diff --git a/source/libr2c2/zone.cpp b/source/libr2c2/zone.cpp index 00edb57..dc60a3a 100644 --- a/source/libr2c2/zone.cpp +++ b/source/libr2c2/zone.cpp @@ -1,4 +1,5 @@ #include +#include #include "block.h" #include "layout.h" #include "track.h" @@ -13,12 +14,22 @@ Zone::Zone(Layout &l): TrackChain(l), number(0) { - layout.add_zone(*this); + layout.add(*this); } Zone::~Zone() { - layout.remove_zone(*this); + layout.remove(*this); +} + +void Zone::set_name(const string &n) +{ + Regex r_name("(.+) ([^ ]+) ([1-9][0-9]*)"); + RegMatch m = r_name.match(n); + if(!m) + throw invalid_argument("Zone::set_name"); + + set_name(m[1].str, m[2].str, lexical_cast(m[3].str)); } void Zone::set_name(const string &g, const string &q, unsigned n) @@ -27,20 +38,15 @@ void Zone::set_name(const string &g, const string &q, unsigned n) qualifier = q; number = n; - signal_name_changed.emit(group, qualifier, number); -} - -string Zone::get_name() const -{ - string result = group; + string full_name = group; if(!qualifier.empty()) { - result += ' '; - result += qualifier; + full_name += ' '; + full_name += qualifier; } if(number) - result += format(" %d", number); - return result; + full_name += format(" %d", number); + TrackChain::set_name(full_name); } void Zone::save(list &st) const