From cfd217e200ed414d8fa73dfbf0b6696c0c613bd6 Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Sun, 31 Jan 2010 14:42:14 -0600 Subject: [PATCH] Mixer: Separate out public project commands. --- Mixer/Mixer.C | 62 +++++++++++++++++++++++++++++++++++++++++++++---- Mixer/Mixer.H | 10 ++++++++ Mixer/Project.C | 6 +++++ Mixer/Project.H | 1 + 4 files changed, 75 insertions(+), 4 deletions(-) diff --git a/Mixer/Mixer.C b/Mixer/Mixer.C index 027e979..ccd8e96 100644 --- a/Mixer/Mixer.C +++ b/Mixer/Mixer.C @@ -115,15 +115,15 @@ void Mixer::cb_menu(Fl_Widget* o) { } else if (! strcmp( picked, "&Project/&Save" ) ) { - Project::save(); + command_save(); } else if (! strcmp( picked, "&Project/&Quit") ) { - quit(); + command_quit(); } else if ( !strcmp( picked, "&Mixer/&Add Strip" ) ) { - new_strip(); + command_add_strip(); } else if ( !strcmp( picked, "&Mixer/Add &N Strips" ) ) { @@ -132,7 +132,7 @@ void Mixer::cb_menu(Fl_Widget* o) { if ( s ) { for ( int i = atoi( s ); i > 0; i-- ) - new_strip(); + command_add_strip(); } } else if (! strcmp( picked, "&Mixer/&Rows/One") ) @@ -487,3 +487,57 @@ Mixer::handle ( int m ) return 0; } + + + +/************/ +/* Commands */ +/************/ + +bool +Mixer::command_save ( void ) +{ + return Project::save(); +} + +bool +Mixer::command_load ( const char *path, const char *display_name ) +{ + if ( int err = Project::open( path ) ) + { + // fl_alert( "Error opening project specified on commandline: %s", Project::errstr( err ) ); + return false; + } + + if ( display_name ) + Project::name( display_name ); + + return true; +} + +bool +Mixer::command_new ( const char *path, const char *display_name ) +{ + if ( ! Project::create( path, "" ) ) + return false; + + if ( display_name ) + Project::name( display_name ); + + return true; +// fl_alert( "Error creating project!" ); +} + +void +Mixer::command_quit ( void ) +{ + quit(); +} + +/* */ + +void +Mixer::command_add_strip ( void ) +{ + new_strip(); +} diff --git a/Mixer/Mixer.H b/Mixer/Mixer.H index 1eba257..fc08f61 100644 --- a/Mixer/Mixer.H +++ b/Mixer/Mixer.H @@ -83,6 +83,16 @@ public: Mixer ( int X, int Y, int W, int H, const char *L ); virtual ~Mixer(); + +public: + + bool command_save ( void ); + bool command_load ( const char *path, const char *display_name = 0 ); + bool command_new ( const char *path, const char *display_name = 0 ); + void command_quit ( void ); + + void command_add_strip ( void ); + }; extern Mixer* mixer; diff --git a/Mixer/Project.C b/Mixer/Project.C index 8836803..4d298cc 100644 --- a/Mixer/Project.C +++ b/Mixer/Project.C @@ -84,6 +84,12 @@ Project::set_name ( const char *name ) *s = ' '; } +void +Project::name ( const char *name ) +{ + strcpy( Project::_name, name ); +} + bool Project::write_info ( void ) { diff --git a/Mixer/Project.H b/Mixer/Project.H index 2fed316..2eb4414 100644 --- a/Mixer/Project.H +++ b/Mixer/Project.H @@ -50,6 +50,7 @@ public: static const char *errstr ( int n ) { return _errstr[ ( 0 - n ) - 1 ]; } static const char *name ( void ) { return Project::_name; } + static void name ( const char *v ); static void compact ( void ); static bool close ( void ); static bool save ( void );