mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-07 07:14:56 +01:00
Foldback GUI: Add menus to send box
This commit is contained in:
parent
3ecf0fde19
commit
a8447a35ac
2 changed files with 185 additions and 43 deletions
|
|
@ -41,6 +41,7 @@
|
||||||
#include "keyboard.h"
|
#include "keyboard.h"
|
||||||
#include "public_editor.h"
|
#include "public_editor.h"
|
||||||
#include "send_ui.h"
|
#include "send_ui.h"
|
||||||
|
#include "timers.h"
|
||||||
#include "io_selector.h"
|
#include "io_selector.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "gui_thread.h"
|
#include "gui_thread.h"
|
||||||
|
|
@ -113,8 +114,7 @@ FoldbackSend::FoldbackSend (boost::shared_ptr<Send> snd, \
|
||||||
_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &FoldbackSend::level_adjusted));
|
_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &FoldbackSend::level_adjusted));
|
||||||
lc->Changed.connect (_connections, invalidator (*this), boost::bind (&FoldbackSend::level_changed, this), gui_context ());
|
lc->Changed.connect (_connections, invalidator (*this), boost::bind (&FoldbackSend::level_changed, this), gui_context ());
|
||||||
_send_proc->ActiveChanged.connect (_connections, invalidator (*this), boost::bind (&FoldbackSend::send_state_changed, this), gui_context ());
|
_send_proc->ActiveChanged.connect (_connections, invalidator (*this), boost::bind (&FoldbackSend::send_state_changed, this), gui_context ());
|
||||||
/// create button_press() then enable next line
|
_button.signal_button_press_event().connect (sigc::mem_fun (*this, &FoldbackSend::button_press));
|
||||||
//_button.signal_button_press_event().connect (sigc::mem_fun (*this, &FoldbackSend::button_press), false);
|
|
||||||
|
|
||||||
show ();
|
show ();
|
||||||
|
|
||||||
|
|
@ -123,14 +123,14 @@ FoldbackSend::FoldbackSend (boost::shared_ptr<Send> snd, \
|
||||||
|
|
||||||
FoldbackSend::~FoldbackSend ()
|
FoldbackSend::~FoldbackSend ()
|
||||||
{
|
{
|
||||||
|
_connections.drop_connections();
|
||||||
|
_slider.set_controllable (boost::shared_ptr<AutomationControl> ());
|
||||||
|
pan_control.set_controllable (boost::shared_ptr<AutomationControl> ());
|
||||||
_send = boost::shared_ptr<Send> ();
|
_send = boost::shared_ptr<Send> ();
|
||||||
_send_route = boost::shared_ptr<Route> ();
|
_send_route = boost::shared_ptr<Route> ();
|
||||||
_foldback_route = boost::shared_ptr<Route> ();
|
_foldback_route = boost::shared_ptr<Route> ();
|
||||||
_send_proc = boost::shared_ptr<Processor> ();
|
_send_proc = boost::shared_ptr<Processor> ();
|
||||||
_send_del = boost::shared_ptr<Delivery> ();
|
_send_del = boost::shared_ptr<Delivery> ();
|
||||||
_connections.drop_connections();
|
|
||||||
pan_control.set_controllable (boost::shared_ptr<AutomationControl> ());
|
|
||||||
_slider.set_controllable (boost::shared_ptr<AutomationControl> ());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -147,6 +147,18 @@ FoldbackSend::led_clicked(GdkEventButton *ev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
FoldbackSend::button_press (GdkEventButton* ev)
|
||||||
|
{
|
||||||
|
if (ev->button == 1) {
|
||||||
|
Menu* menu = build_send_menu ();
|
||||||
|
|
||||||
|
Gtkmm2ext::anchored_menu_popup(menu, &_button, "", 1, ev->time);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
FoldbackSend::send_state_changed ()
|
FoldbackSend::send_state_changed ()
|
||||||
{
|
{
|
||||||
|
|
@ -203,6 +215,59 @@ FoldbackSend::set_tooltip ()
|
||||||
ArdourWidgets::set_tooltip (_button, Gtkmm2ext::markup_escape_text (sm));
|
ArdourWidgets::set_tooltip (_button, Gtkmm2ext::markup_escape_text (sm));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Menu*
|
||||||
|
FoldbackSend::build_send_menu ()
|
||||||
|
{
|
||||||
|
using namespace Menu_Helpers;
|
||||||
|
|
||||||
|
if (!_send) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Menu* menu = manage (new Menu);
|
||||||
|
MenuList& items = menu->items ();
|
||||||
|
menu->set_name ("ArdourContextMenu");
|
||||||
|
|
||||||
|
items.push_back (
|
||||||
|
MenuElem(_("Copy track/bus gain to send"), sigc::bind (sigc::mem_fun (*this, &FoldbackSend::set_gain), -0.1))
|
||||||
|
);
|
||||||
|
items.push_back (
|
||||||
|
MenuElem(_("Set send gain to -inf"), sigc::bind (sigc::mem_fun (*this, &FoldbackSend::set_gain), 0.0))
|
||||||
|
);
|
||||||
|
items.push_back (
|
||||||
|
MenuElem(_("Set send gain to 0dB"), sigc::bind (sigc::mem_fun (*this, &FoldbackSend::set_gain), 1.0))
|
||||||
|
);
|
||||||
|
items.push_back (MenuElem(_("Remove This Send"), sigc::mem_fun (*this, &FoldbackSend::remove_me)));
|
||||||
|
|
||||||
|
return menu;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
FoldbackSend::set_gain (float new_gain)
|
||||||
|
{
|
||||||
|
if (new_gain < 0) {
|
||||||
|
// get level from sending route
|
||||||
|
new_gain = _send_route->gain_control ()->get_value ();
|
||||||
|
}
|
||||||
|
boost::shared_ptr<AutomationControl> lc = _send->gain_control();
|
||||||
|
|
||||||
|
if (!lc) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lc->set_value (new_gain, Controllable::NoGroup);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
FoldbackSend::remove_me ()
|
||||||
|
{
|
||||||
|
boost::shared_ptr<Processor> send_proc = boost::dynamic_pointer_cast<Processor> (_send);
|
||||||
|
_connections.drop_connections();
|
||||||
|
_send_route->remove_processor (send_proc);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
FoldbackStrip* FoldbackStrip::_entered_foldback_strip;
|
FoldbackStrip* FoldbackStrip::_entered_foldback_strip;
|
||||||
PBD::Signal1<void,FoldbackStrip*> FoldbackStrip::CatchDeletion;
|
PBD::Signal1<void,FoldbackStrip*> FoldbackStrip::CatchDeletion;
|
||||||
|
|
@ -236,7 +301,7 @@ FoldbackStrip::init ()
|
||||||
comment_area = 0;
|
comment_area = 0;
|
||||||
_width_owner = 0;
|
_width_owner = 0;
|
||||||
|
|
||||||
/* the length of this string determines the width of the mixer strip when it is set to `wide' */
|
/* the length of this string determines the width of the foldback strip */
|
||||||
longest_label = "longest label";
|
longest_label = "longest label";
|
||||||
|
|
||||||
output_button.set_text (_("Output"));
|
output_button.set_text (_("Output"));
|
||||||
|
|
@ -248,6 +313,7 @@ FoldbackStrip::init ()
|
||||||
send_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
|
send_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
|
||||||
send_scroller.add (send_display);
|
send_scroller.add (send_display);
|
||||||
send_scroller.get_child()->set_name ("FoldbackBusStripBase");
|
send_scroller.get_child()->set_name ("FoldbackBusStripBase");
|
||||||
|
send_scroller.signal_button_press_event().connect (sigc::mem_fun (*this, &FoldbackStrip::send_button_press_event));
|
||||||
|
|
||||||
insert_box = new ProcessorBox (0, boost::bind (&FoldbackStrip::plugin_selector, this), _pr_selection, 0);
|
insert_box = new ProcessorBox (0, boost::bind (&FoldbackStrip::plugin_selector, this), _pr_selection, 0);
|
||||||
insert_box->set_no_show_all ();
|
insert_box->set_no_show_all ();
|
||||||
|
|
@ -272,12 +338,6 @@ FoldbackStrip::init ()
|
||||||
mute_solo_table.set_homogeneous (true);
|
mute_solo_table.set_homogeneous (true);
|
||||||
mute_solo_table.set_spacings (2);
|
mute_solo_table.set_spacings (2);
|
||||||
|
|
||||||
show_sends_button->set_text (_("Show Sends"));
|
|
||||||
|
|
||||||
show_sends_box.pack_start (*show_sends_button, true, true);
|
|
||||||
show_sends_button->show();
|
|
||||||
|
|
||||||
|
|
||||||
name_button.set_name ("mixer strip button");
|
name_button.set_name ("mixer strip button");
|
||||||
name_button.set_text_ellipsize (Pango::ELLIPSIZE_END);
|
name_button.set_text_ellipsize (Pango::ELLIPSIZE_END);
|
||||||
|
|
||||||
|
|
@ -286,6 +346,13 @@ FoldbackStrip::init ()
|
||||||
_next_button.set_name ("mixer strip button");
|
_next_button.set_name ("mixer strip button");
|
||||||
_next_button.set_text (_("Next"));
|
_next_button.set_text (_("Next"));
|
||||||
|
|
||||||
|
_show_sends_button.set_name ("send alert button");
|
||||||
|
_show_sends_button.set_text (_("Show Sends"));
|
||||||
|
UI::instance()->set_tip (&_show_sends_button, _("make mixer strips show sends to this bus"), "");
|
||||||
|
_show_sends_button.signal_button_press_event().connect (sigc::mem_fun(*this, &FoldbackStrip::show_sends_press), false);
|
||||||
|
show_sends_box.pack_start (_show_sends_button, true, true);
|
||||||
|
_show_sends_button.show();
|
||||||
|
|
||||||
prev_next_box.set_homogeneous (true);
|
prev_next_box.set_homogeneous (true);
|
||||||
prev_next_box.pack_start (_previous_button, true, true);
|
prev_next_box.pack_start (_previous_button, true, true);
|
||||||
prev_next_box.pack_start (_next_button, true, true);
|
prev_next_box.pack_start (_next_button, true, true);
|
||||||
|
|
@ -380,6 +447,7 @@ FoldbackStrip::~FoldbackStrip ()
|
||||||
fb_level_control = 0;
|
fb_level_control = 0;
|
||||||
_connections.drop_connections();
|
_connections.drop_connections();
|
||||||
clear_send_box ();
|
clear_send_box ();
|
||||||
|
send_blink_connection.disconnect ();
|
||||||
|
|
||||||
if (this ==_entered_foldback_strip)
|
if (this ==_entered_foldback_strip)
|
||||||
_entered_foldback_strip = NULL;
|
_entered_foldback_strip = NULL;
|
||||||
|
|
@ -458,7 +526,11 @@ FoldbackStrip::set_route (boost::shared_ptr<Route> rt)
|
||||||
update_fb_level_control();
|
update_fb_level_control();
|
||||||
|
|
||||||
BusSendDisplayChanged (boost::shared_ptr<Route> ());
|
BusSendDisplayChanged (boost::shared_ptr<Route> ());
|
||||||
show_sends_button->show();
|
_showing_sends = false;
|
||||||
|
_show_sends_button.set_active (false);
|
||||||
|
send_blink_connection.disconnect ();
|
||||||
|
|
||||||
|
_show_sends_button.show();
|
||||||
|
|
||||||
delete route_ops_menu;
|
delete route_ops_menu;
|
||||||
route_ops_menu = 0;
|
route_ops_menu = 0;
|
||||||
|
|
@ -732,18 +804,6 @@ FoldbackStrip::connect_to_pan ()
|
||||||
|
|
||||||
boost::shared_ptr<Pannable> p = _route->pannable ();
|
boost::shared_ptr<Pannable> p = _route->pannable ();
|
||||||
|
|
||||||
//p->automation_state_changed.connect (panstate_connection, invalidator (*this), boost::bind (&PannerUI::pan_automation_state_changed, &panners), gui_context());
|
|
||||||
|
|
||||||
/* This call reduncant, PannerUI::set_panner() connects to _panshell->Changed itself
|
|
||||||
* However, that only works a panner was previously set.
|
|
||||||
*
|
|
||||||
* PannerUI must remain subscribed to _panshell->Changed() in case
|
|
||||||
* we switch the panner eg. AUX-Send and back
|
|
||||||
* _route->panner_shell()->Changed() vs _panshell->Changed
|
|
||||||
*/
|
|
||||||
/*if (panners._panner == 0) {
|
|
||||||
panners.panshell_changed ();
|
|
||||||
}*/
|
|
||||||
update_panner_choices();
|
update_panner_choices();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1215,7 +1275,7 @@ FoldbackStrip::previous_button_button_press (GdkEventButton* ev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// only one route do nothing
|
// only one route or none do nothing
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//use previous to set route
|
//use previous to set route
|
||||||
|
|
@ -1230,6 +1290,42 @@ FoldbackStrip::previous_button_button_press (GdkEventButton* ev)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
FoldbackStrip::show_sends_press (GdkEventButton* ev)
|
||||||
|
{
|
||||||
|
if (ev->button == 1 || ev->button == 3) {
|
||||||
|
|
||||||
|
if (_showing_sends) {
|
||||||
|
BusSendDisplayChanged (boost::shared_ptr<Route> ()); /* EMIT SIGNAL */
|
||||||
|
_showing_sends = false;
|
||||||
|
_show_sends_button.set_active (false);
|
||||||
|
send_blink_connection.disconnect ();
|
||||||
|
} else {
|
||||||
|
BusSendDisplayChanged (_route); /* EMIT SIGNAL */
|
||||||
|
_showing_sends = true;
|
||||||
|
_show_sends_button.set_active (true);
|
||||||
|
send_blink_connection = Timers::blink_connect (sigc::mem_fun (*this, &FoldbackStrip::send_blink));
|
||||||
|
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
FoldbackStrip::send_blink (bool onoff)
|
||||||
|
{
|
||||||
|
if (!(&_show_sends_button)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (onoff) {
|
||||||
|
_show_sends_button.set_active_state (Gtkmm2ext::ExplicitActive);
|
||||||
|
} else {
|
||||||
|
_show_sends_button.unset_active_state ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
FoldbackStrip::next_button_button_press (GdkEventButton* ev)
|
FoldbackStrip::next_button_button_press (GdkEventButton* ev)
|
||||||
|
|
@ -1252,7 +1348,7 @@ FoldbackStrip::next_button_button_press (GdkEventButton* ev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// only one route do nothing
|
// only one or no route do nothing
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//use next to set route
|
//use next to set route
|
||||||
|
|
@ -1512,6 +1608,48 @@ FoldbackStrip::ab_plugins ()
|
||||||
insert_box->processor_operation (ProcessorBox::ProcessorsAB);
|
insert_box->processor_operation (ProcessorBox::ProcessorsAB);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
FoldbackStrip::create_selected_sends (bool include_buses)
|
||||||
|
{
|
||||||
|
boost::shared_ptr<StripableList> slist (new StripableList);
|
||||||
|
PresentationInfo::Flag fl = PresentationInfo::AudioTrack;
|
||||||
|
if (include_buses) {
|
||||||
|
fl = PresentationInfo::MixerRoutes;
|
||||||
|
}
|
||||||
|
_session->get_stripables (*slist, fl);
|
||||||
|
|
||||||
|
for (StripableList::iterator i = (*slist).begin(); i != (*slist).end(); ++i) {
|
||||||
|
if ((*i)->is_selected() && !(*i)->is_master() && !(*i)->is_monitor()) {
|
||||||
|
boost::shared_ptr<Route> rt = boost::dynamic_pointer_cast<Route>(*i);
|
||||||
|
if (rt) {
|
||||||
|
rt->add_foldback_send (_route);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
FoldbackStrip::send_button_press_event (GdkEventButton *ev)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (ev->button == 3) {
|
||||||
|
list_send_operations ();
|
||||||
|
sends_menu->popup (3, ev->time);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
FoldbackStrip::list_send_operations ()
|
||||||
|
{
|
||||||
|
delete sends_menu;
|
||||||
|
build_sends_menu ();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
FoldbackStrip::build_sends_menu ()
|
FoldbackStrip::build_sends_menu ()
|
||||||
{
|
{
|
||||||
|
|
@ -1522,19 +1660,11 @@ FoldbackStrip::build_sends_menu ()
|
||||||
MenuList& items = sends_menu->items();
|
MenuList& items = sends_menu->items();
|
||||||
|
|
||||||
items.push_back (
|
items.push_back (
|
||||||
MenuElem(_("Assign all tracks"), sigc::bind (sigc::mem_fun (*this, &RouteUI::create_sends), PreFader, false))
|
MenuElem(_("Assign selected tracks (prefader)"), sigc::bind (sigc::mem_fun (*this, &FoldbackStrip::create_selected_sends), false))
|
||||||
);
|
);
|
||||||
|
|
||||||
items.push_back (
|
items.push_back (
|
||||||
MenuElem(_("Assign all tracks and buses (prefader)"), sigc::bind (sigc::mem_fun (*this, &RouteUI::create_sends), PreFader, true))
|
MenuElem(_("Assign selected tracks and buses (prefader)"), sigc::bind (sigc::mem_fun (*this, &FoldbackStrip::create_selected_sends), true)));
|
||||||
);
|
|
||||||
|
|
||||||
items.push_back (
|
|
||||||
MenuElem(_("Assign selected tracks (prefader)"), sigc::bind (sigc::mem_fun (*this, &RouteUI::create_selected_sends), PreFader, false))
|
|
||||||
);
|
|
||||||
|
|
||||||
items.push_back (
|
|
||||||
MenuElem(_("Assign selected tracks and buses (prefader)"), sigc::bind (sigc::mem_fun (*this, &RouteUI::create_selected_sends), PreFader, true)));
|
|
||||||
|
|
||||||
items.push_back (MenuElem(_("Copy track/bus gains to sends"), sigc::mem_fun (*this, &RouteUI::set_sends_gain_from_track)));
|
items.push_back (MenuElem(_("Copy track/bus gains to sends"), sigc::mem_fun (*this, &RouteUI::set_sends_gain_from_track)));
|
||||||
items.push_back (MenuElem(_("Set sends gain to -inf"), sigc::mem_fun (*this, &RouteUI::set_sends_gain_to_zero)));
|
items.push_back (MenuElem(_("Set sends gain to -inf"), sigc::mem_fun (*this, &RouteUI::set_sends_gain_to_zero)));
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,13 @@ private:
|
||||||
boost::shared_ptr<ARDOUR::Processor> _send_proc;
|
boost::shared_ptr<ARDOUR::Processor> _send_proc;
|
||||||
boost::shared_ptr<ARDOUR::Delivery> _send_del;
|
boost::shared_ptr<ARDOUR::Delivery> _send_del;
|
||||||
|
|
||||||
|
Gtk::Menu* send_menu;
|
||||||
void led_clicked(GdkEventButton *);
|
void led_clicked(GdkEventButton *);
|
||||||
|
gboolean button_press (GdkEventButton*);
|
||||||
|
Gtk::Menu* build_send_menu ();
|
||||||
|
void set_gain (float new_gain);
|
||||||
|
void remove_me ();
|
||||||
|
|
||||||
void send_state_changed ();
|
void send_state_changed ();
|
||||||
void level_adjusted ();
|
void level_adjusted ();
|
||||||
void level_changed ();
|
void level_changed ();
|
||||||
|
|
@ -174,6 +180,7 @@ private:
|
||||||
Width _width;
|
Width _width;
|
||||||
void* _width_owner;
|
void* _width_owner;
|
||||||
ARDOUR::Session* _session;
|
ARDOUR::Session* _session;
|
||||||
|
bool _showing_sends;
|
||||||
|
|
||||||
Gtk::EventBox spacer;
|
Gtk::EventBox spacer;
|
||||||
Gtk::VBox send_display;
|
Gtk::VBox send_display;
|
||||||
|
|
@ -203,6 +210,7 @@ private:
|
||||||
guint32 mode_switch_in_progress;
|
guint32 mode_switch_in_progress;
|
||||||
|
|
||||||
ArdourWidgets::ArdourButton name_button;
|
ArdourWidgets::ArdourButton name_button;
|
||||||
|
ArdourWidgets::ArdourButton _show_sends_button;
|
||||||
ArdourWidgets::ArdourButton _previous_button;
|
ArdourWidgets::ArdourButton _previous_button;
|
||||||
ArdourWidgets::ArdourButton _next_button;
|
ArdourWidgets::ArdourButton _next_button;
|
||||||
ArdourWidgets::ArdourButton _comment_button;
|
ArdourWidgets::ArdourButton _comment_button;
|
||||||
|
|
@ -222,9 +230,6 @@ private:
|
||||||
|
|
||||||
void io_changed_proxy ();
|
void io_changed_proxy ();
|
||||||
|
|
||||||
Gtk::Menu *send_action_menu;
|
|
||||||
void build_send_action_menu ();
|
|
||||||
|
|
||||||
PBD::ScopedConnection panstate_connection;
|
PBD::ScopedConnection panstate_connection;
|
||||||
PBD::ScopedConnection panstyle_connection;
|
PBD::ScopedConnection panstyle_connection;
|
||||||
void connect_to_pan ();
|
void connect_to_pan ();
|
||||||
|
|
@ -242,14 +247,21 @@ private:
|
||||||
void build_route_ops_menu ();
|
void build_route_ops_menu ();
|
||||||
gboolean name_button_button_press (GdkEventButton*);
|
gboolean name_button_button_press (GdkEventButton*);
|
||||||
void list_route_operations ();
|
void list_route_operations ();
|
||||||
|
|
||||||
Gtk::Menu* route_select_menu;
|
Gtk::Menu* route_select_menu;
|
||||||
void build_route_select_menu ();
|
void build_route_select_menu ();
|
||||||
gboolean previous_button_button_press (GdkEventButton*);
|
|
||||||
gboolean next_button_button_press (GdkEventButton*);
|
|
||||||
void list_fb_routes ();
|
void list_fb_routes ();
|
||||||
|
|
||||||
|
gboolean previous_button_button_press (GdkEventButton*);
|
||||||
|
gboolean next_button_button_press (GdkEventButton*);
|
||||||
|
gboolean show_sends_press (GdkEventButton*);
|
||||||
|
void send_blink (bool);
|
||||||
|
|
||||||
|
Gtk::Menu *sends_menu;
|
||||||
|
bool send_button_press_event (GdkEventButton *ev);
|
||||||
void build_sends_menu ();
|
void build_sends_menu ();
|
||||||
|
void list_send_operations ();
|
||||||
|
|
||||||
|
void create_selected_sends (bool include_buses);
|
||||||
void remove_current_fb ();
|
void remove_current_fb ();
|
||||||
|
|
||||||
Gtk::Style *passthru_style;
|
Gtk::Style *passthru_style;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue