FL/New_Project_Dialog: Don't crash if aborted.
This commit is contained in:
parent
d4c15e6fa7
commit
89f2633463
|
@ -54,17 +54,17 @@ while ( _window->shown() )
|
|||
Function {make_window()} {open
|
||||
} {
|
||||
Fl_Window _window {
|
||||
label {New Project} open
|
||||
xywh {762 252 550 195} type Double hide modal
|
||||
label {New Project} open selected
|
||||
xywh {743 696 550 105} type Double modal visible
|
||||
} {
|
||||
Fl_File_Input _name {
|
||||
label {Named:}
|
||||
xywh {75 140 375 35}
|
||||
xywh {75 55 375 35}
|
||||
}
|
||||
Fl_Button {} {
|
||||
label Browse
|
||||
callback {_directory->value( fl_dir_chooser( "Directory for new project", NULL, 0 ) );}
|
||||
xywh {455 100 80 35}
|
||||
xywh {455 15 80 35}
|
||||
}
|
||||
Fl_Return_Button {} {
|
||||
label Create
|
||||
|
@ -83,7 +83,7 @@ while ( _window->shown() )
|
|||
|
||||
_window->hide();
|
||||
}}
|
||||
xywh {455 140 80 35}
|
||||
xywh {455 55 80 35}
|
||||
}
|
||||
Fl_File_Input _directory {
|
||||
label {Where:}
|
||||
|
@ -95,36 +95,18 @@ while ( _window->shown() )
|
|||
}
|
||||
|
||||
// write_line( user_config_dir, "default_path", o->value() );}
|
||||
xywh {75 100 375 35}
|
||||
xywh {75 15 375 35}
|
||||
code0 {\#include <FL/filename.H>}
|
||||
code1 {char *v = NULL;}
|
||||
code2 {// read_line( user_config_dir, "default_path", &v );}
|
||||
code3 {o->value( v );}
|
||||
}
|
||||
Fl_Box {} {
|
||||
label {New Project}
|
||||
xywh {15 8 520 33} box RSHADOW_BOX color 133 labelsize 20 labelcolor 32
|
||||
}
|
||||
Fl_Choice _template {
|
||||
label {Template:} open
|
||||
private xywh {310 60 225 25} down_box BORDER_BOX
|
||||
} {
|
||||
MenuItem {} {
|
||||
label Default selected
|
||||
xywh {0 0 40 25}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
decl {char *path;} {public local
|
||||
}
|
||||
decl {char *_default_path} {private local
|
||||
}
|
||||
Function {templates( const char **templates )} {open return_type void
|
||||
} {
|
||||
code {for ( const char **s = templates; *s; ++s )
|
||||
_template->add( *s );} {}
|
||||
}
|
||||
Function {default_path( char *s )} {open return_type void
|
||||
} {
|
||||
code {_default_path = s;} {}
|
||||
|
@ -133,23 +115,18 @@ while ( _window->shown() )
|
|||
} {
|
||||
code {return _default_path;} {}
|
||||
}
|
||||
Function {selected_template()} {open return_type {const char *}
|
||||
} {
|
||||
code {return _template->text( _template->value() );} {}
|
||||
}
|
||||
}
|
||||
|
||||
Function {new_project_chooser( const char **templates, char **default_path, char **selected_template )} {open C return_type {char*}
|
||||
Function {new_project_chooser( char **default_path)} {open C return_type {char*}
|
||||
} {
|
||||
code {New_Project_Dialog nsd;
|
||||
|
||||
nsd.templates( templates );
|
||||
nsd.default_path( *default_path );
|
||||
|
||||
nsd.run();
|
||||
|
||||
*default_path = strdup( nsd.default_path() );
|
||||
*selected_template = strdup( nsd.selected_template() );
|
||||
if ( nsd.default_path() )
|
||||
*default_path = strdup( nsd.default_path() );
|
||||
|
||||
return nsd.path;} {}
|
||||
}
|
||||
|
|
|
@ -186,21 +186,18 @@ void Mixer::cb_menu(Fl_Widget* o) {
|
|||
if (! strcmp( picked, "&Project/&New") )
|
||||
{
|
||||
DMESSAGE( "New project" );
|
||||
const char *templates[] = { "Default", NULL };
|
||||
|
||||
char *default_path;
|
||||
char *selected_template;
|
||||
|
||||
read_line( user_config_dir, "default_path", &default_path );
|
||||
|
||||
char *path = new_project_chooser( templates, &default_path, &selected_template );
|
||||
char *path = new_project_chooser( &default_path );
|
||||
|
||||
if ( path )
|
||||
{
|
||||
if ( ! Project::create( path, selected_template ) )
|
||||
if ( ! Project::create( path, NULL ) )
|
||||
fl_alert( "Error creating project!" );
|
||||
free( path );
|
||||
free( selected_template );
|
||||
}
|
||||
|
||||
update_menu();
|
||||
|
|
|
@ -261,7 +261,7 @@ Loggable::progress_callback( &TLE::progress_cb, this );} {}
|
|||
label {Non Timeline}
|
||||
callback {if ( Fl::event_key() != FL_Escape )
|
||||
timeline->command_quit();} open
|
||||
xywh {202 266 1025 770} type Double resizable
|
||||
xywh {204 266 1025 770} type Double resizable
|
||||
code0 {o->xclass( APP_NAME );}
|
||||
class TLE_Window size_range {900 300 0 0} visible
|
||||
} {
|
||||
|
@ -330,21 +330,18 @@ pi.run();}
|
|||
label {&New}
|
||||
callback {save_timeline_settings();
|
||||
|
||||
const char *templates[] = { "Default", NULL };
|
||||
|
||||
char *default_path;
|
||||
char *selected_template;
|
||||
|
||||
read_line( user_config_dir, "default_path", &default_path );
|
||||
|
||||
char *path = new_project_chooser( templates, &default_path, &selected_template );
|
||||
char *path = new_project_chooser( &default_path );
|
||||
|
||||
if ( path )
|
||||
{
|
||||
if ( ! Project::create( path, selected_template ) )
|
||||
if ( ! Project::create( path, NULL ) )
|
||||
fl_alert( "Error creating project!" );
|
||||
free( path );
|
||||
free( selected_template );
|
||||
}
|
||||
|
||||
if ( default_path )
|
||||
|
@ -422,7 +419,7 @@ while ( 0 == waitpid( pid, &status, WNOHANG ) )
|
|||
|
||||
Project::open(path);
|
||||
|
||||
free(path);} selected
|
||||
free(path);}
|
||||
xywh {20 20 40 25}
|
||||
}
|
||||
}
|
||||
|
@ -1055,47 +1052,59 @@ if ( logo_box->image() )
|
|||
((Fl_Shared_Image*)logo_box->image())->release();
|
||||
logo_box->image( NULL );
|
||||
}} open
|
||||
private xywh {1193 174 520 775} type Double hide modal
|
||||
private xywh {1195 197 520 710} type Double modal visible
|
||||
} {
|
||||
Fl_Value_Output {} {
|
||||
label {Sample Rate}
|
||||
xywh {40 80 90 25} labeltype SHADOW_LABEL align 1
|
||||
code0 {o->value( timeline->sample_rate() );}
|
||||
}
|
||||
Fl_Output {} {
|
||||
label {Size of Journal}
|
||||
xywh {180 80 100 25} box UP_BOX labeltype SHADOW_LABEL align 1
|
||||
code0 {static char pat[40];}
|
||||
code1 {snprintf( pat, sizeof( pat ), "%.1fK", size( "history" ) / (float)1024 );}
|
||||
code2 {o->value( pat );}
|
||||
code3 {\#include "file.h"}
|
||||
}
|
||||
Fl_Output {} {
|
||||
label {Created On}
|
||||
xywh {320 80 180 25} box UP_BOX labeltype SHADOW_LABEL align 1 textfont 11 textsize 12
|
||||
code0 {o->value( Project::created_on() );}
|
||||
}
|
||||
Fl_Output {} {
|
||||
label Length
|
||||
xywh {30 130 115 25} box BORDER_BOX color 47 align 1 textcolor 71
|
||||
code0 {char pat[40];}
|
||||
code1 {Clock::frame_to_HMS( pat, sizeof( pat ), timeline->length() );}
|
||||
code2 {o->value( pat );}
|
||||
}
|
||||
Fl_Value_Output {} {
|
||||
label Tracks
|
||||
xywh {200 130 55 25} align 1
|
||||
code0 {o->value( timeline->ntracks() );}
|
||||
Fl_Group {} {open
|
||||
xywh {25 30 470 75}
|
||||
} {
|
||||
Fl_Value_Output {} {
|
||||
label {Sample Rate}
|
||||
xywh {35 30 90 25} labeltype SHADOW_LABEL align 1
|
||||
code0 {o->value( timeline->sample_rate() );}
|
||||
}
|
||||
Fl_Output {} {
|
||||
label {Size of Journal}
|
||||
xywh {175 30 100 25} box UP_BOX labeltype SHADOW_LABEL align 1
|
||||
code0 {static char pat[40];}
|
||||
code1 {snprintf( pat, sizeof( pat ), "%.1fK", size( "history" ) / (float)1024 );}
|
||||
code2 {o->value( pat );}
|
||||
code3 {\#include "file.h"}
|
||||
}
|
||||
Fl_Output {} {
|
||||
label {Created On}
|
||||
xywh {315 30 180 25} box UP_BOX labeltype SHADOW_LABEL align 1 textfont 11 textsize 12
|
||||
code0 {o->value( Project::created_on() );}
|
||||
}
|
||||
Fl_Output {} {
|
||||
label Length
|
||||
xywh {25 80 115 25} box BORDER_BOX color 47 align 1 textcolor 71
|
||||
code0 {char pat[40];}
|
||||
code1 {Clock::frame_to_HMS( pat, sizeof( pat ), timeline->length() );}
|
||||
code2 {o->value( pat );}
|
||||
}
|
||||
Fl_Value_Output {} {
|
||||
label Tracks
|
||||
xywh {195 80 55 25} align 1
|
||||
code0 {o->value( timeline->ntracks() );}
|
||||
}
|
||||
Fl_Output {} {
|
||||
label {Last Modified On}
|
||||
xywh {315 80 180 25} box UP_BOX labeltype SHADOW_LABEL align 1 textfont 11 textsize 12
|
||||
code0 {time_t t = modification_time( "history" );}
|
||||
code1 {static char s[40];}
|
||||
code2 {ctime_r( &t, s ); s[ strlen( s ) - 1 ] = 0;}
|
||||
code3 {o->value( s );}
|
||||
}
|
||||
}
|
||||
Fl_Box logo_box {
|
||||
label {<LOGO>}
|
||||
private xywh {20 173 485 268} color 53 labelfont 1 labelsize 18 align 16
|
||||
private xywh {18 117 485 268} color 53 labelfont 1 labelsize 18 align 16
|
||||
code0 {o->image( Fl_Shared_Image::get( PIXMAP_PATH "/non-timeline/icon-256x256.png" ) );}
|
||||
code1 {o->label( NULL );}
|
||||
}
|
||||
Fl_Text_Editor notes_field {
|
||||
label {Notes:}
|
||||
private xywh {20 475 480 245} color 47 selection_color 31 textsize 18 textcolor 92
|
||||
label {Notes:} selected
|
||||
private xywh {20 420 480 245} color 47 selection_color 31 textsize 18 textcolor 92
|
||||
code0 {o->buffer( new Fl_Text_Buffer() );}
|
||||
code1 {o->buffer()->loadfile( "notes" );}
|
||||
}
|
||||
|
@ -1104,28 +1113,12 @@ if ( logo_box->image() )
|
|||
callback {notes_field->buffer()->savefile( "notes" );
|
||||
|
||||
window->do_callback();}
|
||||
xywh {420 735 74 25}
|
||||
}
|
||||
Fl_Box {} {
|
||||
label {Project Info}
|
||||
xywh {40 18 405 27} box RSHADOW_BOX color 95 labeltype SHADOW_LABEL labelsize 18
|
||||
}
|
||||
Fl_Box {} {
|
||||
label {Project Info}
|
||||
xywh {25 18 470 33} box RSHADOW_BOX color 0 labelsize 20 labelcolor 32
|
||||
xywh {422 676 74 25}
|
||||
}
|
||||
Fl_Button {} {
|
||||
label {&Discard}
|
||||
callback {window->do_callback();}
|
||||
xywh {330 735 74 25}
|
||||
}
|
||||
Fl_Output {} {
|
||||
label {Last Modified On}
|
||||
xywh {320 130 180 25} box UP_BOX labeltype SHADOW_LABEL align 1 textfont 11 textsize 12
|
||||
code0 {time_t t = modification_time( "history" );}
|
||||
code1 {static char s[40];}
|
||||
code2 {ctime_r( &t, s ); s[ strlen( s ) - 1 ] = 0;}
|
||||
code3 {o->value( s );}
|
||||
xywh {332 676 74 25}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue