add monitoring column to route group list; make click in blank area of route list and route group list cancel selection and/or name editing

git-svn-id: svn://localhost/ardour2/branches/3.0@10911 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2011-12-06 16:46:50 +00:00
parent 23002098b2
commit 946dc070f8
3 changed files with 72 additions and 69 deletions

View file

@ -59,7 +59,7 @@ struct ColumnInfo {
EditorRouteGroups::EditorRouteGroups (Editor* e) EditorRouteGroups::EditorRouteGroups (Editor* e)
: EditorComponent (e) : EditorComponent (e)
, _all_group_active_button (_("No Selection = All Tracks")) , _all_group_active_button (_("No Selection = All Tracks?"))
, _in_row_change (false) , _in_row_change (false)
, _in_rebuild (false) , _in_rebuild (false)
{ {
@ -72,6 +72,7 @@ EditorRouteGroups::EditorRouteGroups (Editor* e)
_display.append_column ("", _columns.mute); _display.append_column ("", _columns.mute);
_display.append_column ("", _columns.solo); _display.append_column ("", _columns.solo);
_display.append_column ("", _columns.record); _display.append_column ("", _columns.record);
_display.append_column ("", _columns.monitoring);
_display.append_column ("", _columns.select); _display.append_column ("", _columns.select);
_display.append_column ("", _columns.edits); _display.append_column ("", _columns.edits);
_display.append_column ("", _columns.active_state); _display.append_column ("", _columns.active_state);
@ -82,15 +83,16 @@ EditorRouteGroups::EditorRouteGroups (Editor* e)
ColumnInfo ci[] = { ColumnInfo ci[] = {
{ 0, _("Name"), _("Name of Group") }, { 0, _("Name"), _("Name of Group") },
{ 1, _("G"), _("Sharing Gain?") }, { 1, S_("group|G"), _("Sharing Gain?") },
{ 2, _("Rel"), _("Relevative Gain Changes?") }, { 2, S_("relative|Rel"), _("Relevative Gain Changes?") },
{ 3, _("M"), _("Sharing Mute?") }, { 3, S_("mute|M"), _("Sharing Mute?") },
{ 4, _("S"), _("Sharing Solo?") }, { 4, S_("solo|S"), _("Sharing Solo?") },
{ 5, _("Rec"), _("Sharing Record-enable Status?") }, { 5, _("Rec"), _("Sharing Record-enable Status?") },
{ 6, _("Sel"), _("Sharing Selected Status?") }, { 6, S_("monitoring|Mon"), _("Sharing Monitoring Choice?") },
{ 7, _("E"), _("Sharing Editing?") }, { 7, S_("selection|Sel"), _("Sharing Selected Status?") },
{ 8, _("A"), _("Sharing Active Status?") }, { 8, S_("editing|E"), _("Sharing Editing?") },
{ 9, _("Show"), _("Group is visible?") }, { 9, S_("active|A"), _("Sharing Active Status?") },
{ 10, _("Show"), _("Group is visible?") },
{ -1, 0, 0 } { -1, 0, 0 }
}; };
@ -209,7 +211,7 @@ EditorRouteGroups::button_clicked ()
run_new_group_dialog (); run_new_group_dialog ();
} }
gint bool
EditorRouteGroups::button_press_event (GdkEventButton* ev) EditorRouteGroups::button_press_event (GdkEventButton* ev)
{ {
TreeModel::Path path; TreeModel::Path path;
@ -218,6 +220,7 @@ EditorRouteGroups::button_press_event (GdkEventButton* ev)
TreeViewColumn* column; TreeViewColumn* column;
int cellx; int cellx;
int celly; int celly;
bool ret = false;
bool const p = _display.get_path_at_pos ((int)ev->x, (int)ev->y, path, column, cellx, celly); bool const p = _display.get_path_at_pos ((int)ev->x, (int)ev->y, path, column, cellx, celly);
@ -235,7 +238,11 @@ EditorRouteGroups::button_press_event (GdkEventButton* ev)
} }
if (!p) { if (!p) {
return 1; /* cancel selection */
_display.get_selection()->unselect_all ();
/* end any editing by grabbing focus */
_display.grab_focus ();
return true;
} }
switch (GPOINTER_TO_UINT (column->get_data (X_("colnum")))) { switch (GPOINTER_TO_UINT (column->get_data (X_("colnum")))) {
@ -243,10 +250,7 @@ EditorRouteGroups::button_press_event (GdkEventButton* ev)
if (Keyboard::is_edit_event (ev)) { if (Keyboard::is_edit_event (ev)) {
if ((iter = _model->get_iter (path))) { if ((iter = _model->get_iter (path))) {
if ((group = (*iter)[_columns.routegroup]) != 0) { if ((group = (*iter)[_columns.routegroup]) != 0) {
#ifdef GTKOSX ret = true;
_display.queue_draw();
#endif
return true;
} }
} }
@ -257,10 +261,7 @@ EditorRouteGroups::button_press_event (GdkEventButton* ev)
if ((iter = _model->get_iter (path))) { if ((iter = _model->get_iter (path))) {
bool gain = (*iter)[_columns.gain]; bool gain = (*iter)[_columns.gain];
(*iter)[_columns.gain] = !gain; (*iter)[_columns.gain] = !gain;
#ifdef GTKOSX ret = true;
_display.queue_draw();
#endif
return true;
} }
break; break;
@ -268,10 +269,7 @@ EditorRouteGroups::button_press_event (GdkEventButton* ev)
if ((iter = _model->get_iter (path))) { if ((iter = _model->get_iter (path))) {
bool gain_relative = (*iter)[_columns.gain_relative]; bool gain_relative = (*iter)[_columns.gain_relative];
(*iter)[_columns.gain_relative] = !gain_relative; (*iter)[_columns.gain_relative] = !gain_relative;
#ifdef GTKOSX ret = true;
_display.queue_draw();
#endif
return true;
} }
break; break;
@ -279,10 +277,7 @@ EditorRouteGroups::button_press_event (GdkEventButton* ev)
if ((iter = _model->get_iter (path))) { if ((iter = _model->get_iter (path))) {
bool mute = (*iter)[_columns.mute]; bool mute = (*iter)[_columns.mute];
(*iter)[_columns.mute] = !mute; (*iter)[_columns.mute] = !mute;
#ifdef GTKOSX ret = true;
_display.queue_draw();
#endif
return true;
} }
break; break;
@ -290,10 +285,7 @@ EditorRouteGroups::button_press_event (GdkEventButton* ev)
if ((iter = _model->get_iter (path))) { if ((iter = _model->get_iter (path))) {
bool solo = (*iter)[_columns.solo]; bool solo = (*iter)[_columns.solo];
(*iter)[_columns.solo] = !solo; (*iter)[_columns.solo] = !solo;
#ifdef GTKOSX ret = true;
_display.queue_draw();
#endif
return true;
} }
break; break;
@ -301,54 +293,47 @@ EditorRouteGroups::button_press_event (GdkEventButton* ev)
if ((iter = _model->get_iter (path))) { if ((iter = _model->get_iter (path))) {
bool record = (*iter)[_columns.record]; bool record = (*iter)[_columns.record];
(*iter)[_columns.record] = !record; (*iter)[_columns.record] = !record;
#ifdef GTKOSX ret = true;
_display.queue_draw();
#endif
return true;
} }
break; break;
case 6: case 6:
if ((iter = _model->get_iter (path))) { if ((iter = _model->get_iter (path))) {
bool select = (*iter)[_columns.select]; bool monitoring = (*iter)[_columns.monitoring];
(*iter)[_columns.select] = !select; (*iter)[_columns.monitoring] = !monitoring;
#ifdef GTKOSX ret = true;
_display.queue_draw();
#endif
return true;
} }
break; break;
case 7: case 7:
if ((iter = _model->get_iter (path))) { if ((iter = _model->get_iter (path))) {
bool edits = (*iter)[_columns.edits]; bool select = (*iter)[_columns.select];
(*iter)[_columns.edits] = !edits; (*iter)[_columns.select] = !select;
#ifdef GTKOSX ret = true;
_display.queue_draw();
#endif
return true;
} }
break; break;
case 8: case 8:
if ((iter = _model->get_iter (path))) { if ((iter = _model->get_iter (path))) {
bool active_state = (*iter)[_columns.active_state]; bool edits = (*iter)[_columns.edits];
(*iter)[_columns.active_state] = !active_state; (*iter)[_columns.edits] = !edits;
#ifdef GTKOSX ret = true;
_display.queue_draw();
#endif
return true;
} }
break; break;
case 9: case 9:
if ((iter = _model->get_iter (path))) {
bool active_state = (*iter)[_columns.active_state];
(*iter)[_columns.active_state] = !active_state;
ret = true;
}
break;
case 10:
if ((iter = _model->get_iter (path))) { if ((iter = _model->get_iter (path))) {
bool is_visible = (*iter)[_columns.is_visible]; bool is_visible = (*iter)[_columns.is_visible];
(*iter)[_columns.is_visible] = !is_visible; (*iter)[_columns.is_visible] = !is_visible;
#ifdef GTKOSX ret = true;
_display.queue_draw();
#endif
return true;
} }
break; break;
@ -356,8 +341,14 @@ EditorRouteGroups::button_press_event (GdkEventButton* ev)
break; break;
} }
return false; #ifdef GTKOSX
if (ret) {
_display.queue_draw();
} }
#endif
return ret;
}
void void
EditorRouteGroups::row_change (const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator& iter) EditorRouteGroups::row_change (const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator& iter)
@ -385,6 +376,8 @@ EditorRouteGroups::row_change (const Gtk::TreeModel::Path&, const Gtk::TreeModel
plist.add (Properties::solo, val); plist.add (Properties::solo, val);
val = (*iter)[_columns.record]; val = (*iter)[_columns.record];
plist.add (Properties::recenable, val); plist.add (Properties::recenable, val);
val = (*iter)[_columns.monitoring];
plist.add (Properties::monitoring, val);
val = (*iter)[_columns.select]; val = (*iter)[_columns.select];
plist.add (Properties::select, val); plist.add (Properties::select, val);
val = (*iter)[_columns.edits]; val = (*iter)[_columns.edits];
@ -410,6 +403,7 @@ EditorRouteGroups::add (RouteGroup* group)
row[_columns.mute] = group->is_mute (); row[_columns.mute] = group->is_mute ();
row[_columns.solo] = group->is_solo (); row[_columns.solo] = group->is_solo ();
row[_columns.record] = group->is_recenable(); row[_columns.record] = group->is_recenable();
row[_columns.monitoring] = group->is_monitoring();
row[_columns.select] = group->is_select (); row[_columns.select] = group->is_select ();
row[_columns.edits] = group->is_edit (); row[_columns.edits] = group->is_edit ();
row[_columns.active_state] = group->is_route_active (); row[_columns.active_state] = group->is_route_active ();
@ -472,6 +466,7 @@ EditorRouteGroups::property_changed (RouteGroup* group, const PropertyChange& ch
(*iter)[_columns.mute] = group->is_mute (); (*iter)[_columns.mute] = group->is_mute ();
(*iter)[_columns.solo] = group->is_solo (); (*iter)[_columns.solo] = group->is_solo ();
(*iter)[_columns.record] = group->is_recenable (); (*iter)[_columns.record] = group->is_recenable ();
(*iter)[_columns.monitoring] = group->is_monitoring ();
(*iter)[_columns.select] = group->is_select (); (*iter)[_columns.select] = group->is_select ();
(*iter)[_columns.edits] = group->is_edit (); (*iter)[_columns.edits] = group->is_edit ();
(*iter)[_columns.active_state] = group->is_route_active (); (*iter)[_columns.active_state] = group->is_route_active ();

View file

@ -45,6 +45,7 @@ private:
add (mute); add (mute);
add (solo); add (solo);
add (record); add (record);
add (monitoring);
add (select); add (select);
add (edits); add (edits);
add (active_state); add (active_state);
@ -58,6 +59,7 @@ private:
Gtk::TreeModelColumn<bool> mute; Gtk::TreeModelColumn<bool> mute;
Gtk::TreeModelColumn<bool> solo; Gtk::TreeModelColumn<bool> solo;
Gtk::TreeModelColumn<bool> record; Gtk::TreeModelColumn<bool> record;
Gtk::TreeModelColumn<bool> monitoring;
Gtk::TreeModelColumn<bool> select; Gtk::TreeModelColumn<bool> select;
Gtk::TreeModelColumn<bool> edits; Gtk::TreeModelColumn<bool> edits;
Gtk::TreeModelColumn<bool> active_state; Gtk::TreeModelColumn<bool> active_state;
@ -71,7 +73,7 @@ private:
void row_change (const Gtk::TreeModel::Path&,const Gtk::TreeModel::iterator&); void row_change (const Gtk::TreeModel::Path&,const Gtk::TreeModel::iterator&);
void name_edit (const std::string&, const std::string&); void name_edit (const std::string&, const std::string&);
void button_clicked (); void button_clicked ();
gint button_press_event (GdkEventButton* ev); bool button_press_event (GdkEventButton* ev);
void groups_changed (); void groups_changed ();
void property_changed (ARDOUR::RouteGroup*, const PBD::PropertyChange &); void property_changed (ARDOUR::RouteGroup*, const PBD::PropertyChange &);
void remove_selected (); void remove_selected ();

View file

@ -1138,15 +1138,21 @@ EditorRoutes::button_press (GdkEventButton* ev)
return true; return true;
} }
//Scroll editor canvas to selected track
if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
TreeModel::Path path; TreeModel::Path path;
TreeViewColumn *tvc; TreeViewColumn *tvc;
int cell_x; int cell_x;
int cell_y; int cell_y;
_display.get_path_at_pos ((int) ev->x, (int) ev->y, path, tvc, cell_x, cell_y); if (!_display.get_path_at_pos ((int) ev->x, (int) ev->y, path, tvc, cell_x, cell_y)) {
/* cancel selection */
_display.get_selection()->unselect_all ();
/* end any editing by grabbing focus */
_display.grab_focus ();
return true;
}
//Scroll editor canvas to selected track
if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
// Get the model row. // Get the model row.
Gtk::TreeModel::Row row = *_model->get_iter (path); Gtk::TreeModel::Row row = *_model->get_iter (path);