diff --git a/Loggable.C b/Loggable.C index f48ed3a..22e2323 100644 --- a/Loggable.C +++ b/Loggable.C @@ -43,22 +43,22 @@ Loggable::open ( const char *filename ) return true; } -void -Loggable::log ( const char *module, const char *action, const char *fmt, ... ) -{ - va_list args; +/* void */ +/* Loggable::log ( const char *module, const char *action, const char *fmt, ... ) */ +/* { */ +/* va_list args; */ - fprintf( _fp, "%-15s %-8s %p ", module, action, _id ); +/* fprintf( _fp, "%-15s %-8s %p ", module, action, _id ); */ - if ( fmt ) - { - va_start( args, fmt ); - vfprintf( _fp, fmt, args ); - va_end( args ); - } +/* if ( fmt ) */ +/* { */ +/* va_start( args, fmt ); */ +/* vfprintf( _fp, fmt, args ); */ +/* va_end( args ); */ +/* } */ - fprintf( _fp, "\n" ); -} +/* fprintf( _fp, "\n" ); */ +/* } */ static @@ -167,9 +167,13 @@ Loggable::log_create ( void ) char **sa = log_dump(); - log_print( NULL, sa ); - - free_sa( sa ); + if ( sa ) + { + log_print( NULL, sa ); + free_sa( sa ); + } + else + printf( "\n" ); } void diff --git a/Loggable.H b/Loggable.H index ba2c1de..51e6537 100644 --- a/Loggable.H +++ b/Loggable.H @@ -105,17 +105,21 @@ public: protected: - void log ( const char *module, const char *action, const char *fmt, ... ); +// void log ( const char *module, const char *action, const char *fmt, ... ); void log_start ( void ); void log_end ( void ); void log_create ( void ); void log_destroy ( void ); +public: + + int id ( void ) { return _id; } + }; -#ifndef _LOGGABLE_C -#define log( act, fmt, args... ) log( __CLASS__, act, fmt, ## args ) -#endif +/* #ifndef _LOGGABLE_C */ +/* #define log( act, fmt, args... ) log( __CLASS__, act, fmt, ## args ) */ +/* #endif */ /* #define LOG_START Logger _logger( this ) */ /* #define LOG_END _logger.print( this ) */ diff --git a/Region.C b/Region.C index 669fe83..580bcba 100644 --- a/Region.C +++ b/Region.C @@ -54,11 +54,6 @@ void Region::init ( void ) { -/* align( FL_ALIGN_INSIDE | FL_ALIGN_LEFT | FL_ALIGN_BOTTOM | FL_ALIGN_CLIP ); */ -/* labeltype( FL_SHADOW_LABEL ); */ -/* labelcolor( FL_WHITE ); */ -/* box( FL_PLASTIC_UP_BOX ); */ - _track = NULL; _offset = 0; _start = 0; diff --git a/Region.H b/Region.H index 323d9c7..21a12cd 100644 --- a/Region.H +++ b/Region.H @@ -72,6 +72,7 @@ protected: asprintf( &sa[2], ":r %lu", _end ); asprintf( &sa[3], ":selected %d", _selected ); asprintf( &sa[4], ":gain %f", _scale ); +// asprintf( &sa[4], ":track 0x%X", _track->id() ); // asprintf( &r, ":x %lu\n:l %lu\n:r %lu\n:selected %d\n:gain %f", _offset, _start, _end, _selected, _scale ); @@ -104,6 +105,19 @@ protected: if ( ! strcmp( s, ":gain" ) ) _scale = atof( v ); +/* else */ +/* if ( ! strcmp( s, ":track" ) ) */ +/* { */ +/* int i; */ +/* sscanf( v, "%X", &i ); */ +/* Track *t = (Track*)Loggable::find( i ); */ + +/* assert( t ); */ + +/* t->add( this ); */ +/* } */ + + free( s ); } diff --git a/Tempo_Point.H b/Tempo_Point.H index bc4811f..01f7690 100644 --- a/Tempo_Point.H +++ b/Tempo_Point.H @@ -40,9 +40,9 @@ protected: const char *class_name ( void ) { return "Tempo_Point"; } - void log_create ( void ) { log( "create", "%lu %f", _offset, _tempo ); } - void log_destroy ( void ) { log( "destroy", NULL ); } - void log_move ( void ) { log( "move", "%lu", _offset ); } +/* void log_create ( void ) { log( "create", "%lu %f", _offset, _tempo ); } */ +/* void log_destroy ( void ) { log( "destroy", NULL ); } */ +/* void log_move ( void ) { log( "move", "%lu", _offset ); } */ public: diff --git a/Time_Point.H b/Time_Point.H index c18ca2c..aa63289 100644 --- a/Time_Point.H +++ b/Time_Point.H @@ -54,9 +54,9 @@ protected: const char *class_name ( void ) { return "Time_Point"; } - void log_create ( void ) { log( "create", "%lu %d %d", _offset, _time.beats_per_bar, _time.note_type ); } - void log_destroy ( void ) { log( "destroy", NULL ); } - void log_move ( void ) { log( "move", "%lu", _offset ); } +/* void log_create ( void ) { log( "create", "%lu %d %d", _offset, _time.beats_per_bar, _time.note_type ); } */ +/* void log_destroy ( void ) { log( "destroy", NULL ); } */ +/* void log_move ( void ) { log( "move", "%lu", _offset ); } */ public: diff --git a/Track.C b/Track.C index d4e84fc..40a1e01 100644 --- a/Track.C +++ b/Track.C @@ -27,6 +27,10 @@ Track_Widget * Track::_queued_widget = NULL; + + + + static bool sort_func ( Track_Widget *lhs, Track_Widget *rhs ) { @@ -84,6 +88,8 @@ Track::event_widget ( void ) void Track::add ( Track_Widget *r ) { + log_start(); + if ( r->track() ) { r->track()->remove( r ); @@ -93,6 +99,8 @@ Track::add ( Track_Widget *r ) _widgets.push_back( r ); r->track( this ); + + log_end(); } /* snap /r/ to nearest edge */ diff --git a/Track.H b/Track.H index cc2307c..af72508 100644 --- a/Track.H +++ b/Track.H @@ -25,6 +25,7 @@ #include +#include "Loggable.H" #include @@ -34,7 +35,7 @@ using std::list; class Region; class Track_Widget; -class Track : public Fl_Group +class Track : public Fl_Group, public Loggable { Track *_next; Track *_prev; @@ -47,8 +48,38 @@ protected: list _widgets; Track_Widget *event_widget ( void ); + const char *class_name ( void ) { return "Track"; } + + + void set ( char ** ) { return; } + + char ** log_dump ( void ) + { + // char *r; + + char **sa = (char**)malloc( sizeof( char* ) * 2); + sa[0] = (char*)malloc( (_widgets.size() * ((sizeof( int ) * 2) + 3)) + 1 ); + sa[1] = NULL; + + char *s = sa[0]; + + s += sprintf( s, ":items " ); + for ( list ::const_iterator i = _widgets.begin(); i != _widgets.end(); i++ ) + { + s += sprintf( s, "0x%X", ((Loggable*)(*i))->id() ); + + list ::const_iterator e = i; + if ( ++e != _widgets.end() ) + s += sprintf( s, "," ); + } + + return sa; + } + + public: + Track ( int X, int Y, int W, int H ) : Fl_Group( X, Y, W, H ) { _next = _prev = NULL; @@ -56,6 +87,13 @@ public: box( FL_DOWN_BOX ); color( fl_darker( FL_GRAY ) ); + + log_create(); + } + + ~Track ( ) + { + log_destroy(); } Track *next ( void ) const { return _next; }