lincoln's patch from mantis 2757 to add route group property checkboxes in the route...
authorCarl Hetherington <carl@carlh.net>
Mon, 29 Jun 2009 00:57:27 +0000 (00:57 +0000)
committerCarl Hetherington <carl@carlh.net>
Mon, 29 Jun 2009 00:57:27 +0000 (00:57 +0000)
editor list, and to initialise new route groups with some appropriate properties.

git-svn-id: svn://localhost/ardour2/branches/3.0@5295 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/editor.cc
gtk2_ardour/editor.h
gtk2_ardour/editor_edit_groups.cc
gtk2_ardour/mixer_strip.cc
gtk2_ardour/mixer_ui.cc
gtk2_ardour/route_group_dialog.cc
gtk2_ardour/route_group_menu.cc
gtk2_ardour/route_group_menu.h
gtk2_ardour/route_time_axis.cc
libs/ardour/ardour/route_group.h
libs/ardour/route_group.cc

index 93a69de8c3017b22c097cdb32f03536e9c08e9a0..7e9d17b80ef33df3a54075be85f7b349025b0deb 100644 (file)
@@ -558,6 +558,7 @@ Editor::Editor ()
        route_list_display.set_name ("TrackListDisplay");
        route_list_display.get_selection()->set_mode (SELECTION_NONE);
        route_list_display.set_reorderable (true);
+       route_list_display.set_rules_hint (true);
        route_list_display.set_size_request (100,-1);
        route_list_display.add_object_drag (route_display_columns.route.index(), "routes");
 
@@ -577,12 +578,36 @@ Editor::Editor ()
 
        group_model = ListStore::create(group_columns);
        route_group_display.set_model (group_model);
+
        route_group_display.append_column (_("Name"), group_columns.text);
+
+       route_group_display.append_column (_("G"), group_columns.gain);
+       route_group_display.append_column (_("R"), group_columns.record);
+       route_group_display.append_column (_("M"), group_columns.mute);
+       route_group_display.append_column (_("S"), group_columns.solo);
+       route_group_display.append_column (_("Sel"), group_columns.select);
+       route_group_display.append_column (_("E"), group_columns.edits);
+
        route_group_display.append_column (_("Show"), group_columns.is_visible);
+
        route_group_display.get_column (0)->set_data (X_("colnum"), GUINT_TO_POINTER(0));
        route_group_display.get_column (1)->set_data (X_("colnum"), GUINT_TO_POINTER(1));
+       route_group_display.get_column (2)->set_data (X_("colnum"), GUINT_TO_POINTER(2));
+       route_group_display.get_column (3)->set_data (X_("colnum"), GUINT_TO_POINTER(3));
+       route_group_display.get_column (4)->set_data (X_("colnum"), GUINT_TO_POINTER(4));
+       route_group_display.get_column (5)->set_data (X_("colnum"), GUINT_TO_POINTER(5));
+       route_group_display.get_column (6)->set_data (X_("colnum"), GUINT_TO_POINTER(6));
+       route_group_display.get_column (7)->set_data (X_("colnum"), GUINT_TO_POINTER(7));
+
        route_group_display.get_column (0)->set_expand (true);
        route_group_display.get_column (1)->set_expand (false);
+       route_group_display.get_column (2)->set_expand (false);
+       route_group_display.get_column (3)->set_expand (false);
+       route_group_display.get_column (4)->set_expand (false);
+       route_group_display.get_column (5)->set_expand (false);
+       route_group_display.get_column (6)->set_expand (false);
+       route_group_display.get_column (7)->set_expand (false);
+
        route_group_display.set_headers_visible (true);
 
        /* name is directly editable */
@@ -597,12 +622,33 @@ Editor::Editor ()
        active_cell->property_activatable() = true;
        active_cell->property_radio() = false;
 
