projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
changes to waveform clipping display
[ardour.git]
/
gtk2_ardour
/
panner_ui.cc
diff --git
a/gtk2_ardour/panner_ui.cc
b/gtk2_ardour/panner_ui.cc
index 05c2843630270676f2ca8a7f9dd556bf152b3af7..181664bb4ec0db1f360b16fe5713d8a9fd3edf87 100644
(file)
--- a/
gtk2_ardour/panner_ui.cc
+++ b/
gtk2_ardour/panner_ui.cc
@@
-18,13
+18,17
@@
#include <limits.h>
#include <limits.h>
-#include "ardour/io.h"
-#include "ardour/dB.h"
#include <gtkmm2ext/utils.h>
#include <gtkmm2ext/barcontroller.h>
#include <gtkmm2ext/utils.h>
#include <gtkmm2ext/barcontroller.h>
+
#include "midi++/manager.h"
#include "pbd/fastlog.h"
#include "midi++/manager.h"
#include "pbd/fastlog.h"
+#include "ardour/pannable.h"
+#include "ardour/panner.h"
+#include "ardour/panner_shell.h"
+#include "ardour/session.h"
+
#include "ardour_ui.h"
#include "panner_ui.h"
#include "panner2d.h"
#include "ardour_ui.h"
#include "panner_ui.h"
#include "panner2d.h"
@@
-33,13
+37,6
@@
#include "stereo_panner.h"
#include "mono_panner.h"
#include "stereo_panner.h"
#include "mono_panner.h"
-#include "ardour/delivery.h"
-#include "ardour/session.h"
-#include "ardour/panner.h"
-#include "ardour/pannable.h"
-#include "ardour/panner_shell.h"
-#include "ardour/route.h"
-
#include "i18n.h"
using namespace std;
#include "i18n.h"
using namespace std;
@@
-64,6
+61,7
@@
PannerUI::PannerUI (Session* s)
pan_astyle_menu = 0;
in_pan_update = false;
_stereo_panner = 0;
pan_astyle_menu = 0;
in_pan_update = false;
_stereo_panner = 0;
+ _mono_panner = 0;
_ignore_width_change = false;
_ignore_position_change = false;
_ignore_width_change = false;
_ignore_position_change = false;
@@
-114,6
+112,9
@@
PannerUI::set_panner (boost::shared_ptr<PannerShell> ps, boost::shared_ptr<Panne
delete _stereo_panner;
_stereo_panner = 0;
delete _stereo_panner;
_stereo_panner = 0;
+ delete _mono_panner;
+ _mono_panner = 0;
+
if (!_panner) {
return;
}
if (!_panner) {
return;
}
@@
-143,9
+144,12
@@
PannerUI::build_astate_menu ()
pan_astate_menu->items().clear ();
}
pan_astate_menu->items().clear ();
}
- pan_astate_menu->items().push_back (MenuElem (_("Manual"), sigc::bind (
+ /** TRANSLATORS: this is `Manual' in the sense of automation not being played,
+ so that changes to pan must be done by hand.
+ */
+ pan_astate_menu->items().push_back (MenuElem (S_("Automation|Manual"), sigc::bind (
sigc::mem_fun (_panner.get(), &Panner::set_automation_state),
sigc::mem_fun (_panner.get(), &Panner::set_automation_state),
- (AutoState) Off)));
+ (AutoState)
ARDOUR::
Off)));
pan_astate_menu->items().push_back (MenuElem (_("Play"), sigc::bind (
sigc::mem_fun (_panner.get(), &Panner::set_automation_state),
(AutoState) Play)));
pan_astate_menu->items().push_back (MenuElem (_("Play"), sigc::bind (
sigc::mem_fun (_panner.get(), &Panner::set_automation_state),
(AutoState) Play)));
@@
-174,13
+178,6
@@
PannerUI::build_astyle_menu ()
pan_astyle_menu->items().push_back (MenuElem (_("Abs")));
}
pan_astyle_menu->items().push_back (MenuElem (_("Abs")));
}
-boost::shared_ptr<PBD::Controllable>
-PannerUI::get_controllable()
-{
- assert (!pan_bars.empty());
- return pan_bars[0]->get_controllable();
-}
-
void
PannerUI::on_size_allocate (Allocation& a)
{
void
PannerUI::on_size_allocate (Allocation& a)
{
@@
-195,19
+192,15
@@
PannerUI::set_width (Width w)
PannerUI::~PannerUI ()
{
PannerUI::~PannerUI ()
{
- for (vector<MonoPanner*>::iterator i = pan_bars.begin(); i != pan_bars.end(); ++i) {
- delete (*i);
- }
-
delete twod_panner;
delete big_window;
delete pan_menu;
delete pan_astyle_menu;
delete pan_astate_menu;
delete _stereo_panner;
delete twod_panner;
delete big_window;
delete pan_menu;
delete pan_astyle_menu;
delete pan_astate_menu;
delete _stereo_panner;
+ delete _mono_panner;
}
}
-
void
PannerUI::panshell_changed ()
{
void
PannerUI::panshell_changed ()
{
@@
-218,14
+211,10
@@
PannerUI::panshell_changed ()
void
PannerUI::setup_pan ()
{
void
PannerUI::setup_pan ()
{
- if (!_panner) {
- return;
- }
-
- uint32_t const nouts = _panner->out().n_audio();
- uint32_t const nins = _panner->in().n_audio();
+ int const nouts = _panner ? _panner->out().n_audio() : -1;
+ int const nins = _panner ? _panner->in().n_audio() : -1;
- if (
int32_t (nouts) == _current_nouts && int32_t (nins)
== _current_nins) {
+ if (
nouts == _current_nouts && nins
== _current_nins) {
return;
}
return;
}
@@
-238,17
+227,23
@@
PannerUI::setup_pan ()
twod_panner = 0;
delete _stereo_panner;
_stereo_panner = 0;
twod_panner = 0;
delete _stereo_panner;
_stereo_panner = 0;
+ delete _mono_panner;
+ _mono_panner = 0;
- if (nouts == 0 || nouts == 1) {
+ if (!_panner) {
+ return;
+ }
- delete _stereo_panner;
- delete twod_panner;
+ if (nouts == 0 || nouts == 1) {
/* stick something into the panning viewport so that it redraws */
EventBox* eb = manage (new EventBox());
pan_vbox.pack_start (*eb, false, false);
/* stick something into the panning viewport so that it redraws */
EventBox* eb = manage (new EventBox());
pan_vbox.pack_start (*eb, false, false);
+ delete big_window;
+ big_window = 0;
+
} else if (nouts == 2) {
if (nins == 2) {
} else if (nouts == 2) {
if (nins == 2) {
@@
-279,29
+274,30
@@
PannerUI::setup_pan ()
} else if (nins == 1) {
/* 1-in/2out */
} else if (nins == 1) {
/* 1-in/2out */
- MonoPanner* mp;
boost::shared_ptr<Pannable> pannable = _panner->pannable();
boost::shared_ptr<AutomationControl> ac = pannable->pan_azimuth_control;
boost::shared_ptr<Pannable> pannable = _panner->pannable();
boost::shared_ptr<AutomationControl> ac = pannable->pan_azimuth_control;
-
mp
= new MonoPanner (_panner);
-
-
mp
->StartGesture.connect (sigc::bind (sigc::mem_fun (*this, &PannerUI::start_touch),
+
_mono_panner
= new MonoPanner (_panner);
+
+
_mono_panner
->StartGesture.connect (sigc::bind (sigc::mem_fun (*this, &PannerUI::start_touch),
boost::weak_ptr<AutomationControl> (ac)));
boost::weak_ptr<AutomationControl> (ac)));
-
mp
->StopGesture.connect (sigc::bind (sigc::mem_fun (*this, &PannerUI::stop_touch),
+
_mono_panner
->StopGesture.connect (sigc::bind (sigc::mem_fun (*this, &PannerUI::stop_touch),
boost::weak_ptr<AutomationControl>(ac)));
boost::weak_ptr<AutomationControl>(ac)));
-
mp
->signal_button_release_event().connect (sigc::mem_fun(*this, &PannerUI::pan_button_event));
+
_mono_panner
->signal_button_release_event().connect (sigc::mem_fun(*this, &PannerUI::pan_button_event));
-
mp
->set_size_request (-1, pan_bar_height);
+
_mono_panner
->set_size_request (-1, pan_bar_height);
update_pan_sensitive ();
update_pan_sensitive ();
- pan_vbox.pack_start (*
mp
, false, false);
+ pan_vbox.pack_start (*
_mono_panner
, false, false);
} else {
warning << string_compose (_("No panner user interface is currently available for %1-in/2out tracks/busses"),
nins) << endmsg;
}
} else {
warning << string_compose (_("No panner user interface is currently available for %1-in/2out tracks/busses"),
nins) << endmsg;
}
+ delete big_window;
+ big_window = 0;
} else {
} else {
@@
-394,6
+390,7
@@
PannerUI::build_pan_menu ()
bypass_menu_item->signal_toggled().connect (sigc::mem_fun(*this, &PannerUI::pan_bypass_toggle));
items.push_back (MenuElem (_("Reset"), sigc::mem_fun (*this, &PannerUI::pan_reset)));
bypass_menu_item->signal_toggled().connect (sigc::mem_fun(*this, &PannerUI::pan_bypass_toggle));
items.push_back (MenuElem (_("Reset"), sigc::mem_fun (*this, &PannerUI::pan_reset)));
+ items.push_back (MenuElem (_("Edit..."), sigc::mem_fun (*this, &PannerUI::pan_edit)));
}
void
}
void
@@
-404,6
+401,16
@@
PannerUI::pan_bypass_toggle ()
}
}
}
}
+void
+PannerUI::pan_edit ()
+{
+ if (_mono_panner) {
+ _mono_panner->edit ();
+ } else if (_stereo_panner) {
+ _stereo_panner->edit ();
+ }
+}
+
void
PannerUI::pan_reset ()
{
void
PannerUI::pan_reset ()
{
@@
-415,13
+422,11
@@
PannerUI::effective_pan_display ()
{
if (_stereo_panner) {
_stereo_panner->queue_draw ();
{
if (_stereo_panner) {
_stereo_panner->queue_draw ();
+ } else if (_mono_panner) {
+ _mono_panner->queue_draw ();
} else if (twod_panner) {
twod_panner->queue_draw ();
} else if (twod_panner) {
twod_panner->queue_draw ();
- } else {
- for (vector<MonoPanner*>::iterator i = pan_bars.begin(); i != pan_bars.end(); ++i) {
- (*i)->queue_draw ();
- }
- }
+ }
}
void
}
void
@@
-508,7
+513,7
@@
PannerUI::pan_automation_state_changed ()
break;
}
break;
}
- bool x = (pannable->automation_state() != Off);
+ bool x = (pannable->automation_state() !=
ARDOUR::
Off);
if (pan_automation_state_button.get_active() != x) {
ignore_toggle = true;
if (pan_automation_state_button.get_active() != x) {
ignore_toggle = true;
@@
-545,7
+550,7
@@
PannerUI::_astate_string (AutoState state, bool shrt)
string sstr;
switch (state) {
string sstr;
switch (state) {
- case Off:
+ case
ARDOUR::
Off:
sstr = (shrt ? "M" : _("M"));
break;
case Play:
sstr = (shrt ? "M" : _("M"));
break;
case Play: