Browse Source

Display more specific error messages when project open fails.

tags/non-daw-v1.1.0
Jonathan Moore Liles 17 years ago
parent
commit
9c21fb209a
5 changed files with 39 additions and 18 deletions
  1. +1
    -1
      Timeline/LASH.C
  2. +6
    -5
      Timeline/Project.C
  3. +8
    -1
      Timeline/Project.H
  4. +23
    -10
      Timeline/TLE.fl
  5. +1
    -1
      Timeline/main.C

+ 1
- 1
Timeline/LASH.C View File

@@ -107,7 +107,7 @@ LASH::handle_restore_file ( const char *path )


fclose( fp ); fclose( fp );


return Project::open( project_path );
return Project::open( project_path ) == 0;
} }


void void


+ 6
- 5
Timeline/Project.C View File

@@ -209,11 +209,12 @@ Project::validate ( const char *name )
return r; return r;
} }


bool
/** try to open project /name/. Returns 0 if sucsessful, an error code otherwise */
int
Project::open ( const char *name ) Project::open ( const char *name )
{ {
if ( ! validate( name ) ) if ( ! validate( name ) )
return false;
return E_INVALID;


close(); close();


@@ -222,7 +223,7 @@ Project::open ( const char *name )
if ( ! get_lock( ".lock" ) ) if ( ! get_lock( ".lock" ) )
{ {
WARNING( "Could not open project: locked by another process!" ); WARNING( "Could not open project: locked by another process!" );
return false;
return Project::E_LOCKED;
} }


if ( ! Loggable::open( "history" ) ) if ( ! Loggable::open( "history" ) )
@@ -241,7 +242,7 @@ Project::open ( const char *name )


timeline->zoom_fit(); timeline->zoom_fit();


return true;
return 0;
} }


bool bool
@@ -271,7 +272,7 @@ Project::create ( const char *name, const char *template_name )


/* TODO: copy template */ /* TODO: copy template */


if ( open( name ) )
if ( open( name ) == 0 )
{ {
write_info(); write_info();




+ 8
- 1
Timeline/Project.H View File

@@ -33,13 +33,20 @@ class Project


public: public:


enum
{
E_INVALID = -1,
E_LOCKED = -2,
E_PERM = -3,
};

static bool write_info ( void ); static bool write_info ( void );
static bool read_info ( void ); static bool read_info ( void );
static const char *name ( void ) { return Project::_name; } static const char *name ( void ) { return Project::_name; }
static void set_name ( const char *name ); static void set_name ( const char *name );
static bool close ( void ); static bool close ( void );
static bool validate ( const char *name ); static bool validate ( const char *name );
static bool open ( const char *name );
static int open ( const char *name );
static bool open ( void ) { return _is_open; } static bool open ( void ) { return _is_open; }
static bool create ( const char *name, const char *template_name ); static bool create ( const char *name, const char *template_name );




+ 23
- 10
Timeline/TLE.fl View File

@@ -160,10 +160,10 @@ Loggable::progress_callback( &TLE::progress_cb, this );} {}
Function {make_window()} {open Function {make_window()} {open
} { } {
Fl_Window main_window { Fl_Window main_window {
label Timeline
label Timeline open
xywh {174 117 1025 770} type Double resizable xclass Non_DAW visible xywh {174 117 1025 770} type Double resizable xclass Non_DAW visible
} { } {
Fl_Menu_Bar menubar {
Fl_Menu_Bar menubar {open
xywh {0 0 1024 25} xywh {0 0 1024 25}
} { } {
Submenu {} { Submenu {} {
@@ -198,16 +198,29 @@ if ( ! name )
return; return;


if ( ! Project::validate( name ) )
{
fl_alert( "The path \\"%s\\"\\ndoes not refer to a valid Non-DAW project!", name );
}
else if ( ! Project::open( name ) )
int r = Project::open( name );
if ( r < 0 )
{ {
fl_alert( "Could not open \\"%s\\" as a Non-DAW project!", name );
const char *s = "";
switch ( r )
{
case Project::E_LOCKED:
s = "Locked by another process";
break;
case Project::E_PERM:
s = "Access denied";
break;
case Project::E_INVALID:
s = "Not a Non-DAW project";
break;
}

fl_alert( "Could not open project \\"%s\\":\\n\\n\\t%s", name, s );
// we are in a somewhar ambiguous state now with no project open. // we are in a somewhar ambiguous state now with no project open.
}}
}} selected
xywh {10 10 40 25} xywh {10 10 40 25}
} }
MenuItem {} { MenuItem {} {
@@ -932,7 +945,7 @@ while ( window->shown() )
Function {make_window()} {open Function {make_window()} {open
} { } {
Fl_Window window { Fl_Window window {
label {Project info} open selected
label {Project info} open
private xywh {649 226 520 625} type Double modal visible private xywh {649 226 520 625} type Double modal visible
} { } {
Fl_Value_Output {} { Fl_Value_Output {} {


+ 1
- 1
Timeline/main.C View File

@@ -140,7 +140,7 @@ main ( int argc, char **argv )
tle->run(); tle->run();


if ( argc > 1 ) if ( argc > 1 )
if ( ! Project::open( argv[ 1 ] ) )
if ( Project::open( argv[ 1 ] ) != 0 )
FATAL( "Could not open project specified on command line" ); FATAL( "Could not open project specified on command line" );


/* FIXME: open project in /tmp if none is given? */ /* FIXME: open project in /tmp if none is given? */


Loading…
Cancel
Save