/*
- Copyright (C) 2002-2009 Paul Davis
+ Copyright (C) 2002-2009 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "ardour/bundle.h"
#include "port_group.h"
#include "port_matrix_types.h"
+#include "i18n.h"
/** The `port matrix' UI. This is a widget which lets the user alter
* associations between one set of ports and another. e.g. to connect
class PortMatrix : public Gtk::Table
{
public:
- PortMatrix (ARDOUR::Session&, ARDOUR::DataType);
+ PortMatrix (Gtk::Window*, ARDOUR::Session&, ARDOUR::DataType);
~PortMatrix ();
void set_type (ARDOUR::DataType);
ARDOUR::DataType type () const {
return _type;
}
-
+
void disassociate_all ();
void setup_scrollbars ();
void popup_menu (
PortGroupList const * ports (int d) const {
return &_ports[d];
}
-
+
void setup ();
virtual void setup_ports (int) = 0;
void setup_all_ports ();
virtual PortMatrixNode::State get_state (ARDOUR::BundleChannel c[2]) const = 0;
virtual bool list_is_global (int) const = 0;
- virtual void add_channel (boost::shared_ptr<ARDOUR::Bundle>) = 0;
- virtual bool can_remove_channels (int) const = 0;
- virtual void remove_channel (ARDOUR::BundleChannel) = 0;
- virtual bool can_rename_channels (int) const = 0;
+ virtual bool can_add_channel (boost::shared_ptr<ARDOUR::Bundle>) const;
+ virtual void add_channel (boost::shared_ptr<ARDOUR::Bundle>);
+ virtual bool can_remove_channels (boost::shared_ptr<ARDOUR::Bundle>) const;
+ virtual void remove_channel (ARDOUR::BundleChannel);
+ virtual bool can_rename_channels (boost::shared_ptr<ARDOUR::Bundle>) const {
+ return false;
+ }
virtual void rename_channel (ARDOUR::BundleChannel) {}
-
+ virtual std::string disassociation_verb () const = 0;
+ virtual std::string channel_noun () const { return _("channel"); }
+
enum Result {
Cancelled,
Accepted
inputs and outputs should put outputs in list 0 and inputs in list 1. */
PortGroupList _ports[2];
ARDOUR::Session& _session;
-
+
private:
void hscroll_changed ();
void routes_changed ();
void reconnect_to_routes ();
void select_arrangement ();
+ void add_channel_proxy (boost::weak_ptr<ARDOUR::Bundle>);
void remove_channel_proxy (boost::weak_ptr<ARDOUR::Bundle>, uint32_t);
void rename_channel_proxy (boost::weak_ptr<ARDOUR::Bundle>, uint32_t);
void disassociate_all_on_channel (boost::weak_ptr<ARDOUR::Bundle>, uint32_t, int);
void hide_group (boost::weak_ptr<PortGroup>);
void show_group (boost::weak_ptr<PortGroup>);
void toggle_show_only_bundles ();
- void on_realize ();
- void on_unrealize ();
+ bool on_scroll_event (GdkEventScroll *);
+ boost::shared_ptr<ARDOUR::IO> io_from_bundle (boost::shared_ptr<ARDOUR::Bundle>) const;
+ void bundle_changed (ARDOUR::Bundle::Change);
+
+ Gtk::Window* _parent;
/// port type that we are working with
ARDOUR::DataType _type;