mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 14:54:56 +01:00
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:
parent
c9e37fcc14
commit
167929c25a
9 changed files with 65 additions and 42 deletions
|
|
@ -312,7 +312,7 @@ Editor::Editor ()
|
||||||
_xfade_visibility = true;
|
_xfade_visibility = true;
|
||||||
editor_ruler_menu = 0;
|
editor_ruler_menu = 0;
|
||||||
no_ruler_shown_update = false;
|
no_ruler_shown_update = false;
|
||||||
route_group_list_menu = 0;
|
route_group_menu = 0;
|
||||||
route_list_menu = 0;
|
route_list_menu = 0;
|
||||||
region_list_menu = 0;
|
region_list_menu = 0;
|
||||||
marker_menu = 0;
|
marker_menu = 0;
|
||||||
|
|
|
||||||
|
|
@ -1858,9 +1858,9 @@ public:
|
||||||
|
|
||||||
Gtk::TreeView route_group_display;
|
Gtk::TreeView route_group_display;
|
||||||
Gtk::ScrolledWindow route_group_display_scroller;
|
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 activate_all_route_groups ();
|
||||||
void disable_all_route_groups ();
|
void disable_all_route_groups ();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,11 +45,11 @@ using namespace PBD;
|
||||||
using namespace Gtk;
|
using namespace Gtk;
|
||||||
|
|
||||||
void
|
void
|
||||||
Editor::build_route_group_list_menu (RouteGroup* g)
|
Editor::build_route_group_menu (RouteGroup* g)
|
||||||
{
|
{
|
||||||
using namespace Gtk::Menu_Helpers;
|
using namespace Gtk::Menu_Helpers;
|
||||||
|
|
||||||
delete route_group_list_menu;
|
delete route_group_menu;
|
||||||
|
|
||||||
Menu* new_from = new Menu;
|
Menu* new_from = new Menu;
|
||||||
MenuList& f = new_from->items ();
|
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 (_("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)));
|
f.push_back (MenuElem (_("Soloed..."), mem_fun (*this, &Editor::new_route_group_from_soloed)));
|
||||||
|
|
||||||
route_group_list_menu = new Menu;
|
route_group_menu = new Menu;
|
||||||
route_group_list_menu->set_name ("ArdourContextMenu");
|
route_group_menu->set_name ("ArdourContextMenu");
|
||||||
MenuList& items = route_group_list_menu->items();
|
MenuList& items = route_group_menu->items();
|
||||||
|
|
||||||
items.push_back (MenuElem (_("New Group..."), mem_fun(*this, &Editor::new_route_group)));
|
items.push_back (MenuElem (_("New..."), mem_fun(*this, &Editor::new_route_group)));
|
||||||
items.push_back (MenuElem (_("New Group From"), *new_from));
|
items.push_back (MenuElem (_("New From"), *new_from));
|
||||||
if (g) {
|
if (g) {
|
||||||
items.push_back (MenuElem (_("Edit Group..."), bind (mem_fun (*this, &Editor::edit_route_group), g)));
|
items.push_back (MenuElem (_("Edit..."), 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 (_("Fit to Window"), bind (mem_fun (*this, &Editor::fit_route_group), g)));
|
||||||
}
|
}
|
||||||
items.push_back (SeparatorElem());
|
items.push_back (SeparatorElem());
|
||||||
items.push_back (MenuElem (_("Activate All"), mem_fun(*this, &Editor::activate_all_route_groups)));
|
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)) {
|
if (Keyboard::is_context_menu_event (ev)) {
|
||||||
build_route_group_list_menu (group);
|
build_route_group_menu (group);
|
||||||
route_group_list_menu->popup (1, ev->time);
|
route_group_menu->popup (1, ev->time);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -152,3 +152,11 @@ EditorGroupTabs::reflect_tabs (list<Tab> const & tabs)
|
||||||
y += (*i)->effective_height ();
|
y += (*i)->effective_height ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Gtk::Menu*
|
||||||
|
EditorGroupTabs::get_menu (RouteGroup *g)
|
||||||
|
{
|
||||||
|
_editor->build_route_group_menu (g);
|
||||||
|
return _editor->route_group_menu;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ private:
|
||||||
double extent () const {
|
double extent () const {
|
||||||
return _height;
|
return _height;
|
||||||
}
|
}
|
||||||
|
Gtk::Menu* get_menu (ARDOUR::RouteGroup* g);
|
||||||
|
|
||||||
Editor* _editor;
|
Editor* _editor;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,6 @@ using namespace ARDOUR;
|
||||||
|
|
||||||
GroupTabs::GroupTabs ()
|
GroupTabs::GroupTabs ()
|
||||||
: _session (0),
|
: _session (0),
|
||||||
_menu (0),
|
|
||||||
_dragging (0)
|
_dragging (0)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -86,14 +85,8 @@ GroupTabs::on_button_press_event (GdkEventButton* ev)
|
||||||
|
|
||||||
} else if (ev->button == 3) {
|
} else if (ev->button == 3) {
|
||||||
|
|
||||||
delete _menu;
|
get_menu(t->group)->popup (ev->button, ev->time);
|
||||||
_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);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -173,20 +166,6 @@ GroupTabs::on_button_release_event (GdkEventButton* ev)
|
||||||
return true;
|
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
|
void
|
||||||
GroupTabs::render (cairo_t* cr)
|
GroupTabs::render (cairo_t* cr)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -45,12 +45,15 @@ protected:
|
||||||
double last_ui_size;
|
double last_ui_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ARDOUR::Session* _session;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual std::list<Tab> compute_tabs () const = 0;
|
virtual std::list<Tab> compute_tabs () const = 0;
|
||||||
virtual void draw_tab (cairo_t *, Tab const &) const = 0;
|
virtual void draw_tab (cairo_t *, Tab const &) const = 0;
|
||||||
virtual double primary_coordinate (double, double) const = 0;
|
virtual double primary_coordinate (double, double) const = 0;
|
||||||
virtual void reflect_tabs (std::list<Tab> const &) = 0;
|
virtual void reflect_tabs (std::list<Tab> const &) = 0;
|
||||||
virtual double extent () const = 0;
|
virtual double extent () const = 0;
|
||||||
|
virtual Gtk::Menu* get_menu (ARDOUR::RouteGroup *) = 0;
|
||||||
|
|
||||||
void render (cairo_t *);
|
void render (cairo_t *);
|
||||||
void on_size_request (Gtk::Requisition *);
|
void on_size_request (Gtk::Requisition *);
|
||||||
|
|
@ -59,11 +62,7 @@ private:
|
||||||
bool on_button_release_event (GdkEventButton *);
|
bool on_button_release_event (GdkEventButton *);
|
||||||
|
|
||||||
Tab * click_to_tab (double, Tab**, Tab**);
|
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;
|
std::list<Tab> _tabs;
|
||||||
Tab* _dragging;
|
Tab* _dragging;
|
||||||
bool _drag_moved;
|
bool _drag_moved;
|
||||||
|
|
|
||||||
|
|
@ -23,12 +23,16 @@
|
||||||
#include "mixer_strip.h"
|
#include "mixer_strip.h"
|
||||||
#include "mixer_ui.h"
|
#include "mixer_ui.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
#include "i18n.h"
|
||||||
|
#include "route_group_dialog.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
using namespace Gtk;
|
||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
|
|
||||||
MixerGroupTabs::MixerGroupTabs (Mixer_UI* m)
|
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);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,11 @@ private:
|
||||||
double extent () const {
|
double extent () const {
|
||||||
return _width;
|
return _width;
|
||||||
}
|
}
|
||||||
|
Gtk::Menu* get_menu (ARDOUR::RouteGroup* g);
|
||||||
|
|
||||||
|
void edit_group (ARDOUR::RouteGroup *);
|
||||||
|
void remove_group (ARDOUR::RouteGroup *);
|
||||||
|
|
||||||
Mixer_UI* _mixer;
|
Mixer_UI* _mixer;
|
||||||
|
Gtk::Menu* _menu;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue