Put row labels on both sides of the grid.
git-svn-id: svn://localhost/ardour2/trunk@2552 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
d4a05b5271
commit
b3b5515cf9
@ -364,8 +364,11 @@ RotatedLabelSet::set_base_width (int w)
|
||||
|
||||
IOSelector::IOSelector (ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO> io, bool for_input)
|
||||
: _port_group_list (session, io, for_input), _io (io), _for_input (for_input),
|
||||
_row_labels_vbox (0), _column_labels (_port_group_list), _left_vbox_pad (0)
|
||||
_column_labels (_port_group_list)
|
||||
{
|
||||
_row_labels_vbox[0] = _row_labels_vbox[1] = 0;
|
||||
_side_vbox_pad[0] = _side_vbox_pad[1] = 0;
|
||||
|
||||
Gtk::HBox* c = new Gtk::HBox;
|
||||
for (PortGroupList::iterator i = _port_group_list.begin(); i != _port_group_list.end(); ++i) {
|
||||
Gtk::CheckButton* b = new Gtk::CheckButton (i->name);
|
||||
@ -375,8 +378,8 @@ IOSelector::IOSelector (ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO>
|
||||
}
|
||||
pack_start (*Gtk::manage (c));
|
||||
|
||||
_left_vbox.pack_start (*Gtk::manage (new Gtk::Label ("")));
|
||||
_overall_hbox.pack_start (_left_vbox, false, false);
|
||||
_side_vbox[0].pack_start (*Gtk::manage (new Gtk::Label ("")));
|
||||
_overall_hbox.pack_start (_side_vbox[0], false, false);
|
||||
_scrolled_window.set_policy (Gtk::POLICY_ALWAYS, Gtk::POLICY_NEVER);
|
||||
_scrolled_window.set_shadow_type (Gtk::SHADOW_NONE);
|
||||
Gtk::VBox* b = new Gtk::VBox;
|
||||
@ -386,6 +389,8 @@ IOSelector::IOSelector (ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO>
|
||||
a->add (*Gtk::manage (b));
|
||||
_scrolled_window.add (*Gtk::manage (a));
|
||||
_overall_hbox.pack_start (_scrolled_window);
|
||||
_side_vbox[1].pack_start (*Gtk::manage (new Gtk::Label ("")));
|
||||
_overall_hbox.pack_start (_side_vbox[1]);
|
||||
pack_start (_overall_hbox);
|
||||
|
||||
_port_group_hbox.signal_size_allocate().connect (sigc::hide (sigc::mem_fun (*this, &IOSelector::setup_dimensions)));
|
||||
@ -408,23 +413,26 @@ IOSelector::~IOSelector ()
|
||||
void
|
||||
IOSelector::clear ()
|
||||
{
|
||||
for (std::vector<Gtk::EventBox*>::iterator i = _row_labels.begin(); i != _row_labels.end(); ++i) {
|
||||
delete *i;
|
||||
}
|
||||
_row_labels.clear ();
|
||||
|
||||
if (_row_labels_vbox) {
|
||||
_left_vbox.remove (*_row_labels_vbox);
|
||||
}
|
||||
delete _row_labels_vbox;
|
||||
_row_labels_vbox = 0;
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
|
||||
if (_left_vbox_pad) {
|
||||
_left_vbox.remove (*_left_vbox_pad);
|
||||
for (std::vector<Gtk::EventBox*>::iterator j = _row_labels[i].begin(); j != _row_labels[i].end(); ++j) {
|
||||
delete *j;
|
||||
}
|
||||
_row_labels[i].clear ();
|
||||
|
||||
if (_row_labels_vbox[i]) {
|
||||
_side_vbox[i].remove (*_row_labels_vbox[i]);
|
||||
}
|
||||
delete _row_labels_vbox[i];
|
||||
_row_labels_vbox[i] = 0;
|
||||
|
||||
if (_side_vbox_pad[i]) {
|
||||
_side_vbox[i].remove (*_side_vbox_pad[i]);
|
||||
}
|
||||
delete _side_vbox_pad[i];
|
||||
_side_vbox_pad[i] = 0;
|
||||
}
|
||||
delete _left_vbox_pad;
|
||||
_left_vbox_pad = 0;
|
||||
|
||||
|
||||
for (std::vector<PortGroupTable*>::iterator i = _port_group_tables.begin(); i != _port_group_tables.end(); ++i) {
|
||||
_port_group_hbox.remove ((*i)->get_widget());
|
||||
delete *i;
|
||||
@ -466,13 +474,14 @@ IOSelector::setup_dimensions ()
|
||||
);
|
||||
|
||||
/* Row labels */
|
||||
for (std::vector<Gtk::EventBox*>::iterator i = _row_labels.begin(); i != _row_labels.end(); ++i) {
|
||||
(*i)->get_child()->set_size_request (-1, unit_size.second);
|
||||
}
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
for (std::vector<Gtk::EventBox*>::iterator j = _row_labels[i].begin(); j != _row_labels[i].end(); ++j) {
|
||||
(*j)->get_child()->set_size_request (-1, unit_size.second);
|
||||
}
|
||||
|
||||
|
||||
if (_left_vbox_pad) {
|
||||
_left_vbox_pad->set_size_request (-1, scrollbar_height + unit_size.second / 4);
|
||||
if (_side_vbox_pad[i]) {
|
||||
_side_vbox_pad[i]->set_size_request (-1, scrollbar_height + unit_size.second / 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -494,19 +503,22 @@ IOSelector::setup ()
|
||||
}
|
||||
|
||||
/* Row labels */
|
||||
_row_labels_vbox = new Gtk::VBox;
|
||||
for (int i = 0; i < rows; ++i) {
|
||||
Gtk::Label* label = new Gtk::Label (_for_input ? _io->input(i)->name() : _io->output(i)->name());
|
||||
Gtk::EventBox* b = new Gtk::EventBox;
|
||||
b->set_events (Gdk::BUTTON_PRESS_MASK);
|
||||
b->signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &IOSelector::row_label_button_pressed), i));
|
||||
b->add (*Gtk::manage (label));
|
||||
_row_labels.push_back (b);
|
||||
_row_labels_vbox->pack_start (*b, false, false);
|
||||
}
|
||||
_left_vbox.pack_start (*_row_labels_vbox, false, false);
|
||||
_left_vbox_pad = new Gtk::Label ("");
|
||||
_left_vbox.pack_start (*_left_vbox_pad, false, false);
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
_row_labels_vbox[i] = new Gtk::VBox;
|
||||
for (int j = 0; j < rows; ++j) {
|
||||
Gtk::Label* label = new Gtk::Label (_for_input ? _io->input(j)->name() : _io->output(j)->name());
|
||||
Gtk::EventBox* b = new Gtk::EventBox;
|
||||
b->set_events (Gdk::BUTTON_PRESS_MASK);
|
||||
b->signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &IOSelector::row_label_button_pressed), j));
|
||||
b->add (*Gtk::manage (label));
|
||||
_row_labels[i].push_back (b);
|
||||
_row_labels_vbox[i]->pack_start (*b, false, false);
|
||||
}
|
||||
|
||||
_side_vbox[i].pack_start (*_row_labels_vbox[i], false, false);
|
||||
_side_vbox_pad[i] = new Gtk::Label ("");
|
||||
_side_vbox[i].pack_start (*_side_vbox_pad[i], false, false);
|
||||
}
|
||||
|
||||
/* Checkbutton tables */
|
||||
int n = 0;
|
||||
|
@ -150,14 +150,14 @@ class IOSelector : public Gtk::VBox {
|
||||
boost::shared_ptr<ARDOUR::IO> _io;
|
||||
bool _for_input;
|
||||
std::vector<PortGroupTable*> _port_group_tables;
|
||||
std::vector<Gtk::EventBox*> _row_labels;
|
||||
Gtk::VBox* _row_labels_vbox;
|
||||
std::vector<Gtk::EventBox*> _row_labels[2];
|
||||
Gtk::VBox* _row_labels_vbox[2];
|
||||
RotatedLabelSet _column_labels;
|
||||
Gtk::HBox _overall_hbox;
|
||||
Gtk::VBox _left_vbox;
|
||||
Gtk::VBox _side_vbox[2];
|
||||
Gtk::HBox _port_group_hbox;
|
||||
Gtk::ScrolledWindow _scrolled_window;
|
||||
Gtk::Label* _left_vbox_pad;
|
||||
Gtk::Label* _side_vbox_pad[2];
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user