mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 14:54:56 +01:00
Reduce header dependencies.
git-svn-id: svn://localhost/ardour2/branches/3.0@4490 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
dc6571fb29
commit
ee4e28751e
7 changed files with 110 additions and 88 deletions
|
|
@ -29,6 +29,7 @@
|
||||||
#include "ardour/session.h"
|
#include "ardour/session.h"
|
||||||
#include "ardour/route.h"
|
#include "ardour/route.h"
|
||||||
#include "port_matrix.h"
|
#include "port_matrix.h"
|
||||||
|
#include "port_matrix_body.h"
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
|
|
||||||
/** PortMatrix constructor.
|
/** PortMatrix constructor.
|
||||||
|
|
@ -38,7 +39,6 @@
|
||||||
PortMatrix::PortMatrix (ARDOUR::Session& session, ARDOUR::DataType type)
|
PortMatrix::PortMatrix (ARDOUR::Session& session, ARDOUR::DataType type)
|
||||||
: _session (session),
|
: _session (session),
|
||||||
_type (type),
|
_type (type),
|
||||||
_body (this),
|
|
||||||
_column_visibility_box_added (false),
|
_column_visibility_box_added (false),
|
||||||
_row_visibility_box_added (false),
|
_row_visibility_box_added (false),
|
||||||
_menu (0),
|
_menu (0),
|
||||||
|
|
@ -47,6 +47,8 @@ PortMatrix::PortMatrix (ARDOUR::Session& session, ARDOUR::DataType type)
|
||||||
_row_index (0),
|
_row_index (0),
|
||||||
_column_index (1)
|
_column_index (1)
|
||||||
{
|
{
|
||||||
|
_body = new PortMatrixBody (this);
|
||||||
|
|
||||||
_ports[0].set_type (type);
|
_ports[0].set_type (type);
|
||||||
_ports[1].set_type (type);
|
_ports[1].set_type (type);
|
||||||
|
|
||||||
|
|
@ -66,6 +68,8 @@ PortMatrix::PortMatrix (ARDOUR::Session& session, ARDOUR::DataType type)
|
||||||
|
|
||||||
PortMatrix::~PortMatrix ()
|
PortMatrix::~PortMatrix ()
|
||||||
{
|
{
|
||||||
|
delete _body;
|
||||||
|
|
||||||
for (std::vector<Gtk::CheckButton*>::iterator i = _column_visibility_buttons.begin(); i != _column_visibility_buttons.end(); ++i) {
|
for (std::vector<Gtk::CheckButton*>::iterator i = _column_visibility_buttons.begin(); i != _column_visibility_buttons.end(); ++i) {
|
||||||
delete *i;
|
delete *i;
|
||||||
}
|
}
|
||||||
|
|
@ -106,7 +110,7 @@ void
|
||||||
PortMatrix::setup ()
|
PortMatrix::setup ()
|
||||||
{
|
{
|
||||||
select_arrangement ();
|
select_arrangement ();
|
||||||
_body.setup ();
|
_body->setup ();
|
||||||
setup_scrollbars ();
|
setup_scrollbars ();
|
||||||
queue_draw ();
|
queue_draw ();
|
||||||
|
|
||||||
|
|
@ -132,7 +136,7 @@ PortMatrix::setup ()
|
||||||
_row_visibility_buttons.clear ();
|
_row_visibility_buttons.clear ();
|
||||||
|
|
||||||
_scroller_table.remove (_vscroll);
|
_scroller_table.remove (_vscroll);
|
||||||
_scroller_table.remove (_body);
|
_scroller_table.remove (*_body);
|
||||||
_scroller_table.remove (_hscroll);
|
_scroller_table.remove (_hscroll);
|
||||||
|
|
||||||
_main_hbox.remove (_scroller_table);
|
_main_hbox.remove (_scroller_table);
|
||||||
|
|
@ -175,7 +179,7 @@ PortMatrix::setup ()
|
||||||
if (_arrangement == TOP_TO_RIGHT) {
|
if (_arrangement == TOP_TO_RIGHT) {
|
||||||
|
|
||||||
_scroller_table.attach (_hscroll, 0, 1, 0, 1, Gtk::FILL | Gtk::EXPAND, Gtk::SHRINK);
|
_scroller_table.attach (_hscroll, 0, 1, 0, 1, Gtk::FILL | Gtk::EXPAND, Gtk::SHRINK);
|
||||||
_scroller_table.attach (_body, 0, 1, 1, 2);
|
_scroller_table.attach (*_body, 0, 1, 1, 2);
|
||||||
_scroller_table.attach (_vscroll, 1, 2, 1, 2, Gtk::SHRINK);
|
_scroller_table.attach (_vscroll, 1, 2, 1, 2, Gtk::SHRINK);
|
||||||
|
|
||||||
_main_hbox.pack_start (_scroller_table);
|
_main_hbox.pack_start (_scroller_table);
|
||||||
|
|
@ -198,7 +202,7 @@ PortMatrix::setup ()
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
_scroller_table.attach (_vscroll, 0, 1, 0, 1, Gtk::SHRINK);
|
_scroller_table.attach (_vscroll, 0, 1, 0, 1, Gtk::SHRINK);
|
||||||
_scroller_table.attach (_body, 1, 2, 0, 1);
|
_scroller_table.attach (*_body, 1, 2, 0, 1);
|
||||||
_scroller_table.attach (_hscroll, 1, 2, 1, 2, Gtk::FILL | Gtk::EXPAND, Gtk::SHRINK);
|
_scroller_table.attach (_hscroll, 1, 2, 1, 2, Gtk::FILL | Gtk::EXPAND, Gtk::SHRINK);
|
||||||
|
|
||||||
if (rows()->size() > 1) {
|
if (rows()->size() > 1) {
|
||||||
|
|
@ -237,13 +241,13 @@ PortMatrix::set_type (ARDOUR::DataType t)
|
||||||
void
|
void
|
||||||
PortMatrix::hscroll_changed ()
|
PortMatrix::hscroll_changed ()
|
||||||
{
|
{
|
||||||
_body.set_xoffset (_hscroll.get_adjustment()->get_value());
|
_body->set_xoffset (_hscroll.get_adjustment()->get_value());
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PortMatrix::vscroll_changed ()
|
PortMatrix::vscroll_changed ()
|
||||||
{
|
{
|
||||||
_body.set_yoffset (_vscroll.get_adjustment()->get_value());
|
_body->set_yoffset (_vscroll.get_adjustment()->get_value());
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -251,15 +255,15 @@ PortMatrix::setup_scrollbars ()
|
||||||
{
|
{
|
||||||
Gtk::Adjustment* a = _hscroll.get_adjustment ();
|
Gtk::Adjustment* a = _hscroll.get_adjustment ();
|
||||||
a->set_lower (0);
|
a->set_lower (0);
|
||||||
a->set_upper (_body.full_scroll_width());
|
a->set_upper (_body->full_scroll_width());
|
||||||
a->set_page_size (_body.alloc_scroll_width());
|
a->set_page_size (_body->alloc_scroll_width());
|
||||||
a->set_step_increment (32);
|
a->set_step_increment (32);
|
||||||
a->set_page_increment (128);
|
a->set_page_increment (128);
|
||||||
|
|
||||||
a = _vscroll.get_adjustment ();
|
a = _vscroll.get_adjustment ();
|
||||||
a->set_lower (0);
|
a->set_lower (0);
|
||||||
a->set_upper (_body.full_scroll_height());
|
a->set_upper (_body->full_scroll_height());
|
||||||
a->set_page_size (_body.alloc_scroll_height());
|
a->set_page_size (_body->alloc_scroll_height());
|
||||||
a->set_step_increment (32);
|
a->set_step_increment (32);
|
||||||
a->set_page_increment (128);
|
a->set_page_increment (128);
|
||||||
}
|
}
|
||||||
|
|
@ -288,7 +292,7 @@ PortMatrix::disassociate_all ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_body.rebuild_and_draw_grid ();
|
_body->rebuild_and_draw_grid ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Decide how to arrange the components of the matrix */
|
/* Decide how to arrange the components of the matrix */
|
||||||
|
|
@ -347,7 +351,7 @@ PortMatrix::visibility_toggled (boost::weak_ptr<PortGroup> w, Gtk::CheckButton*
|
||||||
}
|
}
|
||||||
|
|
||||||
g->set_visible (b->get_active());
|
g->set_visible (b->get_active());
|
||||||
_body.setup ();
|
_body->setup ();
|
||||||
setup_scrollbars ();
|
setup_scrollbars ();
|
||||||
queue_draw ();
|
queue_draw ();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
#include <gtkmm/label.h>
|
#include <gtkmm/label.h>
|
||||||
#include <gtkmm/checkbutton.h>
|
#include <gtkmm/checkbutton.h>
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include "port_matrix_body.h"
|
#include "ardour/bundle.h"
|
||||||
#include "port_group.h"
|
#include "port_group.h"
|
||||||
|
|
||||||
/** The `port matrix' UI. This is a widget which lets the user alter
|
/** The `port matrix' UI. This is a widget which lets the user alter
|
||||||
|
|
@ -43,6 +43,8 @@ namespace ARDOUR {
|
||||||
class Bundle;
|
class Bundle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class PortMatrixBody;
|
||||||
|
|
||||||
class PortMatrix : public Gtk::VBox
|
class PortMatrix : public Gtk::VBox
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
@ -144,7 +146,7 @@ private:
|
||||||
ARDOUR::DataType _type;
|
ARDOUR::DataType _type;
|
||||||
std::vector<sigc::connection> _route_connections;
|
std::vector<sigc::connection> _route_connections;
|
||||||
|
|
||||||
PortMatrixBody _body;
|
PortMatrixBody* _body;
|
||||||
Gtk::HScrollbar _hscroll;
|
Gtk::HScrollbar _hscroll;
|
||||||
Gtk::VScrollbar _vscroll;
|
Gtk::VScrollbar _vscroll;
|
||||||
Gtk::HBox _main_hbox;
|
Gtk::HBox _main_hbox;
|
||||||
|
|
|
||||||
|
|
@ -22,21 +22,32 @@
|
||||||
#include "ardour/types.h"
|
#include "ardour/types.h"
|
||||||
#include "port_matrix_body.h"
|
#include "port_matrix_body.h"
|
||||||
#include "port_matrix.h"
|
#include "port_matrix.h"
|
||||||
|
#include "port_matrix_column_labels.h"
|
||||||
|
#include "port_matrix_row_labels.h"
|
||||||
|
#include "port_matrix_grid.h"
|
||||||
|
|
||||||
PortMatrixBody::PortMatrixBody (PortMatrix* p)
|
PortMatrixBody::PortMatrixBody (PortMatrix* p)
|
||||||
: _matrix (p),
|
: _matrix (p),
|
||||||
_column_labels (p, this),
|
|
||||||
_row_labels (p, this),
|
|
||||||
_grid (p, this),
|
|
||||||
_xoffset (0),
|
_xoffset (0),
|
||||||
_yoffset (0),
|
_yoffset (0),
|
||||||
_mouse_over_grid (false)
|
_mouse_over_grid (false)
|
||||||
{
|
{
|
||||||
|
_column_labels = new PortMatrixColumnLabels (p, this);
|
||||||
|
_row_labels = new PortMatrixRowLabels (p, this);
|
||||||
|
_grid = new PortMatrixGrid (p, this);
|
||||||
|
|
||||||
modify_bg (Gtk::STATE_NORMAL, Gdk::Color ("#00000"));
|
modify_bg (Gtk::STATE_NORMAL, Gdk::Color ("#00000"));
|
||||||
add_events (Gdk::LEAVE_NOTIFY_MASK | Gdk::POINTER_MOTION_MASK);
|
add_events (Gdk::LEAVE_NOTIFY_MASK | Gdk::POINTER_MOTION_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PortMatrixBody::~PortMatrixBody ()
|
||||||
|
{
|
||||||
|
delete _column_labels;
|
||||||
|
delete _row_labels;
|
||||||
|
delete _grid;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
PortMatrixBody::on_expose_event (GdkEventExpose* event)
|
PortMatrixBody::on_expose_event (GdkEventExpose* event)
|
||||||
{
|
{
|
||||||
|
|
@ -46,15 +57,15 @@ PortMatrixBody::on_expose_event (GdkEventExpose* event)
|
||||||
|
|
||||||
bool intersects;
|
bool intersects;
|
||||||
Gdk::Rectangle r = exposure;
|
Gdk::Rectangle r = exposure;
|
||||||
r.intersect (_column_labels.parent_rectangle(), intersects);
|
r.intersect (_column_labels->parent_rectangle(), intersects);
|
||||||
|
|
||||||
if (intersects) {
|
if (intersects) {
|
||||||
gdk_draw_drawable (
|
gdk_draw_drawable (
|
||||||
get_window()->gobj(),
|
get_window()->gobj(),
|
||||||
get_style()->get_fg_gc (Gtk::STATE_NORMAL)->gobj(),
|
get_style()->get_fg_gc (Gtk::STATE_NORMAL)->gobj(),
|
||||||
_column_labels.get_pixmap (get_window()->gobj()),
|
_column_labels->get_pixmap (get_window()->gobj()),
|
||||||
_column_labels.parent_to_component_x (r.get_x()),
|
_column_labels->parent_to_component_x (r.get_x()),
|
||||||
_column_labels.parent_to_component_y (r.get_y()),
|
_column_labels->parent_to_component_y (r.get_y()),
|
||||||
r.get_x(),
|
r.get_x(),
|
||||||
r.get_y(),
|
r.get_y(),
|
||||||
r.get_width(),
|
r.get_width(),
|
||||||
|
|
@ -63,15 +74,15 @@ PortMatrixBody::on_expose_event (GdkEventExpose* event)
|
||||||
}
|
}
|
||||||
|
|
||||||
r = exposure;
|
r = exposure;
|
||||||
r.intersect (_row_labels.parent_rectangle(), intersects);
|
r.intersect (_row_labels->parent_rectangle(), intersects);
|
||||||
|
|
||||||
if (intersects) {
|
if (intersects) {
|
||||||
gdk_draw_drawable (
|
gdk_draw_drawable (
|
||||||
get_window()->gobj(),
|
get_window()->gobj(),
|
||||||
get_style()->get_fg_gc (Gtk::STATE_NORMAL)->gobj(),
|
get_style()->get_fg_gc (Gtk::STATE_NORMAL)->gobj(),
|
||||||
_row_labels.get_pixmap (get_window()->gobj()),
|
_row_labels->get_pixmap (get_window()->gobj()),
|
||||||
_row_labels.parent_to_component_x (r.get_x()),
|
_row_labels->parent_to_component_x (r.get_x()),
|
||||||
_row_labels.parent_to_component_y (r.get_y()),
|
_row_labels->parent_to_component_y (r.get_y()),
|
||||||
r.get_x(),
|
r.get_x(),
|
||||||
r.get_y(),
|
r.get_y(),
|
||||||
r.get_width(),
|
r.get_width(),
|
||||||
|
|
@ -80,15 +91,15 @@ PortMatrixBody::on_expose_event (GdkEventExpose* event)
|
||||||
}
|
}
|
||||||
|
|
||||||
r = exposure;
|
r = exposure;
|
||||||
r.intersect (_grid.parent_rectangle(), intersects);
|
r.intersect (_grid->parent_rectangle(), intersects);
|
||||||
|
|
||||||
if (intersects) {
|
if (intersects) {
|
||||||
gdk_draw_drawable (
|
gdk_draw_drawable (
|
||||||
get_window()->gobj(),
|
get_window()->gobj(),
|
||||||
get_style()->get_fg_gc (Gtk::STATE_NORMAL)->gobj(),
|
get_style()->get_fg_gc (Gtk::STATE_NORMAL)->gobj(),
|
||||||
_grid.get_pixmap (get_window()->gobj()),
|
_grid->get_pixmap (get_window()->gobj()),
|
||||||
_grid.parent_to_component_x (r.get_x()),
|
_grid->parent_to_component_x (r.get_x()),
|
||||||
_grid.parent_to_component_y (r.get_y()),
|
_grid->parent_to_component_y (r.get_y()),
|
||||||
r.get_x(),
|
r.get_x(),
|
||||||
r.get_y(),
|
r.get_y(),
|
||||||
r.get_width(),
|
r.get_width(),
|
||||||
|
|
@ -99,18 +110,18 @@ PortMatrixBody::on_expose_event (GdkEventExpose* event)
|
||||||
cairo_t* cr = gdk_cairo_create (get_window()->gobj());
|
cairo_t* cr = gdk_cairo_create (get_window()->gobj());
|
||||||
|
|
||||||
cairo_save (cr);
|
cairo_save (cr);
|
||||||
set_cairo_clip (cr, _grid.parent_rectangle ());
|
set_cairo_clip (cr, _grid->parent_rectangle ());
|
||||||
_grid.draw_extra (cr);
|
_grid->draw_extra (cr);
|
||||||
cairo_restore (cr);
|
cairo_restore (cr);
|
||||||
|
|
||||||
cairo_save (cr);
|
cairo_save (cr);
|
||||||
set_cairo_clip (cr, _row_labels.parent_rectangle ());
|
set_cairo_clip (cr, _row_labels->parent_rectangle ());
|
||||||
_row_labels.draw_extra (cr);
|
_row_labels->draw_extra (cr);
|
||||||
cairo_restore (cr);
|
cairo_restore (cr);
|
||||||
|
|
||||||
cairo_save (cr);
|
cairo_save (cr);
|
||||||
set_cairo_clip (cr, _column_labels.parent_rectangle ());
|
set_cairo_clip (cr, _column_labels->parent_rectangle ());
|
||||||
_column_labels.draw_extra (cr);
|
_column_labels->draw_extra (cr);
|
||||||
cairo_restore (cr);
|
cairo_restore (cr);
|
||||||
|
|
||||||
cairo_destroy (cr);
|
cairo_destroy (cr);
|
||||||
|
|
@ -121,9 +132,9 @@ PortMatrixBody::on_expose_event (GdkEventExpose* event)
|
||||||
void
|
void
|
||||||
PortMatrixBody::on_size_request (Gtk::Requisition *req)
|
PortMatrixBody::on_size_request (Gtk::Requisition *req)
|
||||||
{
|
{
|
||||||
std::pair<int, int> const col = _column_labels.dimensions ();
|
std::pair<int, int> const col = _column_labels->dimensions ();
|
||||||
std::pair<int, int> const row = _row_labels.dimensions ();
|
std::pair<int, int> const row = _row_labels->dimensions ();
|
||||||
std::pair<int, int> const grid = _grid.dimensions ();
|
std::pair<int, int> const grid = _grid->dimensions ();
|
||||||
|
|
||||||
/* don't ask for the maximum size of our contents, otherwise GTK won't
|
/* don't ask for the maximum size of our contents, otherwise GTK won't
|
||||||
let the containing window shrink below this size */
|
let the containing window shrink below this size */
|
||||||
|
|
@ -148,9 +159,9 @@ void
|
||||||
PortMatrixBody::compute_rectangles ()
|
PortMatrixBody::compute_rectangles ()
|
||||||
{
|
{
|
||||||
/* full sizes of components */
|
/* full sizes of components */
|
||||||
std::pair<uint32_t, uint32_t> const col = _column_labels.dimensions ();
|
std::pair<uint32_t, uint32_t> const col = _column_labels->dimensions ();
|
||||||
std::pair<uint32_t, uint32_t> const row = _row_labels.dimensions ();
|
std::pair<uint32_t, uint32_t> const row = _row_labels->dimensions ();
|
||||||
std::pair<uint32_t, uint32_t> const grid = _grid.dimensions ();
|
std::pair<uint32_t, uint32_t> const grid = _grid->dimensions ();
|
||||||
|
|
||||||
Gdk::Rectangle col_rect;
|
Gdk::Rectangle col_rect;
|
||||||
Gdk::Rectangle row_rect;
|
Gdk::Rectangle row_rect;
|
||||||
|
|
@ -239,9 +250,9 @@ PortMatrixBody::compute_rectangles ()
|
||||||
row_rect.set_y (grid_rect.get_y());
|
row_rect.set_y (grid_rect.get_y());
|
||||||
}
|
}
|
||||||
|
|
||||||
_row_labels.set_parent_rectangle (row_rect);
|
_row_labels->set_parent_rectangle (row_rect);
|
||||||
_column_labels.set_parent_rectangle (col_rect);
|
_column_labels->set_parent_rectangle (col_rect);
|
||||||
_grid.set_parent_rectangle (grid_rect);
|
_grid->set_parent_rectangle (grid_rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -272,9 +283,9 @@ PortMatrixBody::setup ()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
_column_labels.setup ();
|
_column_labels->setup ();
|
||||||
_row_labels.setup ();
|
_row_labels->setup ();
|
||||||
_grid.setup ();
|
_grid->setup ();
|
||||||
|
|
||||||
set_mouseover (PortMatrixNode ());
|
set_mouseover (PortMatrixNode ());
|
||||||
compute_rectangles ();
|
compute_rectangles ();
|
||||||
|
|
@ -283,26 +294,26 @@ PortMatrixBody::setup ()
|
||||||
uint32_t
|
uint32_t
|
||||||
PortMatrixBody::full_scroll_width ()
|
PortMatrixBody::full_scroll_width ()
|
||||||
{
|
{
|
||||||
return _grid.dimensions().first;
|
return _grid->dimensions().first;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t
|
uint32_t
|
||||||
PortMatrixBody::alloc_scroll_width ()
|
PortMatrixBody::alloc_scroll_width ()
|
||||||
{
|
{
|
||||||
return _grid.parent_rectangle().get_width();
|
return _grid->parent_rectangle().get_width();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t
|
uint32_t
|
||||||
PortMatrixBody::full_scroll_height ()
|
PortMatrixBody::full_scroll_height ()
|
||||||
{
|
{
|
||||||
return _grid.dimensions().second;
|
return _grid->dimensions().second;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t
|
uint32_t
|
||||||
PortMatrixBody::alloc_scroll_height ()
|
PortMatrixBody::alloc_scroll_height ()
|
||||||
{
|
{
|
||||||
return _grid.parent_rectangle().get_height();
|
return _grid->parent_rectangle().get_height();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -322,27 +333,27 @@ PortMatrixBody::set_yoffset (uint32_t yo)
|
||||||
bool
|
bool
|
||||||
PortMatrixBody::on_button_press_event (GdkEventButton* ev)
|
PortMatrixBody::on_button_press_event (GdkEventButton* ev)
|
||||||
{
|
{
|
||||||
if (Gdk::Region (_grid.parent_rectangle()).point_in (ev->x, ev->y)) {
|
if (Gdk::Region (_grid->parent_rectangle()).point_in (ev->x, ev->y)) {
|
||||||
|
|
||||||
_grid.button_press (
|
_grid->button_press (
|
||||||
_grid.parent_to_component_x (ev->x),
|
_grid->parent_to_component_x (ev->x),
|
||||||
_grid.parent_to_component_y (ev->y),
|
_grid->parent_to_component_y (ev->y),
|
||||||
ev->button
|
ev->button
|
||||||
);
|
);
|
||||||
|
|
||||||
} else if (Gdk::Region (_row_labels.parent_rectangle()).point_in (ev->x, ev->y)) {
|
} else if (Gdk::Region (_row_labels->parent_rectangle()).point_in (ev->x, ev->y)) {
|
||||||
|
|
||||||
_row_labels.button_press (
|
_row_labels->button_press (
|
||||||
_row_labels.parent_to_component_x (ev->x),
|
_row_labels->parent_to_component_x (ev->x),
|
||||||
_row_labels.parent_to_component_y (ev->y),
|
_row_labels->parent_to_component_y (ev->y),
|
||||||
ev->button, ev->time
|
ev->button, ev->time
|
||||||
);
|
);
|
||||||
|
|
||||||
} else if (Gdk::Region (_column_labels.parent_rectangle()).point_in (ev->x, ev->y)) {
|
} else if (Gdk::Region (_column_labels->parent_rectangle()).point_in (ev->x, ev->y)) {
|
||||||
|
|
||||||
_column_labels.button_press (
|
_column_labels->button_press (
|
||||||
_column_labels.parent_to_component_x (ev->x),
|
_column_labels->parent_to_component_x (ev->x),
|
||||||
_column_labels.parent_to_component_y (ev->y),
|
_column_labels->parent_to_component_y (ev->y),
|
||||||
ev->button, ev->time
|
ev->button, ev->time
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -353,11 +364,11 @@ PortMatrixBody::on_button_press_event (GdkEventButton* ev)
|
||||||
bool
|
bool
|
||||||
PortMatrixBody::on_button_release_event (GdkEventButton* ev)
|
PortMatrixBody::on_button_release_event (GdkEventButton* ev)
|
||||||
{
|
{
|
||||||
if (Gdk::Region (_row_labels.parent_rectangle()).point_in (ev->x, ev->y) ||
|
if (Gdk::Region (_row_labels->parent_rectangle()).point_in (ev->x, ev->y) ||
|
||||||
Gdk::Region (_column_labels.parent_rectangle()).point_in (ev->x, ev->y)) {
|
Gdk::Region (_column_labels->parent_rectangle()).point_in (ev->x, ev->y)) {
|
||||||
|
|
||||||
_row_labels.clear_channel_highlights ();
|
_row_labels->clear_channel_highlights ();
|
||||||
_column_labels.clear_channel_highlights ();
|
_column_labels->clear_channel_highlights ();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -367,21 +378,21 @@ PortMatrixBody::on_button_release_event (GdkEventButton* ev)
|
||||||
void
|
void
|
||||||
PortMatrixBody::rebuild_and_draw_grid ()
|
PortMatrixBody::rebuild_and_draw_grid ()
|
||||||
{
|
{
|
||||||
_grid.require_rebuild ();
|
_grid->require_rebuild ();
|
||||||
queue_draw ();
|
queue_draw ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PortMatrixBody::rebuild_and_draw_column_labels ()
|
PortMatrixBody::rebuild_and_draw_column_labels ()
|
||||||
{
|
{
|
||||||
_column_labels.require_rebuild ();
|
_column_labels->require_rebuild ();
|
||||||
queue_draw ();
|
queue_draw ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PortMatrixBody::rebuild_and_draw_row_labels ()
|
PortMatrixBody::rebuild_and_draw_row_labels ()
|
||||||
{
|
{
|
||||||
_row_labels.require_rebuild ();
|
_row_labels->require_rebuild ();
|
||||||
queue_draw ();
|
queue_draw ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -398,10 +409,10 @@ PortMatrixBody::on_leave_notify_event (GdkEventCrossing* ev)
|
||||||
bool
|
bool
|
||||||
PortMatrixBody::on_motion_notify_event (GdkEventMotion* ev)
|
PortMatrixBody::on_motion_notify_event (GdkEventMotion* ev)
|
||||||
{
|
{
|
||||||
if (Gdk::Region (_grid.parent_rectangle()).point_in (ev->x, ev->y)) {
|
if (Gdk::Region (_grid->parent_rectangle()).point_in (ev->x, ev->y)) {
|
||||||
_grid.mouseover_event (
|
_grid->mouseover_event (
|
||||||
_grid.parent_to_component_x (ev->x),
|
_grid->parent_to_component_x (ev->x),
|
||||||
_grid.parent_to_component_y (ev->y)
|
_grid->parent_to_component_y (ev->y)
|
||||||
);
|
);
|
||||||
_mouse_over_grid = true;
|
_mouse_over_grid = true;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -424,9 +435,9 @@ PortMatrixBody::set_mouseover (PortMatrixNode const & n)
|
||||||
PortMatrixNode old = _mouseover;
|
PortMatrixNode old = _mouseover;
|
||||||
_mouseover = n;
|
_mouseover = n;
|
||||||
|
|
||||||
_grid.mouseover_changed (old);
|
_grid->mouseover_changed (old);
|
||||||
_row_labels.mouseover_changed (old);
|
_row_labels->mouseover_changed (old);
|
||||||
_column_labels.mouseover_changed (old);
|
_column_labels->mouseover_changed (old);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -451,9 +462,9 @@ PortMatrixBody::highlight_associated_channels (int dim, uint32_t N)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dim == _matrix->column_index()) {
|
if (dim == _matrix->column_index()) {
|
||||||
_column_labels.add_channel_highlight (bc[dim]);
|
_column_labels->add_channel_highlight (bc[dim]);
|
||||||
} else {
|
} else {
|
||||||
_row_labels.add_channel_highlight (bc[dim]);
|
_row_labels->add_channel_highlight (bc[dim]);
|
||||||
}
|
}
|
||||||
|
|
||||||
ARDOUR::BundleList const b = _matrix->ports(1 - dim)->bundles ();
|
ARDOUR::BundleList const b = _matrix->ports(1 - dim)->bundles ();
|
||||||
|
|
@ -463,9 +474,9 @@ PortMatrixBody::highlight_associated_channels (int dim, uint32_t N)
|
||||||
bc[1 - dim] = ARDOUR::BundleChannel (*i, j);
|
bc[1 - dim] = ARDOUR::BundleChannel (*i, j);
|
||||||
if (_matrix->get_state (bc) == PortMatrix::ASSOCIATED) {
|
if (_matrix->get_state (bc) == PortMatrix::ASSOCIATED) {
|
||||||
if (dim == _matrix->column_index()) {
|
if (dim == _matrix->column_index()) {
|
||||||
_row_labels.add_channel_highlight (bc[1 - dim]);
|
_row_labels->add_channel_highlight (bc[1 - dim]);
|
||||||
} else {
|
} else {
|
||||||
_column_labels.add_channel_highlight (bc[1 - dim]);
|
_column_labels->add_channel_highlight (bc[1 - dim]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,13 +20,14 @@
|
||||||
#ifndef __gtk_ardour_port_matrix_body_h__
|
#ifndef __gtk_ardour_port_matrix_body_h__
|
||||||
#define __gtk_ardour_port_matrix_body_h__
|
#define __gtk_ardour_port_matrix_body_h__
|
||||||
|
|
||||||
#include "port_matrix_column_labels.h"
|
#include <gtkmm/eventbox.h>
|
||||||
#include "port_matrix_row_labels.h"
|
|
||||||
#include "port_matrix_grid.h"
|
|
||||||
#include "port_group.h"
|
#include "port_group.h"
|
||||||
#include "port_matrix_types.h"
|
#include "port_matrix_types.h"
|
||||||
|
|
||||||
class PortMatrix;
|
class PortMatrix;
|
||||||
|
class PortMatrixColumnLabels;
|
||||||
|
class PortMatrixRowLabels;
|
||||||
|
class PortMatrixGrid;
|
||||||
|
|
||||||
/** The main body of the port matrix. It is made up of three parts:
|
/** The main body of the port matrix. It is made up of three parts:
|
||||||
* column labels, grid and row labels, each drawn using cairo.
|
* column labels, grid and row labels, each drawn using cairo.
|
||||||
|
|
@ -35,6 +36,7 @@ class PortMatrixBody : public Gtk::EventBox
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PortMatrixBody (PortMatrix *);
|
PortMatrixBody (PortMatrix *);
|
||||||
|
~PortMatrixBody ();
|
||||||
|
|
||||||
void setup ();
|
void setup ();
|
||||||
|
|
||||||
|
|
@ -78,9 +80,9 @@ private:
|
||||||
void set_cairo_clip (cairo_t *, Gdk::Rectangle const &) const;
|
void set_cairo_clip (cairo_t *, Gdk::Rectangle const &) const;
|
||||||
|
|
||||||
PortMatrix* _matrix;
|
PortMatrix* _matrix;
|
||||||
PortMatrixColumnLabels _column_labels;
|
PortMatrixColumnLabels* _column_labels;
|
||||||
PortMatrixRowLabels _row_labels;
|
PortMatrixRowLabels* _row_labels;
|
||||||
PortMatrixGrid _grid;
|
PortMatrixGrid* _grid;
|
||||||
|
|
||||||
uint32_t _alloc_width; ///< allocated width
|
uint32_t _alloc_width; ///< allocated width
|
||||||
uint32_t _alloc_height; ///< allocated height
|
uint32_t _alloc_height; ///< allocated height
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@
|
||||||
#include "ardour/types.h"
|
#include "ardour/types.h"
|
||||||
#include "port_matrix_column_labels.h"
|
#include "port_matrix_column_labels.h"
|
||||||
#include "port_matrix.h"
|
#include "port_matrix.h"
|
||||||
|
#include "port_matrix_body.h"
|
||||||
|
|
||||||
PortMatrixColumnLabels::PortMatrixColumnLabels (PortMatrix* m, PortMatrixBody* b)
|
PortMatrixColumnLabels::PortMatrixColumnLabels (PortMatrix* m, PortMatrixBody* b)
|
||||||
: PortMatrixLabels (m, b)
|
: PortMatrixLabels (m, b)
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@
|
||||||
#include "ardour/types.h"
|
#include "ardour/types.h"
|
||||||
#include "port_matrix_grid.h"
|
#include "port_matrix_grid.h"
|
||||||
#include "port_matrix.h"
|
#include "port_matrix.h"
|
||||||
|
#include "port_matrix_body.h"
|
||||||
|
|
||||||
PortMatrixGrid::PortMatrixGrid (PortMatrix* m, PortMatrixBody* b)
|
PortMatrixGrid::PortMatrixGrid (PortMatrix* m, PortMatrixBody* b)
|
||||||
: PortMatrixComponent (m, b)
|
: PortMatrixComponent (m, b)
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@
|
||||||
#include "ardour/bundle.h"
|
#include "ardour/bundle.h"
|
||||||
#include "port_matrix_row_labels.h"
|
#include "port_matrix_row_labels.h"
|
||||||
#include "port_matrix.h"
|
#include "port_matrix.h"
|
||||||
|
#include "port_matrix_body.h"
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
|
|
||||||
PortMatrixRowLabels::PortMatrixRowLabels (PortMatrix* m, PortMatrixBody* b)
|
PortMatrixRowLabels::PortMatrixRowLabels (PortMatrix* m, PortMatrixBody* b)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue