fix for edit & mix group names getting lost at session load

git-svn-id: svn://localhost/trunk/ardour2@513 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2006-05-19 01:54:00 +00:00
parent f6da2b13f9
commit 06654aa7f1
6 changed files with 77 additions and 5 deletions

View File

@ -349,6 +349,8 @@ AudioTimeAxisView::add_edit_group_menu_item (RouteGroup *eg, RadioMenuItem::Grou
MenuList &items = edit_group_menu.items();
cerr << "adding edit group called " << eg->name() << endl;
items.push_back (RadioMenuElem (*group, eg->name(), bind (mem_fun(*this, &AudioTimeAxisView::set_edit_group_from_menu), eg)));
if (_route.edit_group() == eg) {
static_cast<RadioMenuItem*>(&items.back())->set_active ();

View File

@ -218,7 +218,10 @@ Editor::add_edit_group (RouteGroup* group)
row[group_columns.is_active] = group->is_active();
row[group_columns.is_visible] = !group->is_hidden();
in_edit_group_row_change = true;
row[group_columns.routegroup] = group;
if (!group->name().empty()) {
row[group_columns.text] = group->name();
} else {
@ -233,6 +236,8 @@ Editor::add_edit_group (RouteGroup* group)
CellRendererText* name_cell = dynamic_cast<CellRendererText*>(edit_group_display.get_column_cell_renderer (0));
edit_group_display.set_cursor (group_model->get_path (row), *col, *name_cell, true);
}
in_edit_group_row_change = false;
}
void

View File

@ -954,6 +954,8 @@ Mixer_UI::add_mix_group (RouteGroup* group)
ENSURE_GUI_THREAD(bind (mem_fun(*this, &Mixer_UI::add_mix_group), group));
bool focus = false;
in_group_row_change = true;
TreeModel::Row row = *(group_model->append());
row[group_columns.active] = group->is_active();
row[group_columns.visible] = true;
@ -972,6 +974,8 @@ Mixer_UI::add_mix_group (RouteGroup* group)
CellRendererText* name_cell = dynamic_cast<CellRendererText*>(group_display.get_column_cell_renderer (0));
group_display.set_cursor (group_model->get_path (row), *col, *name_cell, true);
}
in_group_row_change = false;
}
bool

View File

@ -71,6 +71,8 @@ class OSC : public BasicUI, public sigc::trackable
std::string get_server_url ();
std::string get_unix_server_url ();
int current_value (const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data);
#define PATH_CALLBACK(name) \
static int _ ## name (const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data) { \
return static_cast<OSC*>(user_data)->cb_ ## name (path, types, argv, argc, data); \

View File

@ -377,3 +377,62 @@ OSC::session_going_away ()
/* path callbacks */
int
OSC::current_value (const char *path, const char *types, lo_arg **argv, int argc, void *data, void* user_data)
{
#if 0
const char* returl;
if (argc < 3 || types == 0 || strlen (types) < 3 || types[0] != 's' || types[1] != 's' || types[2] != s) {
return 1;
}
const char *returl = argv[1]->s;
lo_address addr = find_or_cache_addr (returl);
const char *retpath = argv[2]->s;
if (strcmp (argv[0]->s, "transport_frame")) {
if (session) {
lo_send (addr, retpath, "i", session->transport_frame());
}
} else if (strcmp (argv[0]->s, "transport_speed")) {
if (session) {
lo_send (addr, retpath, "i", session->transport_frame());
}
} else if (strcmp (argv[0]->s, "transport_locked")) {
if (session) {
lo_send (addr, retpath, "i", session->transport_frame());
}
} else if (strcmp (argv[0]->s, "punch_in") {
if (session) {
lo_send (addr, retpath, "i", session->transport_frame());
}
} else if (strcmp (argv[0]->s, "punch_out") {
if (session) {
lo_send (addr, retpath, "i", session->transport_frame());
}
} else if (strcmp (argv[0]->s, "rec_enable") {
if (session) {
lo_send (addr, retpath, "i", session->transport_frame());
}
} else {
/* error */
}
#endif
return 0;
}

View File

@ -2377,18 +2377,18 @@ Session::load_route_groups (const XMLNode& node, bool edit)
{
XMLNodeList nlist = node.children();
XMLNodeConstIterator niter;
RouteGroup* route;
RouteGroup* rg;
set_dirty();
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
if ((*niter)->name() == "RouteGroup") {
if (edit) {
route = add_edit_group ("");
route->set_state (**niter);
rg = add_edit_group ("");
rg->set_state (**niter);
} else {
route = add_mix_group ("");
route->set_state (**niter);
rg = add_mix_group ("");
rg->set_state (**niter);
}
}
}