diff --git a/gtk2_ardour/audio_time_axis.cc b/gtk2_ardour/audio_time_axis.cc index 636e7bd458..18586caed9 100644 --- a/gtk2_ardour/audio_time_axis.cc +++ b/gtk2_ardour/audio_time_axis.cc @@ -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(&items.back())->set_active (); diff --git a/gtk2_ardour/editor_edit_groups.cc b/gtk2_ardour/editor_edit_groups.cc index c816216f1d..0047999f71 100644 --- a/gtk2_ardour/editor_edit_groups.cc +++ b/gtk2_ardour/editor_edit_groups.cc @@ -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(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 diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index dd0eb6e693..b558770222 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -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(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 diff --git a/libs/ardour/ardour/osc.h b/libs/ardour/ardour/osc.h index bcf4841a3d..66c28eb8a5 100644 --- a/libs/ardour/ardour/osc.h +++ b/libs/ardour/ardour/osc.h @@ -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(user_data)->cb_ ## name (path, types, argv, argc, data); \ diff --git a/libs/ardour/osc.cc b/libs/ardour/osc.cc index 9ab2bd3c3b..67b70fba0c 100644 --- a/libs/ardour/osc.cc +++ b/libs/ardour/osc.cc @@ -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; +} diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index af0e39449e..eaadec0fd3 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -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); } } }