-       active_cell = dynamic_cast<CellRendererToggle*>(route_group_display.get_column_cell_renderer (1));
+       active_cell = dynamic_cast<CellRendererToggle*>(route_group_display.get_column_cell_renderer (2));
+       active_cell->property_activatable() = true;
+       active_cell->property_radio() = false;
+
+       active_cell = dynamic_cast<CellRendererToggle*>(route_group_display.get_column_cell_renderer (3));
+       active_cell->property_activatable() = true;
+       active_cell->property_radio() = false;
+
+       active_cell = dynamic_cast<CellRendererToggle*>(route_group_display.get_column_cell_renderer (4));
+       active_cell->property_activatable() = true;
+       active_cell->property_radio() = false;
+
+       active_cell = dynamic_cast<CellRendererToggle*>(route_group_display.get_column_cell_renderer (5));
+       active_cell->property_activatable() = true;
+       active_cell->property_radio() = false;
+
+       active_cell = dynamic_cast<CellRendererToggle*>(route_group_display.get_column_cell_renderer (6));
+       active_cell->property_activatable() = true;
+       active_cell->property_radio() = false;
+
+       active_cell = dynamic_cast<CellRendererToggle*>(route_group_display.get_column_cell_renderer (7));
        active_cell->property_activatable() = true;
        active_cell->property_radio() = false;
 
        group_model->signal_row_changed().connect (mem_fun (*this, &Editor::route_group_row_change));
 
+
        route_group_display.set_name ("EditGroupList");
        route_group_display.get_selection()->set_mode (SELECTION_SINGLE);
        route_group_display.set_headers_visible (true);
index 990f6f21367a6a2479e7cba036595df079a52eeb..a05ff655d3d91e95338f70e336ba6127f7267200 100644 (file)
@@ -1600,7 +1600,8 @@ public:
        void redisplay_tempo (bool immediate_redraw);
        
        void snap_to (nframes64_t& first, int32_t direction = 0, bool for_mark = false);
-       
+       void snap_to (nframes64_t& first, nframes64_t& last, int32_t direction = 0, bool for_mark = false);
+
        double snap_length_beats (nframes64_t start);
 
        uint32_t bbt_beat_subdivision;
@@ -1844,17 +1845,32 @@ public:
        /* edit group management */
 
         struct GroupListModelColumns : public Gtk::TreeModel::ColumnRecord {
+
                 GroupListModelColumns () {
-                      add (is_visible);
-                       add (text);
-                      add (routegroup);
+                       add (is_visible);
+                       add (gain);
+                       add (record);
+                       add (mute);
+                       add (solo);
+                       add (select);
+                       add (edits);
+                       add (text);
+                       add (routegroup);
                 }
+
                Gtk::TreeModelColumn<bool> is_visible;
+               Gtk::TreeModelColumn<bool> gain;
+               Gtk::TreeModelColumn<bool> record;
+               Gtk::TreeModelColumn<bool> mute;
+               Gtk::TreeModelColumn<bool> solo;
+               Gtk::TreeModelColumn<bool> select;
+               Gtk::TreeModelColumn<bool> edits;
                Gtk::TreeModelColumn<std::string> text;
-               Gtk::TreeModelColumn<ARDOUR::RouteGroup*>   routegroup;
+               Gtk::TreeModelColumn<ARDOUR::RouteGroup*> routegroup;
        };
 
        GroupListModelColumns group_columns;
+
        Glib::RefPtr<Gtk::ListStore> group_model;
        Glib::RefPtr<Gtk::TreeSelection> group_selection;
 
index 54547b5a0de62e5bcf0ec443cce98932651f6f7d..6eac473c7e68082988141d15ba169ab662968fb6 100644 (file)
@@ -106,7 +106,7 @@ Editor::set_route_group_activation (RouteGroup* g, bool a)
 void
 Editor::new_route_group ()
 {
-       RouteGroup* g = new RouteGroup (*session, "", RouteGroup::Active);
+       RouteGroup* g = new RouteGroup (*session, "", RouteGroup::Active, (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit));
 
        RouteGroupDialog d (g, Gtk::Stock::NEW);
        int const r = d.do_run ();
@@ -121,7 +121,7 @@ Editor::new_route_group ()
 void
 Editor::new_route_group_from_selection ()
 {
-       RouteGroup* g = new RouteGroup (*session, "", RouteGroup::Active);
+       RouteGroup* g = new RouteGroup (*session, "", RouteGroup::Active, (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit | RouteGroup::Select));
 
        RouteGroupDialog d (g, Gtk::Stock::NEW);
        int const r = d.do_run ();
@@ -144,7 +144,7 @@ Editor::new_route_group_from_selection ()
 void
 Editor::new_route_group_from_rec_enabled ()
 {
-       RouteGroup* g = new RouteGroup (*session, "", RouteGroup::Active);
+       RouteGroup* g = new RouteGroup (*session, "", RouteGroup::Active, (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit | RouteGroup::RecEnable));
 
        RouteGroupDialog d (g, Gtk::Stock::NEW);
        int const r = d.do_run ();
@@ -167,7 +167,7 @@ Editor::new_route_group_from_rec_enabled ()
 void
 Editor::new_route_group_from_soloed ()
 {
-       RouteGroup* g = new RouteGroup (*session, "", RouteGroup::Active);
+       RouteGroup* g = new RouteGroup (*session, "", RouteGroup::Active, (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit));
 
        RouteGroupDialog d (g, Gtk::Stock::NEW);
        int const r = d.do_run ();
@@ -272,6 +272,72 @@ Editor::route_group_list_button_press_event (GdkEventButton* ev)
                break;
 
        case 1:
+               if ((iter = group_model->get_iter (path))) {
+                       bool gain = (*iter)[group_columns.gain];
+                       (*iter)[group_columns.gain] = !gain;
+#ifdef GTKOSX
+                       route_group_display.queue_draw();
+#endif
+                       return true;
+               }
+               break;
+
+       case 2:
+               if ((iter = group_model->get_iter (path))) {
+                       bool record = (*iter)[group_columns.record];
+                       (*iter)[group_columns.record] = !record;
+#ifdef GTKOSX
+                       route_group_display.queue_draw();
+#endif
+                       return true;
+               }
+               break;
+
+       case 3:
+               if ((iter = group_model->get_iter (path))) {
+                       bool mute = (*iter)[group_columns.mute];
+                       (*iter)[group_columns.mute] = !mute;
+#ifdef GTKOSX
+                       route_group_display.queue_draw();
+#endif
+                       return true;
+               }
+               break;
+
+       case 4:
+               if ((iter = group_model->get_iter (path))) {
+                       bool solo = (*iter)[group_columns.solo];
+                       (*iter)[group_columns.solo] = !solo;
+#ifdef GTKOSX
+                       route_group_display.queue_draw();
+#endif
+                       return true;
+               }
+               break;
+
+       case 5:
+               if ((iter = group_model->get_iter (path))) {
+                       bool select = (*iter)[group_columns.select];
+                       (*iter)[group_columns.select] = !select;
+#ifdef GTKOSX
+                       route_group_display.queue_draw();
+#endif
+                       return true;
+               }
+               break;
+
+       case 6:
+               if ((iter = group_model->get_iter (path))) {
+                       bool edits = (*iter)[group_columns.edits];
+                       (*iter)[group_columns.edits] = !edits;
+#ifdef GTKOSX
+                       route_group_display.queue_draw();
+#endif
+                       return true;
+               }
+               break;
+
+       case 7:
                if ((iter = group_model->get_iter (path))) {
                        bool visible = (*iter)[group_columns.is_visible];
                        (*iter)[group_columns.is_visible] = !visible;
@@ -316,6 +382,90 @@ Editor::route_group_row_change (const Gtk::TreeModel::Path& path,const Gtk::Tree
                }
        }
 
+       if ((*iter)[group_columns.gain]) {
+               for (TrackViewList::iterator j = track_views.begin(); j != track_views.end(); ++j) {
+                       if ((*j)->route_group() == group) {
+                               group->set_property (RouteGroup::Gain, true);
+                       }
+               }
+       } else {
+               for (TrackViewList::iterator j = track_views.begin(); j != track_views.end(); ++j) {
+                       if ((*j)->route_group() == group) {
+                               group->set_property (RouteGroup::Gain, false);
+                       }
+               }
+       }
+
+       if ((*iter)[group_columns.record]) {
+               for (TrackViewList::iterator j = track_views.begin(); j != track_views.end(); ++j) {
+                       if ((*j)->route_group() == group) {
+                               group->set_property (RouteGroup::RecEnable, true);
+                       }
+               }
+       } else {
+               for (TrackViewList::iterator j = track_views.begin(); j != track_views.end(); ++j) {
+                       if ((*j)->route_group() == group) {
+                               group->set_property (RouteGroup::RecEnable, false);
+                       }
+               }
+       }
+
+       if ((*iter)[group_columns.mute]) {
+               for (TrackViewList::iterator j = track_views.begin(); j != track_views.end(); ++j) {
+                       if ((*j)->route_group() == group) {
+                               group->set_property (RouteGroup::Mute, true);
+                       }
+               }
+       } else {
+               for (TrackViewList::iterator j = track_views.begin(); j != track_views.end(); ++j) {
+                       if ((*j)->route_group() == group) {
+                               group->set_property (RouteGroup::Mute, false);
+                       }
+               }
+       }
+
+       if ((*iter)[group_columns.solo]) {
+               for (TrackViewList::iterator j = track_views.begin(); j != track_views.end(); ++j) {
+                       if ((*j)->route_group() == group) {
+                               group->set_property (RouteGroup::Solo, true);
+                       }
+               }
+       } else {
+               for (TrackViewList::iterator j = track_views.begin(); j != track_views.end(); ++j) {
+                       if ((*j)->route_group() == group) {
+                               group->set_property (RouteGroup::Solo, false);
+                       }
+               }
+       }
+
+       if ((*iter)[group_columns.select]) {
+               for (TrackViewList::iterator j = track_views.begin(); j != track_views.end(); ++j) {
+                       if ((*j)->route_group() == group) {
+                               group->set_property (RouteGroup::Select, true);
+                       }
+               }
+       } else {
+               for (TrackViewList::iterator j = track_views.begin(); j != track_views.end(); ++j) {
+                       if ((*j)->route_group() == group) {
+                               group->set_property (RouteGroup::Select, false);
+                       }
+               }
+       }
+
+       if ((*iter)[group_columns.edits]) {
+               for (TrackViewList::iterator j = track_views.begin(); j != track_views.end(); ++j) {
+                       if ((*j)->route_group() == group) {
+                               group->set_property (RouteGroup::Edit, true);
+                       }
+               }
+       } else {
+               for (TrackViewList::iterator j = track_views.begin(); j != track_views.end(); ++j) {
+                       if ((*j)->route_group() == group) {
+                               group->set_property (RouteGroup::Edit, false);
+                       }
+               }
+       }
+
        string name = (*iter)[group_columns.text];
 
        if (name != group->name()) {
@@ -330,7 +480,14 @@ Editor::add_route_group (RouteGroup* group)
        bool focus = false;
 
        TreeModel::Row row = *(group_model->append());
+       
        row[group_columns.is_visible] = !group->is_hidden();
+       row[group_columns.gain] = group->property(RouteGroup::Gain);
+       row[group_columns.record] = group->property(RouteGroup::RecEnable);
+       row[group_columns.mute] = group->property(RouteGroup::Mute);
+       row[group_columns.solo] = group->property(RouteGroup::Solo);
+       row[group_columns.select] = group->property(RouteGroup::Select);
+       row[group_columns.edits] = group->property(RouteGroup::Edit);
 
        in_route_group_row_change = true;
 
@@ -345,7 +502,7 @@ Editor::add_route_group (RouteGroup* group)
 
        group->FlagsChanged.connect (bind (mem_fun(*this, &Editor::group_flags_changed), group));
 
-       if (focus) {
+       if (focus) {  
                TreeViewColumn* col = route_group_display.get_column (0);
                CellRendererText* name_cell = dynamic_cast<CellRendererText*>(route_group_display.get_column_cell_renderer (0));
                route_group_display.set_cursor (group_model->get_path (row), *col, *name_cell, true);
@@ -384,10 +541,17 @@ Editor::group_flags_changed (void* src, RouteGroup* group)
        in_route_group_row_change = true;
 
         Gtk::TreeModel::Children children = group_model->children();
+
        for(Gtk::TreeModel::Children::iterator iter = children.begin(); iter != children.end(); ++iter) {
                if (group == (*iter)[group_columns.routegroup]) {
                        (*iter)[group_columns.is_visible] = !group->is_hidden();
                        (*iter)[group_columns.text] = group->name();
+                       (*iter)[group_columns.gain] = group->property(RouteGroup::Gain);
+                       (*iter)[group_columns.record] = group->property(RouteGroup::RecEnable);
+                       (*iter)[group_columns.mute] = group->property(RouteGroup::Mute);
+                       (*iter)[group_columns.solo] = group->property(RouteGroup::Solo);
+                       (*iter)[group_columns.select] = group->property(RouteGroup::Select);
+                       (*iter)[group_columns.edits] = group->property(RouteGroup::Edit);
                }
        }
 
index 00c7503efa30d69ac6e70c096faebbfd2d43ab52..33bc024ee88b2e097e88030ac54183ed1bb29cd7 100644 (file)
@@ -1068,7 +1068,12 @@ MixerStrip::select_route_group (GdkEventButton *ev)
        if (ev->button == 1) {
 
                if (group_menu == 0) {
-                       group_menu = new RouteGroupMenu (_session);
+                       
+                       group_menu = new RouteGroupMenu (
+                               _session,
+                               (RouteGroup::Property) (RouteGroup::Gain | RouteGroup::Mute | RouteGroup::Solo)
+                               );
+                       
                        group_menu->GroupSelected.connect (mem_fun (*this, &MixerStrip::set_route_group));
                }
 
index eb79d8042ce1cc964bc8050801b560877cd91f2a..156947a7090cdc1ca913727687ed7ca16dde0f1c 100644 (file)
@@ -1112,7 +1112,7 @@ Mixer_UI::route_groups_changed ()
 void
 Mixer_UI::new_route_group ()
 {
-       session->add_route_group (new RouteGroup (*session, ""));
+       session->add_route_group (new RouteGroup (*session, "", RouteGroup::Active, (RouteGroup::Property) (RouteGroup::Gain |RouteGroup::Mute | RouteGroup::Solo)));
 }
 
 void
index 6a87ea3c9505965ee86bf404b9eeada0e865a050..1e5ddaa5dcd673adf1f974f38b128844284a3d68 100644 (file)
@@ -2,9 +2,11 @@
 #include "ardour/route_group.h"
 #include "route_group_dialog.h"
 #include "i18n.h"
+#include <iostream>
 
 using namespace Gtk;
 using namespace ARDOUR;
+using namespace std;
 
 RouteGroupDialog::RouteGroupDialog (RouteGroup* g, StockID const & s)
        : Dialog (_("Route group")),
@@ -35,9 +37,9 @@ RouteGroupDialog::RouteGroupDialog (RouteGroup* g, StockID const & s)
 
        get_vbox()->pack_start (*h);
        get_vbox()->pack_start (_active);
-       get_vbox()->pack_start (_gain);
 
        h = manage (new HBox);
+       h->pack_start (_gain);
        h->pack_start (_relative, PACK_EXPAND_PADDING);
        get_vbox()->pack_start (*h);
 
@@ -61,15 +63,14 @@ RouteGroupDialog::do_run ()
        int const r = run ();
 
        if (r == Gtk::RESPONSE_OK) {
-               _group->set_name (_name.get_text ());
-               _group->set_active (_active.get_active (), this);
-
                _group->set_property (RouteGroup::Gain, _gain.get_active ());
                _group->set_property (RouteGroup::Mute, _mute.get_active ());
                _group->set_property (RouteGroup::Solo, _solo.get_active ());
                _group->set_property (RouteGroup::RecEnable, _rec_enable.get_active ());
                _group->set_property (RouteGroup::Select, _select.get_active ());
                _group->set_property (RouteGroup::Edit, _edit.get_active ());
+               _group->set_name (_name.get_text ()); // This emits changed signal
+               _group->set_active (_active.get_active (), this);
                _group->set_relative (_relative.get_active(), this);
        }
 
index e42cdedfac1d51b9c489e5322b5698aa5210140c..cdb264aa9c6217ac0916dcebe81cdeb78288af90 100644 (file)
@@ -1,3 +1,22 @@
+/*
+    Copyright (C) 2009 Paul Davis
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
 #include <gtkmm/menu.h>
 #include <gtkmm/stock.h>
 #include "ardour/session.h"
@@ -9,8 +28,9 @@
 using namespace Gtk;
 using namespace ARDOUR;
 
-RouteGroupMenu::RouteGroupMenu (Session& s)
-       : _session (s)
+RouteGroupMenu::RouteGroupMenu (Session& s, RouteGroup::Property p)
+       : _session (s),
+         _default_properties (p)
 {
        rebuild (0);
 }
@@ -57,7 +77,7 @@ RouteGroupMenu::set_group (RouteGroup* g)
 void
 RouteGroupMenu::new_group ()
 {
-       RouteGroup* g = new RouteGroup (_session, "", RouteGroup::Active);
+       RouteGroup* g = new RouteGroup (_session, "", RouteGroup::Active, _default_properties);
 
        RouteGroupDialog d (g, Gtk::Stock::NEW);
        int const r = d.do_run ();
index 09a31e60eddb473da49ffa9ea4bb69588dd3e427..7827179acb7fbb130cadec2f837691d58523a79f 100644 (file)
@@ -1,12 +1,32 @@
+/*
+    Copyright (C) 2009 Paul Davis
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include "ardour/route_group.h"
+
 namespace ARDOUR {
        class Session;
-       class RouteGroup;
 }
 
 class RouteGroupMenu : public Gtk::Menu
 {
 public:
-       RouteGroupMenu (ARDOUR::Session &);
+       RouteGroupMenu (ARDOUR::Session &, ARDOUR::RouteGroup::Property);
 
        void rebuild (ARDOUR::RouteGroup *);
 
@@ -18,4 +38,5 @@ private:
        void set_group (ARDOUR::RouteGroup *);
        
        ARDOUR::Session& _session;
+       ARDOUR::RouteGroup::Property _default_properties;
 };
index f0a08570304568fbd16e44b1832c2c709580effb..7d5ac1773519ef7c95fb9bb4d76f589ee3877dcf 100644 (file)
@@ -253,7 +253,11 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session& sess, boost::sh
        _editor.ZoomChanged.connect (mem_fun(*this, &RouteTimeAxisView::reset_samples_per_unit));
        ColorsChanged.connect (mem_fun (*this, &RouteTimeAxisView::color_handler));
 
-       route_group_menu = new RouteGroupMenu (_session);
+       route_group_menu = new RouteGroupMenu (
+               _session,
+               (RouteGroup::Property) (RouteGroup::Mute | RouteGroup::Solo | RouteGroup::Edit)
+               );
+       
        route_group_menu->GroupSelected.connect (mem_fun (*this, &RouteTimeAxisView::set_route_group_from_menu));
 
        gm.get_gain_slider().signal_scroll_event().connect(mem_fun(*this, &RouteTimeAxisView::controls_ebox_scroll), false);
index 2ea7b952083f4c280505550450d7bb0fcf7b932e..7b7166decdd3def589008646c5d4bd6e7452f1e0 100644 (file)
@@ -52,7 +52,7 @@ public:
                Edit = 0x20
        };
        
-       RouteGroup (Session& s, const std::string &n, Flag f = Flag(0));
+       RouteGroup (Session& s, const std::string &n, Flag f = Flag(0), Property p = Property(0));
        
        const std::string& name() { return _name; }
        void set_name (std::string str);
index 826341092f63384cf41d47bb86ea4a1f459c60e9..f88df5c86a5617fd8771718dcb2fe0e69f038c76 100644 (file)
@@ -38,8 +38,8 @@ using namespace ARDOUR;
 using namespace sigc;
 using namespace std;
 
-RouteGroup::RouteGroup (Session& s, const string &n, Flag f)
-       : _session (s), _name (n), _flags (f), _properties (Property (0))
+RouteGroup::RouteGroup (Session& s, const string &n, Flag f, Property p)
+       : _session (s), _name (n), _flags (f), _properties (Property (p))
 {
 }