NO-OP: clang-format, cleanup

This commit is contained in:
Robin Gareus 2021-12-12 13:43:40 +01:00
parent 96e1735646
commit efed7343e0
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04
12 changed files with 430 additions and 499 deletions

View file

@ -17,12 +17,12 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <algorithm>
#include "pbd/compose.h"
#include <algorithm>
#include "gtkmm2ext/actions.h"
#include "gtkmm2ext/gui_thread.h"
#include "gtkmm2ext/utils.h"
#include "gtkmm2ext/actions.h"
#include "canvas/canvas.h"
#include "canvas/debug.h"
@ -56,27 +56,25 @@ using namespace ARDOUR;
using namespace ArdourCanvas;
using namespace ArdourWaveView;
using namespace ArdourWidgets;
using std::min;
using std::max;
using std::min;
Glib::RefPtr<Gtk::ActionGroup> ClipEditorBox::clip_editor_actions;
void
ClipEditorBox::init ()
{
Bindings* bindings = Bindings::get_bindings (X_("Clip Editing"));
Bindings* bindings = Bindings::get_bindings (X_ ("Clip Editing"));
register_clip_editor_actions (bindings);
//_track_canvas_viewport->canvas()->set_data ("ardour-bindings",
//midi_bindings);
//_track_canvas_viewport->canvas()->set_data ("ardour-bindings", midi_bindings);
}
void
ClipEditorBox::register_clip_editor_actions (Bindings* clip_editor_bindings)
{
clip_editor_actions = ActionManager::create_action_group (clip_editor_bindings, X_("ClipEditing"));
clip_editor_actions = ActionManager::create_action_group (clip_editor_bindings, X_ ("ClipEditing"));
/* two versions to allow same action for Delete and Backspace */
@ -84,45 +82,20 @@ ClipEditorBox::register_clip_editor_actions (Bindings* clip_editor_bindings)
// ActionManager::register_action (clip_editor_actions, X_("zoom-in"), _("Zoom In"), sigc::mem_fun (*this, &ClipEditorBox::zoom_out));
}
/* ------------ */
class ClipBBTMetric : public ArdourCanvas::Ruler::Metric
{
public:
ClipBBTMetric () { units_per_pixel = 1; }
void get_marks (std::vector<ArdourCanvas::Ruler::Mark>& marks, int64_t lower, int64_t upper, int maxchars) const {
ArdourCanvas::Ruler::Mark mark;
std::cerr << "get marks between " << lower << " .. " << upper << std::endl;
for (int64_t n = lower; n < upper; n += 4000) {
mark.style = ArdourCanvas::Ruler::Mark::Major;
mark.label = string_compose ("%1", n);
mark.position = n / 100;
marks.push_back (mark);
std::cerr << "mark at " << mark.label << " @ " << mark.position << std::endl;
}
}
private:
};
AudioClipEditor::AudioClipEditor ()
: _spp (0)
, scroll_fraction (0)
, current_line_drag (0)
, current_scroll_drag (0)
{
const double scale = UIConfiguration::instance().get_ui_scale();
const double scale = UIConfiguration::instance ().get_ui_scale ();
frame = new Rectangle (root());
frame = new Rectangle (root ());
frame->name = "audio clip editor frame";
frame->set_fill (false);
frame->Event.connect (sigc::mem_fun (*this, &AudioClipEditor::event_handler));
scroll_bar_trough = new Rectangle (root());
scroll_bar_trough = new Rectangle (root ());
scroll_bar_handle = new Rectangle (scroll_bar_trough);
scroll_bar_handle->set_outline (false);
scroll_bar_handle->set_corner_radius (5.);
@ -133,10 +106,10 @@ AudioClipEditor::AudioClipEditor ()
clip_metric = new ClipBBTMetric ();
ruler_container = new ArdourCanvas::Container (waves_container);
ruler = new ArdourCanvas::Ruler (ruler_container, *clip_metric);
ruler->name = "Clip Editor";
ruler->set_font_description (UIConfiguration::instance().get_SmallerFont());
ruler_container = new ArdourCanvas::Container (waves_container);
ruler = new ArdourCanvas::Ruler (ruler_container, *clip_metric);
ruler->name = "Clip Editor";
ruler->set_font_description (UIConfiguration::instance ().get_SmallerFont ());
line_container = new ArdourCanvas::Container (waves_container);
@ -168,35 +141,34 @@ AudioClipEditor::~AudioClipEditor ()
bool
AudioClipEditor::line_event_handler (GdkEvent* ev, ArdourCanvas::Line* l)
{
std::cerr << "event type " << Gtkmm2ext::event_type_string (ev->type) << " on line " << std::endl;
std::cerr << "event type " << Gtkmm2ext::event_type_string (ev->type) << " on line " << std::endl;
switch (ev->type) {
case GDK_BUTTON_PRESS:
current_line_drag = new LineDrag (*this, *l);
return true;
case GDK_BUTTON_RELEASE:
if (current_line_drag) {
current_line_drag->end (&ev->button);
delete current_line_drag;
current_line_drag = 0;
case GDK_BUTTON_PRESS:
current_line_drag = new LineDrag (*this, *l);
return true;
}
break;
case GDK_MOTION_NOTIFY:
if (current_line_drag) {
current_line_drag->motion (&ev->motion);
return true;
}
break;
case GDK_BUTTON_RELEASE:
if (current_line_drag) {
current_line_drag->end (&ev->button);
delete current_line_drag;
current_line_drag = 0;
return true;
}
break;
case GDK_MOTION_NOTIFY:
if (current_line_drag) {
current_line_drag->motion (&ev->motion);
return true;
}
break;
case GDK_KEY_PRESS:
return key_press (&ev->key);
case GDK_KEY_PRESS:
return key_press (&ev->key);
default:
break;
default:
break;
}
return false;
@ -206,33 +178,32 @@ bool
AudioClipEditor::scroll_event_handler (GdkEvent* ev)
{
switch (ev->type) {
case GDK_BUTTON_PRESS:
current_scroll_drag = new ScrollDrag (*this);
current_scroll_drag->begin (&ev->button);
return true;
case GDK_BUTTON_RELEASE:
if (current_scroll_drag) {
current_scroll_drag->end (&ev->button);
delete current_scroll_drag;
current_scroll_drag = 0;
case GDK_BUTTON_PRESS:
current_scroll_drag = new ScrollDrag (*this);
current_scroll_drag->begin (&ev->button);
return true;
}
break;
case GDK_MOTION_NOTIFY:
if (current_scroll_drag) {
current_scroll_drag->motion (&ev->motion);
return true;
}
break;
case GDK_BUTTON_RELEASE:
if (current_scroll_drag) {
current_scroll_drag->end (&ev->button);
delete current_scroll_drag;
current_scroll_drag = 0;
return true;
}
break;
case GDK_MOTION_NOTIFY:
if (current_scroll_drag) {
current_scroll_drag->motion (&ev->motion);
return true;
}
break;
case GDK_KEY_PRESS:
return key_press (&ev->key);
case GDK_KEY_PRESS:
return key_press (&ev->key);
default:
break;
default:
break;
}
return false;
@ -251,11 +222,11 @@ AudioClipEditor::position_lines ()
return;
}
start_line->set_x0 (sample_to_pixel (audio_region->start().samples()));
start_line->set_x1 (sample_to_pixel (audio_region->start().samples()));
start_line->set_x0 (sample_to_pixel (audio_region->start ().samples ()));
start_line->set_x1 (sample_to_pixel (audio_region->start ().samples ()));
end_line->set_x0 (sample_to_pixel (audio_region->end().samples()));
end_line->set_x1 (sample_to_pixel (audio_region->end().samples()));
end_line->set_x0 (sample_to_pixel (audio_region->end ().samples ()));
end_line->set_x1 (sample_to_pixel (audio_region->end ().samples ()));
}
double
@ -270,12 +241,11 @@ AudioClipEditor::pixel_to_sample (double p)
return round (p * _spp);
}
AudioClipEditor::LineDrag::LineDrag (AudioClipEditor& ed, ArdourCanvas::Line& l)
: editor (ed)
, line (l)
: editor (ed)
, line (l)
{
line.grab();
line.grab ();
}
void
@ -286,7 +256,7 @@ AudioClipEditor::LineDrag::begin (GdkEventButton* ev)
void
AudioClipEditor::LineDrag::end (GdkEventButton* ev)
{
line.ungrab();
line.ungrab ();
}
void
@ -299,20 +269,17 @@ AudioClipEditor::LineDrag::motion (GdkEventMotion* ev)
void
AudioClipEditor::set_colors ()
{
set_background_color (UIConfiguration::instance().color (X_("theme:bg")));
set_background_color (UIConfiguration::instance ().color (X_ ("theme:bg")));
frame->set_outline_color (UIConfiguration::instance().color (X_("neutral:midground")));
frame->set_outline_color (UIConfiguration::instance ().color (X_ ("neutral:midground")));
ruler->set_fill_color (UIConfiguration::instance().color (X_("theme:bg1")));
ruler->set_outline_color (UIConfiguration::instance().color (X_("theme:contrasting less")));
start_line->set_outline_color (UIConfiguration::instance ().color (X_ ("theme:contrasting clock")));
end_line->set_outline_color (UIConfiguration::instance ().color (X_ ("theme:contrasting alt")));
loop_line->set_outline_color (UIConfiguration::instance ().color (X_ ("theme:contrasting selection")));
start_line->set_outline_color (UIConfiguration::instance().color (X_("theme:contrasting clock")));
end_line->set_outline_color (UIConfiguration::instance().color (X_("theme:contrasting alt")));
loop_line->set_outline_color (UIConfiguration::instance().color (X_("theme:contrasting selection")));
scroll_bar_trough->set_fill_color (UIConfiguration::instance().color (X_("theme:bg")));
scroll_bar_trough->set_outline_color (UIConfiguration::instance().color (X_("theme:contrasting less")));
scroll_bar_handle->set_fill_color (UIConfiguration::instance().color (X_("theme:contrasting clock")));
scroll_bar_trough->set_fill_color (UIConfiguration::instance ().color (X_ ("theme:bg")));
scroll_bar_trough->set_outline_color (UIConfiguration::instance ().color (X_ ("theme:contrasting less")));
scroll_bar_handle->set_fill_color (UIConfiguration::instance ().color (X_ ("theme:contrasting clock")));
set_waveform_colors ();
}
@ -324,20 +291,20 @@ AudioClipEditor::scroll_changed ()
return;
}
const double right_edge = scroll_bar_handle->get().x0;
const double avail_width = scroll_bar_trough->get().width() - scroll_bar_handle->get().width();
scroll_fraction = right_edge / avail_width;
scroll_fraction = std::min (1., std::max (0., scroll_fraction));
const samplepos_t s = llrintf (audio_region->source (0)->length().samples () * scroll_fraction);
const double right_edge = scroll_bar_handle->get ().x0;
const double avail_width = scroll_bar_trough->get ().width () - scroll_bar_handle->get ().width ();
scroll_fraction = right_edge / avail_width;
scroll_fraction = std::min (1., std::max (0., scroll_fraction));
const samplepos_t s = llrintf (audio_region->source (0)->length ().samples () * scroll_fraction);
scroll_to (sample_to_pixel (s), 0);
queue_draw ();
}
AudioClipEditor::ScrollDrag::ScrollDrag (AudioClipEditor& e)
: editor (e)
: editor (e)
{
e.scroll_bar_handle->grab();
e.scroll_bar_handle->grab ();
}
void
@ -357,10 +324,10 @@ void
AudioClipEditor::ScrollDrag::motion (GdkEventMotion* ev)
{
ArdourCanvas::Rectangle& r (*editor.scroll_bar_handle);
const double xdelta = ev->x - last_x;
ArdourCanvas::Rect n (r.get());
const double handle_width = n.width();
const double avail_width = editor.scroll_bar_trough->get().width() - handle_width;
const double xdelta = ev->x - last_x;
ArdourCanvas::Rect n (r.get ());
const double handle_width = n.width ();
const double avail_width = editor.scroll_bar_trough->get ().width () - handle_width;
n.x0 = std::max (0., std::min (avail_width, n.x0 + xdelta));
n.x1 = n.x0 + handle_width;
@ -374,7 +341,7 @@ AudioClipEditor::ScrollDrag::motion (GdkEventMotion* ev)
void
AudioClipEditor::drop_waves ()
{
for (auto & wave : waves) {
for (auto& wave : waves) {
delete wave;
}
@ -388,13 +355,12 @@ AudioClipEditor::set_region (boost::shared_ptr<AudioRegion> r)
audio_region = r;
uint32_t n_chans = r->n_channels ();
uint32_t n_chans = r->n_channels ();
samplecnt_t len;
len = r->source (0)->length().samples ();
len = r->source (0)->length ().samples ();
for (uint32_t n = 0; n < n_chans; ++n) {
boost::shared_ptr<Region> wr = RegionFactory::get_whole_region_for_source (r->source (n));
if (!wr) {
continue;
@ -427,24 +393,21 @@ AudioClipEditor::on_size_allocate (Gtk::Allocation& alloc)
{
GtkCanvas::on_size_allocate (alloc);
ArdourCanvas::Rect r (1, 1, alloc.get_width() - 2, alloc.get_height() - 2);
ArdourCanvas::Rect r (1, 1, alloc.get_width () - 2, alloc.get_height () - 2);
frame->set (r);
const double ruler_height = 25.;
ruler->set (Rect (2, 2, alloc.get_width() - 4, ruler_height));
const double scroll_bar_height = 10.;
const double scroll_bar_width = alloc.get_width() - 2;
const double scroll_bar_height = 10.;
const double scroll_bar_width = alloc.get_width () - 2;
const double scroll_bar_handle_left = scroll_bar_width * scroll_fraction;
scroll_bar_trough->set (Rect (1, alloc.get_height() - scroll_bar_height, scroll_bar_width, alloc.get_height()));
scroll_bar_handle->set (Rect (scroll_bar_handle_left, scroll_bar_trough->get().y0 + 1, scroll_bar_handle_left + 30., scroll_bar_trough->get().y1 - 1));
scroll_bar_trough->set (Rect (1, alloc.get_height () - scroll_bar_height, scroll_bar_width, alloc.get_height ()));
scroll_bar_handle->set (Rect (scroll_bar_handle_left, scroll_bar_trough->get ().y0 + 1, scroll_bar_handle_left + 30., scroll_bar_trough->get ().y1 - 1));
position_lines ();
start_line->set_y1 (frame->get().height() - 2. - scroll_bar_height);
end_line->set_y1 (frame->get().height() - 2. - scroll_bar_height);
loop_line->set_y1 (frame->get().height() - 2. - scroll_bar_height);
start_line->set_y1 (frame->get ().height () - 2. - scroll_bar_height);
end_line->set_y1 (frame->get ().height () - 2. - scroll_bar_height);
loop_line->set_y1 (frame->get ().height () - 2. - scroll_bar_height);
set_wave_heights ();
}
@ -458,7 +421,7 @@ AudioClipEditor::set_spp (double samples_per_pixel)
position_lines ();
for (auto & wave : waves) {
for (auto& wave : waves) {
wave->set_samples_per_pixel (_spp);
}
}
@ -466,8 +429,8 @@ AudioClipEditor::set_spp (double samples_per_pixel)
void
AudioClipEditor::set_spp_from_length (samplecnt_t len)
{
double available_width = frame->get().width();
double s = floor (len / available_width);
double available_width = frame->get ().width ();
double s = floor (len / available_width);
set_spp (s);
}
@ -475,17 +438,17 @@ AudioClipEditor::set_spp_from_length (samplecnt_t len)
void
AudioClipEditor::set_wave_heights ()
{
if (waves.empty()) {
if (waves.empty ()) {
return;
}
uint32_t n = 0;
const Distance w = frame->get().height() - scroll_bar_trough->get().height() - 2. - ruler->get().height();
Distance ht = w / waves.size();
uint32_t n = 0;
const Distance w = frame->get ().height () - scroll_bar_trough->get ().height () - 2.;
Distance ht = w / waves.size ();
for (auto & wave : waves) {
for (auto& wave : waves) {
wave->set_height (ht);
wave->set_y_position (ruler->get().height() + (n * ht));
wave->set_y_position (ruler->get ().height () + (n * ht));
++n;
}
}
@ -493,44 +456,39 @@ AudioClipEditor::set_wave_heights ()
void
AudioClipEditor::set_waveform_colors ()
{
Gtkmm2ext::Color clip = UIConfiguration::instance().color ("clipped waveform");
Gtkmm2ext::Color zero = UIConfiguration::instance().color ("zero line");
Gtkmm2ext::Color fill = UIConfiguration::instance().color ("waveform fill");
Gtkmm2ext::Color outline = UIConfiguration::instance().color ("waveform outline");
Gtkmm2ext::Color clip = UIConfiguration::instance ().color ("clipped waveform");
Gtkmm2ext::Color zero = UIConfiguration::instance ().color ("zero line");
Gtkmm2ext::Color fill = UIConfiguration::instance ().color ("waveform fill");
Gtkmm2ext::Color outline = UIConfiguration::instance ().color ("waveform outline");
for (auto & wave : waves) {
for (auto& wave : waves) {
wave->set_fill_color (fill);
wave->set_outline_color (outline);
wave->set_clip_color (clip);
wave->set_zero_color (zero);
}
}
bool
AudioClipEditor::event_handler (GdkEvent* ev)
{
switch (ev->type) {
case GDK_BUTTON_PRESS:
// PublicEditor::instance().get_selection().set (this);
break;
case GDK_ENTER_NOTIFY:
// redraw ();
break;
case GDK_LEAVE_NOTIFY:
// redraw ();
break;
default:
break;
case GDK_BUTTON_PRESS:
break;
case GDK_ENTER_NOTIFY:
break;
case GDK_LEAVE_NOTIFY:
break;
default:
break;
}
return false;
}
/* ====================================================== */
AudioClipEditorBox::AudioClipEditorBox ()
{
_header_label.set_text(_("AUDIO Region Trimmer:"));
_header_label.set_alignment(0.0, 0.5);
_header_label.set_text (_ ("AUDIO Region Trimmer:"));
_header_label.set_alignment (0.0, 0.5);
zoom_in_button.set_icon (ArdourIcon::ZoomIn);
zoom_out_button.set_icon (ArdourIcon::ZoomOut);
@ -542,13 +500,13 @@ AudioClipEditorBox::AudioClipEditorBox ()
header_box.pack_start (zoom_in_button, false, false);
header_box.pack_start (zoom_out_button, false, false);
pack_start(header_box, false, false, 6);
pack_start (header_box, false, false, 6);
editor = manage (new AudioClipEditor);
editor->set_size_request(600,120);
editor->set_size_request (600, 120);
pack_start(*editor, true, true);
editor->show();
pack_start (*editor, true, true);
editor->show ();
}
AudioClipEditorBox::~AudioClipEditorBox ()
@ -559,13 +517,13 @@ AudioClipEditorBox::~AudioClipEditorBox ()
void
AudioClipEditorBox::zoom_in_click ()
{
editor->set_spp (editor->spp() / 2.);
editor->set_spp (editor->spp () / 2.);
}
void
AudioClipEditorBox::zoom_out_click ()
{
editor->set_spp (editor->spp() * 2.);
editor->set_spp (editor->spp () * 2.);
}
void
@ -577,31 +535,20 @@ AudioClipEditorBox::set_region (boost::shared_ptr<Region> r)
return;
}
set_session(&r->session());
set_session (&r->session ());
state_connection.disconnect();
state_connection.disconnect ();
_region = r;
editor->set_region (ar);
PBD::PropertyChange interesting_stuff;
region_changed(interesting_stuff);
region_changed (interesting_stuff);
_region->PropertyChanged.connect (state_connection, invalidator (*this), boost::bind (&AudioClipEditorBox::region_changed, this, _1), gui_context());
_region->PropertyChanged.connect (state_connection, invalidator (*this), boost::bind (&AudioClipEditorBox::region_changed, this, _1), gui_context ());
}
void
AudioClipEditorBox::region_changed (const PBD::PropertyChange& what_changed)
{
//ToDo: refactor the region_editor.cc to cover this basic stuff
// if (what_changed.contains (ARDOUR::Properties::name)) {
// name_changed ();
// }
// PBD::PropertyChange interesting_stuff;
// interesting_stuff.add (ARDOUR::Properties::length);
// interesting_stuff.add (ARDOUR::Properties::start);
// if (what_changed.contains (interesting_stuff))
{
}
}

View file

@ -27,8 +27,8 @@
#include <gtkmm/table.h>
#include "ardour/ardour.h"
#include "ardour/types.h"
#include "ardour/session_handle.h"
#include "ardour/types.h"
#include "gtkmm2ext/actions.h"
#include "gtkmm2ext/bindings.h"
@ -45,19 +45,21 @@
#include "audio_clock.h"
namespace ARDOUR {
namespace ARDOUR
{
class Session;
class Location;
}
namespace ArdourCanvas {
namespace ArdourCanvas
{
class Text;
class Polygon;
}
};
namespace ArdourWaveView {
class WaveView;
namespace ArdourWaveView
{
class WaveView;
}
class ClipEditorBox : public Gtk::VBox, public ARDOUR::SessionHandlePtr
@ -66,56 +68,56 @@ public:
ClipEditorBox () {}
~ClipEditorBox () {}
virtual void set_region (boost::shared_ptr<ARDOUR::Region>) =0;
virtual void set_region (boost::shared_ptr<ARDOUR::Region>) = 0;
static void init ();
static void register_clip_editor_actions (Gtkmm2ext::Bindings*);
static void init ();
static void register_clip_editor_actions (Gtkmm2ext::Bindings*);
static Glib::RefPtr<Gtk::ActionGroup> clip_editor_actions;
};
class ClipEditor
{
public:
virtual ~ClipEditor() {}
public:
virtual ~ClipEditor () {}
virtual void zoom_in () = 0;
virtual void zoom_in () = 0;
virtual void zoom_out () = 0;
};
class AudioClipEditor : public ArdourCanvas::GtkCanvas
{
public:
public:
AudioClipEditor ();
~AudioClipEditor ();
void set_region (boost::shared_ptr<ARDOUR::AudioRegion>);
void on_size_allocate (Gtk::Allocation&);
double sample_to_pixel (ARDOUR::samplepos_t);
double sample_to_pixel (ARDOUR::samplepos_t);
samplepos_t pixel_to_sample (double);
void set_spp (double);
double spp() const { return _spp; }
void set_spp (double);
double spp () const
{
return _spp;
}
bool key_press (GdkEventKey*);
private:
ArdourCanvas::Rectangle* frame;
ArdourCanvas::ScrollGroup* waves_container;
ArdourCanvas::Container* line_container;
ArdourCanvas::Line* start_line;
ArdourCanvas::Line* end_line;
ArdourCanvas::Line* loop_line;
ArdourCanvas::Rectangle* scroll_bar_trough;
ArdourCanvas::Rectangle* scroll_bar_handle;
ArdourCanvas::Container* ruler_container;
ArdourCanvas::Ruler* ruler;
ArdourCanvas::Ruler::Metric* clip_metric;
std::vector<ArdourWaveView::WaveView *> waves;
double non_wave_height;
samplepos_t left_origin;
double _spp;
double scroll_fraction;
private:
ArdourCanvas::Rectangle* frame;
ArdourCanvas::ScrollGroup* waves_container;
ArdourCanvas::Container* line_container;
ArdourCanvas::Line* start_line;
ArdourCanvas::Line* end_line;
ArdourCanvas::Line* loop_line;
ArdourCanvas::Rectangle* scroll_bar_trough;
ArdourCanvas::Rectangle* scroll_bar_handle;
std::vector<ArdourWaveView::WaveView*> waves;
double non_wave_height;
samplepos_t left_origin;
double _spp;
double scroll_fraction;
boost::shared_ptr<ARDOUR::AudioRegion> audio_region;
void scroll_left ();
@ -138,33 +140,35 @@ class AudioClipEditor : public ArdourCanvas::GtkCanvas
void position_lines ();
void scroll_changed ();
class LineDrag {
public:
class LineDrag
{
public:
LineDrag (AudioClipEditor&, ArdourCanvas::Line&);
void begin (GdkEventButton*);
void end (GdkEventButton*);
void motion (GdkEventMotion*);
private:
AudioClipEditor& editor;
private:
AudioClipEditor& editor;
ArdourCanvas::Line& line;
};
friend class LineDrag;
LineDrag* current_line_drag;
class ScrollDrag {
public:
class ScrollDrag
{
public:
ScrollDrag (AudioClipEditor&);
void begin (GdkEventButton*);
void end (GdkEventButton*);
void motion (GdkEventMotion*);
private:
private:
AudioClipEditor& editor;
double last_x;
double last_x;
};
friend class ScrollDrag;
@ -181,13 +185,13 @@ public:
void region_changed (const PBD::PropertyChange& what_changed);
private:
Gtk::HBox header_box;
Gtk::HBox header_box;
ArdourWidgets::ArdourButton zoom_in_button;
ArdourWidgets::ArdourButton zoom_out_button;
Gtk::Label _header_label;
Gtk::Table table;
Gtk::Label _header_label;
Gtk::Table table;
AudioClipEditor *editor;
AudioClipEditor* editor;
PBD::ScopedConnection state_connection;

View file

@ -17,12 +17,12 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <algorithm>
#include "pbd/compose.h"
#include <algorithm>
#include "gtkmm2ext/actions.h"
#include "gtkmm2ext/gui_thread.h"
#include "gtkmm2ext/utils.h"
#include "gtkmm2ext/actions.h"
#include "ardour/location.h"
#include "ardour/profile.h"
@ -41,62 +41,74 @@
using namespace Gtk;
using namespace ARDOUR;
using namespace ArdourWidgets;
using std::min;
using std::max;
using std::min;
RegionPropertiesBox::RegionPropertiesBox() :
length_clock (X_("regionlength"), true, "", true, false, true)
RegionPropertiesBox::RegionPropertiesBox ()
: length_clock (X_("regionlength"), true, "", true, false, true)
, start_clock (X_("regionstart"), true, "", false, false)
, loop_length_clock (X_("regionlength"), true, "", true, false, true)
, loop_start_clock (X_("regionstart"), true, "", false, false)
, bbt_toggle (ArdourButton::led_default_elements)
, loop_toggle (ArdourButton::led_default_elements)
{
Gtk::Label *label;
int row = 0;
Gtk::Label* label;
int row = 0;
_header_label.set_alignment(0.0, 0.5);
pack_start(_header_label, false, false, 6);
_header_label.set_alignment (0.0, 0.5);
pack_start (_header_label, false, false, 6);
Gtk::Table *bpm_table = manage(new Gtk::Table());
bpm_table->set_homogeneous (false);
bpm_table->set_spacings (4);
bpm_table->set_border_width (2);
label = manage(new Gtk::Label(_("BPM:"))); label->set_alignment(1.0, 0.5);
bpm_table->attach(*label, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK );
bpm_table->attach(bpm_button, 1, 2, row, row+1, Gtk::SHRINK, Gtk::SHRINK ); row++;
Gtk::Table* bpm_table = manage (new Gtk::Table ());
bpm_table->set_homogeneous (false);
bpm_table->set_spacings (4);
bpm_table->set_border_width (2);
label = manage (new Gtk::Label (_("BPM:")));
label->set_alignment (1.0, 0.5);
bpm_table->attach (*label, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
bpm_table->attach (bpm_button, 1, 2, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
row++;
pack_start (*bpm_table, false, false);
Gtk::Table *metrum_table = manage(new Gtk::Table());
metrum_table->set_homogeneous (false);
metrum_table->set_spacings (4);
metrum_table->set_border_width (2);
label = manage(new Gtk::Label(_("Time Sig:"))); label->set_alignment(1.0, 0.5);
bpm_table->attach(*label, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK );
bpm_table->attach(metrum_button, 1, 2, row, row+1, Gtk::SHRINK, Gtk::SHRINK ); row++;
Gtk::Table* metrum_table = manage (new Gtk::Table ());
metrum_table->set_homogeneous (false);
metrum_table->set_spacings (4);
metrum_table->set_border_width (2);
label = manage (new Gtk::Label (_("Time Sig:")));
label->set_alignment (1.0, 0.5);
bpm_table->attach (*label, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
bpm_table->attach (metrum_button, 1, 2, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
row++;
pack_start (*metrum_table, false, false);
row = 0;
row = 0;
bbt_toggle.set_text(_("BBT Sync"));
table.attach(bbt_toggle, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK ); row++;
bbt_toggle.set_text (_("BBT Sync"));
table.attach (bbt_toggle, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
row++;
label = manage(new Gtk::Label(_("Start:"))); label->set_alignment(1.0, 0.5);
table.attach(*label, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK );
table.attach(start_clock, 1, 2, row, row+1, Gtk::SHRINK, Gtk::SHRINK ); row++;
label = manage (new Gtk::Label (_("Start:")));
label->set_alignment (1.0, 0.5);
table.attach (*label, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
table.attach (start_clock, 1, 2, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
row++;
label = manage(new Gtk::Label(_("Length:"))); label->set_alignment(1.0, 0.5);
table.attach(*label, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK );
table.attach(length_clock, 1, 2, row, row+1, Gtk::SHRINK, Gtk::SHRINK ); row++;
label = manage (new Gtk::Label (_("Length:")));
label->set_alignment (1.0, 0.5);
table.attach (*label, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
table.attach (length_clock, 1, 2, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
row++;
loop_toggle.set_text(_("Loop"));
table.attach(loop_toggle, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK ); row++;
loop_toggle.set_text (_("Loop"));
table.attach (loop_toggle, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
row++;
label = manage(new Gtk::Label(_("Loop Start:"))); label->set_alignment(1.0, 0.5);
table.attach(*label, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK );
table.attach(loop_start_clock, 1, 2, row, row+1, Gtk::SHRINK, Gtk::SHRINK ); row++;
label = manage (new Gtk::Label (_("Loop Start:")));
label->set_alignment (1.0, 0.5);
table.attach (*label, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
table.attach (loop_start_clock, 1, 2, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
row++;
table.set_homogeneous (false);
table.set_spacings (4);
@ -104,7 +116,7 @@ RegionPropertiesBox::RegionPropertiesBox() :
pack_start (table, false, false);
}
RegionPropertiesBox::~RegionPropertiesBox()
RegionPropertiesBox::~RegionPropertiesBox ()
{
}
@ -123,92 +135,81 @@ RegionPropertiesBox::set_session (Session* s)
void
RegionPropertiesBox::set_region (boost::shared_ptr<Region> r)
{
set_session(&r->session());
set_session (&r->session ());
state_connection.disconnect();
state_connection.disconnect ();
_region = r;
PBD::PropertyChange interesting_stuff;
region_changed(interesting_stuff);
region_changed (interesting_stuff);
_region->PropertyChanged.connect (state_connection, invalidator (*this), boost::bind (&RegionPropertiesBox::region_changed, this, _1), gui_context());
_region->PropertyChanged.connect (state_connection, invalidator (*this), boost::bind (&RegionPropertiesBox::region_changed, this, _1), gui_context ());
}
void
RegionPropertiesBox::region_changed (const PBD::PropertyChange& what_changed)
{
//ToDo: refactor the region_editor.cc to cover this basic stuff
// if (what_changed.contains (ARDOUR::Properties::name)) {
// name_changed ();
// }
// PBD::PropertyChange interesting_stuff;
// interesting_stuff.add (ARDOUR::Properties::length);
// interesting_stuff.add (ARDOUR::Properties::start);
// if (what_changed.contains (interesting_stuff))
// TODO: refactor the region_editor.cc to cover this basic stuff
{
AudioClock::Mode mode = _region->position_time_domain() == Temporal::AudioTime ? AudioClock::Samples : AudioClock::BBT;
AudioClock::Mode mode = _region->position_time_domain () == Temporal::AudioTime ? AudioClock::Samples : AudioClock::BBT;
start_clock.set_mode (mode);
length_clock.set_mode (mode);
start_clock.set (_region->start());
length_clock.set_duration (_region->length());
start_clock.set (_region->start ());
length_clock.set_duration (_region->length ());
bpm_button.set_text("122.2");
metrum_button.set_text("4/4");
bpm_button.set_text ("122.2");
metrum_button.set_text ("4/4");
}
}
/* ================== */
AudioRegionPropertiesBox::AudioRegionPropertiesBox ()
{
_header_label.set_text(_("AUDIO Region Properties:"));
_header_label.set_text (_("AUDIO Region Properties:"));
Gtk::Label *label;
Gtk::Label* label;
Gtk::Table *audio_t = manage(new Gtk::Table());
Gtk::Table* audio_t = manage (new Gtk::Table ());
audio_t->set_homogeneous (true);
audio_t->set_spacings (4);
int row = 0;
label = manage(new Gtk::Label(_("Stretch Mode:"))); label->set_alignment(1.0, 0.5);
audio_t->attach(*label, 0, 1, row, row+1, Gtk::FILL, Gtk::SHRINK );
label = manage (new Gtk::Label (_("Stretch Mode:")));
label->set_alignment (1.0, 0.5);
audio_t->attach (*label, 0, 1, row, row + 1, Gtk::FILL, Gtk::SHRINK);
stretch_selector.set_text ("Mixed");
stretch_selector.set_name ("generic button");
// stretch_selector.signal_clicked.connect (sigc::mem_fun (*this, &MidiRegionPropertiesBox::patch_enable_button_clicked));
audio_t->attach(stretch_selector, 1, 3, row, row+1, Gtk::FILL, Gtk::SHRINK );
stretch_selector.set_text ("Mixed");
stretch_selector.set_name ("generic button");
audio_t->attach (stretch_selector, 1, 3, row, row + 1, Gtk::FILL, Gtk::SHRINK);
row++;
label = manage(new Gtk::Label(_("Fades:"))); label->set_alignment(1.0, 0.5);
fade_in_enable_button.set_text (_("In"));
fade_in_enable_button.set_name ("generic button");
// fade_in_enable_button.signal_clicked.connect (sigc::mem_fun (*this, &MidiRegionPropertiesBox::patch_enable_button_clicked));
fade_out_enable_button.set_text (_("Out"));
fade_out_enable_button.set_name ("generic button");
// fade_out_enable_button.signal_clicked.connect (sigc::mem_fun (*this, &MidiRegionPropertiesBox::patch_enable_button_clicked));
audio_t->attach(*label, 0, 1, row, row+1, Gtk::FILL, Gtk::SHRINK );
audio_t->attach(fade_in_enable_button, 1, 2, row, row+1, Gtk::FILL, Gtk::SHRINK );
audio_t->attach(fade_out_enable_button, 2, 3, row, row+1, Gtk::FILL, Gtk::SHRINK );
label = manage (new Gtk::Label (_("Fades:")));
label->set_alignment (1.0, 0.5);
fade_in_enable_button.set_text (_("In"));
fade_in_enable_button.set_name ("generic button");
fade_out_enable_button.set_text (_("Out"));
fade_out_enable_button.set_name ("generic button");
audio_t->attach (*label, 0, 1, row, row + 1, Gtk::FILL, Gtk::SHRINK);
audio_t->attach (fade_in_enable_button, 1, 2, row, row + 1, Gtk::FILL, Gtk::SHRINK);
audio_t->attach (fade_out_enable_button, 2, 3, row, row + 1, Gtk::FILL, Gtk::SHRINK);
row++;
label = manage(new Gtk::Label(_("Gain:"))); label->set_alignment(1.0, 0.5);
audio_t->attach(*label, 0, 1, row, row+1, Gtk::FILL, Gtk::SHRINK );
label = manage (new Gtk::Label (_("Gain:")));
label->set_alignment (1.0, 0.5);
audio_t->attach (*label, 0, 1, row, row + 1, Gtk::FILL, Gtk::SHRINK);
gain_control.set_text (_("+6dB"));
gain_control.set_name ("generic button");
// gain_control.signal_clicked.connect (sigc::mem_fun (*this, &MidiRegionPropertiesBox::patch_enable_button_clicked));
audio_t->attach(gain_control, 1, 3, row, row+1, Gtk::FILL, Gtk::SHRINK );
gain_control.set_text (_("+6dB"));
gain_control.set_name ("generic button");
audio_t->attach (gain_control, 1, 3, row, row + 1, Gtk::FILL, Gtk::SHRINK);
row++;
pack_start(*audio_t);
pack_start (*audio_t);
}
AudioRegionPropertiesBox::~AudioRegionPropertiesBox ()
@ -220,4 +221,3 @@ AudioRegionPropertiesBox::set_region (boost::shared_ptr<Region> r)
{
RegionPropertiesBox::set_region (r);
}

View file

@ -35,7 +35,8 @@
#include "audio_clock.h"
namespace ARDOUR {
namespace ARDOUR
{
class Session;
class Location;
}
@ -54,7 +55,10 @@ protected:
boost::shared_ptr<ARDOUR::Region> _region;
Gtk::Label _header_label;
private:
void region_changed (const PBD::PropertyChange& what_changed);
Gtk::Table table;
AudioClock length_clock;
@ -63,13 +67,12 @@ private:
AudioClock loop_length_clock;
AudioClock loop_start_clock;
ArdourWidgets::ArdourButton bpm_button;
ArdourWidgets::ArdourButton metrum_button;
ArdourWidgets::ArdourButton bpm_button;
ArdourWidgets::ArdourButton metrum_button;
ArdourWidgets::ArdourButton bbt_toggle;
ArdourWidgets::ArdourButton loop_toggle;
ArdourWidgets::ArdourButton bbt_toggle;
ArdourWidgets::ArdourButton loop_toggle;
void region_changed (const PBD::PropertyChange& what_changed);
PBD::ScopedConnection state_connection;
};
@ -82,12 +85,11 @@ public:
virtual void set_region (boost::shared_ptr<ARDOUR::Region>);
private:
ArdourWidgets::ArdourButton fade_in_enable_button;
ArdourWidgets::ArdourButton fade_out_enable_button;
ArdourWidgets::ArdourButton fade_in_enable_button;
ArdourWidgets::ArdourButton fade_out_enable_button;
ArdourWidgets::ArdourButton gain_control;
ArdourWidgets::ArdourButton stretch_selector;
ArdourWidgets::ArdourButton gain_control;
ArdourWidgets::ArdourButton stretch_selector;
};
#endif /* __audio_region_properties_box_h__ */

View file

@ -17,12 +17,12 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <algorithm>
#include "pbd/compose.h"
#include <algorithm>
#include "gtkmm2ext/actions.h"
#include "gtkmm2ext/gui_thread.h"
#include "gtkmm2ext/utils.h"
#include "gtkmm2ext/actions.h"
#include "canvas/canvas.h"
#include "canvas/debug.h"
@ -48,24 +48,17 @@
using namespace Gtk;
using namespace ARDOUR;
using namespace ArdourCanvas;
using std::min;
using std::max;
/* ------------ */
using std::min;
MidiClipEditor::MidiClipEditor ()
{
// set_homogenous (true);
// set_row_spacing (4);
set_background_color (UIConfiguration::instance ().color (X_("theme:darkest")));
set_background_color (UIConfiguration::instance().color (X_("theme:darkest")));
const double scale = UIConfiguration::instance().get_ui_scale();
const double width = 600. * scale;
const double scale = UIConfiguration::instance ().get_ui_scale ();
const double width = 600. * scale;
const double height = 210. * scale;
// name = string_compose ("trigger %1", _trigger.index());
frame = new Rectangle (this);
ArdourCanvas::Rect r (0, 0, width, height);
@ -73,8 +66,6 @@ MidiClipEditor::MidiClipEditor ()
frame->set_outline_all ();
frame->Event.connect (sigc::mem_fun (*this, &MidiClipEditor::event_handler));
// selection_connection = PublicEditor::instance().get_selection().TriggersChanged.connect (sigc::mem_fun (*this, &TriggerBoxUI::selection_changed));
}
MidiClipEditor::~MidiClipEditor ()
@ -85,35 +76,30 @@ bool
MidiClipEditor::event_handler (GdkEvent* ev)
{
switch (ev->type) {
case GDK_BUTTON_PRESS:
// PublicEditor::instance().get_selection().set (this);
break;
case GDK_ENTER_NOTIFY:
// redraw ();
break;
case GDK_LEAVE_NOTIFY:
// redraw ();
break;
default:
break;
case GDK_BUTTON_PRESS:
break;
case GDK_ENTER_NOTIFY:
break;
case GDK_LEAVE_NOTIFY:
break;
default:
break;
}
return false;
}
/* ====================================================== */
MidiClipEditorBox::MidiClipEditorBox ()
{
_header_label.set_text(_("MIDI Region Trimmer:"));
_header_label.set_alignment(0.0, 0.5);
pack_start(_header_label, false, false, 6);
_header_label.set_text (_("MIDI Region Trimmer:"));
_header_label.set_alignment (0.0, 0.5);
pack_start (_header_label, false, false, 6);
editor = manage (new MidiClipEditor());
editor->set_size_request(600,120);
editor = manage (new MidiClipEditor ());
editor->set_size_request (600, 120);
pack_start(*editor, true, true);
editor->show();
pack_start (*editor, true, true);
editor->show ();
}
MidiClipEditorBox::~MidiClipEditorBox ()
@ -129,33 +115,19 @@ MidiClipEditorBox::set_session (Session* s)
void
MidiClipEditorBox::set_region (boost::shared_ptr<Region> r)
{
set_session(&r->session());
set_session (&r->session ());
state_connection.disconnect();
state_connection.disconnect ();
_region = r;
PBD::PropertyChange interesting_stuff;
region_changed(interesting_stuff);
region_changed (interesting_stuff);
_region->PropertyChanged.connect (state_connection, invalidator (*this), boost::bind (&MidiClipEditorBox::region_changed, this, _1), gui_context());
_region->PropertyChanged.connect (state_connection, invalidator (*this), boost::bind (&MidiClipEditorBox::region_changed, this, _1), gui_context ());
}
void
MidiClipEditorBox::region_changed (const PBD::PropertyChange& what_changed)
{
//ToDo: refactor the region_editor.cc to cover this basic stuff
// if (what_changed.contains (ARDOUR::Properties::name)) {
// name_changed ();
// }
// PBD::PropertyChange interesting_stuff;
// interesting_stuff.add (ARDOUR::Properties::length);
// interesting_stuff.add (ARDOUR::Properties::start);
// if (what_changed.contains (interesting_stuff))
{
}
}

View file

@ -38,25 +38,27 @@
#include "audio_clock.h"
namespace ARDOUR {
namespace ARDOUR
{
class Session;
class Location;
}
namespace ArdourCanvas {
namespace ArdourCanvas
{
class Text;
class Polygon;
};
}
class MidiClipEditor : public ArdourCanvas::GtkCanvas
{
public:
public:
MidiClipEditor ();
~MidiClipEditor ();
private:
private:
ArdourCanvas::Rectangle* frame;
bool event_handler (GdkEvent* ev);
bool event_handler (GdkEvent* ev);
};
class MidiClipEditorBox : public ClipEditorBox
@ -74,7 +76,7 @@ private:
Gtk::Label _header_label;
Gtk::Table table;
MidiClipEditor *editor;
MidiClipEditor* editor;
PBD::ScopedConnection state_connection;

View file

@ -17,12 +17,12 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <algorithm>
#include "pbd/compose.h"
#include <algorithm>
#include "gtkmm2ext/actions.h"
#include "gtkmm2ext/gui_thread.h"
#include "gtkmm2ext/utils.h"
#include "gtkmm2ext/actions.h"
#include "ardour/location.h"
#include "ardour/profile.h"
@ -43,44 +43,42 @@
using namespace Gtk;
using namespace ARDOUR;
using namespace ArdourWidgets;
using std::min;
using std::max;
using std::min;
MidiRegionPropertiesBox::MidiRegionPropertiesBox () :
patch_enable_button (ArdourButton::led_default_elements)
MidiRegionPropertiesBox::MidiRegionPropertiesBox ()
: patch_enable_button (ArdourButton::led_default_elements)
, cc_enable_button (ArdourButton::led_default_elements)
{
_header_label.set_text(_("MIDI Region Properties:"));
_header_label.set_text (_("MIDI Region Properties:"));
Gtk::Table *midi_t = manage(new Gtk::Table());
Gtk::Table* midi_t = manage (new Gtk::Table ());
midi_t->set_homogeneous (true);
midi_t->set_spacings (4);
int row = 0;
patch_enable_button.set_text (_("Send Patches"));
patch_enable_button.set_name ("generic button");
// patch_enable_button.signal_clicked.connect (sigc::mem_fun (*this, &MidiRegionPropertiesBox::patch_enable_button_clicked));
patch_enable_button.set_text (_("Send Patches"));
patch_enable_button.set_name ("generic button");
patch_selector_button.set_text (_("Patches..."));
patch_selector_button.set_name ("generic button");
// patch_selector_button.signal_clicked.connect (sigc::mem_fun (*this, &MidiRegionPropertiesBox::patch_enable_button_clicked));
patch_selector_button.set_text (_("Patches..."));
patch_selector_button.set_name ("generic button");
midi_t->attach(patch_enable_button, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK );
midi_t->attach(patch_selector_button, 1, 2, row, row+1, Gtk::SHRINK, Gtk::SHRINK ); row++;
midi_t->attach (patch_enable_button, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
midi_t->attach (patch_selector_button, 1, 2, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
row++;
cc_enable_button.set_text (_("Send CCs"));
cc_enable_button.set_name ("generic button");
// cc_enable_button.signal_clicked.connect (sigc::mem_fun (*this, &MidiRegionPropertiesBox::patch_enable_button_clicked));
cc_enable_button.set_text (_("Send CCs"));
cc_enable_button.set_name ("generic button");
cc_selector_button.set_text (_("CCs..."));
cc_selector_button.set_name ("generic button");
// cc_selector_button.signal_clicked.connect (sigc::mem_fun (*this, &MidiRegionPropertiesBox::patch_enable_button_clicked));
cc_selector_button.set_text (_("CCs..."));
cc_selector_button.set_name ("generic button");
midi_t->attach(cc_enable_button, 0, 1, row, row+1, Gtk::SHRINK, Gtk::SHRINK );
midi_t->attach(cc_selector_button, 1, 2, row, row+1, Gtk::SHRINK, Gtk::SHRINK ); row++;
midi_t->attach (cc_enable_button, 0, 1, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
midi_t->attach (cc_selector_button, 1, 2, row, row + 1, Gtk::SHRINK, Gtk::SHRINK);
row++;
pack_start(*midi_t);
pack_start (*midi_t);
}
MidiRegionPropertiesBox::~MidiRegionPropertiesBox ()
@ -92,12 +90,11 @@ MidiRegionPropertiesBox::set_region (boost::shared_ptr<Region> r)
{
RegionPropertiesBox::set_region (r);
_region->PropertyChanged.connect (midi_state_connection, invalidator (*this), boost::bind (&MidiRegionPropertiesBox::region_changed, this, _1), gui_context());
_region->PropertyChanged.connect (midi_state_connection, invalidator (*this), boost::bind (&MidiRegionPropertiesBox::region_changed, this, _1), gui_context ());
}
void
MidiRegionPropertiesBox::region_changed (const PBD::PropertyChange& what_changed)
{
//CC and Pgm stuff ...?
/* CC and Pgm stuff ...? */
}

View file

@ -33,7 +33,8 @@
#include "audio_region_properties_box.h"
namespace ARDOUR {
namespace ARDOUR
{
class Session;
class Location;
}
@ -47,15 +48,15 @@ public:
void set_region (boost::shared_ptr<ARDOUR::Region>);
private:
PBD::ScopedConnection midi_state_connection;
void region_changed (const PBD::PropertyChange& what_changed);
ArdourWidgets::ArdourButton patch_enable_button;
ArdourWidgets::ArdourButton patch_selector_button;
PBD::ScopedConnection midi_state_connection;
ArdourWidgets::ArdourButton cc_enable_button;
ArdourWidgets::ArdourButton cc_selector_button;
ArdourWidgets::ArdourButton patch_enable_button;
ArdourWidgets::ArdourButton patch_selector_button;
ArdourWidgets::ArdourButton cc_enable_button;
ArdourWidgets::ArdourButton cc_selector_button;
};
#endif /* __midi_region_properties_box_h__ */

View file

@ -37,17 +37,17 @@
#include "public_editor.h"
#include "timers.h"
#include "audio_region_properties_box.h"
#include "midi_region_properties_box.h"
#include "audio_region_operations_box.h"
#include "midi_region_operations_box.h"
#include "slot_properties_box.h"
#include "audio_region_properties_box.h"
#include "midi_clip_editor.h"
#include "midi_region_operations_box.h"
#include "midi_region_properties_box.h"
#include "slot_properties_box.h"
#include "trigger_page.h"
#include "trigger_strip.h"
#include "cuebox_ui.h"
#include "trigger_master.h"
#include "trigger_page.h"
#include "trigger_strip.h"
#include "ui_config.h"
#include "utils.h"
@ -63,33 +63,33 @@ using namespace std;
TriggerPage::TriggerPage ()
: Tabbable (_content, _("Trigger Drom"), X_("trigger"))
, _master_widget(32, 16.)
, _master_widget (32, 16.)
{
load_bindings ();
register_actions ();
/* spacer to account for the trigger strip frame */
ArdourVSpacer *spacer = manage(new ArdourVSpacer());
spacer->set_size_request(-1,1);
ArdourVSpacer* spacer = manage (new ArdourVSpacer ());
spacer->set_size_request (-1, 1);
_slot_area_box.pack_start (*spacer, Gtk::PACK_SHRINK);
CueBoxWidget *cue_box = manage(new CueBoxWidget(32, TriggerBox::default_triggers_per_box*16.));
CueBoxWidget* cue_box = manage (new CueBoxWidget (32, TriggerBox::default_triggers_per_box * 16.));
_slot_area_box.pack_start (*cue_box, Gtk::PACK_SHRINK);
_master = new CueMaster(_master_widget.root());
_master = new CueMaster (_master_widget.root ());
_slot_area_box.pack_start (_master_widget, Gtk::PACK_SHRINK);
_midi_prop_box = new MidiRegionPropertiesBox ();
_slot_prop_box = new SlotPropertiesBox ();
_audio_prop_box = new AudioRegionPropertiesBox ();
_midi_prop_box = new MidiRegionPropertiesBox ();
_midi_prop_box = new MidiRegionPropertiesBox ();
_audio_ops_box = new AudioRegionOperationsBox ();
_midi_ops_box = new MidiRegionOperationsBox ();
_midi_ops_box = new MidiRegionOperationsBox ();
_audio_trim_box = new AudioClipEditorBox ();
_midi_trim_box = new MidiClipEditorBox ();
_midi_trim_box = new MidiClipEditorBox ();
Gtk::Table* table = manage (new Gtk::Table);
table->set_homogeneous (false);
@ -97,17 +97,23 @@ TriggerPage::TriggerPage ()
table->set_border_width (8);
int col = 0;
table->attach(*_slot_prop_box, col, col+1, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND );
table->attach (*_slot_prop_box, col, col + 1, 0, 1, Gtk::FILL | Gtk::EXPAND, Gtk::FILL | Gtk::EXPAND);
col=1;
table->attach(*_audio_prop_box, col, col+1, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND ); col++;
table->attach(*_audio_trim_box, col, col+1, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND ); col++;
table->attach(*_audio_ops_box, col, col+1, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND ); col++;
col = 1;
table->attach (*_audio_prop_box, col, col + 1, 0, 1, Gtk::FILL | Gtk::EXPAND, Gtk::FILL | Gtk::EXPAND);
col++;
table->attach (*_audio_trim_box, col, col + 1, 0, 1, Gtk::FILL | Gtk::EXPAND, Gtk::FILL | Gtk::EXPAND);
col++;
table->attach (*_audio_ops_box, col, col + 1, 0, 1, Gtk::FILL | Gtk::EXPAND, Gtk::FILL | Gtk::EXPAND);
col++;
col=1; /* audio and midi boxen share the same table locations; shown and hidden depending on region type */
table->attach(*_midi_prop_box, col, col+1, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND ); col++;
table->attach(*_midi_trim_box, col, col+1, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND ); col++;
table->attach(*_midi_ops_box, col, col+1, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND ); col++;
col = 1; /* audio and midi boxen share the same table locations; shown and hidden depending on region type */
table->attach (*_midi_prop_box, col, col + 1, 0, 1, Gtk::FILL | Gtk::EXPAND, Gtk::FILL | Gtk::EXPAND);
col++;
table->attach (*_midi_trim_box, col, col + 1, 0, 1, Gtk::FILL | Gtk::EXPAND, Gtk::FILL | Gtk::EXPAND);
col++;
table->attach (*_midi_ops_box, col, col + 1, 0, 1, Gtk::FILL | Gtk::EXPAND, Gtk::FILL | Gtk::EXPAND);
col++;
_parameter_box.pack_start (*table);
@ -124,7 +130,7 @@ TriggerPage::TriggerPage ()
/* last item of strip packer */
_strip_packer.pack_end (_no_strips, true, true);
_no_strips.set_size_request (PX_SCALE (60), -1);
_no_strips.signal_expose_event().connect (sigc::bind (sigc::ptr_fun(&ArdourWidgets::ArdourIcon::expose), &_no_strips, ArdourWidgets::ArdourIcon::CloseCross));
_no_strips.signal_expose_event ().connect (sigc::bind (sigc::ptr_fun (&ArdourWidgets::ArdourIcon::expose), &_no_strips, ArdourWidgets::ArdourIcon::CloseCross));
_strip_group_box.pack_start (_slot_area_box, false, false);
_strip_group_box.pack_start (_strip_scroller, true, true);
@ -261,23 +267,23 @@ TriggerPage::set_session (Session* s)
_session->config.ParameterChanged.connect (_session_connections, invalidator (*this), boost::bind (&TriggerPage::parameter_changed, this, _1), gui_context ());
Editor::instance().get_selection().TriggersChanged.connect (sigc::mem_fun (*this, &TriggerPage::selection_changed));
Editor::instance ().get_selection ().TriggersChanged.connect (sigc::mem_fun (*this, &TriggerPage::selection_changed));
initial_track_display ();
_slot_prop_box->set_session(s);
_slot_prop_box->set_session (s);
_audio_prop_box->set_session(s);
_audio_ops_box->set_session(s);
_audio_trim_box->set_session(s);
_audio_prop_box->set_session (s);
_audio_ops_box->set_session (s);
_audio_trim_box->set_session (s);
_midi_prop_box->set_session(s);
_midi_ops_box->set_session(s);
_midi_trim_box->set_session(s);
_midi_prop_box->set_session (s);
_midi_ops_box->set_session (s);
_midi_trim_box->set_session (s);
update_title ();
start_updating ();
selection_changed();
selection_changed ();
}
void
@ -343,42 +349,42 @@ TriggerPage::initial_track_display ()
void
TriggerPage::selection_changed ()
{
Selection& selection (Editor::instance().get_selection());
Selection& selection (Editor::instance ().get_selection ());
_slot_prop_box->hide();
_slot_prop_box->hide ();
_audio_ops_box->hide();
_audio_prop_box->hide();
_audio_trim_box->hide();
_audio_ops_box->hide ();
_audio_prop_box->hide ();
_audio_trim_box->hide ();
_midi_ops_box->hide();
_midi_prop_box->hide();
_midi_trim_box->hide();
_midi_ops_box->hide ();
_midi_prop_box->hide ();
_midi_trim_box->hide ();
_parameter_box.hide ();
if (!selection.triggers.empty()) {
TriggerSelection ts = selection.triggers;
TriggerEntry* entry = *ts.begin();
Trigger* slot = &entry->trigger();
if (!selection.triggers.empty ()) {
TriggerSelection ts = selection.triggers;
TriggerEntry* entry = *ts.begin ();
Trigger* slot = &entry->trigger ();
_slot_prop_box->set_slot(slot);
_slot_prop_box->show();
if (slot->region()) {
if (slot->region()->data_type() == DataType::AUDIO) {
_audio_prop_box->set_region(slot->region());
_audio_trim_box->set_region(slot->region());
_slot_prop_box->set_slot (slot);
_slot_prop_box->show ();
if (slot->region ()) {
if (slot->region ()->data_type () == DataType::AUDIO) {
_audio_prop_box->set_region (slot->region ());
_audio_trim_box->set_region (slot->region ());
_audio_prop_box->show();
_audio_trim_box->show();
_audio_ops_box->show();
_audio_prop_box->show ();
_audio_trim_box->show ();
_audio_ops_box->show ();
} else {
_midi_prop_box->set_region(slot->region());
_midi_trim_box->set_region(slot->region());
_midi_prop_box->set_region (slot->region ());
_midi_trim_box->set_region (slot->region ());
_midi_prop_box->show();
_midi_trim_box->show();
_midi_ops_box->show();
_midi_prop_box->show ();
_midi_trim_box->show ();
_midi_ops_box->show ();
}
}
_parameter_box.show ();
@ -403,7 +409,7 @@ TriggerPage::add_routes (RouteList& rl)
}
#endif
if (!(*r)->triggerbox()) {
if (!(*r)->triggerbox ()) {
/* This Route has no TriggerBox -- and can never have one */
continue;
}
@ -437,17 +443,17 @@ TriggerPage::redisplay_track_list ()
{
bool visible_triggers = false;
for (list<TriggerStrip*>::iterator i = _strips.begin (); i != _strips.end (); ++i) {
TriggerStrip* strip = *i;
boost::shared_ptr<Stripable> s = strip->stripable ();
boost::shared_ptr<Route> route = boost::dynamic_pointer_cast<Route> (s);
TriggerStrip* strip = *i;
boost::shared_ptr<Stripable> s = strip->stripable ();
boost::shared_ptr<Route> route = boost::dynamic_pointer_cast<Route> (s);
bool hidden = s->presentation_info ().hidden ();
if (!(s)->presentation_info ().trigger_track ()) {
hidden = true;
}
assert (route && route->triggerbox());
if (!route || !route->triggerbox()) {
assert (route && route->triggerbox ());
if (!route || !route->triggerbox ()) {
hidden = true;
}

View file

@ -69,7 +69,7 @@ private:
void pi_property_changed (PBD::PropertyChange const&);
void stripable_property_changed (PBD::PropertyChange const&, boost::weak_ptr<ARDOUR::Stripable>);
void selection_changed ();
void selection_changed ();
PBD::ScopedConnectionList editor_connections;
gint start_updating ();
@ -89,18 +89,18 @@ private:
Gtk::VBox _browser_box;
Gtk::HBox _parameter_box;
FittedCanvasWidget _master_widget;
CueMaster *_master;
FittedCanvasWidget _master_widget;
CueMaster* _master;
SlotPropertiesBox* _slot_prop_box;
AudioRegionPropertiesBox* _audio_prop_box;
AudioRegionOperationsBox* _audio_ops_box;
AudioClipEditorBox* _audio_trim_box;
AudioClipEditorBox* _audio_trim_box;
MidiRegionPropertiesBox* _midi_prop_box;
MidiRegionOperationsBox* _midi_ops_box;
MidiClipEditorBox* _midi_trim_box;
MidiClipEditorBox* _midi_trim_box;
std::list<TriggerStrip*> _strips;
sigc::connection _fast_screen_update_connection;

View file

@ -61,9 +61,9 @@ TriggerStrip::TriggerStrip (Session* s, boost::shared_ptr<ARDOUR::Route> rt)
, RouteUI (s)
, _clear_meters (true)
, _pb_selection ()
, _master_widget ( -1, 16 )
, _master_widget (-1, 16)
, _processor_box (s, boost::bind (&TriggerStrip::plugin_selector, this), _pb_selection, 0)
, _trigger_display (*rt->triggerbox (), -1., TriggerBox::default_triggers_per_box*16.)
, _trigger_display (*rt->triggerbox (), -1., TriggerBox::default_triggers_per_box * 16.)
, _panners (s)
, _level_meter (s)
{
@ -145,12 +145,12 @@ TriggerStrip::init ()
global_frame.set_shadow_type (Gtk::SHADOW_IN);
global_frame.set_name ("BaseFrame");
Gtk::VBox *outer_vpacker = manage(new Gtk::VBox);
Gtk::VBox* outer_vpacker = manage (new Gtk::VBox);
outer_vpacker->pack_start (_trigger_display, Gtk::PACK_SHRINK);
outer_vpacker->pack_start (_master_widget, Gtk::PACK_SHRINK);
outer_vpacker->pack_start (global_frame, true, true);
outer_vpacker->show();
outer_vpacker->show ();
add (*outer_vpacker);
@ -191,8 +191,8 @@ TriggerStrip::set_route (boost::shared_ptr<Route> rt)
{
RouteUI::set_route (rt);
_master = new TriggerMaster(_master_widget.root(), _route->triggerbox());
_master = new TriggerMaster (_master_widget.root (), _route->triggerbox ());
_processor_box.set_route (rt);
/* Fader/Gain */

View file

@ -120,13 +120,13 @@ private:
Gtk::Table volume_table;
/* Widgets */
FittedCanvasWidget _master_widget;
TriggerMaster *_master;
FittedCanvasWidget _master_widget;
TriggerMaster* _master;
ArdourWidgets::ArdourButton _name_button;
ProcessorBox _processor_box;
TriggerBoxWidget _trigger_display;
PannerUI _panners;
ArdourWidgets::ArdourButton _name_button;
ProcessorBox _processor_box;
TriggerBoxWidget _trigger_display;
PannerUI _panners;
LevelMeterVBox _level_meter;
boost::shared_ptr<AutomationController> _gain_control;
};