summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-12-14 09:35:23 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-12-14 09:35:23 +0000
commit18d6284438bb69655670a7b1e931cd73f35d00d8 (patch)
tree0ca40171267042f11f17e434d25be43074400133
parent7b5e8bf0f751ec76fce440e1547f5a274a9b9549 (diff)
bump required version of GTK, SLV2; basic fixups so that the new port-matrix io-selector actually shows up, even if its ugly and not working correctly
git-svn-id: svn://localhost/ardour2/branches/3.0@4322 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--SConstruct4
-rw-r--r--gtk2_ardour/io_selector.cc47
-rw-r--r--gtk2_ardour/matrix.cc35
-rw-r--r--gtk2_ardour/matrix.h1
-rw-r--r--gtk2_ardour/port_matrix.cc23
-rw-r--r--gtk2_ardour/port_matrix.h1
6 files changed, 91 insertions, 20 deletions
diff --git a/SConstruct b/SConstruct
index 7cdd1449e7..8174a9171a 100644
--- a/SConstruct
+++ b/SConstruct
@@ -471,7 +471,7 @@ deps = \
{
'glib-2.0' : '2.10.1',
'gthread-2.0' : '2.10.1',
- 'gtk+-2.0' : '2.8.1',
+ 'gtk+-2.0' : '2.12.1',
'libxml-2.0' : '2.6.0',
'samplerate' : '0.1.0',
'raptor' : '1.4.2',
@@ -595,7 +595,7 @@ else:
if env['LV2']:
conf = env.Configure(custom_tests = { 'CheckPKGVersion' : CheckPKGVersion})
- if conf.CheckPKGVersion('slv2', '0.6.1'):
+ if conf.CheckPKGVersion('slv2', '0.6.2'):
libraries['slv2'] = LibraryInfo()
libraries['slv2'].ParseConfig('pkg-config --cflags --libs slv2')
env.Append (CCFLAGS="-DHAVE_LV2")
diff --git a/gtk2_ardour/io_selector.cc b/gtk2_ardour/io_selector.cc
index a4defec834..954ddb6b9a 100644
--- a/gtk2_ardour/io_selector.cc
+++ b/gtk2_ardour/io_selector.cc
@@ -40,19 +40,36 @@ using namespace ARDOUR;
using namespace Gtk;
IOSelector::IOSelector (ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO> io, bool offer_inputs)
- : PortMatrix (
- session, io->default_type(), offer_inputs,
- PortGroupList::Mask (PortGroupList::BUSS |
- PortGroupList::SYSTEM |
- PortGroupList::OTHER)),
- _io (io)
+ : PortMatrix (session, io->default_type(), offer_inputs,
+ PortGroupList::Mask (PortGroupList::BUSS |
+ PortGroupList::SYSTEM |
+ PortGroupList::OTHER))
+ , _io (io)
{
+ list<string> our_ports;
+
/* Listen for ports changing on the IO */
if (_offer_inputs) {
_io->output_changed.connect (mem_fun(*this, &IOSelector::ports_changed));
+
+ const PortSet& ps (_io->outputs());
+
+ for (PortSet::const_iterator i = ps.begin(); i != ps.end(); ++i) {
+ our_ports.push_back ((*i).name());
+ }
+
} else {
_io->input_changed.connect (mem_fun(*this, &IOSelector::ports_changed));
+
+ const PortSet& ps (_io->inputs());
+
+ for (PortSet::const_iterator i = ps.begin(); i != ps.end(); ++i) {
+ our_ports.push_back ((*i).name());
+ }
+
}
+
+ set_ports (our_ports);
}
void
@@ -204,16 +221,14 @@ IOSelector::row_descriptor () const
return _("port");
}
-IOSelectorWindow::IOSelectorWindow (
- ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO> io, bool for_input, bool can_cancel
- )
- : ArdourDialog ("I/O selector"),
- _selector (session, io, !for_input),
- add_button (_("Add Port")),
- disconnect_button (_("Disconnect All")),
- ok_button (can_cancel ? _("OK"): _("Close")),
- cancel_button (_("Cancel")),
- rescan_button (_("Rescan"))
+IOSelectorWindow::IOSelectorWindow (ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO> io, bool for_input, bool can_cancel)
+ : ArdourDialog ("I/O selector")
+ , _selector (session, io, !for_input)
+ , add_button (_("Add Port"))
+ , disconnect_button (_("Disconnect All"))
+ , ok_button (can_cancel ? _("OK"): _("Close"))
+ , cancel_button (_("Cancel"))
+ , rescan_button (_("Rescan"))
{
add_events (Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK);
diff --git a/gtk2_ardour/matrix.cc b/gtk2_ardour/matrix.cc
index 5cb229e4ea..c1436a1f74 100644
--- a/gtk2_ardour/matrix.cc
+++ b/gtk2_ardour/matrix.cc
@@ -50,6 +50,14 @@ Matrix::add_group (PortGroup& pg)
reset_size ();
}
+
+void
+Matrix::clear ()
+{
+ others.clear ();
+ reset_size ();
+}
+
void
Matrix::remove_group (PortGroup& pg)
{
@@ -118,7 +126,20 @@ Matrix::reset_size ()
++visible_others;
}
}
-
+
+ if (!visible_others) {
+ cerr << "There are no visible others!\n";
+ xstep = 1;
+ ystep = 1;
+ line_width = 1;
+ line_height = 1;
+ border = 10;
+ arc_radius = 3;
+ labels_x_shift = 0;
+ labels_y_shift = 0;
+ return;
+ }
+
border = 10;
if (alloc_width > line_width) {
@@ -182,6 +203,18 @@ Matrix::reset_size ()
labels_x_shift = (int) ceil (w);
setup_nodes ();
+
+
+ cerr << "Based on ours = " << ours.size() << " others = " << others.size()
+ << " dimens = "
+ << " xstep " << xstep << endl
+ << " ystep " << ystep << endl
+ << " line_width " << line_width << endl
+ << " line_height " << line_height << endl
+ << " border " << border << endl
+ << " arc_radius " << arc_radius << endl
+ << " labels_x_shift " << labels_x_shift << endl
+ << " labels_y_shift " << labels_y_shift << endl;
}
bool
diff --git a/gtk2_ardour/matrix.h b/gtk2_ardour/matrix.h
index f859a881c7..cbd34823d1 100644
--- a/gtk2_ardour/matrix.h
+++ b/gtk2_ardour/matrix.h
@@ -59,6 +59,7 @@ class Matrix : public Gtk::EventBox
void remove_group (PortGroup&);
void hide_group (PortGroup&);
void show_group (PortGroup&);
+ void clear ();
int row_spacing () const { return xstep; }
diff --git a/gtk2_ardour/port_matrix.cc b/gtk2_ardour/port_matrix.cc
index b1dd2a17ac..c2bb01691b 100644
--- a/gtk2_ardour/port_matrix.cc
+++ b/gtk2_ardour/port_matrix.cc
@@ -144,6 +144,12 @@ PortMatrix::~PortMatrix ()
clear ();
}
+void
+PortMatrix::set_ports (const std::list<std::string>& ports)
+{
+ matrix.set_ports (ports);
+}
+
/** Clear out the things that change when the number of source or destination ports changes */
void
PortMatrix::clear ()
@@ -244,13 +250,17 @@ PortMatrix::setup ()
_side_vbox.pack_start (*_side_vbox_pad, false, false);
}
+ matrix.clear ();
+
/* Checkbutton tables and visibility checkbuttons */
for (PortGroupList::iterator i = _port_group_list.begin(); i != _port_group_list.end(); ++i) {
PortGroupUI* t = new PortGroupUI (*this, **i);
_port_group_ui.push_back (t);
-
+
+ matrix.add_group (**i);
+
_visibility_checkbutton_box.pack_start (t->get_visibility_checkbutton(), false, false);
CheckButton* chk = dynamic_cast<CheckButton*>(&t->get_visibility_checkbutton());
@@ -370,6 +380,8 @@ PortGroupList::refresh ()
boost::shared_ptr<ARDOUR::Session::RouteList> routes = _session.get_routes ();
+ cerr << "Looking for arour routes\n";
+
for (ARDOUR::Session::RouteList::const_iterator i = routes->begin(); i != routes->end(); ++i) {
PortGroup* g = 0;
@@ -408,6 +420,8 @@ PortGroupList::refresh ()
finding all the ports that we can connect to.
*/
+ cerr << "Looking for non-ardour ports\n";
+
const char **ports = _session.engine().get_ports ("", _type.to_jack_type(), _offer_inputs ?
JackPortIsInput : JackPortIsOutput);
if (ports) {
@@ -415,6 +429,8 @@ PortGroupList::refresh ()
int n = 0;
string client_matching_string;
+ cerr << "Got some\n";
+
client_matching_string = _session.engine().client_name();
client_matching_string += ':';
@@ -437,6 +453,11 @@ PortGroupList::refresh ()
free (ports);
}
+ cerr << "at end of refresh, we have " << buss.ports.size () << " buss\n";
+ cerr << "at end of refresh, we have " << track.ports.size () << " track\n";
+ cerr << "at end of refresh, we have " << system.ports.size () << " system\n";
+ cerr << "at end of refresh, we have " << other.ports.size () << " other\n";
+
push_back (&system);
push_back (&buss);
push_back (&track);
diff --git a/gtk2_ardour/port_matrix.h b/gtk2_ardour/port_matrix.h
index b9a5f7e4c6..e755d77328 100644
--- a/gtk2_ardour/port_matrix.h
+++ b/gtk2_ardour/port_matrix.h
@@ -70,6 +70,7 @@ class PortMatrix : public Gtk::VBox {
protected:
bool _offer_inputs;
+ void set_ports (const std::list<std::string>&);
private:
PortGroupList _port_group_list;