X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_edit_groups.cc;h=3383e6bfe93d8095848d02aa43fafea2dff8697f;hb=862cb478a2b9dfa3822c581241396582050bfa44;hp=e15da94f0ccbc13a2a04ecaff72c8b60bcac6006;hpb=0896e2e63f0f331904ab9e9005190c9e7288b084;p=ardour.git diff --git a/gtk2_ardour/editor_edit_groups.cc b/gtk2_ardour/editor_edit_groups.cc index e15da94f0c..3383e6bfe9 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 @@ -52,6 +52,9 @@ Editor::build_edit_group_list_menu () items.push_back (MenuElem (_("Activate All"), mem_fun(*this, &Editor::activate_all_edit_groups))); items.push_back (MenuElem (_("Disable All"), mem_fun(*this, &Editor::disable_all_edit_groups))); items.push_back (SeparatorElem()); + items.push_back (MenuElem (_("Show All"), mem_fun(*this, &Editor::show_all_edit_groups))); + items.push_back (MenuElem (_("Hide All"), mem_fun(*this, &Editor::hide_all_edit_groups))); + items.push_back (SeparatorElem()); items.push_back (MenuElem (_("Add group"), mem_fun(*this, &Editor::new_edit_group))); } @@ -74,6 +77,24 @@ Editor::disable_all_edit_groups () } } +void +Editor::show_all_edit_groups () +{ + Gtk::TreeModel::Children children = group_model->children(); + for(Gtk::TreeModel::Children::iterator iter = children.begin(); iter != children.end(); ++iter) { + (*iter)[group_columns.is_visible] = true; + } +} + +void +Editor::hide_all_edit_groups () +{ + Gtk::TreeModel::Children children = group_model->children(); + for(Gtk::TreeModel::Children::iterator iter = children.begin(); iter != children.end(); ++iter) { + (*iter)[group_columns.is_visible] = false; + } +} + void Editor::new_edit_group () { @@ -118,7 +139,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; } @@ -140,6 +161,9 @@ Editor::edit_group_list_button_press_event (GdkEventButton* 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; } } @@ -149,20 +173,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 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; } @@ -199,7 +229,9 @@ Editor::edit_group_row_change (const Gtk::TreeModel::Path& path,const Gtk::TreeM bool active = (*iter)[group_columns.is_active]; group->set_active (active, this); - + + bool visible = (*iter)[group_columns.is_visible]; + group->set_hidden (!visible, this); string name = (*iter)[group_columns.text]; @@ -218,7 +250,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 +268,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 @@ -242,20 +279,9 @@ Editor::edit_groups_changed () /* just rebuild the while thing */ - edit_group_display.set_model (Glib::RefPtr(0)); group_model->clear (); - { - TreeModel::Row row; - row = *(group_model->append()); - row[group_columns.is_active] = false; - row[group_columns.is_visible] = true; - row[group_columns.text] = (_("-all-")); - row[group_columns.routegroup] = 0; - } - session->foreach_edit_group (mem_fun (*this, &Editor::add_edit_group)); - edit_group_display.set_model (group_model); } void