-/* $Id$
-
-This file is part of R²C²
-Copyright © 2010 Mikkosoft Productions, Mikko Rasa
-Distributed under the GPL
-*/
-
#ifndef LIBR2C2_ZONE_H_
#define LIBR2C2_ZONE_H_
#include <set>
#include <string>
#include <msp/datafile/objectloader.h>
+#include "trackchain.h"
namespace R2C2 {
class Layout;
class Track;
-class Zone
+class Zone: public TrackChain
{
public:
class Loader: public Msp::DataFile::ObjectLoader<Zone>
public:
Loader(Zone &);
private:
+ virtual void finish();
void block(unsigned);
};
- typedef std::set<Track *> TrackSet;
-
- sigc::signal<void, const std::string &, const std::string &, unsigned> signal_name_changed;
-
private:
- Layout &layout;
std::string group;
std::string qualifier;
unsigned number;
- TrackSet tracks;
public:
Zone(Layout &);
~Zone();
+ virtual void set_name(const std::string &);
void set_name(const std::string &, const std::string &, unsigned);
+private:
+ void update_name();
+public:
const std::string &get_group() const { return group; }
const std::string &get_qualifier() const { return qualifier; }
unsigned get_number() const { return number; }
- std::string get_name() const;
-
- void add_track(Track &);
- bool add_tracks(const TrackSet &);
- const TrackSet &get_tracks() const { return tracks; }
- bool has_track(Track &) const;
void save(std::list<Msp::DataFile::Statement> &) const;
-private:
- bool is_valid(Track &) const;
+ virtual Msp::DataFile::Statement save_reference() const;
};
} // namespace R2C2