*/
#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>
_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 ();
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();
comment_window->present();
- comment_window->run(); // we don't care what the response is
- comment_window->hide();
-
- 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);
- }
}
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,124);
comment_area->show ();
comment_window->get_vbox()->pack_start (*comment_area);
_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;
}
}