add/remove edit groups via buttons (still a bit of work left to do)
[ardour.git] / gtk2_ardour / editor_edit_groups.cc
index d66b313ac046fba4eb7ae0988a0ba436a92a09df..49d6b13a0ffd193d934f3270ef6cbd6bb9decc07 100644 (file)
@@ -88,8 +88,8 @@ Editor::new_edit_group ()
        prompter.show_all ();
 
        switch (prompter.run ()) {
-       case GTK_RESPONSE_ACCEPT:
-               prompter.get_result (result);
+       case Gtk::RESPONSE_ACCEPT:
+           prompter.get_result (result);
                if (result.length()) {
                        session->add_edit_group (result);
                }
@@ -97,6 +97,31 @@ Editor::new_edit_group ()
        }
 }
 
+void
+Editor::remove_selected_edit_group ()
+{
+       Glib::RefPtr<TreeSelection> selection = edit_group_display.get_selection();
+       TreeView::Selection::ListHandle_Path rows = selection->get_selected_rows ();
+
+       if (rows.empty()) {
+               return;
+       }
+
+       TreeView::Selection::ListHandle_Path::iterator i = rows.begin();
+       TreeIter iter;
+       
+       /* selection mode is single, so rows.begin() is it */
+
+       if ((iter = group_model->get_iter (*i))) {
+
+               RouteGroup* rg = (*iter)[group_columns.routegroup];
+
+               if (rg) {
+                       session->remove_edit_group (*rg);
+               }
+       }
+}
+
 void
 Editor::edit_group_list_button_clicked ()
 {
@@ -203,6 +228,29 @@ Editor::add_edit_group (RouteGroup* group)
        group->FlagsChanged.connect (bind (mem_fun(*this, &Editor::group_flags_changed), group));
 }
 
+void
+Editor::edit_groups_changed ()
+{
+       ENSURE_GUI_THREAD (mem_fun (*this, &Editor::edit_groups_changed));
+
+       /* just rebuild the while thing */
+
+       edit_group_display.set_model (Glib::RefPtr<TreeModel>(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
 Editor::group_flags_changed (void* src, RouteGroup* group)
 {