- snapshot_display.column_titles_active();
- snapshot_display.set_name ("MixerSnapshotDisplayList");
- snapshot_display.set_shadow_type (Gtk::SHADOW_IN);
- snapshot_display.set_selection_mode (GTK_SELECTION_SINGLE);
- snapshot_display.set_reorderable (true);
- snapshot_display.set_size_request (75, -1);
- snapshot_display_scroller.add (snapshot_display);
- snapshot_display_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
-
- group_list_button_label.set_text (_("Mix Groups"));
- group_list_button_label.set_name ("MixerGroupTitleButton");
- group_list_button.add (group_list_button_label);
- group_list_button.set_name ("MixerGroupTitleButton");
-
- group_list.column_titles_hide();
- group_list.set_name ("MixerGroupList");
- group_list.set_shadow_type (Gtk::SHADOW_IN);
- group_list.set_selection_mode (GTK_SELECTION_MULTIPLE);
- group_list.set_reorderable (false);
- group_list.set_size_request (75, -1);
- group_list.set_column_auto_resize (0, true);
- group_list_scroller.add (group_list);
- group_list_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
-
- group_list_vbox.pack_start (group_list_button, false, false);
- group_list_vbox.pack_start (group_list_scroller, true, true);
+ group_model = ListStore::create (group_columns);
+ group_display.set_model (group_model);
+ group_display.append_column (_("Group"), group_columns.text);
+ group_display.append_column (_("Active"), group_columns.active);
+ group_display.append_column (_("Show"), group_columns.visible);
+ group_display.get_column (0)->set_data (X_("colnum"), GUINT_TO_POINTER(0));
+ group_display.get_column (1)->set_data (X_("colnum"), GUINT_TO_POINTER(1));
+ group_display.get_column (2)->set_data (X_("colnum"), GUINT_TO_POINTER(2));
+ group_display.get_column (0)->set_expand(true);
+ group_display.get_column (1)->set_expand(false);
+ group_display.get_column (2)->set_expand(false);
+ group_display.set_name ("MixerGroupList");
+ group_display.get_selection()->set_mode (Gtk::SELECTION_SINGLE);
+ group_display.set_reorderable (true);
+ group_display.set_headers_visible (true);
+ group_display.set_rules_hint (true);
+
+ /* name is directly editable */
+
+ CellRendererText* name_cell = dynamic_cast<CellRendererText*>(group_display.get_column_cell_renderer (0));
+ name_cell->property_editable() = true;
+ name_cell->signal_edited().connect (mem_fun (*this, &Mixer_UI::mix_group_name_edit));
+
+ /* use checkbox for the active column */
+
+ CellRendererToggle* active_cell = dynamic_cast<CellRendererToggle*>(group_display.get_column_cell_renderer (1));
+ active_cell->property_activatable() = true;
+ active_cell->property_radio() = false;
+
+ /* use checkbox for the visible column */
+
+ active_cell = dynamic_cast<CellRendererToggle*>(group_display.get_column_cell_renderer (2));
+ active_cell->property_activatable() = true;
+ active_cell->property_radio() = false;
+
+ group_model->signal_row_changed().connect (mem_fun (*this, &Mixer_UI::mix_group_row_change));
+
+ group_display.signal_button_press_event().connect (mem_fun (*this, &Mixer_UI::group_display_button_press), false);
+
+ group_display_scroller.add (group_display);
+ group_display_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
+
+ HBox* mix_group_display_button_box = manage (new HBox());
+
+ Button* mix_group_add_button = manage (new Button ());
+ Button* mix_group_remove_button = manage (new Button ());
+
+ Widget* w;
+
+ w = manage (new Image (Stock::ADD, ICON_SIZE_BUTTON));
+ w->show();
+ mix_group_add_button->add (*w);
+
+ w = manage (new Image (Stock::REMOVE, ICON_SIZE_BUTTON));
+ w->show();
+ mix_group_remove_button->add (*w);