]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/zonebar.cpp
Arrange widgets in Designer with GLtk::Layout
[r2c2.git] / source / designer / zonebar.cpp
index 9f9fd0dd66690ae6ed37893df4d6dc1e893cfc78..058b2d1d580111f524a880e794f7b58d08ce6db2 100644 (file)
@@ -8,52 +8,50 @@ using namespace Msp;
 using namespace R2C2;
 
 Zonebar::Zonebar(Designer &d):
-       Toolbar("Zone", 420),
+       Toolbar("Zone"),
        designer(d)
 {
        pnl_content->add(*(drp_groups = new GLtk::Dropdown));
-       drp_groups->set_geometry(GLtk::Geometry(0, 10, 195, 20));
        drp_groups->set_tooltip("Select zone group to edit");
        drp_groups->signal_item_selected.connect(sigc::mem_fun(this, &Zonebar::group_selected));
 
        pnl_content->add(*(drp_numbers = new GLtk::Dropdown));
-       drp_numbers->set_geometry(GLtk::Geometry(200, 10, 100, 20));
        drp_groups->set_tooltip("Select zone to edit");
        drp_numbers->signal_item_selected.connect(sigc::mem_fun(this, &Zonebar::number_selected));
 
        GLtk::Button *btn;
 
        pnl_content->add(*(btn = new GLtk::Button("Del")));
-       btn->set_geometry(GLtk::Geometry(300, 10, 40, 24));
        btn->set_style("red");
        btn->set_tooltip("Delete selected zone");
        btn->signal_clicked.connect(sigc::mem_fun(this, &Zonebar::delete_zone_clicked));
 
        pnl_content->add(*(btn = new GLtk::Button("Prop")));
-       btn->set_geometry(GLtk::Geometry(340, 10, 40, 24));
        btn->set_tooltip("Change properties of the selected zone");
        btn->signal_clicked.connect(sigc::mem_fun(&designer, &Designer::zone_properties));
 
        pnl_content->add(*(btn = new GLtk::Button("AddT")));
-       btn->set_geometry(GLtk::Geometry(380, 10, 40, 24));
        btn->set_tooltip("Add selected tracks to zone");
        btn->signal_clicked.connect(sigc::mem_fun(&designer, &Designer::add_selection_to_zone));
 
        Layout &rlayout = designer.get_layout();
-       rlayout.signal_zone_added.connect(sigc::mem_fun(this, &Zonebar::zone_added));
-       rlayout.signal_zone_removed.connect(sigc::hide(sigc::mem_fun(this, &Zonebar::update_groups)));
+       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 = rlayout.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)
@@ -114,9 +112,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();