X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_regions.h;h=0643befbdfbda03fa1f73f3d7fe9fae5fd3d2a71;hb=b78d036aa056af0ef4f5821c45dae5f70bc69231;hp=c4ec4a1ba2f4bc1a7ff666605879e84398666f4f;hpb=b6b68881b2c59c216d2195b1cea5e667187d83ed;p=ardour.git diff --git a/gtk2_ardour/editor_regions.h b/gtk2_ardour/editor_regions.h index c4ec4a1ba2..0643befbdf 100644 --- a/gtk2_ardour/editor_regions.h +++ b/gtk2_ardour/editor_regions.h @@ -21,7 +21,7 @@ #include "editor_component.h" -class EditorRegions : public EditorComponent +class EditorRegions : public EditorComponent, public ARDOUR::SessionHandlePtr { public: EditorRegions (Editor *); @@ -39,18 +39,21 @@ 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 >); + boost::shared_ptr get_dragged_region (); boost::shared_ptr get_single_selection (); + Editing::RegionListSortType sort_type () const { return _sort_type; } + void redisplay (); void suspend_redisplay () { _no_redisplay = true; } + void resume_redisplay () { _no_redisplay = false; redisplay (); @@ -64,6 +67,9 @@ public: _display.get_selection()->unselect_all (); } + XMLNode& get_state () const; + void set_state (const XMLNode &); + private: struct Columns : public Gtk::TreeModel::ColumnRecord { @@ -71,7 +77,7 @@ private: add (name); add (region); add (color_); - add (start); + add (position); add (end); add (length); add (sync); @@ -83,50 +89,79 @@ private: add (opaque); add (used); add (path); + add (property_toggles_visible); } - Gtk::TreeModelColumn name; + Gtk::TreeModelColumn name; Gtk::TreeModelColumn > region; Gtk::TreeModelColumn color_; - Gtk::TreeModelColumn start; - Gtk::TreeModelColumn end; - Gtk::TreeModelColumn length; - Gtk::TreeModelColumn sync; - Gtk::TreeModelColumn fadein; - Gtk::TreeModelColumn fadeout; + Gtk::TreeModelColumn position; + Gtk::TreeModelColumn end; + Gtk::TreeModelColumn length; + Gtk::TreeModelColumn sync; + Gtk::TreeModelColumn fadein; + Gtk::TreeModelColumn fadeout; Gtk::TreeModelColumn locked; Gtk::TreeModelColumn glued; Gtk::TreeModelColumn muted; Gtk::TreeModelColumn opaque; - Gtk::TreeModelColumn used; - Gtk::TreeModelColumn path; + Gtk::TreeModelColumn used; + Gtk::TreeModelColumn path; + /** used to indicate whether the locked/glued/muted/opaque should be visible or not */ + Gtk::TreeModelColumn property_toggles_visible; }; Columns _columns; + + Gtk::TreeModel::RowReference last_row; - void region_changed (const PBD::PropertyChange&, boost::weak_ptr); + void region_changed (boost::shared_ptr, PBD::PropertyChange const &); void selection_changed (); + sigc::connection _change_connection; + bool set_selected_in_subrow (boost::shared_ptr, Gtk::TreeModel::Row const &, int); bool selection_filter (const Glib::RefPtr& model, const Gtk::TreeModel::Path& path, bool yn); - void name_edit (const Glib::ustring&, const Glib::ustring&); + + Gtk::Widget* old_focus; + Gtk::CellEditable* name_editable; + void name_editing_started (Gtk::CellEditable*, const Glib::ustring&); + + void name_edit (const std::string&, const std::string&); + void locked_changed (std::string const &); + void glued_changed (std::string const &); + void muted_changed (std::string const &); + void opaque_changed (std::string const &); bool key_press (GdkEventKey *); - bool key_release (GdkEventKey *); bool button_press (GdkEventButton *); - bool button_release (GdkEventButton *); - void build_menu (); + bool focus_in (GdkEventFocus*); + bool focus_out (GdkEventFocus*); + bool enter_notify (GdkEventCrossing*); + bool leave_notify (GdkEventCrossing*); void show_context_menu (int button, int time); int sorter (Gtk::TreeModel::iterator, Gtk::TreeModel::iterator); - void handle_new_region (boost::weak_ptr); - void handle_new_regions (std::vector >& ); + void format_position (ARDOUR::framepos_t pos, char* buf, size_t bufsize); + void add_region (boost::shared_ptr); void add_regions (std::vector > & ); - void region_hidden (boost::shared_ptr); - void region_hidden_weak (boost::weak_ptr); void populate_row (boost::shared_ptr, Gtk::TreeModel::Row const &); + void populate_row_used (boost::shared_ptr region, Gtk::TreeModel::Row const& row, uint32_t used); + void populate_row_position (boost::shared_ptr region, Gtk::TreeModel::Row const& row, uint32_t used); + void populate_row_end (boost::shared_ptr region, Gtk::TreeModel::Row const& row, uint32_t used); + void populate_row_sync (boost::shared_ptr region, Gtk::TreeModel::Row const& row, uint32_t used); + void populate_row_fade_in (boost::shared_ptr region, Gtk::TreeModel::Row const& row, uint32_t used, boost::shared_ptr); + void populate_row_fade_out (boost::shared_ptr region, Gtk::TreeModel::Row const& row, uint32_t used, boost::shared_ptr); + void populate_row_locked (boost::shared_ptr region, Gtk::TreeModel::Row const& row, uint32_t used); + void populate_row_muted (boost::shared_ptr region, Gtk::TreeModel::Row const& row, uint32_t used); + void populate_row_glued (boost::shared_ptr region, Gtk::TreeModel::Row const& row, uint32_t used); + void populate_row_opaque (boost::shared_ptr region, Gtk::TreeModel::Row const& row, uint32_t used); + void populate_row_length (boost::shared_ptr region, Gtk::TreeModel::Row const& row); + void populate_row_name (boost::shared_ptr region, Gtk::TreeModel::Row const& row); + void populate_row_source (boost::shared_ptr region, Gtk::TreeModel::Row const& row); + void update_row (boost::shared_ptr); bool update_subrows (boost::shared_ptr, Gtk::TreeModel::Row const &, int); void update_all_rows (); @@ -137,20 +172,28 @@ private: Glib::RefPtr const &, gint, gint, Gtk::SelectionData const &, guint, guint ); + Glib::RefPtr sort_type_action (Editing::RegionListSortType) const; + void set_full (bool); + + Glib::RefPtr hide_action () const; + Glib::RefPtr show_action () const; + Glib::RefPtr toggle_full_action () const; + Glib::RefPtr toggle_show_auto_regions_action () const; + Gtk::Menu* _menu; Gtk::ScrolledWindow _scroller; Gtk::Frame _frame; Gtkmm2ext::DnDTreeView > _display; Glib::RefPtr _model; - Glib::RefPtr _toggle_full_action; - Glib::RefPtr _toggle_show_auto_regions_action; bool _show_automatic_regions; Editing::RegionListSortType _sort_type; bool _no_redisplay; std::list > tmp_region_list; PBD::ScopedConnection region_property_connection; + PBD::ScopedConnection check_new_region_connection; bool ignore_region_list_selection_change; bool ignore_selected_region_change; + bool expanded; }; #endif /* __gtk_ardour_editor_regions_h__ */