*/
#include <cmath>
-#include <glib.h>
#include <sigc++/bind.h>
+#include <pbd/convert.h>
+
#include <gtkmm2ext/gtk_ui.h>
#include <gtkmm2ext/utils.h>
#include <gtkmm2ext/choice.h>
gain_automation_state_button (""),
pan_automation_style_button (""),
pan_automation_state_button (""),
- comment_button (_("comments")),
+ comment_button (_("Comments")),
speed_adjustment (1.0, 0.001, 4.0, 0.001, 0.1),
speed_spinner (&speed_adjustment, "MixerStripSpeedBase", true)
group_label.set_name ("MixerGroupButtonLabel");
comment_button.set_name ("MixerCommentButton");
+
ARDOUR_UI::instance()->tooltips().set_tip (comment_button, _route.comment()=="" ?
- _("click to add/edit comments"):
+ _("Click to Add/Edit Comments"):
_route.comment());
+
comment_button.signal_clicked().connect (mem_fun(*this, &MixerStrip::comment_button_clicked));
global_vpacker.set_border_width (0);
_route.comment_changed.connect (mem_fun(*this, &MixerStrip::comment_changed));
_route.gui_changed.connect (mem_fun(*this, &MixerStrip::route_gui_changed));
- input_button.signal_button_release_event().connect (mem_fun(*this, &MixerStrip::input_press), false);
- output_button.signal_button_release_event().connect (mem_fun(*this, &MixerStrip::output_press), false);
+ input_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::input_press), false);
+ output_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::output_press), false);
rec_enable_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::rec_enable_press));
solo_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::solo_press), false);
pan_automation_style_button.signal_button_release_event().connect (mem_fun(*this, &MixerStrip::pan_automation_style_button_event), false);
gain_automation_state_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::gain_automation_state_button_event), false);
- gain_automation_state_button.signal_button_release_event().connect (mem_fun(*this, &MixerStrip::gain_automation_state_button_event), false);
pan_automation_state_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::pan_automation_state_button_event), false);
- pan_automation_state_button.signal_button_release_event().connect (mem_fun(*this, &MixerStrip::pan_automation_state_button_event), false);
- name_button.signal_button_release_event().connect (mem_fun(*this, &MixerStrip::name_button_button_release), false);
+ name_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::name_button_button_press), false);
- group_button.signal_button_release_event().connect (mem_fun(*this, &MixerStrip::select_mix_group), false);
+ group_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::select_mix_group), false);
_width = (Width) -1;
set_stuff_from_route ();
set_size_request (-1, -1);
xml_node->add_property ("strip_width", "wide");
- static_cast<Gtk::Label*> (rec_enable_button->get_child())->set_text (_("RECORD"));
- static_cast<Gtk::Label*> (mute_button->get_child())->set_text (_("mute"));
- static_cast<Gtk::Label*> (solo_button->get_child())->set_text (_("solo"));
- static_cast<Gtk::Label*> (comment_button.get_child())->set_text (_("comments"));
- static_cast<Gtk::Label*> (gain_automation_style_button.get_child())->set_text (astyle_string(_route.gain_automation_curve().automation_style()));
- static_cast<Gtk::Label*> (gain_automation_state_button.get_child())->set_text (astate_string(_route.gain_automation_curve().automation_state()));
- static_cast<Gtk::Label*> (pan_automation_style_button.get_child())->set_text (astyle_string(_route.panner().automation_style()));
- static_cast<Gtk::Label*> (pan_automation_state_button.get_child())->set_text (astate_string(_route.panner().automation_state()));
+ rec_enable_button->set_label (_("RECORD"));
+ mute_button->set_label (_("mute"));
+ solo_button->set_label (_("solo"));
+
+ if (_route.comment() == "") {
+ comment_button.set_label (_("Comments"));
+ } else {
+ comment_button.set_label (_("*Comments*"));
+ }
+
+ gain_automation_style_button.set_label (astyle_string(_route.gain_automation_curve().automation_style()));
+ gain_automation_state_button.set_label (astate_string(_route.gain_automation_curve().automation_state()));
+ pan_automation_style_button.set_label (astyle_string(_route.panner().automation_style()));
+ pan_automation_state_button.set_label (astate_string(_route.panner().automation_state()));
Gtkmm2ext::set_size_request_to_display_given_text (name_button, "long", 2, 2);
break;
set_size_request (50, -1);
xml_node->add_property ("strip_width", "narrow");
- static_cast<Gtk::Label*> (rec_enable_button->get_child())->set_text (_("REC"));
- static_cast<Gtk::Label*> (mute_button->get_child())->set_text (_("m"));
- static_cast<Gtk::Label*> (solo_button->get_child())->set_text (_("s"));
- static_cast<Gtk::Label*> (comment_button.get_child())->set_text (_("cmt"));
- static_cast<Gtk::Label*> (gain_automation_style_button.get_child())->set_text (short_astyle_string(_route.gain_automation_curve().automation_style()));
- static_cast<Gtk::Label*> (gain_automation_state_button.get_child())->set_text (short_astate_string(_route.gain_automation_curve().automation_state()));
- static_cast<Gtk::Label*> (pan_automation_style_button.get_child())->set_text (short_astyle_string(_route.panner().automation_style()));
- static_cast<Gtk::Label*> (pan_automation_state_button.get_child())->set_text (short_astate_string(_route.panner().automation_state()));
+ rec_enable_button->set_label (_("REC"));
+ mute_button->set_label (_("m"));
+ solo_button->set_label (_("s"));
+
+ if (_route.comment() == "") {
+ comment_button.set_label (_("Cmt"));
+ } else {
+ comment_button.set_label (_("*Cmt*"));
+ }
+
+ gain_automation_style_button.set_label (short_astyle_string(_route.gain_automation_curve().automation_style()));
+ gain_automation_state_button.set_label (short_astate_string(_route.gain_automation_curve().automation_state()));
+ pan_automation_style_button.set_label (short_astyle_string(_route.panner().automation_style()));
+ pan_automation_state_button.set_label (short_astate_string(_route.panner().automation_state()));
Gtkmm2ext::set_size_request_to_display_given_text (name_button, "longest label", 2, 2);
break;
}
update_output_display ();
mix_group_changed (0);
name_changed (0);
+
}
void
panners.setup_pan ();
}
-void
-MixerStrip::update ()
-{
- gpm.update_meters ();
-}
-
void
MixerStrip::fast_update ()
{
- if (_session.meter_falloff() > 0.0f) {
- gpm.update_meters_falloff ();
- }
+ gpm.update_meters ();
}
gint
MixerStrip::gain_automation_state_button_event (GdkEventButton *ev)
{
- if (ev->type == GDK_BUTTON_PRESS || ev->type == GDK_2BUTTON_PRESS) {
+ if (ev->type == GDK_BUTTON_RELEASE) {
return TRUE;
}
{
using namespace Menu_Helpers;
- if (ev->type == GDK_BUTTON_PRESS || ev->type == GDK_2BUTTON_PRESS) {
+ if (ev->type == GDK_BUTTON_RELEASE) {
return TRUE;
}
{
switch (_width) {
case Wide:
- static_cast<Gtk::Label*> (gain_automation_style_button.get_child())->set_text (astyle_string(_route.gain_automation_curve().automation_style()));
+ gain_automation_style_button.set_label (astyle_string(_route.gain_automation_curve().automation_style()));
break;
case Narrow:
- static_cast<Gtk::Label*> (gain_automation_style_button.get_child())->set_text (short_astyle_string(_route.gain_automation_curve().automation_style()));
+ gain_automation_style_button.set_label (short_astyle_string(_route.gain_automation_curve().automation_style()));
break;
}
}
switch (_width) {
case Wide:
- static_cast<Gtk::Label*> (gain_automation_state_button.get_child())->set_text (astate_string(_route.gain_automation_curve().automation_state()));
+ gain_automation_state_button.set_label (astate_string(_route.gain_automation_curve().automation_state()));
break;
case Narrow:
- static_cast<Gtk::Label*> (gain_automation_state_button.get_child())->set_text (short_astate_string(_route.gain_automation_curve().automation_state()));
+ gain_automation_state_button.set_label (short_astate_string(_route.gain_automation_curve().automation_state()));
break;
}
switch (_width) {
case Wide:
- static_cast<Gtk::Label*> (pan_automation_style_button.get_child())->set_text (astyle_string(_route.panner().automation_style()));
+ pan_automation_style_button.set_label (astyle_string(_route.panner().automation_style()));
break;
case Narrow:
- static_cast<Gtk::Label*> (pan_automation_style_button.get_child())->set_text (short_astyle_string(_route.panner().automation_style()));
+ pan_automation_style_button.set_label (short_astyle_string(_route.panner().automation_style()));
break;
}
}
switch (_width) {
case Wide:
- static_cast<Gtk::Label*> (pan_automation_state_button.get_child())->set_text (astate_string(_route.panner().automation_state()));
+ pan_automation_state_button.set_label (astate_string(_route.panner().automation_state()));
break;
case Narrow:
- static_cast<Gtk::Label*> (pan_automation_state_button.get_child())->set_text (short_astate_string(_route.panner().automation_state()));
+ pan_automation_state_button.set_label (short_astate_string(_route.panner().automation_state()));
break;
}
setup_comment_editor ();
}
+ int x, y, cw_width, cw_height;
+
if (comment_window->is_visible()) {
- comment_window->hide ();
- return;
+ string str = comment_area->get_buffer()->get_text();
+ if (_route.comment() != str) {
+ _route.set_comment (str, this);
+
+ switch (_width) {
+
+ case Wide:
+ if (! str.empty()) {
+ comment_button.set_label (_("*Comments*"));
+ } else {
+ comment_button.set_label (_("Comments"));
+ }
+ break;
+
+ case Narrow:
+ if (! str.empty()) {
+ comment_button.set_label (_("*Cmt*"));
+ } else {
+ comment_button.set_label (_("Cmt"));
+ }
+ break;
+ }
+
+ ARDOUR_UI::instance()->tooltips().set_tip (comment_button,
+ str.empty() ? _("Click to Add/Edit Comments") : str);
+ }
+ comment_window->hide ();
+ return;
}
+ comment_window->get_size (cw_width, cw_height);
+ comment_window->get_position(x, y);
+ comment_window->move(x, y - (cw_height / 2) - 45);
+ /*
+ half the dialog height minus the comments button height
+ with some window decoration fudge thrown in.
+ */
- comment_window->set_position (Gtk::WIN_POS_MOUSE);
- comment_window->show_all ();
+ comment_window->show();
comment_window->present();
-
- ResponseType response = (ResponseType) comment_window->run();
- comment_window->hide ();
- switch (response) {
- case RESPONSE_ACCEPT:
- break;
- default:
- return;
- }
-
- string str = comment_area->get_buffer()->get_text();
- _route.set_comment (str, this);
- ARDOUR_UI::instance()->tooltips().set_tip (comment_button,
- str.empty() ? _("click to add/edit comments") : str);
}
void
title += _(": comment editor");
comment_window = new ArdourDialog (title, false);
- comment_area = manage (new TextView());
+ comment_window->set_position (Gtk::WIN_POS_MOUSE);
+ comment_window->set_skip_taskbar_hint (true);
+ comment_area = manage (new TextView());
comment_area->set_name ("MixerTrackCommentArea");
+ comment_area->set_size_request (110, 178);
+ comment_area->set_wrap_mode (WRAP_WORD);
comment_area->set_editable (true);
comment_area->get_buffer()->set_text (_route.comment());
- comment_area->set_size_request (200,100);
comment_area->show ();
comment_window->get_vbox()->pack_start (*comment_area);
- comment_window->add_button (Stock::CANCEL, RESPONSE_CANCEL);
- comment_window->add_button (Stock::OK, RESPONSE_ACCEPT);
+ comment_window->get_action_area()->hide();
}
void
_session.foreach_mix_group (bind (mem_fun (*this, &MixerStrip::add_mix_group_to_menu), &group));
- group_menu->popup (1, 0);
+ group_menu->popup (1, ev->time);
return true;
}
}
gint
-MixerStrip::name_button_button_release (GdkEventButton* ev)
+MixerStrip::name_button_button_press (GdkEventButton* ev)
{
- if (ev->button == 3) {
+ if (ev->button == 1) {
list_route_operations ();
+ route_ops_menu->popup (1, ev->time);
}
return FALSE;
}
}
refresh_remote_control_menu();
-
- route_ops_menu->popup (1, 0);
}
RouteUI::name_changed (src);
break;
case Narrow:
- name_label.set_text (short_version (_route.name(), 5));
+ name_label.set_text (PBD::short_version (_route.name(), 5));
break;
}
}