return;
}
- if (Config->get_show_region_gain() || trackview.editor().current_mouse_mode() == Editing::MouseGain || trackview.editor().current_mouse_mode() == Editing::MouseRange ) {
+ if (Config->get_show_region_gain() || trackview.editor().current_mouse_mode() == Editing::MouseDraw || trackview.editor().current_mouse_mode() == Editing::MouseRange ) {
gain_line->add_visibility (AutomationLine::Line);
} else {
gain_line->hide ();
MOUSEMODE(MouseObject)
MOUSEMODE(MouseRange)
MOUSEMODE(MouseCut)
-MOUSEMODE(MouseGain)
MOUSEMODE(MouseTimeFX)
MOUSEMODE(MouseAudition)
MOUSEMODE(MouseDraw)
mouse_mode_size_group->add_widget (mouse_move_button);
mouse_mode_size_group->add_widget (mouse_cut_button);
mouse_mode_size_group->add_widget (mouse_select_button);
- mouse_mode_size_group->add_widget (mouse_gain_button);
mouse_mode_size_group->add_widget (mouse_timefx_button);
mouse_mode_size_group->add_widget (mouse_audition_button);
mouse_mode_size_group->add_widget (mouse_draw_button);
}
if (!ARDOUR::Profile->get_trx()) {
- mouse_mode_hbox->pack_start (mouse_gain_button, false, false);
mouse_mode_hbox->pack_start (mouse_timefx_button, false, false);
mouse_mode_hbox->pack_start (mouse_audition_button, false, false);
mouse_mode_hbox->pack_start (mouse_draw_button, false, false);
ARDOUR_UI::instance()->set_tip (mouse_move_button, _("Object Mode (select/move Objects)"));
ARDOUR_UI::instance()->set_tip (mouse_cut_button, _("Cut Mode (split Regions)"));
ARDOUR_UI::instance()->set_tip (mouse_select_button, _("Range Mode (select/move Ranges)"));
- ARDOUR_UI::instance()->set_tip (mouse_draw_button, _("Draw/Edit MIDI Notes"));
- ARDOUR_UI::instance()->set_tip (mouse_gain_button, _("Draw Region Gain"));
+ ARDOUR_UI::instance()->set_tip (mouse_draw_button, _("Draw/Edit Gain/Notes/Automation"));
ARDOUR_UI::instance()->set_tip (mouse_timefx_button, _("Stretch/Shrink Regions and MIDI Notes"));
ARDOUR_UI::instance()->set_tip (mouse_audition_button, _("Listen to Specific Regions"));
ARDOUR_UI::instance()->set_tip (internal_edit_button, _("Note Level Editing"));
ArdourButton mouse_select_button;
ArdourButton mouse_draw_button;
ArdourButton mouse_move_button;
- ArdourButton mouse_gain_button;
ArdourButton mouse_timefx_button;
ArdourButton mouse_audition_button;
ArdourButton mouse_cut_button;
mouse_draw_button.set_image (::get_icon("midi_tool_pencil"));
mouse_draw_button.set_name ("mouse mode button");
- act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-gain", _("Gain Tool"), sigc::bind (mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseGain));
- mouse_gain_button.set_related_action (act);
- mouse_gain_button.set_image (::get_icon("tool_gain"));
- mouse_gain_button.set_name ("mouse mode button");
-
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-audition", _("Audition Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseAudition));
mouse_audition_button.set_related_action (act);
mouse_audition_button.set_image (::get_icon("tool_audition"));
mode_cursor = _cursors->midi_pencil;
break;
- case MouseGain:
- mode_cursor = _cursors->cross_hair;
- break;
-
case MouseTimeFX:
mode_cursor = _cursors->time_fx; // just use playhead
break;
break;
}
- } else if (mouse_mode == MouseGain) {
+ } else if (mouse_mode == MouseDraw) {
/* ControlPointItem is not really specific to region gain mode
but it is the same cursor so don't worry about this for now.
The result is that we'll see the fader cursor if we enter
- non-region-gain-line control points while in MouseGain
+ non-region-gain-line control points while in MouseDraw
mode, even though we can't edit them in this mode.
*/
bool
ControlPointDrag::active (Editing::MouseMode m)
{
- if (m == Editing::MouseGain) {
- /* always active in mouse gain */
+ if (m == Editing::MouseDraw) {
+ /* always active in mouse draw */
return true;
}
* @return true if this drag should happen in this mouse mode.
*/
virtual bool active (Editing::MouseMode m) {
- return (m != Editing::MouseGain);
+ return true;
}
/** @return minimum number of frames (in x) and pixels (in y) that should be considered a movement */
void finished (GdkEvent *, bool);
void aborted (bool);
+ bool active (Editing::MouseMode mode) {
+ return mode == Editing::MouseDraw;
+ }
+
+ bool y_movement_matters () const {
+ return false;
+ }
+
private:
double y_to_region (double) const;
framecnt_t grid_frames (framepos_t) const;
void finished (GdkEvent *, bool);
void aborted (bool);
- bool active (Editing::MouseMode) {
- return true;
- }
-
bool allow_vertical_autoscroll () const {
return false;
}
void finished (GdkEvent *, bool);
void aborted (bool);
- bool active (Editing::MouseMode) {
- return true;
- }
-
private:
AutomationLine* _line;
void finished (GdkEvent *, bool);
void aborted (bool);
- bool active (Editing::MouseMode) {
- return true;
- }
-
private:
ArdourCanvas::Line* _line;
return false;
}
- bool active (Editing::MouseMode) {
- return true;
- }
-
private:
void setup (std::list<boost::shared_ptr<AutomationLine> > const &);
double y_fraction (boost::shared_ptr<AutomationLine>, double global_y_position) const;
act = ActionManager::get_action (X_("MouseMode"), X_("set-mouse-mode-draw"));
break;
- case MouseGain:
- act = ActionManager::get_action (X_("MouseMode"), X_("set-mouse-mode-gain"));
- break;
-
case MouseTimeFX:
act = ActionManager::get_action (X_("MouseMode"), X_("set-mouse-mode-timefx"));
break;
act = ActionManager::get_action (X_("MouseMode"), X_("set-mouse-mode-draw"));
break;
- case MouseGain:
- act = ActionManager::get_action (X_("MouseMode"), X_("set-mouse-mode-gain"));
- break;
-
case MouseTimeFX:
act = ActionManager::get_action (X_("MouseMode"), X_("set-mouse-mode-timefx"));
break;
if (((mouse_mode != MouseObject) &&
(mouse_mode != MouseAudition || item_type != RegionItem) &&
(mouse_mode != MouseTimeFX || item_type != RegionItem) &&
- (mouse_mode != MouseGain) &&
(mouse_mode != MouseDraw)) ||
((event->type != GDK_BUTTON_PRESS && event->type != GDK_BUTTON_RELEASE) || event->button.button > 3) ||
(internal_editing() && mouse_mode != MouseTimeFX)) {
return true;
break;
- case MouseDraw:
- switch (item_type) {
- case NoteItem:
- /* Existing note: allow trimming/motion */
- if (internal_editing()) {
- /* trim notes if we're in internal edit mode and near the ends of the note */
- NoteBase* cn = reinterpret_cast<NoteBase*>(item->get_data ("notebase"));
- assert (cn);
- if (cn->big_enough_to_trim() && cn->mouse_near_ends()) {
- _drags->set (new NoteResizeDrag (this, item), event, current_canvas_cursor);
- } else {
- _drags->set (new NoteDrag (this, item), event);
- }
- return true;
- }
- break;
- case StreamItem:
- if (internal_editing()) {
- if (dynamic_cast<MidiTimeAxisView*> (clicked_axisview)) {
- _drags->set (new RegionCreateDrag (this, item, clicked_axisview), event);
- }
- return true;
- }
- break;
-
- default:
- break;
- }
- break;
-
case MouseCut:
switch (item_type) {
case RegionItem:
return true;
break;
- case MouseGain:
+ case MouseDraw:
switch (item_type) {
case GainLineItem:
_drags->set (new LineDrag (this, item), event);
case AutomationLineItem:
_drags->set (new LineDrag (this, item), event);
break;
-
+
+ case NoteItem:
+ /* Existing note: allow trimming/motion */
+ if (internal_editing()) {
+ /* trim notes if we're in internal edit mode and near the ends of the note */
+ NoteBase* cn = reinterpret_cast<NoteBase*>(item->get_data ("notebase"));
+ assert (cn);
+ if (cn->big_enough_to_trim() && cn->mouse_near_ends()) {
+ _drags->set (new NoteResizeDrag (this, item), event, current_canvas_cursor);
+ } else {
+ _drags->set (new NoteDrag (this, item), event);
+ }
+ return true;
+ }
+ break;
+
+ case StreamItem:
+ if (internal_editing()) {
+ if (dynamic_cast<MidiTimeAxisView*> (clicked_axisview)) {
+ _drags->set (new RegionCreateDrag (this, item, clicked_axisview), event);
+ }
+ return true;
+ }
+ break;
+
default:
break;
}
}
switch (eff) {
- case MouseObject:
case MouseDraw:
- switch (item_type) {
- case AutomationTrackItem:
- atv = dynamic_cast<AutomationTimeAxisView*>(clicked_axisview);
- if (atv) {
- bool with_guard_points = Keyboard::modifier_state_equals (event->button.state, Keyboard::PrimaryModifier);
- atv->add_automation_event (event, where, event->button.y, with_guard_points);
- }
- return true;
- break;
- default:
- break;
- }
- break;
-
- case MouseGain:
switch (item_type) {
case RegionItem:
{
case AutomationTrackItem: {
bool with_guard_points = Keyboard::modifier_state_equals (event->button.state, Keyboard::PrimaryModifier);
- dynamic_cast<AutomationTimeAxisView*>(clicked_axisview)->
- add_automation_event (event, where, event->button.y, with_guard_points);
+ atv = dynamic_cast<AutomationTimeAxisView*>(clicked_axisview);
+ if (atv) {
+ atv->add_automation_event (event, where, event->button.y, with_guard_points);
+ }
return true;
break;
}
switch (item_type) {
case ControlPointItem:
- if (mouse_mode == MouseGain || mouse_mode == MouseObject) {
+ if (mouse_mode == MouseDraw || mouse_mode == MouseObject) {
cp = static_cast<ControlPoint*>(item->get_data ("control_point"));
cp->show ();
break;
case GainLineItem:
- if (mouse_mode == MouseGain) {
+ if (mouse_mode == MouseDraw) {
ArdourCanvas::Line *line = dynamic_cast<ArdourCanvas::Line *> (item);
if (line) {
line->set_outline_color (ARDOUR_UI::config()->get_EnteredGainLine());
break;
case AutomationLineItem:
- if (mouse_mode == MouseGain || mouse_mode == MouseObject) {
+ if (mouse_mode == MouseDraw || mouse_mode == MouseObject) {
ArdourCanvas::Line *line = dynamic_cast<ArdourCanvas::Line *> (item);
if (line) {
line->set_outline_color (ARDOUR_UI::config()->get_EnteredAutomationLine());
(*i)->leave_internal_edit_mode ();
}
- if (mouse_mode == MouseDraw && pre_internal_mouse_mode != MouseDraw) {
- /* we were drawing .. flip back to something sensible */
- set_mouse_mode (pre_internal_mouse_mode);
- }
-
set_snap_to (pre_internal_snap_type);
set_snap_mode (pre_internal_snap_mode);
}
REGISTER_ENUM (SamplesRulerItem);
REGISTER (item_type);
- REGISTER_ENUM(MouseGain);
REGISTER_ENUM(MouseObject);
REGISTER_ENUM(MouseRange);
REGISTER_ENUM(MouseDraw);