22 #ifndef _gtk_ardour_region_list_base_h_
23 #define _gtk_ardour_region_list_base_h_
25 #include <unordered_map>
27 #include <ytkmm/celleditable.h>
28 #include <ytkmm/frame.h>
29 #include <ytkmm/scrolledwindow.h>
30 #include <ytkmm/treemodel.h>
31 #include <ytkmm/treerowreference.h>
32 #include <ytkmm/treestore.h>
86 _display.get_selection ()->unselect_all ();
90 struct Columns :
public Gtk::TreeModel::ColumnRecord {
118 Gtk::TreeModelColumn<std::string>
name;
121 Gtk::TreeModelColumn<std::string>
tags;
122 Gtk::TreeModelColumn<Temporal::timepos_t>
position;
123 Gtk::TreeModelColumn<std::string>
start;
124 Gtk::TreeModelColumn<std::string>
end;
125 Gtk::TreeModelColumn<std::string>
length;
126 Gtk::TreeModelColumn<std::string>
sync;
127 Gtk::TreeModelColumn<std::string>
fadein;
132 Gtk::TreeModelColumn<std::string>
path;
133 Gtk::TreeModelColumn<std::shared_ptr<ARDOUR::Region>>
region;
146 Gtk::TreeViewColumn*
append_col (Gtk::TreeModelColumn<T>
const& col,
int width)
148 Gtk::TreeViewColumn* c = manage (
new Gtk::TreeViewColumn (
"", col));
149 c->set_fixed_width (width);
150 c->set_sizing (Gtk::TREE_VIEW_COLUMN_FIXED);
156 Gtk::TreeViewColumn*
append_col (Gtk::TreeModelColumn<T>
const& col, std::string
const& sizing_text)
159 Glib::RefPtr<Pango::Layout> layout =
_display.create_pango_layout (sizing_text);
160 layout->get_pixel_size (w, h);
164 void setup_col (Gtk::TreeViewColumn*,
int, Gtk::AlignmentEnum,
const char*,
const char*,
bool require_mod_to_edit =
false);
165 void setup_toggle (Gtk::TreeViewColumn*, sigc::slot<void, std::string>);
178 virtual void name_edit (
const std::string&,
const std::string&);
179 virtual void tag_edit (
const std::string&,
const std::string&);
219 void drag_end (Glib::RefPtr<Gdk::DragContext>
const&);
220 void drag_data_get (Glib::RefPtr<Gdk::DragContext>
const&, Gtk::SelectionData&, guint, guint);
242 typedef std::unordered_map<std::shared_ptr<ARDOUR::Region>, Gtk::TreeModel::iterator>
RegionRowMap;
void populate_row(std::shared_ptr< ARDOUR::Region >, Gtk::TreeModel::Row const &, PBD::PropertyChange const &)
virtual void regions_changed(std::shared_ptr< ARDOUR::RegionList >, PBD::PropertyChange const &)
void locked_changed(std::string const &)
Gtk::CellEditable * _tags_editable
bool leave_notify(GdkEventCrossing *)
virtual bool key_press(GdkEventKey *)
void opaque_changed(std::string const &)
void populate_row_source(std::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row)
PBD::ScopedConnection _editor_thaw_connection
Gtk::TreeViewColumn * append_col(Gtk::TreeModelColumn< T > const &col, std::string const &sizing_text)
virtual bool list_region(std::shared_ptr< ARDOUR::Region >) const
void tag_editing_canceled()
void populate_row_fade_in(std::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row, std::shared_ptr< ARDOUR::AudioRegion >)
Gtkmm2ext::DnDTreeView< std::shared_ptr< ARDOUR::Region > > _display
void tag_editing_started(Gtk::CellEditable *, const Glib::ustring &)
void clock_format_changed()
virtual bool button_press(GdkEventButton *)
void name_editing_started(Gtk::CellEditable *, const Glib::ustring &)
std::unordered_map< std::shared_ptr< ARDOUR::Region >, Gtk::TreeModel::iterator > RegionRowMap
void populate_row_position(std::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row)
void populate_row_muted(std::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row)
Gtk::CellEditable * _name_editable
void format_position(Temporal::timepos_t const &pos, char *buf, size_t bufsize, bool onoff=true) const
void populate_row_opaque(std::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row)
void setup_col(Gtk::TreeViewColumn *, int, Gtk::AlignmentEnum, const char *, const char *, bool require_mod_to_edit=false)
Glib::RefPtr< Gtk::TreeStore > _model
void add_region(std::shared_ptr< ARDOUR::Region >)
void populate_row_end(std::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row)
void populate_row_length(std::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row)
void populate_row_fade_out(std::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row, std::shared_ptr< ARDOUR::AudioRegion >)
RegionRowMap region_row_map
void set_session(ARDOUR::Session *)
void drag_begin(Glib::RefPtr< Gdk::DragContext > const &)
void remove_weak_region(std::weak_ptr< ARDOUR::Region >)
void drag_data_get(Glib::RefPtr< Gdk::DragContext > const &, Gtk::SelectionData &, guint, guint)
bool focus_in(GdkEventFocus *)
virtual void tag_edit(const std::string &, const std::string &)
sigc::connection _change_connection
void populate_row_used(std::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row)
void populate_row_name(std::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row)
bool enter_notify(GdkEventCrossing *)
void block_change_connection(bool b)
virtual void name_edit(const std::string &, const std::string &)
PBD::ScopedConnectionList _remove_region_connections
Gtk::TreeViewColumn * append_col(Gtk::TreeModelColumn< T > const &col, int width)
void populate_row_locked(std::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row)
bool focus_out(GdkEventFocus *)
void populate_row_regionfx(std::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row)
void muted_changed(std::string const &)
PBD::ScopedConnection _editor_freeze_connection
Gtk::ScrolledWindow _scroller
void name_editing_canceled()
void setup_toggle(Gtk::TreeViewColumn *, sigc::slot< void, std::string >)
void drag_end(Glib::RefPtr< Gdk::DragContext > const &)
void populate_row_sync(std::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row)
PBD::PropertyDescriptor< bool > region
Gtk::TreeModelColumn< std::string > fadeout
Gtk::TreeModelColumn< std::string > length
Gtk::TreeModelColumn< std::string > natural_pos
Gtk::TreeModelColumn< std::string > fadein
Gtk::TreeModelColumn< std::string > name
Gtk::TreeModelColumn< size_t > regionfx
Gtk::TreeModelColumn< Temporal::timepos_t > position
Gtk::TreeModelColumn< std::string > take_id
Gtk::TreeModelColumn< std::shared_ptr< ARDOUR::Region > > region
Gtk::TreeModelColumn< Gdk::Color > color_
Gtk::TreeModelColumn< std::string > path
Gtk::TreeModelColumn< std::string > sync
Gtk::TreeModelColumn< std::string > captd_for
Gtk::TreeModelColumn< bool > muted
Gtk::TreeModelColumn< Temporal::timepos_t > natural_s
Gtk::TreeModelColumn< std::string > end
Gtk::TreeModelColumn< bool > opaque
Gtk::TreeModelColumn< bool > locked
Gtk::TreeModelColumn< size_t > captd_xruns
Gtk::TreeModelColumn< int > channels
Gtk::TreeModelColumn< std::string > tags
Gtk::TreeModelColumn< std::string > start