Track Add/Remove Time dialog improvements:
Add a clock to show the position of the edit, to remove ambiguity If a Range is selected, pre-fill the position and length clocks Clock format should default to the editor's secondary clock mode
This commit is contained in:
parent
4925967560
commit
9a9a9f9eac
|
@ -7393,7 +7393,7 @@ Editor::do_insert_time ()
|
||||||
}
|
}
|
||||||
|
|
||||||
insert_time (
|
insert_time (
|
||||||
get_preferred_edit_position (EDIT_IGNORE_MOUSE),
|
d.position(),
|
||||||
d.distance(),
|
d.distance(),
|
||||||
d.intersected_region_action (),
|
d.intersected_region_action (),
|
||||||
d.all_playlists(),
|
d.all_playlists(),
|
||||||
|
@ -7542,7 +7542,6 @@ Editor::do_remove_time ()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
framepos_t pos = get_preferred_edit_position (EDIT_IGNORE_MOUSE);
|
|
||||||
InsertRemoveTimeDialog d (*this, true);
|
InsertRemoveTimeDialog d (*this, true);
|
||||||
|
|
||||||
int response = d.run ();
|
int response = d.run ();
|
||||||
|
@ -7558,7 +7557,7 @@ Editor::do_remove_time ()
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_time (
|
remove_time (
|
||||||
pos,
|
d.position(),
|
||||||
distance,
|
distance,
|
||||||
SplitIntersected,
|
SplitIntersected,
|
||||||
d.move_glued(),
|
d.move_glued(),
|
||||||
|
|
|
@ -23,49 +23,75 @@
|
||||||
#include <gtkmm/alignment.h>
|
#include <gtkmm/alignment.h>
|
||||||
#include "insert_remove_time_dialog.h"
|
#include "insert_remove_time_dialog.h"
|
||||||
#include "audio_clock.h"
|
#include "audio_clock.h"
|
||||||
|
#include "ardour_ui.h"
|
||||||
|
#include "main_clock.h"
|
||||||
#include "pbd/i18n.h"
|
#include "pbd/i18n.h"
|
||||||
|
|
||||||
using namespace Gtk;
|
using namespace Gtk;
|
||||||
using namespace Editing;
|
using namespace Editing;
|
||||||
|
using namespace ARDOUR;
|
||||||
|
|
||||||
InsertRemoveTimeDialog::InsertRemoveTimeDialog (PublicEditor& e, bool remove)
|
InsertRemoveTimeDialog::InsertRemoveTimeDialog (PublicEditor& e, bool remove)
|
||||||
: ArdourDialog (remove ? _("Remove Time") : _("Insert Time"))
|
: ArdourDialog (remove ? _("Remove Time") : _("Insert Time"))
|
||||||
, _editor (e)
|
, _editor (e)
|
||||||
, _clock ("insertTimeClock", true, "",
|
, duration_clock ("insertTimeClock", true, "",
|
||||||
true, // editable
|
true, // editable
|
||||||
false, // follows_playhead
|
false, // follows_playhead
|
||||||
true, // duration
|
true, // duration
|
||||||
false, // with_info
|
false, // with_info
|
||||||
true // accept_on_focus_out
|
true // accept_on_focus_out
|
||||||
)
|
)
|
||||||
|
, position_clock ("insertPosTimeClock", true, "",
|
||||||
|
true, // editable
|
||||||
|
false, // follows_playhead
|
||||||
|
false, // duration
|
||||||
|
false, // with_info
|
||||||
|
true // accept_on_focus_out
|
||||||
|
)
|
||||||
{
|
{
|
||||||
set_session (_editor.session ());
|
set_session (_editor.session ());
|
||||||
|
|
||||||
framepos_t const pos = _editor.get_preferred_edit_position (EDIT_IGNORE_MOUSE);
|
|
||||||
|
|
||||||
get_vbox()->set_border_width (12);
|
get_vbox()->set_border_width (12);
|
||||||
get_vbox()->set_spacing (4);
|
get_vbox()->set_spacing (4);
|
||||||
|
|
||||||
Table* table = manage (new Table (2, 2));
|
Table* table = manage (new Table (2, 3));
|
||||||
table->set_spacings (4);
|
table->set_spacings (4);
|
||||||
|
|
||||||
Label* time_label = manage (new Label (remove ? _("Time to remove") : _("Time to insert:")));
|
Label* time_label = manage (new Label (remove ? _("Remove Time starting at:") : _("Insert Time starting at:")));
|
||||||
time_label->set_alignment (1, 0.5);
|
time_label->set_alignment (1, 0.5);
|
||||||
table->attach (*time_label, 0, 1, 0, 1, FILL | EXPAND);
|
table->attach (*time_label, 0, 1, 0, 1, FILL | EXPAND);
|
||||||
_clock.set (0);
|
position_clock.set_session (_session);
|
||||||
_clock.set_session (_session);
|
position_clock.set_mode (ARDOUR_UI::instance()->secondary_clock->mode());
|
||||||
_clock.set_bbt_reference (pos);
|
table->attach (position_clock, 1, 2, 0, 1);
|
||||||
table->attach (_clock, 1, 2, 0, 1);
|
|
||||||
|
time_label = manage (new Label (remove ? _("Time to remove:") : _("Time to insert:")));
|
||||||
|
time_label->set_alignment (1, 0.5);
|
||||||
|
table->attach (*time_label, 0, 1, 1, 2, FILL | EXPAND);
|
||||||
|
duration_clock.set_session (_session);
|
||||||
|
duration_clock.set_mode (ARDOUR_UI::instance()->secondary_clock->mode());
|
||||||
|
table->attach (duration_clock, 1, 2, 1, 2);
|
||||||
|
|
||||||
|
//if a Range is selected, assume the user wants to insert/remove the length of the range
|
||||||
|
if ( _editor.get_selection().time.length() != 0 ) {
|
||||||
|
position_clock.set ( _editor.get_selection().time.start(), true );
|
||||||
|
duration_clock.set ( _editor.get_selection().time.end_frame(), true, _editor.get_selection().time.start() );
|
||||||
|
duration_clock.set_bbt_reference (_editor.get_selection().time.start());
|
||||||
|
} else {
|
||||||
|
framepos_t const pos = _editor.get_preferred_edit_position (EDIT_IGNORE_MOUSE);
|
||||||
|
position_clock.set ( pos, true );
|
||||||
|
duration_clock.set_bbt_reference (pos);
|
||||||
|
duration_clock.set (0);
|
||||||
|
}
|
||||||
|
|
||||||
if (!remove) {
|
if (!remove) {
|
||||||
Label* intersected_label = manage (new Label (_("Intersected regions should:")));
|
Label* intersected_label = manage (new Label (_("Intersected regions should:")));
|
||||||
intersected_label->set_alignment (1, 0.5);
|
intersected_label->set_alignment (1, 0.5);
|
||||||
table->attach (*intersected_label, 0, 1, 1, 2, FILL | EXPAND);
|
table->attach (*intersected_label, 0, 1, 2, 3, FILL | EXPAND);
|
||||||
_intersected_combo.append_text (_("stay in position"));
|
_intersected_combo.append_text (_("stay in position"));
|
||||||
_intersected_combo.append_text (_("move"));
|
_intersected_combo.append_text (_("move"));
|
||||||
_intersected_combo.append_text (_("be split"));
|
_intersected_combo.append_text (_("be split"));
|
||||||
_intersected_combo.set_active (0);
|
_intersected_combo.set_active (0);
|
||||||
table->attach (_intersected_combo, 1, 2, 1, 2);
|
table->attach (_intersected_combo, 1, 2, 2, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
get_vbox()->pack_start (*table);
|
get_vbox()->pack_start (*table);
|
||||||
|
@ -161,10 +187,16 @@ InsertRemoveTimeDialog::move_locked_markers () const
|
||||||
return _move_locked_markers.get_active ();
|
return _move_locked_markers.get_active ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
framepos_t
|
||||||
|
InsertRemoveTimeDialog::position () const
|
||||||
|
{
|
||||||
|
return position_clock.current_time();
|
||||||
|
}
|
||||||
|
|
||||||
framepos_t
|
framepos_t
|
||||||
InsertRemoveTimeDialog::distance () const
|
InsertRemoveTimeDialog::distance () const
|
||||||
{
|
{
|
||||||
return _clock.current_duration (_editor.get_preferred_edit_position (EDIT_IGNORE_MOUSE));
|
return duration_clock.current_duration ( position_clock.current_time() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -34,6 +34,7 @@ public:
|
||||||
bool move_glued_markers () const;
|
bool move_glued_markers () const;
|
||||||
bool move_locked_markers () const;
|
bool move_locked_markers () const;
|
||||||
bool move_tempos () const;
|
bool move_tempos () const;
|
||||||
|
framepos_t position () const;
|
||||||
framepos_t distance () const;
|
framepos_t distance () const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -49,5 +50,6 @@ private:
|
||||||
Gtk::CheckButton _move_locked_markers;
|
Gtk::CheckButton _move_locked_markers;
|
||||||
Gtk::CheckButton _move_tempos;
|
Gtk::CheckButton _move_tempos;
|
||||||
Gtk::Label tempo_label;
|
Gtk::Label tempo_label;
|
||||||
AudioClock _clock;
|
AudioClock duration_clock;
|
||||||
|
AudioClock position_clock;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user