diff --git a/Audio_Track.H b/Audio_Track.H index d1ef1e5..de2b7a0 100644 --- a/Audio_Track.H +++ b/Audio_Track.H @@ -35,5 +35,6 @@ public: int handle ( int m ); void dump ( void ); + void remove_selected ( void ); }; diff --git a/Timeline.C b/Timeline.C index a7d8ab1..c1421f6 100644 --- a/Timeline.C +++ b/Timeline.C @@ -412,6 +412,23 @@ Timeline::handle ( int m ) switch ( m ) { + case FL_KEYBOARD: + { + switch ( Fl::event_key() ) + { + case FL_Delete: + { + for ( int i = tracks->children(); i--; ) + { + Track_Header *t = (Track_Header*)tracks->child( i ); + + t->track()->remove_selected(); + } + return 1; + } + + } + } /* case FL_MOUSEWHEEL: */ /* { */ diff --git a/Track.C b/Track.C index 1ed8532..1d5bfcc 100644 --- a/Track.C +++ b/Track.C @@ -82,6 +82,25 @@ Track::remove ( Track_Widget *r ) } +void +Track::remove_selected ( void ) +{ + Loggable::block_start(); + + for ( list ::iterator r = _widgets.begin(); r != _widgets.end(); ) + if ( (*r)->selected() ) + { + Track_Widget *t = *r; + _widgets.erase( r++ ); + delete t; + } + else + ++r; + + Loggable::block_end(); +} + + Track_Widget * Track::event_widget ( void ) { diff --git a/Track.H b/Track.H index 85db483..e161244 100644 --- a/Track.H +++ b/Track.H @@ -112,6 +112,8 @@ public: void remove ( Track_Widget *r ); void add ( Track_Widget *r ); + void remove_selected ( void ); + const list widgets ( void ) const { return _widgets; } void queue_delete ( Track_Widget *r ) diff --git a/Track_Header.H b/Track_Header.H index 121a0b1..41652d1 100644 --- a/Track_Header.H +++ b/Track_Header.H @@ -48,6 +48,8 @@ private: int _size; + enum { AUDIO } _type; + public: Fl_Input * name_field; @@ -198,6 +200,7 @@ public: static int width(); void track( Track * t ); + Track * track ( void ) { return _track; } int handle ( int m ) { diff --git a/Track_Widget.H b/Track_Widget.H index 3b14428..d41de29 100644 --- a/Track_Widget.H +++ b/Track_Widget.H @@ -59,6 +59,8 @@ public: _track->remove( this ); } + bool selected ( void ) { return _selected; } + Fl_Group * parent ( void ) const { return _track; } int scroll_x ( void ) const { return timeline->ts_to_x( timeline->xoffset ); }