13
0

Use the same menu for the editor route group list and the editor group tabs.

git-svn-id: svn://localhost/ardour2/branches/3.0@5242 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2009-06-22 01:25:21 +00:00
parent c9e37fcc14
commit 167929c25a
9 changed files with 65 additions and 42 deletions

View File

@ -312,7 +312,7 @@ Editor::Editor ()
_xfade_visibility = true;
editor_ruler_menu = 0;
no_ruler_shown_update = false;
route_group_list_menu = 0;
route_group_menu = 0;
route_list_menu = 0;
region_list_menu = 0;
marker_menu = 0;

View File

@ -1858,9 +1858,9 @@ public:
Gtk::TreeView route_group_display;
Gtk::ScrolledWindow route_group_display_scroller;
Gtk::Menu* route_group_list_menu;
Gtk::Menu* route_group_menu;
void build_route_group_list_menu (ARDOUR::RouteGroup *);
void build_route_group_menu (ARDOUR::RouteGroup *);
void activate_all_route_groups ();
void disable_all_route_groups ();

View File

@ -45,11 +45,11 @@ using namespace PBD;
using namespace Gtk;
void
Editor::build_route_group_list_menu (RouteGroup* g)
Editor::build_route_group_menu (RouteGroup* g)
{
using namespace Gtk::Menu_Helpers;
delete route_group_list_menu;
delete route_group_menu;
Menu* new_from = new Menu;
MenuList& f = new_from->items ();
@ -57,15 +57,15 @@ Editor::build_route_group_list_menu (RouteGroup* g)
f.push_back (MenuElem (_("Record Enabled..."), mem_fun (*this, &Editor::new_route_group_from_rec_enabled)));
f.push_back (MenuElem (_("Soloed..."), mem_fun (*this, &Editor::new_route_group_from_soloed)));
route_group_list_menu = new Menu;
route_group_list_menu->set_name ("ArdourContextMenu");
MenuList& items = route_group_list_menu->items();
route_group_menu = new Menu;
route_group_menu->set_name ("ArdourContextMenu");
MenuList& items = route_group_menu->items();
items.push_back (MenuElem (_("New Group..."), mem_fun(*this, &Editor::new_route_group)));
items.push_back (MenuElem (_("New Group From"), *new_from));
items.push_back (MenuElem (_("New..."), mem_fun(*this, &Editor::new_route_group)));
items.push_back (MenuElem (_("New From"), *new_from));
if (g) {
items.push_back (MenuElem (_("Edit Group..."), bind (mem_fun (*this, &Editor::edit_route_group), g)));
items.push_back (MenuElem (_("Fit Group to Window"), bind (mem_fun (*this, &Editor::fit_route_group), g)));
items.push_back (MenuElem (_("Edit..."), bind (mem_fun (*this, &Editor::edit_route_group), g)));
items.push_back (MenuElem (_("Fit to Window"), bind (mem_fun (*this, &Editor::fit_route_group), g)));
}
items.push_back (SeparatorElem());
items.push_back (MenuElem (_("Activate All"), mem_fun(*this, &Editor::activate_all_route_groups)));
@ -233,8 +233,8 @@ Editor::route_group_list_button_press_event (GdkEventButton* ev)
}
if (Keyboard::is_context_menu_event (ev)) {
build_route_group_list_menu (group);
route_group_list_menu->popup (1, ev->time);
build_route_group_menu (group);
route_group_menu->popup (1, ev->time);
return true;
}

View File

@ -152,3 +152,11 @@ EditorGroupTabs::reflect_tabs (list<Tab> const & tabs)
y += (*i)->effective_height ();
}
}
Gtk::Menu*
EditorGroupTabs::get_menu (RouteGroup *g)
{
_editor->build_route_group_menu (g);
return _editor->route_group_menu;
}

View File

@ -35,6 +35,7 @@ private:
double extent () const {
return _height;
}
Gtk::Menu* get_menu (ARDOUR::RouteGroup* g);
Editor* _editor;
};

