restructure ruler context menu
This commit is contained in:
parent
553e534455
commit
907cf66a63
@ -219,78 +219,7 @@ Editor::popup_ruler_menu (timepos_t const & where, ItemType t)
|
|||||||
editor_ruler_menu->set_name ("ArdourContextMenu");
|
editor_ruler_menu->set_name ("ArdourContextMenu");
|
||||||
ruler_items.clear();
|
ruler_items.clear();
|
||||||
|
|
||||||
#define MAKE_ACTION_ITEM(menu,item,action_group,action_name) \
|
|
||||||
(item) = new (Gtk::CheckMenuItem); \
|
|
||||||
gtk_activatable_set_related_action (GTK_ACTIVATABLE((item)->gobj()), ActionManager::get_action (action_group, action_name)->gobj()); \
|
|
||||||
(item)->set_draw_as_radio (); \
|
|
||||||
(menu)->append (*(item));
|
|
||||||
|
|
||||||
Gtk::Menu* ms_menu = new (Gtk::Menu);
|
|
||||||
Gtk::CheckMenuItem* ms_item;
|
|
||||||
|
|
||||||
MAKE_ACTION_ITEM (ms_menu, ms_item, X_("Rulers"), X_("show-all-markers"));
|
|
||||||
MAKE_ACTION_ITEM (ms_menu, ms_item, X_("Rulers"), X_("show-cue-markers"));
|
|
||||||
MAKE_ACTION_ITEM (ms_menu, ms_item, X_("Rulers"), X_("show-cd-markers"));
|
|
||||||
MAKE_ACTION_ITEM (ms_menu, ms_item, X_("Rulers"), X_("show-scene-markers"));
|
|
||||||
MAKE_ACTION_ITEM (ms_menu, ms_item, X_("Rulers"), X_("show-location-markers"));
|
|
||||||
|
|
||||||
ruler_items.push_back (MenuElem (_("Locations")));
|
|
||||||
Gtk::MenuItem& marker_show_menu = ruler_items.back();
|
|
||||||
marker_show_menu.set_submenu (*ms_menu);
|
|
||||||
|
|
||||||
Gtk::Menu* rs_menu = new (Gtk::Menu);
|
|
||||||
Gtk::CheckMenuItem* rs_item;
|
|
||||||
MAKE_ACTION_ITEM (rs_menu, rs_item, X_("Rulers"), X_("show-all-ranges"));
|
|
||||||
MAKE_ACTION_ITEM (rs_menu, rs_item, X_("Rulers"), X_("show-punch-range"));
|
|
||||||
MAKE_ACTION_ITEM (rs_menu, rs_item, X_("Rulers"), X_("show-loop-range"));
|
|
||||||
MAKE_ACTION_ITEM (rs_menu, rs_item, X_("Rulers"), X_("show-session-range"));
|
|
||||||
MAKE_ACTION_ITEM (rs_menu, rs_item, X_("Rulers"), X_("show-location-markers"));
|
|
||||||
|
|
||||||
ruler_items.push_back (MenuElem (_("Ranges")));
|
|
||||||
Gtk::MenuItem& range_show_menu = ruler_items.back();
|
|
||||||
range_show_menu.set_submenu (*rs_menu);
|
|
||||||
|
|
||||||
#undef MAKE_ACTION_ITEM
|
|
||||||
|
|
||||||
switch (t) {
|
switch (t) {
|
||||||
case MarkerBarItem:
|
|
||||||
ruler_items.push_back (MenuElem (_("New Location Marker"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_add_new_marker), where, Location::Flags (0), 0)));
|
|
||||||
ruler_items.push_back (MenuElem (_("Clear All Locations"), sigc::mem_fun(*this, &Editor::clear_markers)));
|
|
||||||
ruler_items.push_back (MenuElem (_("Clear All Xruns"), sigc::mem_fun(*this, &Editor::clear_xrun_markers)));
|
|
||||||
ruler_items.push_back (MenuElem (_("Unhide Locations"), sigc::mem_fun(*this, &Editor::unhide_markers)));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case RangeMarkerBarItem:
|
|
||||||
ruler_items.push_back (MenuElem (_("New Range"), sigc::bind (sigc::mem_fun (*this, &Editor::mouse_add_new_range), where)));
|
|
||||||
ruler_items.push_back (MenuElem (_("Clear All Ranges"), sigc::mem_fun(*this, &Editor::clear_ranges)));
|
|
||||||
ruler_items.push_back (MenuElem (_("Unhide Ranges"), sigc::mem_fun(*this, &Editor::unhide_ranges)));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TransportMarkerBarItem:
|
|
||||||
ruler_items.push_back (MenuElem (_("New Loop Range"), sigc::bind (sigc::mem_fun (*this, &Editor::mouse_add_new_loop), where)));
|
|
||||||
ruler_items.push_back (MenuElem (_("New Punch Range"), sigc::bind (sigc::mem_fun (*this, &Editor::mouse_add_new_punch), where)));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CdMarkerBarItem:
|
|
||||||
ruler_items.push_back (MenuElem (_("New CD Track Marker"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_add_new_marker), where, Location::Flags(Location::IsMark |Location::IsCDMarker), 0)));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SectionMarkerBarItem:
|
|
||||||
ruler_items.push_back (MenuElem (_("New Arrangement Marker"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_add_new_marker), where, Location::Flags(Location::IsMark | Location::IsSection), 0)));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CueMarkerBarItem:
|
|
||||||
ruler_items.push_back (MenuElem (_("Stop All Cues"), sigc::bind (sigc::mem_fun (*this, &Editor::mouse_add_new_marker), where, Location::IsCueMarker, CueRecord::stop_all)));
|
|
||||||
ruler_items.push_back (MenuElem (_("Clear All Cues"), sigc::mem_fun (*this, &Editor::clear_cues)));
|
|
||||||
for (int32_t n = 0; n < TriggerBox::default_triggers_per_box; ++n) {
|
|
||||||
ruler_items.push_back (MenuElem (string_compose (_("Cue %1"), cue_marker_name (n)), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_add_new_marker), where, Location::IsCueMarker, n)));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SceneMarkerBarItem:
|
|
||||||
ruler_items.push_back (MenuElem (_("Delete all Scenes"), sigc::mem_fun (*this, &Editor::clear_scenes)));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TempoBarItem:
|
case TempoBarItem:
|
||||||
case TempoCurveItem:
|
case TempoCurveItem:
|
||||||
ruler_items.push_back (MenuElem (_("Add New Tempo"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_add_new_tempo_event), where)));
|
ruler_items.push_back (MenuElem (_("Add New Tempo"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_add_new_tempo_event), where)));
|
||||||
@ -352,10 +281,76 @@ Editor::popup_ruler_menu (timepos_t const & where, ItemType t)
|
|||||||
ruler_items.push_back (MenuElem (_("Add BBT Marker"), sigc::bind (sigc::mem_fun (*this, &Editor::mouse_add_bbt_marker_event), where)));
|
ruler_items.push_back (MenuElem (_("Add BBT Marker"), sigc::bind (sigc::mem_fun (*this, &Editor::mouse_add_bbt_marker_event), where)));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default: {
|
||||||
|
ruler_items.push_back (MenuElem ("Add..."));
|
||||||
|
Gtk::MenuItem& add_menu = ruler_items.back();
|
||||||
|
Gtk::Menu* a_menu = new Gtk::Menu;
|
||||||
|
MenuList& add_items = a_menu->items();
|
||||||
|
add_items.push_back (MenuElem (_("Location Marker"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_add_new_marker), where, Location::Flags (0), 0)));
|
||||||
|
add_items.push_back (MenuElem (_("Range"), sigc::bind (sigc::mem_fun (*this, &Editor::mouse_add_new_range), where)));
|
||||||
|
add_items.push_back (MenuElem (_("Loop Range"), sigc::bind (sigc::mem_fun (*this, &Editor::mouse_add_new_loop), where)));
|
||||||
|
add_items.push_back (MenuElem (_("Punch Range"), sigc::bind (sigc::mem_fun (*this, &Editor::mouse_add_new_punch), where)));
|
||||||
|
add_items.push_back (MenuElem (_("CD Track Marker"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_add_new_marker), where, Location::Flags(Location::IsMark |Location::IsCDMarker), 0)));
|
||||||
|
add_items.push_back (MenuElem (_("Arrangement Marker"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_add_new_marker), where, Location::Flags(Location::IsMark | Location::IsSection), 0)));
|
||||||
|
for (int32_t n = 0; n < TriggerBox::default_triggers_per_box; ++n) {
|
||||||
|
add_items.push_back (MenuElem (string_compose (_("Cue %1"), cue_marker_name (n)), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_add_new_marker), where, Location::IsCueMarker, n)));
|
||||||
|
}
|
||||||
|
add_menu.set_submenu (*a_menu);
|
||||||
|
|
||||||
|
ruler_items.push_back (MenuElem ("Remove..."));
|
||||||
|
Gtk::MenuItem& clear_menu = ruler_items.back();
|
||||||
|
Gtk::Menu* c_menu = new Gtk::Menu;
|
||||||
|
MenuList& clear_items = c_menu->items();
|
||||||
|
clear_items.push_back (MenuElem (_("All Locations"), sigc::mem_fun(*this, &Editor::clear_markers)));
|
||||||
|
clear_items.push_back (MenuElem (_("All Ranges"), sigc::mem_fun(*this, &Editor::clear_ranges)));
|
||||||
|
clear_items.push_back (MenuElem (_("All Cues"), sigc::mem_fun (*this, &Editor::clear_cues)));
|
||||||
|
clear_items.push_back (MenuElem (_("All Xruns"), sigc::mem_fun(*this, &Editor::clear_xrun_markers)));
|
||||||
|
clear_items.push_back (MenuElem (_("All (MIDI) Scenes"), sigc::mem_fun (*this, &Editor::clear_scenes)));
|
||||||
|
clear_menu.set_submenu (*c_menu);
|
||||||
|
|
||||||
|
ruler_items.push_back (MenuElem (_("Stop All Cues"), sigc::bind (sigc::mem_fun (*this, &Editor::mouse_add_new_marker), where, Location::IsCueMarker, CueRecord::stop_all)));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Gtkmm does not expose the ::set_related_action() API for
|
||||||
|
* Gtk::Activatable, so we have to drop to C to create menu items
|
||||||
|
* directly from actions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MAKE_ACTION_ITEM(menu,item,action_group,action_name) \
|
||||||
|
(item) = new (Gtk::CheckMenuItem); \
|
||||||
|
gtk_activatable_set_related_action (GTK_ACTIVATABLE((item)->gobj()), ActionManager::get_action (action_group, action_name)->gobj()); \
|
||||||
|
(item)->set_draw_as_radio (); \
|
||||||
|
(menu)->append (*(item));
|
||||||
|
|
||||||
|
Gtk::Menu* ms_menu = new (Gtk::Menu);
|
||||||
|
Gtk::CheckMenuItem* ms_item;
|
||||||
|
|
||||||
|
MAKE_ACTION_ITEM (ms_menu, ms_item, X_("Rulers"), X_("show-all-markers"));
|
||||||
|
MAKE_ACTION_ITEM (ms_menu, ms_item, X_("Rulers"), X_("show-cue-markers"));
|
||||||
|
MAKE_ACTION_ITEM (ms_menu, ms_item, X_("Rulers"), X_("show-cd-markers"));
|
||||||
|
MAKE_ACTION_ITEM (ms_menu, ms_item, X_("Rulers"), X_("show-scene-markers"));
|
||||||
|
MAKE_ACTION_ITEM (ms_menu, ms_item, X_("Rulers"), X_("show-location-markers"));
|
||||||
|
|
||||||
|
ruler_items.push_back (MenuElem (_("Show Locations...")));
|
||||||
|
Gtk::MenuItem& marker_show_menu = ruler_items.back();
|
||||||
|
marker_show_menu.set_submenu (*ms_menu);
|
||||||
|
|
||||||
|
Gtk::Menu* rs_menu = new (Gtk::Menu);
|
||||||
|
Gtk::CheckMenuItem* rs_item;
|
||||||
|
MAKE_ACTION_ITEM (rs_menu, rs_item, X_("Rulers"), X_("show-all-ranges"));
|
||||||
|
MAKE_ACTION_ITEM (rs_menu, rs_item, X_("Rulers"), X_("show-punch-range"));
|
||||||
|
MAKE_ACTION_ITEM (rs_menu, rs_item, X_("Rulers"), X_("show-loop-range"));
|
||||||
|
MAKE_ACTION_ITEM (rs_menu, rs_item, X_("Rulers"), X_("show-session-range"));
|
||||||
|
MAKE_ACTION_ITEM (rs_menu, rs_item, X_("Rulers"), X_("show-location-markers"));
|
||||||
|
|
||||||
|
ruler_items.push_back (MenuElem (_("Show Ranges...")));
|
||||||
|
Gtk::MenuItem& range_show_menu = ruler_items.back();
|
||||||
|
range_show_menu.set_submenu (*rs_menu);
|
||||||
|
|
||||||
|
#undef MAKE_ACTION_ITEM
|
||||||
|
|
||||||
if (!ruler_items.empty()) {
|
if (!ruler_items.empty()) {
|
||||||
editor_ruler_menu->popup (1, gtk_get_current_event_time());
|
editor_ruler_menu->popup (1, gtk_get_current_event_time());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user