5235a6a7e4141e3ad6d25767e51624c651f1e402
[ardour.git] / gtk2_ardour / editor_route_groups.h
1 #include "editor_component.h"
2
3 class EditorRouteGroups : public EditorComponent
4 {
5 public:
6         EditorRouteGroups (Editor *);
7
8         void connect_to_session (ARDOUR::Session *);
9
10         Gtk::Widget& widget () {
11                 return *_display_packer;
12         }
13
14         Gtk::Menu* menu (ARDOUR::RouteGroup *);
15
16         void clear ();
17         
18 private:
19         
20         struct Columns : public Gtk::TreeModel::ColumnRecord {
21
22                 Columns () {
23                         add (is_visible);
24                         add (gain);
25                         add (record);
26                         add (mute);
27                         add (solo);
28                         add (select);
29                         add (edits);
30                         add (text);
31                         add (routegroup);
32                 }
33
34                 Gtk::TreeModelColumn<bool> is_visible;
35                 Gtk::TreeModelColumn<bool> gain;
36                 Gtk::TreeModelColumn<bool> record;
37                 Gtk::TreeModelColumn<bool> mute;
38                 Gtk::TreeModelColumn<bool> solo;
39                 Gtk::TreeModelColumn<bool> select;
40                 Gtk::TreeModelColumn<bool> edits;
41                 Gtk::TreeModelColumn<std::string> text;
42                 Gtk::TreeModelColumn<ARDOUR::RouteGroup*> routegroup;
43         };
44
45         Columns _columns;
46
47         void activate_all ();
48         void disable_all ();
49         void subgroup (ARDOUR::RouteGroup*);
50         void unsubgroup (ARDOUR::RouteGroup*);
51
52         void row_change (const Gtk::TreeModel::Path&,const Gtk::TreeModel::iterator&);
53         void name_edit (const Glib::ustring&, const Glib::ustring&);
54         void new_route_group ();
55         void new_from_selection ();
56         void new_from_rec_enabled ();
57         void new_from_soloed ();
58         void edit (ARDOUR::RouteGroup *);
59         void button_clicked ();
60         gint button_press_event (GdkEventButton* ev);
61         void add (ARDOUR::RouteGroup* group);
62         void remove_route_group ();
63         void groups_changed ();
64         void flags_changed (void*, ARDOUR::RouteGroup*);
65         void set_activation (ARDOUR::RouteGroup *, bool);
66         void remove_selected ();
67
68         Gtk::Menu* _menu;
69         Glib::RefPtr<Gtk::ListStore> _model;
70         Glib::RefPtr<Gtk::TreeSelection> _selection;
71         Gtk::TreeView _display;
72         Gtk::ScrolledWindow _scroller;
73         Gtk::VBox* _display_packer;
74         bool _in_row_change;
75 };
76
77