@@ -43,22 +43,22 @@ Loggable::open ( const char *filename ) | |||||
return true; | 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 | static | ||||
@@ -167,9 +167,13 @@ Loggable::log_create ( void ) | |||||
char **sa = log_dump(); | char **sa = log_dump(); | ||||
log_print( NULL, sa ); | |||||
free_sa( sa ); | |||||
if ( sa ) | |||||
{ | |||||
log_print( NULL, sa ); | |||||
free_sa( sa ); | |||||
} | |||||
else | |||||
printf( "\n" ); | |||||
} | } | ||||
void | void | ||||
@@ -105,17 +105,21 @@ public: | |||||
protected: | 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_start ( void ); | ||||
void log_end ( void ); | void log_end ( void ); | ||||
void log_create ( void ); | void log_create ( void ); | ||||
void log_destroy ( 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_START Logger _logger( this ) */ | ||||
/* #define LOG_END _logger.print( this ) */ | /* #define LOG_END _logger.print( this ) */ |
@@ -54,11 +54,6 @@ void | |||||
Region::init ( 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; | _track = NULL; | ||||
_offset = 0; | _offset = 0; | ||||
_start = 0; | _start = 0; | ||||
@@ -72,6 +72,7 @@ protected: | |||||
asprintf( &sa[2], ":r %lu", _end ); | asprintf( &sa[2], ":r %lu", _end ); | ||||
asprintf( &sa[3], ":selected %d", _selected ); | asprintf( &sa[3], ":selected %d", _selected ); | ||||
asprintf( &sa[4], ":gain %f", _scale ); | 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 ); | // 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" ) ) | if ( ! strcmp( s, ":gain" ) ) | ||||
_scale = atof( v ); | _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 ); | free( s ); | ||||
} | } | ||||
@@ -40,9 +40,9 @@ protected: | |||||
const char *class_name ( void ) { return "Tempo_Point"; } | 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: | public: | ||||
@@ -54,9 +54,9 @@ protected: | |||||
const char *class_name ( void ) { return "Time_Point"; } | 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: | public: | ||||
@@ -27,6 +27,10 @@ | |||||
Track_Widget * Track::_queued_widget = NULL; | Track_Widget * Track::_queued_widget = NULL; | ||||
static bool | static bool | ||||
sort_func ( Track_Widget *lhs, Track_Widget *rhs ) | sort_func ( Track_Widget *lhs, Track_Widget *rhs ) | ||||
{ | { | ||||
@@ -84,6 +88,8 @@ Track::event_widget ( void ) | |||||
void | void | ||||
Track::add ( Track_Widget *r ) | Track::add ( Track_Widget *r ) | ||||
{ | { | ||||
log_start(); | |||||
if ( r->track() ) | if ( r->track() ) | ||||
{ | { | ||||
r->track()->remove( r ); | r->track()->remove( r ); | ||||
@@ -93,6 +99,8 @@ Track::add ( Track_Widget *r ) | |||||
_widgets.push_back( r ); | _widgets.push_back( r ); | ||||
r->track( this ); | r->track( this ); | ||||
log_end(); | |||||
} | } | ||||
/* snap /r/ to nearest edge */ | /* snap /r/ to nearest edge */ | ||||
@@ -25,6 +25,7 @@ | |||||
#include <stdio.h> | #include <stdio.h> | ||||
#include "Loggable.H" | |||||
#include <assert.h> | #include <assert.h> | ||||
@@ -34,7 +35,7 @@ using std::list; | |||||
class Region; | class Region; | ||||
class Track_Widget; | class Track_Widget; | ||||
class Track : public Fl_Group | |||||
class Track : public Fl_Group, public Loggable | |||||
{ | { | ||||
Track *_next; | Track *_next; | ||||
Track *_prev; | Track *_prev; | ||||
@@ -47,8 +48,38 @@ protected: | |||||
list <Track_Widget *> _widgets; | list <Track_Widget *> _widgets; | ||||
Track_Widget *event_widget ( void ); | 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 <Track_Widget *>::const_iterator i = _widgets.begin(); i != _widgets.end(); i++ ) | |||||
{ | |||||
s += sprintf( s, "0x%X", ((Loggable*)(*i))->id() ); | |||||
list <Track_Widget *>::const_iterator e = i; | |||||
if ( ++e != _widgets.end() ) | |||||
s += sprintf( s, "," ); | |||||
} | |||||
return sa; | |||||
} | |||||
public: | public: | ||||
Track ( int X, int Y, int W, int H ) : Fl_Group( X, Y, W, H ) | Track ( int X, int Y, int W, int H ) : Fl_Group( X, Y, W, H ) | ||||
{ | { | ||||
_next = _prev = NULL; | _next = _prev = NULL; | ||||
@@ -56,6 +87,13 @@ public: | |||||
box( FL_DOWN_BOX ); | box( FL_DOWN_BOX ); | ||||
color( fl_darker( FL_GRAY ) ); | color( fl_darker( FL_GRAY ) ); | ||||
log_create(); | |||||
} | |||||
~Track ( ) | |||||
{ | |||||
log_destroy(); | |||||
} | } | ||||
Track *next ( void ) const { return _next; } | Track *next ( void ) const { return _next; } | ||||