X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_edit_groups.cc;h=371b13ed0cea7f680ecb7d6cac44b650c57a2411;hb=f6f3769ae11e3a9e888abdf8c3ed92f08d3c9a5b;hp=2e7179d94098a476e9033a1e9beab47ba1b1eb68;hpb=8ca43d57fea4e10e20b331f13132dfd9721911a1;p=ardour.git diff --git a/gtk2_ardour/editor_edit_groups.cc b/gtk2_ardour/editor_edit_groups.cc index 2e7179d940..371b13ed0c 100644 --- a/gtk2_ardour/editor_edit_groups.cc +++ b/gtk2_ardour/editor_edit_groups.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -38,6 +37,7 @@ using namespace sigc; using namespace ARDOUR; +using namespace PBD; using namespace Gtk; void @@ -77,24 +77,7 @@ Editor::disable_all_edit_groups () void Editor::new_edit_group () { - if (session == 0) { - return; - } - - ArdourPrompter prompter; - string result; - - prompter.set_prompt (_("Name for new edit group")); - prompter.show_all (); - - switch (prompter.run ()) { - case Gtk::RESPONSE_ACCEPT: - prompter.get_result (result); - if (result.length()) { - session->add_edit_group (result); - } - break; - } + session->add_edit_group (""); } void @@ -135,7 +118,7 @@ Editor::edit_group_list_button_press_event (GdkEventButton* ev) if (edit_group_list_menu == 0) { build_edit_group_list_menu (); } - edit_group_list_menu->popup (1, 0); + edit_group_list_menu->popup (1, ev->time); return true; } @@ -152,11 +135,14 @@ Editor::edit_group_list_button_press_event (GdkEventButton* ev) } switch (GPOINTER_TO_UINT (column->get_data (X_("colnum")))) { - case 2: + case 0: if (Keyboard::is_edit_event (ev)) { if ((iter = group_model->get_iter (path))) { if ((group = (*iter)[group_columns.routegroup]) != 0) { // edit_route_group (group); +#ifdef GTKOSX + edit_group_display.queue_draw(); +#endif return true; } } @@ -166,20 +152,26 @@ Editor::edit_group_list_button_press_event (GdkEventButton* ev) case 1: if ((iter = group_model->get_iter (path))) { - bool visible = (*iter)[group_columns.is_visible]; - (*iter)[group_columns.is_visible] = !visible; + bool active = (*iter)[group_columns.is_active]; + (*iter)[group_columns.is_active] = !active; +#ifdef GTKOSX + edit_group_display.queue_draw(); +#endif return true; } break; - - case 0: + + case 2: if ((iter = group_model->get_iter (path))) { - bool active = (*iter)[group_columns.is_active]; - (*iter)[group_columns.is_active] = !active; + bool visible = (*iter)[group_columns.is_visible]; + (*iter)[group_columns.is_visible] = !visible; +#ifdef GTKOSX + edit_group_display.queue_draw(); +#endif return true; } break; - + default: break; } @@ -220,8 +212,6 @@ Editor::edit_group_row_change (const Gtk::TreeModel::Path& path,const Gtk::TreeM string name = (*iter)[group_columns.text]; - cerr << "Row change, name = " << name << endl; - if (name != group->name()) { group->set_name (name); } @@ -231,14 +221,32 @@ void Editor::add_edit_group (RouteGroup* group) { ENSURE_GUI_THREAD(bind (mem_fun(*this, &Editor::add_edit_group), group)); + bool focus = false; TreeModel::Row row = *(group_model->append()); row[group_columns.is_active] = group->is_active(); row[group_columns.is_visible] = !group->is_hidden(); - row[group_columns.text] = group->name(); + + in_edit_group_row_change = true; + row[group_columns.routegroup] = group; + if (!group->name().empty()) { + row[group_columns.text] = group->name(); + } else { + row[group_columns.text] = _("unnamed"); + focus = true; + } + group->FlagsChanged.connect (bind (mem_fun(*this, &Editor::group_flags_changed), group)); + + if (focus) { + TreeViewColumn* col = edit_group_display.get_column (0); + 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 @@ -248,7 +256,6 @@ Editor::edit_groups_changed () /* just rebuild the while thing */ - edit_group_display.set_model (Glib::RefPtr(0)); group_model->clear (); { @@ -261,7 +268,6 @@ Editor::edit_groups_changed () } session->foreach_edit_group (mem_fun (*this, &Editor::add_edit_group)); - edit_group_display.set_model (group_model); } void @@ -283,4 +289,20 @@ Editor::group_flags_changed (void* src, RouteGroup* group) in_edit_group_row_change = false; } - +void +Editor::edit_group_name_edit (const Glib::ustring& path, const Glib::ustring& new_text) +{ + RouteGroup* group; + TreeIter iter; + + if ((iter = group_model->get_iter (path))) { + + if ((group = (*iter)[group_columns.routegroup]) == 0) { + return; + } + + if (new_text != group->name()) { + group->set_name (new_text); + } + } +}