diff options
-rw-r--r-- | gtk2_ardour/ardour.menus.in | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor.cc | 10 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor_regions.cc | 70 | ||||
-rw-r--r-- | gtk2_ardour/editor_regions.h | 5 |
6 files changed, 38 insertions, 54 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in index 26ce7c5323..caa9498869 100644 --- a/gtk2_ardour/ardour.menus.in +++ b/gtk2_ardour/ardour.menus.in @@ -491,7 +491,7 @@ <popup name='RegionListMenu'> <menuitem action='rlAudition'/> <menuitem action='rlHide'/> - <menuitem action='rlRemove'/> + <menuitem action='rlShow'/> <separator/> <menuitem action='rlShowAll'/> <menuitem action='rlShowAuto'/> diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index efec451e63..730b6e0fab 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -5008,9 +5008,9 @@ Editor::hide_a_region (boost::shared_ptr<Region> r) } void -Editor::remove_a_region (boost::shared_ptr<Region> r) +Editor::show_a_region (boost::shared_ptr<Region> r) { - // _session->remove_region_from_region_list (r); + r->set_hidden (false); } void @@ -5026,6 +5026,12 @@ Editor::hide_region_from_region_list () } void +Editor::show_region_in_region_list () +{ + _regions->selection_mapover (sigc::mem_fun (*this, &Editor::show_a_region)); +} + +void Editor::start_step_editing () { step_edit_connection = Glib::signal_timeout().connect (sigc::mem_fun (*this, &Editor::check_step_edit), 20); diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index b2e1a38034..ea4e378134 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -217,7 +217,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void consider_auditioning (boost::shared_ptr<ARDOUR::Region>); void hide_a_region (boost::shared_ptr<ARDOUR::Region>); - void remove_a_region (boost::shared_ptr<ARDOUR::Region>); + void show_a_region (boost::shared_ptr<ARDOUR::Region>); #ifdef USE_RUBBERBAND std::vector<std::string> rb_opt_strings; @@ -1098,6 +1098,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void audition_region_from_region_list (); void hide_region_from_region_list (); + void show_region_in_region_list (); void align (ARDOUR::RegionPoint); void align_relative (ARDOUR::RegionPoint); diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index ec7472df91..69187bb604 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -775,7 +775,7 @@ Editor::register_actions () ActionManager::region_list_selection_sensitive_actions.push_back (act); act = ActionManager::register_action (rl_actions, X_("rlHide"), _("Hide"), sigc::mem_fun(*this, &Editor::hide_region_from_region_list)); ActionManager::region_list_selection_sensitive_actions.push_back (act); - act = ActionManager::register_action (rl_actions, X_("rlRemove"), _("Remove"), sigc::mem_fun (*_regions, &EditorRegions::remove_region)); + act = ActionManager::register_action (rl_actions, X_("rlShow"), _("Show"), sigc::mem_fun(*this, &Editor::show_region_in_region_list)); ActionManager::region_list_selection_sensitive_actions.push_back (act); ActionManager::register_toggle_action (rl_actions, X_("rlShowAll"), _("Show All"), sigc::mem_fun(*_regions, &EditorRegions::toggle_full)); ActionManager::register_toggle_action (rl_actions, X_("rlShowAuto"), _("Show Automatic Regions"), sigc::mem_fun (*_regions, &EditorRegions::toggle_show_auto_regions)); diff --git a/gtk2_ardour/editor_regions.cc b/gtk2_ardour/editor_regions.cc index c33fc13bf2..6704fce7d8 100644 --- a/gtk2_ardour/editor_regions.cc +++ b/gtk2_ardour/editor_regions.cc @@ -121,9 +121,7 @@ EditorRegions::EditorRegions (Editor* e) _scroller.set_policy (POLICY_AUTOMATIC, POLICY_AUTOMATIC); _display.signal_key_press_event().connect (sigc::mem_fun(*this, &EditorRegions::key_press)); - _display.signal_key_release_event().connect (sigc::mem_fun(*this, &EditorRegions::key_release)); _display.signal_button_press_event().connect (sigc::mem_fun(*this, &EditorRegions::button_press), false); - _display.signal_button_release_event().connect (sigc::mem_fun(*this, &EditorRegions::button_release)); _change_connection = _display.get_selection()->signal_changed().connect (sigc::mem_fun(*this, &EditorRegions::selection_changed)); // _display.signal_popup_menu().connect (sigc::bind (sigc::mem_fun (*this, &Editor::show__display_context_menu), 1, 0)); @@ -843,6 +841,9 @@ EditorRegions::build_menu () Glib::RefPtr<Action> act; + _hide_action = ActionManager::get_action (X_("RegionList"), X_("rlHide")); + _show_action = ActionManager::get_action (X_("RegionList"), X_("rlShow")); + act = ActionManager::get_action (X_("RegionList"), X_("rlShowAll")); if (act) { _toggle_full_action = Glib::RefPtr<ToggleAction>::cast_dynamic (act); @@ -884,6 +885,27 @@ EditorRegions::show_context_menu (int button, int time) ActionManager::set_sensitive (ActionManager::region_list_selection_sensitive_actions, false); } + /* Enable the "Show" option if any selected regions are hidden, and vice versa for "Hide" */ + + bool have_shown = false; + bool have_hidden = false; + + TreeView::Selection::ListHandle_Path rows = _display.get_selection()->get_selected_rows (); + for (TreeView::Selection::ListHandle_Path::iterator i = rows.begin(); i != rows.end(); ++i) { + TreeIter t = _model->get_iter (*i); + boost::shared_ptr<Region> r = (*t)[_columns.region]; + if (r) { + if (r->hidden ()) { + have_hidden = true; + } else { + have_shown = true; + } + } + } + + _hide_action->set_sensitive (have_shown); + _show_action->set_sensitive (have_hidden); + _menu->popup (button, time); } @@ -893,20 +915,6 @@ EditorRegions::key_press (GdkEventKey* /*ev*/) return false; } -bool -EditorRegions::key_release (GdkEventKey* ev) -{ - switch (ev->keyval) { - case GDK_Delete: - remove_region (); - return true; - break; - default: - break; - } - - return false; -} bool EditorRegions::button_press (GdkEventButton *ev) @@ -940,30 +948,6 @@ EditorRegions::button_press (GdkEventButton *ev) return false; } -bool -EditorRegions::button_release (GdkEventButton *ev) -{ - TreeIter iter; - TreeModel::Path path; - TreeViewColumn* column; - int cellx; - int celly; - boost::shared_ptr<Region> region; - - if (_display.get_path_at_pos ((int)ev->x, (int)ev->y, path, column, cellx, celly)) { - if ((iter = _model->get_iter (path))) { - region = (*iter)[_columns.region]; - } - } - - if (region && Keyboard::is_delete_event (ev)) { - // _session->remove_region_from_region_list (region); - return true; - } - - return false; -} - int EditorRegions::sorter (TreeModel::iterator a, TreeModel::iterator b) { @@ -1102,12 +1086,6 @@ EditorRegions::selection_mapover (sigc::slot<void,boost::shared_ptr<Region> > sl void -EditorRegions::remove_region () -{ - selection_mapover (sigc::mem_fun (*_editor, &Editor::remove_a_region)); -} - -void EditorRegions::drag_data_received (const RefPtr<Gdk::DragContext>& context, int x, int y, const SelectionData& data, diff --git a/gtk2_ardour/editor_regions.h b/gtk2_ardour/editor_regions.h index 54f891950f..c9d5ddf6f5 100644 --- a/gtk2_ardour/editor_regions.h +++ b/gtk2_ardour/editor_regions.h @@ -39,7 +39,6 @@ public: void reset_sort_direction (bool); void reset_sort_type (Editing::RegionListSortType, bool); void set_selected (RegionSelection &); - void remove_region (); void selection_mapover (sigc::slot<void,boost::shared_ptr<ARDOUR::Region> >); boost::shared_ptr<ARDOUR::Region> get_dragged_region (); boost::shared_ptr<ARDOUR::Region> get_single_selection (); @@ -112,9 +111,7 @@ private: void name_edit (const Glib::ustring&, const Glib::ustring&); bool key_press (GdkEventKey *); - bool key_release (GdkEventKey *); bool button_press (GdkEventButton *); - bool button_release (GdkEventButton *); void build_menu (); void show_context_menu (int button, int time); @@ -138,6 +135,8 @@ private: Gtk::Frame _frame; Gtkmm2ext::DnDTreeView<boost::shared_ptr<ARDOUR::Region> > _display; Glib::RefPtr<Gtk::TreeStore> _model; + Glib::RefPtr<Gtk::Action> _hide_action; ///< the action for our Hide menu option + Glib::RefPtr<Gtk::Action> _show_action; ///< the action for our Show menu option Glib::RefPtr<Gtk::ToggleAction> _toggle_full_action; Glib::RefPtr<Gtk::ToggleAction> _toggle_show_auto_regions_action; bool _show_automatic_regions; |