2 Copyright (C) 2009 Paul Davis
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 #include <gtkmm/menu.h>
21 #include "cairo_widget.h"
30 class GroupTabs : public CairoWidget
35 void set_session (ARDOUR::Session *);
43 ARDOUR::RouteGroup* group;
48 ARDOUR::Session* _session;
51 virtual std::list<Tab> compute_tabs () const = 0;
52 virtual void draw_tab (cairo_t *, Tab const &) const = 0;
53 virtual double primary_coordinate (double, double) const = 0;
54 virtual void reflect_tabs (std::list<Tab> const &) = 0;
55 virtual double extent () const = 0;
56 virtual Gtk::Menu* get_menu (ARDOUR::RouteGroup *) = 0;
58 void render (cairo_t *);
59 void on_size_request (Gtk::Requisition *);
60 bool on_button_press_event (GdkEventButton *);
61 bool on_motion_notify_event (GdkEventMotion *);
62 bool on_button_release_event (GdkEventButton *);
64 Tab * click_to_tab (double, Tab**, Tab**);