View File

@ -30,7 +30,6 @@ using namespace ARDOUR;
GroupTabs::GroupTabs ()
: _session (0),
_menu (0),
_dragging (0)
{
@ -86,14 +85,8 @@ GroupTabs::on_button_press_event (GdkEventButton* ev)
} else if (ev->button == 3) {
delete _menu;
_menu = new Menu;
MenuList& items = _menu->items ();
items.push_back (MenuElem (_("Edit..."), bind (mem_fun (*this, &GroupTabs::edit_group), t->group)));
items.push_back (MenuElem (_("Remove"), bind (mem_fun (*this, &GroupTabs::remove_group), t->group)));
_menu->popup (ev->button, ev->time);
get_menu(t->group)->popup (ev->button, ev->time);
}
return true;
@ -173,20 +166,6 @@ GroupTabs::on_button_release_event (GdkEventButton* ev)
return true;
}
void
GroupTabs::edit_group (RouteGroup* g)
{
RouteGroupDialog d (g, Gtk::Stock::APPLY);
d.do_run ();
}
void
GroupTabs::remove_group (RouteGroup *g)
{
_session->remove_route_group (*g);
}
void
GroupTabs::render (cairo_t* cr)
{

View File

@ -45,12 +45,15 @@ protected:
double last_ui_size;
};
ARDOUR::Session* _session;
private:
virtual std::list<Tab> compute_tabs () const = 0;
virtual void draw_tab (cairo_t *, Tab const &) const = 0;
virtual double primary_coordinate (double, double) const = 0;
virtual void reflect_tabs (std::list<Tab> const &) = 0;
virtual double extent () const = 0;
virtual Gtk::Menu* get_menu (ARDOUR::RouteGroup *) = 0;
void render (cairo_t *);
void on_size_request (Gtk::Requisition *);
@ -59,11 +62,7 @@ private:
bool on_button_release_event (GdkEventButton *);
Tab * click_to_tab (double, Tab**, Tab**);
void edit_group (ARDOUR::RouteGroup *);
void remove_group (ARDOUR::RouteGroup *);
ARDOUR::Session* _session;
Gtk::Menu* _menu;
std::list<Tab> _tabs;
Tab* _dragging;
bool _drag_moved;

View File

@ -23,12 +23,16 @@
#include "mixer_strip.h"
#include "mixer_ui.h"
#include "utils.h"
#include "i18n.h"
#include "route_group_dialog.h"
using namespace std;
using namespace Gtk;
using namespace ARDOUR;
MixerGroupTabs::MixerGroupTabs (Mixer_UI* m)
: _mixer (m)
: _mixer (m),
_menu (0)
{
}
@ -149,3 +153,30 @@ MixerGroupTabs::reflect_tabs (list<Tab> const & tabs)
}
}
Gtk::Menu*
MixerGroupTabs::get_menu (RouteGroup* g)
{
using namespace Menu_Helpers;
delete _menu;
_menu = new Menu;
MenuList& items = _menu->items ();
items.push_back (MenuElem (_("Edit..."), bind (mem_fun (*this, &MixerGroupTabs::edit_group), g)));
items.push_back (MenuElem (_("Remove"), bind (mem_fun (*this, &MixerGroupTabs::remove_group), g)));
return _menu;
}
void
MixerGroupTabs::edit_group (RouteGroup* g)
{
RouteGroupDialog d (g, Gtk::Stock::APPLY);
d.do_run ();
}
void
MixerGroupTabs::remove_group (RouteGroup *g)
{
_session->remove_route_group (*g);
}

View File

@ -34,6 +34,11 @@ private:
double extent () const {
return _width;
}
Gtk::Menu* get_menu (ARDOUR::RouteGroup* g);
void edit_group (ARDOUR::RouteGroup *);
void remove_group (ARDOUR::RouteGroup *);
Mixer_UI* _mixer;
Gtk::Menu* _menu;
};