From 89f263346373bcd0b3a5aae142681120d3164e2a Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Mon, 13 May 2013 17:21:50 -0700 Subject: [PATCH] FL/New_Project_Dialog: Don't crash if aborted. --- FL/New_Project_Dialog.fl | 41 ++++----------- mixer/src/Mixer.C | 7 +-- timeline/src/TLE.fl | 109 ++++++++++++++++++--------------------- 3 files changed, 62 insertions(+), 95 deletions(-) diff --git a/FL/New_Project_Dialog.fl b/FL/New_Project_Dialog.fl index 774a84a..906fcbe 100644 --- a/FL/New_Project_Dialog.fl +++ b/FL/New_Project_Dialog.fl @@ -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 } 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;} {} } diff --git a/mixer/src/Mixer.C b/mixer/src/Mixer.C index 70c7719..b61b6bc 100644 --- a/mixer/src/Mixer.C +++ b/mixer/src/Mixer.C @@ -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(); diff --git a/timeline/src/TLE.fl b/timeline/src/TLE.fl index a744648..0f73d21 100644 --- a/timeline/src/TLE.fl +++ b/timeline/src/TLE.fl @@ -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 {} - 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} } } }