#include "editor.h"
#include "marker.h"
#include "selection.h"
-#include "simplerect.h"
#include "editing.h"
#include "gui_thread.h"
#include "simplerect.h"
+#include "actions.h"
+#include "prompter.h"
#include "i18n.h"
using namespace std;
using namespace sigc;
using namespace ARDOUR;
+using namespace PBD;
using namespace Gtk;
void
void
Editor::add_new_location (Location *location)
{
+ ENSURE_GUI_THREAD (bind (mem_fun(*this, &Editor::add_new_location), location));
+
LocationMarkers *lam = new LocationMarkers;
uint32_t color;
}
-
void
Editor::marker_context_menu (GdkEventButton* ev, ArdourCanvas::Item* item)
{
marker_menu_item = item;
transport_marker_menu->popup (1, ev->time);
} else {
- if (marker_menu == 0) {
- if (loc->is_mark()) {
- build_marker_menu ();
- } else {
- build_range_marker_menu ();
- }
- }
+
+ if (loc->is_mark()) {
+ if (marker_menu == 0) {
+ build_marker_menu ();
+ }
+
// GTK2FIX use action group sensitivity
#ifdef GTK2FIX
#endif
marker_menu_item = item;
marker_menu->popup (1, ev->time);
+ }
+
+ if (loc->is_range_marker()) {
+ if (range_marker_menu == 0){
+ build_range_marker_menu ();
+ }
+ marker_menu_item = item;
+ range_marker_menu->popup (1, ev->time);
+ }
}
}
-
void
Editor::new_transport_marker_context_menu (GdkEventButton* ev, ArdourCanvas::Item* item)
{
MenuList& items = marker_menu->items();
marker_menu->set_name ("ArdourContextMenu");
- items.push_back (MenuElem (_("Locate to"), mem_fun(*this, &Editor::marker_menu_set_playhead)));
- items.push_back (MenuElem (_("Play from"), mem_fun(*this, &Editor::marker_menu_play_from)));
- items.push_back (MenuElem (_("Loop range"), mem_fun(*this, &Editor::marker_menu_loop_range)));
- items.push_back (MenuElem (_("Set from playhead"), mem_fun(*this, &Editor::marker_menu_set_from_playhead)));
- items.push_back (MenuElem (_("Set from range"), mem_fun(*this, &Editor::marker_menu_set_from_selection)));
+ items.push_back (MenuElem (_("Locate to Mark"), mem_fun(*this, &Editor::marker_menu_set_playhead)));
+ items.push_back (MenuElem (_("Play from Mark"), mem_fun(*this, &Editor::marker_menu_play_from)));
+ items.push_back (MenuElem (_("Set Mark from Playhead"), mem_fun(*this, &Editor::marker_menu_set_from_playhead)));
items.push_back (SeparatorElem());
- items.push_back (MenuElem (_("Rename"), mem_fun(*this, &Editor::marker_menu_rename)));
- items.push_back (MenuElem (_("Hide"), mem_fun(*this, &Editor::marker_menu_hide)));
- items.push_back (MenuElem (_("Remove"), mem_fun(*this, &Editor::marker_menu_remove)));
+ items.push_back (MenuElem (_("Rename Mark"), mem_fun(*this, &Editor::marker_menu_rename)));
+ items.push_back (MenuElem (_("Hide Mark"), mem_fun(*this, &Editor::marker_menu_hide)));
+ items.push_back (MenuElem (_("Remove Mark"), mem_fun(*this, &Editor::marker_menu_remove)));
}
{
using namespace Menu_Helpers;
- marker_menu = new Menu;
- MenuList& items = marker_menu->items();
- marker_menu->set_name ("ArdourContextMenu");
+ range_marker_menu = new Menu;
+ MenuList& items = range_marker_menu->items();
+ range_marker_menu->set_name ("ArdourContextMenu");
- items.push_back (MenuElem (_("Locate to"), mem_fun(*this, &Editor::marker_menu_set_playhead)));
- items.push_back (MenuElem (_("Play from"), mem_fun(*this, &Editor::marker_menu_play_from)));
- items.push_back (MenuElem (_("Loop range"), mem_fun(*this, &Editor::marker_menu_loop_range)));
- items.push_back (MenuElem (_("Set from playhead"), mem_fun(*this, &Editor::marker_menu_set_from_playhead)));
- items.push_back (MenuElem (_("Set from range"), mem_fun(*this, &Editor::marker_menu_set_from_selection)));
+ items.push_back (MenuElem (_("Locate to Range Mark"), mem_fun(*this, &Editor::marker_menu_set_playhead)));
+ items.push_back (MenuElem (_("Play from Range Mark"), mem_fun(*this, &Editor::marker_menu_play_from)));
+ items.push_back (MenuElem (_("Loop Range"), mem_fun(*this, &Editor::marker_menu_loop_range)));
+ items.push_back (MenuElem (_("Set Range Mark from Playhead"), mem_fun(*this, &Editor::marker_menu_set_from_playhead)));
+ items.push_back (MenuElem (_("Set Range from Range Selection"), mem_fun(*this, &Editor::marker_menu_set_from_selection)));
items.push_back (SeparatorElem());
- items.push_back (MenuElem (_("Rename"), mem_fun(*this, &Editor::marker_menu_rename)));
- items.push_back (MenuElem (_("Hide"), mem_fun(*this, &Editor::marker_menu_hide)));
- items.push_back (MenuElem (_("Remove"), mem_fun(*this, &Editor::marker_menu_remove)));
+ items.push_back (MenuElem (_("Rename Range"), mem_fun(*this, &Editor::marker_menu_rename)));
+ items.push_back (MenuElem (_("Hide Range"), mem_fun(*this, &Editor::marker_menu_hide)));
+ items.push_back (MenuElem (_("Remove Range"), mem_fun(*this, &Editor::marker_menu_remove)));
items.push_back (SeparatorElem());
- items.push_back (MenuElem (_("Select all in Range"), mem_fun(*this, &Editor::marker_menu_select_all_selectables_using_range)));
+
+ items.push_back (MenuElem (_("Separate Regions in Range"), mem_fun(*this, &Editor::marker_menu_separate_regions_using_location)));
+ items.push_back (MenuElem (_("Select All in Range"), mem_fun(*this, &Editor::marker_menu_select_all_selectables_using_range)));
}
MenuList& items = transport_marker_menu->items();
transport_marker_menu->set_name ("ArdourContextMenu");
- items.push_back (MenuElem (_("Locate to"), mem_fun(*this, &Editor::marker_menu_set_playhead)));
- items.push_back (MenuElem (_("Play from"), mem_fun(*this, &Editor::marker_menu_play_from)));
- items.push_back (MenuElem (_("Set from playhead"), mem_fun(*this, &Editor::marker_menu_set_from_playhead)));
- items.push_back (MenuElem (_("Set from range"), mem_fun(*this, &Editor::marker_menu_set_from_selection)));
+ items.push_back (MenuElem (_("Locate to Range Mark"), mem_fun(*this, &Editor::marker_menu_set_playhead)));
+ items.push_back (MenuElem (_("Play from Range Mark"), mem_fun(*this, &Editor::marker_menu_play_from)));
+ items.push_back (MenuElem (_("Set Range Mark from Playhead"), mem_fun(*this, &Editor::marker_menu_set_from_playhead)));
+ items.push_back (MenuElem (_("Set Range from Range Selection"), mem_fun(*this, &Editor::marker_menu_set_from_selection)));
items.push_back (SeparatorElem());
- items.push_back (MenuElem (_("Hide"), mem_fun(*this, &Editor::marker_menu_hide)));
+ items.push_back (MenuElem (_("Hide Range"), mem_fun(*this, &Editor::marker_menu_hide)));
items.push_back (SeparatorElem());
- items.push_back (MenuElem (_("Select all in Range"), mem_fun(*this, &Editor::marker_menu_select_all_selectables_using_range)));
+ items.push_back (MenuElem (_("Separate Regions in Range"), mem_fun(*this, &Editor::marker_menu_separate_regions_using_location)));
+ items.push_back (MenuElem (_("Select All in Range"), mem_fun(*this, &Editor::marker_menu_select_all_selectables_using_range)));
}
void
bool is_start;
if (((l = find_location_from_marker (marker, is_start)) != 0) && (l->end() > l->start())) {
- select_all_within (l->start(), l->end(), 0, DBL_MAX, false);
+ select_all_within (l->start(), l->end() - 1, 0, DBL_MAX, Selection::Set);
+ }
+
+}
+
+void
+Editor::marker_menu_separate_regions_using_location ()
+{
+ Marker* marker;
+
+ if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
+ fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
+ /*NOTREACHED*/
+ }
+
+ Location* l;
+ bool is_start;
+
+ if (((l = find_location_from_marker (marker, is_start)) != 0) && (l->end() > l->start())) {
+ separate_regions_using_location (*l);
}
}
if (!loc) return;
- Dialog dialog;
- Entry entry;
+ ArdourPrompter dialog (true);
+ string txt;
+
+ dialog.set_prompt (_("New Name:"));
if (loc->is_mark()) {
dialog.set_title (_("ardour: rename mark"));
}
dialog.set_name ("MarkRenameWindow");
- dialog.set_size_request (300, -1);
+ dialog.set_size_request (250, -1);
dialog.set_position (Gtk::WIN_POS_MOUSE);
- dialog.set_modal (true);
- dialog.add_action_widget (entry, RESPONSE_ACCEPT);
- dialog.add_button (Stock::OK, RESPONSE_ACCEPT);
- dialog.add_button (Stock::CANCEL, RESPONSE_ACCEPT);
+ dialog.add_button (_("Rename"), RESPONSE_ACCEPT);
+ dialog.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
+ dialog.set_initial_text (loc->name());
- entry.set_text (loc->name());
- entry.set_name ("MarkerNameDisplay");
-
- dialog.show_all ();
- entry.grab_focus ();
+ dialog.show ();
switch (dialog.run ()) {
case RESPONSE_ACCEPT:
return;
}
- loc->set_name (entry.get_text());
+ begin_reversible_command ( _("rename marker") );
+ session->add_undo( session->locations()->get_memento() );
+
+ dialog.get_result(txt);
+ loc->set_name (txt);
+
+ session->add_redo_no_execute( session->locations()->get_memento() );
+ commit_reversible_command ();
}
gint