74 , _show_automatic_regions (true)
75 , ignore_region_list_selection_change (false)
76 , ignore_selected_region_change (false)
77 , _no_redisplay (false)
88 _display.set_data (
"mouse-edits-require-mod1", (gpointer) 0x1);
92 _model->set_sort_column (0, SORT_ASCENDING);
112 { 0,
_(
"Region"),
_(
"Region name, with number of channels in []'s") },
113 { 1,
_(
"Position"),
_(
"Position of start of region") },
114 { 2,
_(
"End"),
_(
"Position of end of region") },
115 { 3,
_(
"Length"),
_(
"Length of the region") },
116 { 4,
_(
"Sync"),
_(
"Position of region sync point, relative to start of the region") },
117 { 5,
_(
"Fade In"),
_(
"Length of region fade-in (units: secondary clock), () if disabled") },
118 { 6,
_(
"Fade Out"),
_(
"Length of region fade-out (units: secondary clock), () if disabled") },
119 { 7,
S_(
"Lock|L"),
_(
"Region position locked?") },
120 { 8,
S_(
"Gain|G"),
_(
"Region position glued to Bars|Beats time?") },
121 { 9,
S_(
"Mute|M"),
_(
"Region muted?") },
122 { 10,
S_(
"Opaque|O"),
_(
"Region opaque (blocks regions below it from being heard)?") },
126 for (
int i = 0; ci[i].
index >= 0; ++i) {
127 col =
_display.get_column (ci[i].index);
128 l = manage (
new Label (ci[i].label));
130 col->set_widget (*l);
133 if (ci[i].index > 6) {
134 col->set_expand (
false);
135 col->set_alignment (ALIGN_CENTER);
139 _display.set_headers_visible (
true);
145 CellRendererText* region_name_cell =
dynamic_cast<CellRendererText*
>(
_display.get_column_cell_renderer (0));
146 region_name_cell->property_editable() =
true;
152 TreeViewColumn* tv_col =
_display.get_column(0);
153 CellRendererText* renderer =
dynamic_cast<CellRendererText*
>(
_display.get_column_cell_renderer (0));
154 tv_col->add_attribute(renderer->property_text(),
_columns.
name);
155 tv_col->add_attribute(renderer->property_foreground_gdk(),
_columns.
color_);
156 tv_col->set_expand (
true);
158 CellRendererToggle* locked_cell =
dynamic_cast<CellRendererToggle*
> (
_display.get_column_cell_renderer (7));
159 locked_cell->property_activatable() =
true;
162 TreeViewColumn* locked_col =
_display.get_column (7);
165 CellRendererToggle* glued_cell =
dynamic_cast<CellRendererToggle*
> (
_display.get_column_cell_renderer (8));
166 glued_cell->property_activatable() =
true;
169 TreeViewColumn* glued_col =
_display.get_column (8);
172 CellRendererToggle* muted_cell =
dynamic_cast<CellRendererToggle*
> (
_display.get_column_cell_renderer (9));
173 muted_cell->property_activatable() =
true;
176 TreeViewColumn* muted_col =
_display.get_column (9);
179 CellRendererToggle* opaque_cell =
dynamic_cast<CellRendererToggle*
> (
_display.get_column_cell_renderer (10));
180 opaque_cell->property_activatable() =
true;
183 TreeViewColumn* opaque_col =
_display.get_column (10);
186 _display.get_selection()->set_mode (SELECTION_MULTIPLE);
191 list<TargetEntry> region_list_target_table;
193 region_list_target_table.push_back (TargetEntry (
"text/plain"));
194 region_list_target_table.push_back (TargetEntry (
"text/uri-list"));
195 region_list_target_table.push_back (TargetEntry (
"application/x-rootwin-drop"));
201 _scroller.set_policy (POLICY_AUTOMATIC, POLICY_AUTOMATIC);
227 Window* win =
dynamic_cast<Window*
> (
_scroller.get_toplevel ());
265 Keyboard::magic_widget_grab_focus ();
277 Keyboard::magic_widget_drop_focus ();
284 SessionHandlePtr::set_session (s);
306 TreeModel::iterator iter =
_model->get_iter (
"0");
307 TreeModel::Row parent;
310 parent = *(
_model->append());
316 if (s !=
_(
"Hidden")) {
317 parent = *(
_model->insert(iter));
326 row = *(
_model->append (parent.children()));
330 TreeModel::iterator i;
331 TreeModel::Children rows =
_model->children();
333 for (i = rows.begin(); i != rows.end(); ++i) {
341 row = *(
_model->append());
343 if (missing_source) {
357 if (region->
source()->name()[0] ==
'/') {
367 str += region->
source()->name();
371 str = region->
name();
375 str = region->
name();
379 std::stringstream foo;
390 if (missing_source) {
409 TreeModel::iterator i;
411 boost::unordered_map<string, Gtk::TreeModel::RowReference>::iterator it;
417 TreeModel::iterator j =
_model->get_iter ((*it).second.get_path());
419 TreeModel::iterator ii;
420 TreeModel::Children subrows = (*j).children();
433 row = *(
_model->insert (subrows.end()));
436 row = *(
_model->append());
452 vector<string> choices;
459 prompt =
_(
"Do you really want to remove unused regions?"
460 "\n(This is destructive and cannot be undone)");
462 choices.push_back (
_(
"No, do nothing."));
463 choices.push_back (
_(
"Yes, remove."));
467 if (prompter.run () == 1) {
493 if (what_changed.
contains (our_interests)) {
511 RegionRowMap::iterator it;
517 TreeModel::iterator j =
_model->get_iter ((*it).second.get_path());
546 if (
_display.get_selection()->count_selected_rows() > 0) {
549 TreeView::Selection::ListHandle_Path rows =
_display.get_selection()->get_selected_rows ();
553 for (TreeView::Selection::ListHandle_Path::iterator i = rows.begin(); i != rows.end(); ++i) {
555 if ((iter =
_model->get_iter (*i))) {
582 for (RegionSelection::iterator i = regions.begin(); i != regions.end(); ++i) {
586 RegionRowMap::iterator it;
591 TreeModel::iterator j =
_model->get_iter ((*it).second.get_path());
592 _display.get_selection()->select(*j);
604 bool tree_expanded =
false;
608 tree_expanded =
true;
611 _display.set_model (Glib::RefPtr<Gtk::TreeStore>(0));
613 _model->set_sort_column (-2, SORT_ASCENDING);
623 for (RegionFactory::RegionMap::const_iterator i = regions.begin(); i != regions.end(); ++i) {
625 if ( i->second->whole_file()) {
638 _model->set_sort_column (0, SORT_ASCENDING);
655 RegionRowMap::iterator it;
661 TreeModel::iterator j =
_model->get_iter ((*it).second.get_path());
673 RegionRowMap::iterator i;
677 TreeModel::iterator j =
_model->get_iter ((*i).second.get_path());
690 Timecode::BBT_Time bbt;
691 Timecode::Time timecode;
695 snprintf (buf, bufsize,
"invalid");
703 snprintf (buf, bufsize,
"%03d|%02d|%04d" , bbt.bars, bbt.beats, bbt.ticks);
705 snprintf (buf, bufsize,
"(%03d|%02d|%04d)" , bbt.bars, bbt.beats, bbt.ticks);
722 snprintf (buf, bufsize,
"%02d:%02d:%06.3f", hrs, mins, secs);
724 snprintf (buf, bufsize,
"(%02d:%02d:%06.3f)", hrs, mins, secs);
730 snprintf (buf, bufsize,
"%" PRId64, pos);
732 snprintf (buf, bufsize,
"(%" PRId64
")", pos);
740 snprintf (buf, bufsize,
"%02d:%02d:%02d:%02d", timecode.hours, timecode.minutes, timecode.seconds, timecode.frames);
742 snprintf (buf, bufsize,
"(%02d:%02d:%02d:%02d)", timecode.hours, timecode.minutes, timecode.seconds, timecode.frames);
772 if (audioRegion && fades_in_seconds) {
778 left = audioRegion->fade_in()->back()->when;
779 mins = (int) floor (left / (_session->frame_rate() * 60.0f));
780 left -= (
framepos_t) floor (mins * _session->frame_rate() * 60.0f);
781 millisecs = (int) floor ((left * 1000.0
f) / _session->frame_rate());
783 if (audioRegion->fade_in()->back()->when >= _session->frame_rate()) {
784 sprintf (fadein_str,
"%01dM %01dmS", mins, millisecs);
786 sprintf (fadein_str,
"%01dmS", millisecs);
789 left = audioRegion->fade_out()->back()->when;
790 mins = (int) floor (left / (_session->frame_rate() * 60.0f));
791 left -= (
framepos_t) floor (mins * _session->frame_rate() * 60.0f);
792 millisecs = (int) floor ((left * 1000.0f) / _session->frame_rate());
794 if (audioRegion->fade_out()->back()->when >= _session->frame_rate()) {
795 sprintf (fadeout_str,
"%01dM %01dmS", mins, millisecs);
797 sprintf (fadeout_str,
"%01dmS", millisecs);
806 snprintf (buf,
sizeof (buf),
"%4d" , used);
823 }
else if (used > 1) {
839 }
else if (used > 1) {
853 }
else if (used > 1) {
905 }
else if (used > 1) {
959 if (boost::dynamic_pointer_cast<SilentFileSource>(region->
source())) {
998 if (
_display.get_selection()->count_selected_rows() > 0) {
1006 bool have_shown =
false;
1007 bool have_hidden =
false;
1009 TreeView::Selection::ListHandle_Path rows =
_display.get_selection()->get_selected_rows ();
1010 for (TreeView::Selection::ListHandle_Path::iterator i = rows.begin(); i != rows.end(); ++i) {
1011 TreeIter t =
_model->get_iter (*i);
1025 _menu->popup (button, time);
1031 TreeViewColumn *col;
1033 switch (ev->keyval) {
1035 case GDK_ISO_Left_Tab:
1044 if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) {
1065 TreeModel::Path path;
1066 TreeViewColumn* column;
1070 if (
_display.get_path_at_pos ((
int)ev->x, (
int)ev->y, path, column, cellx, celly)) {
1071 if ((iter =
_model->get_iter (path))) {
1076 if (Keyboard::is_context_menu_event (ev)) {
1081 if (region != 0 && Keyboard::is_button2_event (ev)) {
1083 if (!Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
1113 if (region1 == 0 || region2 == 0) {
1120 return (s1.compare (s2));
1128 cmp = region1->
name().compare(region2->name());
1132 cmp = region1->
length() - region2->length();
1136 cmp = region1->
position() - region2->position();
1140 cmp = region1->
source()->timestamp() - region2->source()->timestamp();
1144 cmp = region1->
start() - region2->start();
1149 cmp = (region1->
start() + region1->
length()) - (region2->start() + region2->length());
1152 case BySourceFileName:
1153 cmp = region1->
source()->name().compare(region2->source()->name());
1156 case BySourceFileLength:
1157 cmp = region1->
source_length(0) - region2->source_length(0);
1160 case BySourceFileCreationDate:
1161 cmp = region1->
source()->timestamp() - region2->source()->timestamp();
1164 case BySourceFileFS:
1165 if (region1->
source()->name() == region2->source()->name()) {
1166 cmp = region1->
name().compare(region2->name());
1168 cmp = region1->
source()->name().compare(region2->source()->name());
1177 }
else if (cmp > 0) {
1196 _model->set_sort_column (0, up ? SORT_ASCENDING : SORT_DESCENDING);
1202 Glib::RefPtr<TreeSelection> selection =
_display.get_selection();
1203 TreeView::Selection::ListHandle_Path rows = selection->get_selected_rows ();
1204 TreeView::Selection::ListHandle_Path::iterator i = rows.begin();
1206 if (selection->count_selected_rows() == 0 ||
_session == 0) {
1210 for (; i != rows.end(); ++i) {
1213 if ((iter =
_model->get_iter (*i))) {
1232 const SelectionData& data,
1233 guint
info, guint time)
1235 vector<string> paths;
1237 if (data.get_target() ==
"GTK_TREE_MODEL_ROW") {
1246 bool copy = ((context->get_actions() & (Gdk::ACTION_COPY | Gdk::ACTION_LINK | Gdk::ACTION_MOVE)) == Gdk::ACTION_COPY);
1251 _editor->
do_embed (paths, Editing::ImportDistinctFiles, ImportAsRegion, pos);
1253 context->drag_finish (
true,
false, time);
1262 if (already_selected) {
1267 TreeModel::iterator iter = model->get_iter (path);
1286 Gtk::Entry *e =
dynamic_cast<Gtk::Entry*
> (ce);
1289 e->set_name (
X_(
"RegionNameEditorEntry"));
1301 if ((iter =
_model->get_iter (path))) {
1309 vector<RegionView*> equivalents;
1312 for (vector<RegionView*>::iterator i = equivalents.begin(); i != equivalents.end(); ++i) {
1313 if (new_text != (*i)->region()->name()) {
1314 (*i)->region()->set_name (new_text);
1325 list<boost::shared_ptr<Region> >
regions;
1329 if (regions.empty()) {
1333 assert (regions.size() == 1);
1334 return regions.front ();
1340 _display.set_model (Glib::RefPtr<Gtk::TreeStore> (0));
1352 Glib::RefPtr<TreeSelection> selected =
_display.get_selection();
1354 if (selected->count_selected_rows() != 1) {
1358 TreeView::Selection::ListHandle_Path rows = selected->get_selected_rows ();
1362 TreeIter iter =
_model->get_iter (*rows.begin());
1374 _display.set_model (Glib::RefPtr<Gtk::TreeStore>(0));
1375 _model->set_sort_column (-2, SORT_ASCENDING);
1382 _model->set_sort_column (0, SORT_ASCENDING);
1393 TreeIter i =
_model->get_iter (path);
1405 TreeIter i =
_model->get_iter (path);
1419 TreeIter i =
_model->get_iter (path);
1432 TreeIter i =
_model->get_iter (path);
1450 bool const ascending = RefPtr<RadioAction>::cast_dynamic(act)->get_active ();
1451 node->
add_property (
X_(
"sort-ascending"), ascending ?
"yes" :
"no");
1461 bool changed =
false;
1463 if (node.
name() !=
X_(
"RegionList")) {
1478 ract->set_active ();
1485 SortType old_sort_type;
1486 int old_sort_column;
1488 _model->get_sort_column_id (old_sort_column, old_sort_type);
1490 if (old_sort_type != (yn ? SORT_ASCENDING : SORT_DESCENDING)) {
1503 RefPtr<RadioAction>::cast_dynamic(act)->set_active ();
1518 p = node.
property (
X_(
"show-automatic-regions"));
1537 const char* action = 0;
1540 case Editing::ByName:
1541 action =
X_(
"SortByRegionName");
1543 case Editing::ByLength:
1544 action =
X_(
"SortByRegionLength");
1546 case Editing::ByPosition:
1547 action =
X_(
"SortByRegionPosition");
1549 case Editing::ByTimestamp:
1550 action =
X_(
"SortByRegionTimestamp");
1552 case Editing::ByStartInFile:
1553 action =
X_(
"SortByRegionStartinFile");
1555 case Editing::ByEndInFile:
1556 action =
X_(
"SortByRegionEndinFile");
1558 case Editing::BySourceFileName:
1559 action =
X_(
"SortBySourceFileName");
1561 case Editing::BySourceFileLength:
1562 action =
X_(
"SortBySourceFileLength");
1564 case Editing::BySourceFileCreationDate:
1565 action =
X_(
"SortBySourceFileCreationDate");
1567 case Editing::BySourceFileFS:
1568 action =
X_(
"SortBySourceFilesystem");
1578 return RefPtr<RadioAction>::cast_dynamic (act);
1600 RefPtr<ToggleAction>
1605 return Glib::RefPtr<ToggleAction>::cast_dynamic (act);
1608 RefPtr<ToggleAction>
1613 return Glib::RefPtr<ToggleAction>::cast_dynamic (act);
void get_regions_corresponding_to(boost::shared_ptr< ARDOUR::Region > region, std::vector< RegionView * > ®ions, bool src_comparison)
Gtk::TreeModelColumn< Gdk::Color > color_
std::map< PBD::ID, boost::shared_ptr< Region > > RegionMap
void do_import(std::vector< std::string > paths, Editing::ImportDisposition disposition, Editing::ImportMode mode, ARDOUR::SrcQuality quality, framepos_t &pos, boost::shared_ptr< ARDOUR::PluginInfo > instrument=boost::shared_ptr< ARDOUR::PluginInfo >())
void populate_row_glued(boost::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row, uint32_t used)
Gtk::TreeModelColumn< std::string > used
LIBPBD_API Transmitter fatal
LIBGTKMM2EXT_API Gtk::Widget * get_widget(const char *name)
LIBARDOUR_API PBD::PropertyDescriptor< bool > fade_out_active
void region_changed(boost::shared_ptr< ARDOUR::Region >, PBD::PropertyChange const &)
void show_context_menu(int button, int time)
Gtk::TreeModelColumn< std::string > path
void populate_row(boost::shared_ptr< ARDOUR::Region >, Gtk::TreeModel::Row const &)
void reset_sort_type(Editing::RegionListSortType, bool)
void bbt_time(framepos_t when, Timecode::BBT_Time &)
const std::string & value() const
void populate_row_sync(boost::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row, uint32_t used)
LIBARDOUR_API PBD::PropertyDescriptor< bool > hidden
bool focus_out(GdkEventFocus *)
Glib::RefPtr< Gtk::TreeStore > _model
Gtkmm2ext::DnDTreeView< boost::shared_ptr< ARDOUR::Region > > _display
shared_ptr< T > dynamic_pointer_cast(shared_ptr< U > const &r)
static ARDOUR_UI * instance()
LIBARDOUR_API PBD::PropertyDescriptor< std::string > name
boost::shared_ptr< AutomationList > fade_in()
const std::string & name() const
Gtk::TreeModelColumn< bool > locked
sigc::signal< void > mode_changed
bool enter_notify(GdkEventCrossing *)
LIBGTKMM2EXT_API Glib::RefPtr< Gtk::Action > get_action(const char *group, const char *name)
Gtk::TreeModelColumn< std::string > end
void populate_row_position(boost::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row, uint32_t used)
Gtk::TreeModelColumn< std::string > fadeout
int sorter(Gtk::TreeModel::iterator, Gtk::TreeModel::iterator)
boost::shared_ptr< AutomationList > fade_out()
void drag_data_received(Glib::RefPtr< Gdk::DragContext > const &, gint, gint, Gtk::SelectionData const &, guint, guint)
void get_object_drag_data(std::list< DataType > &l, Gtk::TreeView **source)
void add_drop_targets(std::list< Gtk::TargetEntry > &)
void populate_row_name(boost::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row)
LIBPBD_API Transmitter error
PBD::ScopedConnection editor_thaw_connection
bool leave_notify(GdkEventCrossing *)
std::ostream & endmsg(std::ostream &ostr)
boost::shared_ptr< Source > source(uint32_t n=0) const
bool key_press(GdkEventKey *)
bool button_press(GdkEventButton *)
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > start
Gtk::TreeModelColumn< boost::shared_ptr< ARDOUR::Region > > region
void update_row(boost::shared_ptr< ARDOUR::Region >)
Gtk::TreeModelColumn< bool > muted
Glib::RefPtr< Gtk::ToggleAction > toggle_show_auto_regions_action() const
framecnt_t frame_rate() const
void reset_sort_direction(bool)
bool fade_in_active() const
framepos_t sync_position() const
void toggle_show_auto_regions()
boost::shared_ptr< ARDOUR::Region > get_single_selection()
Gtk::ScrolledWindow _scroller
void add_region(boost::shared_ptr< ARDOUR::Region >)
void name_edit(const std::string &, const std::string &)
Glib::RefPtr< Gtk::Action > hide_action() const
void populate_row_source(boost::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row)
MainClock * secondary_clock
void populate_row_opaque(boost::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row, uint32_t used)
bool ignore_region_list_selection_change
void populate_row_used(boost::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row, uint32_t used)
LIBGTKMM2EXT_API void set_sensitive(std::vector< Glib::RefPtr< Gtk::Action > > &actions, bool)
Gtk::TreeModelColumn< std::string > sync
void set_selected_regionview_from_region_list(boost::shared_ptr< ARDOUR::Region > region, Selection::Operation op=Selection::Set)
LIBGTKMM2EXT_API uint64_t Keyboard
int convert_drop_to_paths(std::vector< std::string > &paths, const Glib::RefPtr< Gdk::DragContext > &context, gint x, gint y, const Gtk::SelectionData &data, guint info, guint time)
XMLProperty * property(const char *)
void locked_changed(std::string const &)
std::vector< Glib::RefPtr< Gtk::Action > > region_list_selection_sensitive_actions
#define string_2_enum(str, e)
Gtk::TreeModelColumn< bool > opaque
void set_color_from_rgba(Gdk::Color &, uint32_t)
void populate_row_fade_in(boost::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row, uint32_t used, boost::shared_ptr< ARDOUR::AudioRegion >)
bool string_is_affirmative(const std::string &str)
void on_drag_data_received(const Glib::RefPtr< Gdk::DragContext > &context, int x, int y, const Gtk::SelectionData &selection_data, guint info, guint time)
bool fade_out_active() const
void remove_unused_regions()
std::list< boost::shared_ptr< ARDOUR::Region > > tmp_region_list
void muted_changed(std::string const &)
LIBARDOUR_API PBD::PropertyDescriptor< bool > locked
bool selection_filter(const Glib::RefPtr< Gtk::TreeModel > &model, const Gtk::TreeModel::Path &path, bool yn)
void opaque_changed(std::string const &)
void set_session(ARDOUR::Session *)
LIBARDOUR_API PBD::PropertyDescriptor< boost::shared_ptr< AutomationList > > fade_out
void add_object_drag(int column, std::string type_name)
LIBARDOUR_API PBD::PropertyDescriptor< boost::shared_ptr< AutomationList > > fade_in
RegionSourceMap parent_regions_sources_map
PBD::Signal0< void > EditorFreeze
Gtk::TreeModelColumn< std::string > length
LIBARDOUR_API PBD::PropertyDescriptor< bool > opaque
bool _show_automatic_regions
PBD::ScopedConnection check_new_region_connection
Gtk::TreeModelColumn< bool > glued
void do_embed(std::vector< std::string > paths, Editing::ImportDisposition disposition, Editing::ImportMode mode, framepos_t &pos, boost::shared_ptr< ARDOUR::PluginInfo > instrument=boost::shared_ptr< ARDOUR::PluginInfo >())
std::string source_string() const
sigc::connection _change_connection
bool region_list_equivalent(boost::shared_ptr< const Region >) const
Glib::RefPtr< Gtk::ToggleAction > toggle_full_action() const
static PBD::Signal1< void, boost::shared_ptr< Region > > CheckNewRegion
bool _region_selection_change_updates_region_list
void format_position(ARDOUR::framepos_t pos, char *buf, size_t bufsize, bool onoff=true)
Gtk::TreeModel::RowReference last_row
LIBARDOUR_API PBD::PropertyDescriptor< bool > regions
void set_state(const XMLNode &)
LIBPBD_API Transmitter info
PositionLockStyle position_lock_style() const
void populate_row_fade_out(boost::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row, uint32_t used, boost::shared_ptr< ARDOUR::AudioRegion >)
LIBARDOUR_API RuntimeProfile * Profile
framecnt_t source_length(uint32_t n) const
framepos_t position() const
void set_tip(Gtk::Widget &w, const gchar *tip)
void populate_row_muted(boost::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row, uint32_t used)
LIBGTKMM2EXT_API void treeview_select_next(Gtk::TreeView &view, Glib::RefPtr< Gtk::TreeModel > model, Gtk::TreeViewColumn *col)
XMLProperty * add_property(const char *name, const std::string &value)
void set_selected(RegionSelection &)
const std::string & path() const
uint32_t n_channels() const
PBD::ScopedConnection region_property_connection
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > position
static UIConfiguration * config()
PBD::Signal0< void > EditorThaw
Gtk::TreeModelColumn< std::string > fadein
void name_editing_started(Gtk::CellEditable *, const Glib::ustring &)
void populate_row_length(boost::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row)
Selection & get_selection() const
Gtk::TreeModelColumn< bool > property_toggles_visible
void consider_auditioning(boost::shared_ptr< ARDOUR::Region >)
bool contains(PropertyDescriptor< T > p) const
framecnt_t length() const
void selection_mapover(sigc::slot< void, boost::shared_ptr< ARDOUR::Region > >)
void populate_row_end(boost::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row, uint32_t used)
boost::shared_ptr< ARDOUR::Region > get_dragged_region()
framepos_t first_frame() const
void timecode_time(Timecode::Time &)
void set_position_lock_style(PositionLockStyle ps)
Gtk::TreeModelColumn< std::string > name
LIBARDOUR_API PBD::PropertyDescriptor< PositionLockStyle > position_lock_style
XMLNode & get_state() const
RegionRowMap region_row_map
void glued_changed(std::string const &)
Gtk::TreeModelColumn< std::string > position
Glib::RefPtr< Gtk::Action > show_action() const
#define MISSING_INVALIDATOR
PBD::ScopedConnection editor_freeze_connection
static PBD::Signal2< void, boost::shared_ptr< ARDOUR::Region >, const PBD::PropertyChange & > RegionPropertyChanged
Gtk::CellEditable * name_editable
Glib::RefPtr< Gtk::Action > remove_unused_regions_action() const
LIBARDOUR_API PBD::PropertyDescriptor< bool > muted
LIBARDOUR_API std::string region_name_from_path(std::string path, bool strip_channels, bool add_channel_suffix=false, uint32_t total=0, uint32_t this_one=0)
Editing::RegionListSortType _sort_type
bool focus_in(GdkEventFocus *)
ARDOUR::Session * _session
LIBARDOUR_API PBD::PropertyDescriptor< bool > fade_in_active
LIBGTKMM2EXT_API void treeview_select_previous(Gtk::TreeView &view, Glib::RefPtr< Gtk::TreeModel > model, Gtk::TreeViewColumn *col)
std::string string_compose(const std::string &fmt, const T1 &o1)
void populate_row_locked(boost::shared_ptr< ARDOUR::Region > region, Gtk::TreeModel::Row const &row, uint32_t used)
Glib::RefPtr< Gtk::RadioAction > sort_type_action(Editing::RegionListSortType) const
framepos_t last_frame() const
LIBARDOUR_API PBD::PropertyDescriptor< framecnt_t > length
LIBARDOUR_API PBD::PropertyDescriptor< bool > color