Mixer: Implement Project/Open menu option.
This commit is contained in:
parent
74f674b30f
commit
bf376d9171
|
@ -36,6 +36,10 @@ public:
|
||||||
_max_width = _hspacing = _vspacing = 0;
|
_max_width = _hspacing = _vspacing = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual ~Fl_Flowpack ( )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
int max_width ( void ) const { return _max_width; }
|
int max_width ( void ) const { return _max_width; }
|
||||||
|
|
||||||
void vspacing ( int v ) { _vspacing = v; }
|
void vspacing ( int v ) { _vspacing = v; }
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <FL/Fl_Scroll.H>
|
#include <FL/Fl_Scroll.H>
|
||||||
#include <FL/Fl_Menu_Bar.H>
|
#include <FL/Fl_Menu_Bar.H>
|
||||||
#include <FL/fl_ask.H>
|
#include <FL/fl_ask.H>
|
||||||
|
#include <FL/Fl_File_Chooser.H>
|
||||||
#include "New_Project_Dialog.H"
|
#include "New_Project_Dialog.H"
|
||||||
#include "Engine/Engine.H"
|
#include "Engine/Engine.H"
|
||||||
#include "FL/Fl_Flowpack.H"
|
#include "FL/Fl_Flowpack.H"
|
||||||
|
@ -78,6 +79,26 @@ void Mixer::cb_menu(Fl_Widget* o) {
|
||||||
// write_line( user_config_dir, "default_path", default_path );
|
// write_line( user_config_dir, "default_path", default_path );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else if (! strcmp( picked, "&Project/&Open" ) )
|
||||||
|
{
|
||||||
|
char *path = NULL;
|
||||||
|
|
||||||
|
// read_line( user_config_dir, "default_path", &path );
|
||||||
|
|
||||||
|
const char *name = fl_dir_chooser( "Open Project", path, NULL );
|
||||||
|
|
||||||
|
free( path );
|
||||||
|
|
||||||
|
mixer->hide();
|
||||||
|
|
||||||
|
if ( int err = Project::open( name ) )
|
||||||
|
{
|
||||||
|
fl_alert( "Error opening project: %s", Project::errstr( err ) );
|
||||||
|
mixer->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
mixer->show();
|
||||||
|
}
|
||||||
else if (! strcmp( picked, "&Project/&Save" ) )
|
else if (! strcmp( picked, "&Project/&Save" ) )
|
||||||
{
|
{
|
||||||
Project::save();
|
Project::save();
|
||||||
|
@ -169,8 +190,10 @@ Mixer::Mixer ( int X, int Y, int W, int H, const char *L ) :
|
||||||
|
|
||||||
Mixer::~Mixer ( )
|
Mixer::~Mixer ( )
|
||||||
{
|
{
|
||||||
/* FIXME: teardown */
|
|
||||||
DMESSAGE( "Destroying mixer" );
|
DMESSAGE( "Destroying mixer" );
|
||||||
|
|
||||||
|
/* FIXME: teardown */
|
||||||
|
mixer_strips->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mixer::resize ( int X, int Y, int W, int H )
|
void Mixer::resize ( int X, int Y, int W, int H )
|
||||||
|
@ -244,8 +267,6 @@ void Mixer::remove ( Mixer_Strip *ms )
|
||||||
|
|
||||||
mixer_strips->remove( ms );
|
mixer_strips->remove( ms );
|
||||||
|
|
||||||
delete ms;
|
|
||||||
|
|
||||||
parent()->redraw();
|
parent()->redraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -182,6 +182,8 @@ Mixer_Strip::~Mixer_Strip ( )
|
||||||
_chain = NULL;
|
_chain = NULL;
|
||||||
|
|
||||||
log_destroy();
|
log_destroy();
|
||||||
|
|
||||||
|
mixer->remove( this );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mixer_Strip::cb_handle(Fl_Widget* o) {
|
void Mixer_Strip::cb_handle(Fl_Widget* o) {
|
||||||
|
@ -213,6 +215,7 @@ void Mixer_Strip::cb_handle(Fl_Widget* o) {
|
||||||
if ( Fl::event_shift() || 1 == fl_choice( "Are you sure you want to remove this strip?\n\n(this action cannot be undone)", "Cancel", "Remove", NULL ) )
|
if ( Fl::event_shift() || 1 == fl_choice( "Are you sure you want to remove this strip?\n\n(this action cannot be undone)", "Cancel", "Remove", NULL ) )
|
||||||
{
|
{
|
||||||
((Mixer*)parent())->remove( this );
|
((Mixer*)parent())->remove( this );
|
||||||
|
Fl::delete_widget( this );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( o == name_field )
|
else if ( o == name_field )
|
||||||
|
|
|
@ -179,7 +179,7 @@ Project::close ( void )
|
||||||
if ( ! save() )
|
if ( ! save() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* Loggable::close(); */
|
Loggable::close();
|
||||||
/* // write_info(); */
|
/* // write_info(); */
|
||||||
|
|
||||||
_is_open = false;
|
_is_open = false;
|
||||||
|
|
|
@ -219,12 +219,11 @@ Loggable::close ( void )
|
||||||
{
|
{
|
||||||
DMESSAGE( "closing journal and destroying all journaled objects" );
|
DMESSAGE( "closing journal and destroying all journaled objects" );
|
||||||
|
|
||||||
if ( ! _fp )
|
if ( _fp )
|
||||||
return true;
|
{
|
||||||
|
fclose( _fp );
|
||||||
fclose( _fp );
|
_fp = NULL;
|
||||||
|
}
|
||||||
_fp = NULL;
|
|
||||||
|
|
||||||
if ( ! snapshot( "snapshot" ) )
|
if ( ! snapshot( "snapshot" ) )
|
||||||
WARNING( "Failed to create snapshot" );
|
WARNING( "Failed to create snapshot" );
|
||||||
|
|
Loading…
Reference in New Issue