Keep track of default project path across sessions.

pull/3/head
Jonathan Moore Liles 2008-06-21 22:15:05 -05:00
parent f50c8318ff
commit a36f515f65
3 changed files with 62 additions and 6 deletions

View File

@ -234,9 +234,15 @@ main_window->redraw();}
}
MenuItem {} {
label {&Open}
callback {const char *name = fl_dir_chooser( "Open Project", NULL, NULL );
callback {char *path;
open( name );}
read_line( user_config_dir, "default_path", &path );
const char *name = fl_dir_chooser( "Open Project", path, NULL );
free( path );
open( name );} selected
xywh {10 10 40 25}
}
MenuItem {} {
@ -647,8 +653,7 @@ else
}
m->redraw();
project_name->redraw();} {selected
}
project_name->redraw();} {}
}
Function {update_progress( Fl_Progress *p, char *s, float v )} {open private return_type {static void}
} {
@ -829,7 +834,8 @@ if ( r < 0 )
}
}
class New_Project_Dialog {} {
class New_Project_Dialog {open
} {
Function {New_Project_Dialog()} {open
} {
code {make_window();} {}
@ -877,9 +883,15 @@ while ( _window->shown() )
{
fl_alert( "Must be a directory" );
o->value( "" );
}}
return;
}
write_line( user_config_dir, "default_path", o->value() );}
xywh {75 100 375 35}
code0 {\#include <FL/filename.H>}
code1 {char *v;}
code2 {read_line( user_config_dir, "default_path", &v );}
code3 {o->value( v );}
}
Fl_Box {} {
label {New Project}

View File

@ -22,6 +22,8 @@
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
unsigned long
mtime ( const char *file )
@ -136,3 +138,43 @@ touch ( int fd )
fchmod( fd, st.st_mode );
}
/** write a single string to a file */
void
write_line ( const char *dir, const char *name, const char *value )
{
char path[512];
snprintf( path, sizeof( path ), "%s/%s", dir, name );
FILE *fp = fopen( path, "w" );
if ( ! fp )
return;
fputs( value, fp );
fclose( fp );
}
/** write a single string to a file */
void
read_line ( const char *dir, const char *name, char **value )
{
char path[512];
*value = 0;
snprintf( path, sizeof( path ), "%s/%s", dir, name );
FILE *fp = fopen( path, "r" );
if ( ! fp )
return;
*value = (char*)malloc( 512 );
fgets( *value, 512, fp );
fclose( fp );
}

View File

@ -28,3 +28,5 @@ void release_lock ( int *lockfd, const char *filename );
int backwards_fgetc ( FILE *fp );
char * backwards_fgets ( char *s, int size, FILE *fp );
void touch ( int fd );
void write_line ( const char *dir, const char *name, const char *value );
void read_line ( const char *dir, const char *name, char **value );