summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/mixer_strip.cc118
-rw-r--r--gtk2_ardour/mixer_strip.h14
-rw-r--r--gtk2_ardour/route_time_axis.cc9
-rw-r--r--gtk2_ardour/route_ui.cc84
-rw-r--r--gtk2_ardour/route_ui.h17
5 files changed, 128 insertions, 114 deletions
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index 1b6a6558df..7b91611cb0 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -145,7 +145,6 @@ MixerStrip::init ()
route_ops_menu = 0;
ignore_comment_edit = false;
ignore_toggle = false;
- comment_window = 0;
comment_area = 0;
_width_owner = 0;
spacer = 0;
@@ -285,35 +284,32 @@ MixerStrip::init ()
Gtkmm2ext::set_size_request_to_display_given_text (group_button, "Grp", 2, 2);
_comment_button.set_name (X_("mixer strip button"));
- _comment_button.signal_clicked.connect (sigc::mem_fun (*this, &MixerStrip::toggle_comment_editor));
+ _comment_button.signal_clicked.connect (sigc::mem_fun (*this, &RouteUI::toggle_comment_editor));
global_vpacker.set_border_width (0);
global_vpacker.set_spacing (0);
width_button.set_name ("mixer strip button");
hide_button.set_name ("mixer strip button");
- top_event_box.set_name ("mixer strip button");
width_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::width_button_pressed), false);
hide_button.signal_clicked.connect (sigc::mem_fun(*this, &MixerStrip::hide_clicked));
+ width_hide_box.set_border_width (2);
+ width_hide_box.set_spacing (2);
width_hide_box.pack_start (width_button, false, true);
- width_hide_box.pack_start (top_event_box, true, true);
+ width_hide_box.pack_start (number_label, true, true);
width_hide_box.pack_end (hide_button, false, true);
number_label.set_text ("-");
number_label.set_no_show_all ();
number_label.set_name ("tracknumber label");
number_label.set_fixed_colors (0x80808080, 0x80808080);
- number_label.set_elements (ArdourButton::Element(ArdourButton::Body | ArdourButton::Text));
number_label.set_alignment (.5, .5);
- top_event_box.add (number_label);
-
- whvbox.pack_start (width_hide_box, true, true);
global_vpacker.set_spacing (2);
if (!ARDOUR::Profile->get_trx()) {
- global_vpacker.pack_start (whvbox, Gtk::PACK_SHRINK);
+ global_vpacker.pack_start (width_hide_box, Gtk::PACK_SHRINK);
global_vpacker.pack_start (button_table, Gtk::PACK_SHRINK);
global_vpacker.pack_start (processor_box, true, true);
}
@@ -352,7 +348,7 @@ MixerStrip::init ()
/* ditto for this button and busses */
- number_label.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::name_button_button_press), false);
+ number_label.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::number_button_button_press), false);
name_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::name_button_button_press), false);
group_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::select_route_group), false);
@@ -416,7 +412,6 @@ MixerStrip::~MixerStrip ()
delete input_selector;
delete output_selector;
- delete comment_window;
}
bool
@@ -625,7 +620,7 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
audio_track()->DiskstreamChanged.connect (route_connections, invalidator (*this), boost::bind (&MixerStrip::diskstream_changed, this), gui_context());
}
- _route->comment_changed.connect (route_connections, invalidator (*this), boost::bind (&MixerStrip::comment_changed, this, _1), gui_context());
+ _route->comment_changed.connect (route_connections, invalidator (*this), boost::bind (&MixerStrip::setup_comment_button, this), gui_context());
_route->PropertyChanged.connect (route_connections, invalidator (*this), boost::bind (&MixerStrip::property_changed, this, _1), gui_context());
set_stuff_from_route ();
@@ -665,10 +660,8 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
gpm.gain_display.show ();
gpm.peak_display.show ();
- top_event_box.show();
width_button.show();
width_hide_box.show();
- whvbox.show ();
global_frame.show();
global_vpacker.show();
button_table.show();
@@ -1447,79 +1440,6 @@ MixerStrip::setup_comment_button ()
);
}
-void
-MixerStrip::comment_editor_done_editing ()
-{
- string const str = comment_area->get_buffer()->get_text();
- if (str == _route->comment ()) {
- return;
- }
-
- _route->set_comment (str, this);
- setup_comment_button ();
-}
-
-void
-MixerStrip::toggle_comment_editor ()
-{
- if (ignore_toggle) {
- return;
- }
-
- if (comment_window && comment_window->is_visible ()) {
- comment_window->hide ();
- } else {
- open_comment_editor ();
- }
-}
-
-void
-MixerStrip::open_comment_editor ()
-{
- if (comment_window == 0) {
- setup_comment_editor ();
- }
-
- string title;
- title = _route->name();
- title += _(": comment editor");
-
- comment_window->set_title (title);
- comment_window->present();
-}
-
-void
-MixerStrip::setup_comment_editor ()
-{
- comment_window = new ArdourWindow (""); // title will be reset to show route
- comment_window->set_skip_taskbar_hint (true);
- comment_window->signal_hide().connect (sigc::mem_fun(*this, &MixerStrip::comment_editor_done_editing));
- comment_window->set_default_size (400, 200);
-
- comment_area = manage (new TextView());
- comment_area->set_name ("MixerTrackCommentArea");
- comment_area->set_wrap_mode (WRAP_WORD);
- comment_area->set_editable (true);
- comment_area->get_buffer()->set_text (_route->comment());
- comment_area->show ();
-
- comment_window->add (*comment_area);
-}
-
-void
-MixerStrip::comment_changed (void *src)
-{
- ENSURE_GUI_THREAD (*this, &MixerStrip::comment_changed, src)
-
- if (src != this) {
- ignore_comment_edit = true;
- if (comment_area) {
- comment_area->get_buffer()->set_text (_route->comment());
- }
- ignore_comment_edit = false;
- }
-}
-
bool
MixerStrip::select_route_group (GdkEventButton *ev)
{
@@ -1572,7 +1492,6 @@ void
MixerStrip::route_color_changed ()
{
name_button.modify_bg (STATE_NORMAL, color());
- top_event_box.modify_bg (STATE_NORMAL, color());
number_label.set_fixed_colors (gdk_color_to_rgba (color()), gdk_color_to_rgba (color()));
reset_strip_style ();
}
@@ -1592,7 +1511,9 @@ MixerStrip::build_route_ops_menu ()
MenuList& items = route_ops_menu->items();
- items.push_back (MenuElem (_("Comments..."), sigc::mem_fun (*this, &MixerStrip::open_comment_editor)));
+ items.push_back (MenuElem (_("Color..."), sigc::mem_fun (*this, &RouteUI::choose_color)));
+
+ items.push_back (MenuElem (_("Comments..."), sigc::mem_fun (*this, &RouteUI::open_comment_editor)));
if (!_route->is_master()) {
items.push_back (MenuElem (_("Save As Template..."), sigc::mem_fun(*this, &RouteUI::save_as_template)));
}
@@ -1642,6 +1563,20 @@ MixerStrip::name_button_button_press (GdkEventButton* ev)
return false;
}
+gboolean
+MixerStrip::number_button_button_press (GdkEventButton* ev)
+{
+ if ( ev->button == 3 ) {
+ list_route_operations ();
+
+ /* do not allow rename if the track is record-enabled */
+ rename_menu_item->set_sensitive (!_route->record_enabled());
+ route_ops_menu->popup (1, ev->time);
+ }
+
+ return false;
+}
+
void
MixerStrip::list_route_operations ()
{
@@ -1685,18 +1620,15 @@ MixerStrip::name_changed ()
const int64_t track_number = _route->track_number ();
if (track_number == 0) {
number_label.set_text ("-");
- number_label.hide();
} else {
number_label.set_text (PBD::to_string (abs(_route->track_number ()), std::dec));
- number_label.show();
}
} else {
- number_label.hide();
+ number_label.set_text ("");
}
name_button.set_text (_route->name());
break;
case Narrow:
- number_label.hide();
if (_session->config.get_track_name_number()) {
name_button.set_markup(track_number_to_string (_route->track_number (), " ",
PBD::short_version (_route->name (), 5)));
diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h
index f7c7977a53..517cab0858 100644
--- a/gtk2_ardour/mixer_strip.h
+++ b/gtk2_ardour/mixer_strip.h
@@ -158,8 +158,6 @@ class MixerStrip : public RouteUI, public Gtk::EventBox
ArdourButton width_button;
ArdourButton number_label;
Gtk::HBox width_hide_box;
- Gtk::VBox whvbox;
- Gtk::EventBox top_event_box;
Gtk::EventBox* spacer;
void hide_clicked();
@@ -201,14 +199,8 @@ class MixerStrip : public RouteUI, public Gtk::EventBox
ArdourButton name_button;
- ArdourWindow* comment_window;
- Gtk::TextView* comment_area;
ArdourButton _comment_button;
- void comment_editor_done_editing ();
- void setup_comment_editor ();
- void open_comment_editor ();
- void toggle_comment_editor ();
void setup_comment_button ();
ArdourButton group_button;
@@ -255,13 +247,9 @@ class MixerStrip : public RouteUI, public Gtk::EventBox
Gtk::Menu* route_ops_menu;
void build_route_ops_menu ();
gboolean name_button_button_press (GdkEventButton*);
+ gboolean number_button_button_press (GdkEventButton*);
void list_route_operations ();
- gint comment_key_release_handler (GdkEventKey*);
- void comment_changed (void *src);
- void comment_edited ();
- bool ignore_comment_edit;
-
bool select_route_group (GdkEventButton *);
void route_group_changed ();
diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc
index e524fde94a..17fe8e7709 100644
--- a/gtk2_ardour/route_time_axis.cc
+++ b/gtk2_ardour/route_time_axis.cc
@@ -108,7 +108,6 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, ArdourCan
, gm (sess, true, 125, 18)
, _ignore_set_layer_display (false)
{
- number_label.set_corner_radius(2);
number_label.set_name("tracknumber label");
number_label.set_alignment(.5, .5);
@@ -149,7 +148,8 @@ RouteTimeAxisView::set_route (boost::shared_ptr<Route> rt)
}
mute_changed (0);
- update_solo_display ();
+ update_solo_display ();
+ route_color_changed();
timestretch_rect = 0;
no_redraw = false;
@@ -365,7 +365,6 @@ RouteTimeAxisView::update_track_number_visibility ()
show_label = false;
}
- //if (show_label == number_label.is_visible()) { return; }
if (number_label.get_parent()) {
controls_table.remove (number_label);
}
@@ -480,6 +479,8 @@ RouteTimeAxisView::build_display_menu ()
items.push_back (MenuElem (_("Color..."), sigc::mem_fun (*this, &RouteUI::choose_color)));
+ items.push_back (MenuElem (_("Comments..."), sigc::mem_fun (*this, &RouteUI::open_comment_editor)));
+
if (_size_menu) {
detach_menu (*_size_menu);
}
@@ -961,6 +962,8 @@ RouteTimeAxisView::route_color_changed ()
if (_view) {
_view->apply_color (color(), StreamView::RegionColor);
}
+
+ number_label.set_fixed_colors (gdk_color_to_rgba (color()), gdk_color_to_rgba (color()));
}
void
diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc
index 7802a0dd7b..0de1f81dac 100644
--- a/gtk2_ardour/route_ui.cc
+++ b/gtk2_ardour/route_ui.cc
@@ -71,6 +71,7 @@ RouteUI::RouteUI (ARDOUR::Session* sess)
, solo_menu(0)
, sends_menu(0)
, record_menu(0)
+ , comment_window(0)
, _invert_menu(0)
{
if (sess) init ();
@@ -86,6 +87,7 @@ RouteUI::~RouteUI()
delete sends_menu;
delete record_menu;
delete _invert_menu;
+ delete comment_window;
}
void
@@ -216,6 +218,8 @@ RouteUI::set_route (boost::shared_ptr<Route> rp)
_route->active_changed.connect (route_connections, invalidator (*this), boost::bind (&RouteUI::route_active_changed, this), gui_context());
_route->mute_changed.connect (route_connections, invalidator (*this), boost::bind (&RouteUI::mute_changed, this, _1), gui_context());
+ _route->comment_changed.connect (route_connections, invalidator (*this), boost::bind (&RouteUI::comment_changed, this, _1), gui_context());
+
_route->solo_changed.connect (route_connections, invalidator (*this), boost::bind (&RouteUI::update_solo_display, this), gui_context());
_route->solo_safe_changed.connect (route_connections, invalidator (*this), boost::bind (&RouteUI::update_solo_display, this), gui_context());
_route->listen_changed.connect (route_connections, invalidator (*this), boost::bind (&RouteUI::update_solo_display, this), gui_context());
@@ -1383,8 +1387,7 @@ RouteUI::toggle_solo_safe (Gtk::CheckMenuItem* check)
_route->set_solo_safe (check->get_active(), this);
}
-/** Ask the user to choose a colour, and then set all selected tracks
- * to that colour.
+/** Ask the user to choose a colour, and then apply that color to my route
*/
void
RouteUI::choose_color ()
@@ -1393,9 +1396,7 @@ RouteUI::choose_color ()
Gdk::Color const color = Gtkmm2ext::UI::instance()->get_color (_("Color Selection"), picked, &_color);
if (picked) {
- ARDOUR_UI::instance()->the_editor().get_selection().tracks.foreach_route_ui (
- boost::bind (&RouteUI::set_color, _1, color)
- );
+ set_color(color);
}
}
@@ -1581,6 +1582,79 @@ RouteUI::property_changed (const PropertyChange& what_changed)
}
void
+RouteUI::toggle_comment_editor ()
+{
+// if (ignore_toggle) {
+// return;
+// }
+
+ if (comment_window && comment_window->is_visible ()) {
+ comment_window->hide ();
+ } else {
+ open_comment_editor ();
+ }
+}
+
+
+void
+RouteUI::open_comment_editor ()
+{
+ if (comment_window == 0) {
+ setup_comment_editor ();
+ }
+
+ string title;
+ title = _route->name();
+ title += _(": comment editor");
+
+ comment_window->set_title (title);
+ comment_window->present();
+}
+
+void
+RouteUI::setup_comment_editor ()
+{
+ comment_window = new ArdourWindow (""); // title will be reset to show route
+ comment_window->set_skip_taskbar_hint (true);
+ comment_window->signal_hide().connect (sigc::mem_fun(*this, &MixerStrip::comment_editor_done_editing));
+ comment_window->set_default_size (400, 200);
+
+ comment_area = manage (new TextView());
+ comment_area->set_name ("MixerTrackCommentArea");
+ comment_area->set_wrap_mode (WRAP_WORD);
+ comment_area->set_editable (true);
+ comment_area->get_buffer()->set_text (_route->comment());
+ comment_area->show ();
+
+ comment_window->add (*comment_area);
+}
+
+void
+RouteUI::comment_changed (void *src)
+{
+ ENSURE_GUI_THREAD (*this, &MixerStrip::comment_changed, src)
+
+ if (src != this) {
+ ignore_comment_edit = true;
+ if (comment_area) {
+ comment_area->get_buffer()->set_text (_route->comment());
+ }
+ ignore_comment_edit = false;
+ }
+}
+
+void
+RouteUI::comment_editor_done_editing ()
+{
+ string const str = comment_area->get_buffer()->get_text();
+ if (str == _route->comment ()) {
+ return;
+ }
+
+ _route->set_comment (str, this);
+}
+
+void
RouteUI::set_route_active (bool a, bool apply_to_selection)
{
if (apply_to_selection) {
diff --git a/gtk2_ardour/route_ui.h b/gtk2_ardour/route_ui.h
index 245101f616..9c2c6618ac 100644
--- a/gtk2_ardour/route_ui.h
+++ b/gtk2_ardour/route_ui.h
@@ -25,6 +25,8 @@
#include "pbd/xml++.h"
#include "pbd/signals.h"
+#include <gtkmm/textview.h>
+
#include "gtkmm2ext/widget_state.h"
#include "ardour/ardour.h"
@@ -51,6 +53,7 @@ namespace Gtk {
class BindableToggleButton;
class ArdourButton;
+class ArdourWindow;
class RouteUI : public virtual AxisView
{
@@ -227,7 +230,21 @@ class RouteUI : public virtual AxisView
*/
static PBD::Signal1<void, boost::shared_ptr<ARDOUR::Route> > BusSendDisplayChanged;
+ void comment_editor_done_editing ();
+ void setup_comment_editor ();
+ void open_comment_editor ();
+ void toggle_comment_editor ();
+
+ gint comment_key_release_handler (GdkEventKey*);
+ void comment_changed (void *src);
+ void comment_edited ();
+ bool ignore_comment_edit;
+
protected:
+
+ ArdourWindow* comment_window;
+ Gtk::TextView* comment_area;
+
PBD::ScopedConnectionList route_connections;
bool self_destruct;