Enlightenment CVS committal Author : werkt Project : misc Module : ewler
Dir : misc/ewler/src Modified Files: Makefile.am ewler.c ewler.h form.c form.h main.c project.c project.h Log Message: Project management. =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/Makefile.am,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- Makefile.am 25 Jul 2004 01:01:49 -0000 1.4 +++ Makefile.am 10 Aug 2004 21:45:34 -0000 1.5 @@ -12,9 +12,9 @@ form_file.c form_file.h \ inspector.c inspector.h \ main.c \ - project.c project.h \ selected.c selected.h \ widgets.c widgets.h \ + project.c project.h \ layout.c ewler_LDADD = @ewl_libs@ @xml2_libs@ =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/ewler.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- ewler.c 27 Jul 2004 13:51:05 -0000 1.5 +++ ewler.c 10 Aug 2004 21:45:34 -0000 1.6 @@ -14,7 +14,7 @@ extern void __destroy_main_window( Ewl_Widget *w, void *ev_data, void *user_data ); -static void +void __destroy_dialog( Ewl_Widget *w, void *ev_data, void *user_data ) { Ewl_Widget *dialog = user_data; @@ -31,13 +31,18 @@ static void __create_new_project( Ewl_Widget *w, void *ev_data, void *user_data ) { - project_new_dialog(); + project_new(); } static void __open_project( Ewl_Widget *w, void *ev_data, void *user_data ) { - project_open_dialog(); +} + +static void +__project_options( Ewl_Widget *w, void *ev_data, void *user_data ) +{ + project_options_dialog(); } static void @@ -86,6 +91,12 @@ inspector_show(); } +static void +__toggle_projects( Ewl_Widget *w, void *ev_data, void *user_data ) +{ + projects_toggle(); +} + void ewler_open_file( char *filename ) { @@ -144,6 +155,12 @@ __open_project, NULL ); ewl_widget_show( menu_item ); + menu_item = ewl_menu_item_new( NULL, "Project Options..." ); + ewl_container_append_child( EWL_CONTAINER(menu), menu_item ); + ewl_callback_append( menu_item, EWL_CALLBACK_SELECT, + __project_options, NULL ); + ewl_widget_show( menu_item ); + menu_item = EWL_WIDGET(ewl_menu_separator_new()); ewl_object_set_fill_policy( EWL_OBJECT(menu_item), EWL_FLAG_FILL_HFILL ); ewl_container_append_child( EWL_CONTAINER(menu), menu_item ); @@ -182,6 +199,12 @@ ewl_callback_append( menu_item, EWL_CALLBACK_SELECT, __toggle_inspector, NULL ); ewl_widget_show( menu_item ); + + menu_item = ewl_menu_item_new( NULL, "Project Overview" ); + ewl_container_append_child( EWL_CONTAINER(menu), menu_item ); + ewl_callback_append( menu_item, EWL_CALLBACK_SELECT, + __toggle_projects, NULL ); + ewl_widget_show( menu_item ); } char * @@ -287,3 +310,43 @@ ewl_widget_show( dialog ); } +void +ewler_yesno_dialog( Ewl_Callback_Function yes_cb, Ewl_Callback_Function no_cb, + void *user_data, const char *fmt, ... ) +{ + Ewl_Widget *dialog, *text, *button; + static char buf[1024]; + va_list ap; + + dialog = ewl_dialog_new(EWL_POSITION_BOTTOM); + ewl_window_set_title( EWL_WINDOW(dialog), "ewler" ); + ewl_callback_append( dialog, EWL_CALLBACK_DELETE_WINDOW, + __destroy_dialog, dialog ); + if( no_cb ) + ewl_callback_append( dialog, EWL_CALLBACK_DELETE_WINDOW, no_cb, user_data ); + + va_start( ap, fmt ); + vsnprintf( buf, 1023, fmt, ap ); + va_end( ap ); + + text = ewl_text_new( buf ); + ewl_object_set_padding( EWL_OBJECT(text), 5, 5, 5, 5 ); + ewl_container_prepend_child( EWL_CONTAINER(EWL_DIALOG(dialog)->vbox), text ); + ewl_widget_show( text ); + + button = ewl_dialog_add_button( EWL_DIALOG(dialog), + EWL_STOCK_OK, EWL_RESPONSE_OK ); + ewl_callback_append( button, EWL_CALLBACK_CLICKED, + __destroy_dialog, dialog ); + if( yes_cb ) + ewl_callback_append( button, EWL_CALLBACK_CLICKED, yes_cb, user_data ); + + button = ewl_dialog_add_button( EWL_DIALOG(dialog), + EWL_STOCK_CANCEL, EWL_RESPONSE_CANCEL ); + ewl_callback_append( button, EWL_CALLBACK_CLICKED, + __destroy_dialog, dialog ); + if( no_cb ) + ewl_callback_append( button, EWL_CALLBACK_CLICKED, no_cb, user_data ); + + ewl_widget_show( dialog ); +} =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/ewler.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- ewler.h 8 Jun 2004 18:30:05 -0000 1.1 +++ ewler.h 10 Aug 2004 21:45:34 -0000 1.2 @@ -10,9 +10,15 @@ void ewler_tools_init( Ewl_Widget *main_layout ); void ewler_populate_tools( void ); void ewler_error_dialog( const char *fmt, ... ); +void ewler_yesno_dialog( Ewl_Callback_Function yes_cb, + Ewl_Callback_Function no_cb, + void *user_data, + const char *fmt, ... ); void ewler_open_file( char *filename ); char *tool_get_name( void ); void tool_clear_name( void ); +void __destroy_dialog( Ewl_Widget *w, void *ev_data, void *user_data ); + #endif =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/form.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- form.c 9 Aug 2004 09:03:14 -0000 1.11 +++ form.c 10 Aug 2004 21:45:34 -0000 1.12 @@ -9,10 +9,10 @@ #include "widgets.h" #include "form.h" #include "form_file.h" -#include "project.h" #include "inspector.h" #include "selected.h" #include "layout.h" +#include "project.h" Ecore_List *forms; static int widget_selected = 0; @@ -56,6 +56,9 @@ /* manufacture save/ok/cancel dialog */ } + if( !form->has_been_saved ) + project_remove_file( form->filename ); + FREE( form->filename ); ecore_list_destroy( form->selected ); ecore_hash_set_free_value( form->elements, __free_elements_cb ); @@ -414,7 +417,7 @@ form = ALLOC(Ewler_Form); form->filename = strdup( buf ); - project_add_form( form->filename ); + project_add_file( form->filename ); form->window = ewl_window_new(); ewl_window_set_title( EWL_WINDOW(form->window), form->filename ); @@ -450,13 +453,6 @@ ewl_widget_set_data( form->overlay, "unsizable", (void *) 1 ); ewl_widget_show( form->overlay ); -#if 0 - form->selector = ewler_selected_new( form->overlay ); - ewl_callback_call( form->selector, EWL_CALLBACK_DESELECT ); - ewl_object_set_preferred_size( EWL_OBJECT(form->selector), 800, 600 ); - ewl_widget_show( form->selector ); -#endif - form->selected = ecore_list_new(); form->elements = ecore_hash_new( ecore_str_hash, ecore_str_compare ); form->elements_rev = @@ -478,16 +474,20 @@ FILE *fptr; char *filename = ev_data; Ewler_Form *form = user_data; + char *title; if( filename ) { if( (fptr = fopen( filename, "w" )) ) { fclose( fptr ); + if( (title = project_set_file( form->filename, filename )) == NULL ) + return; + FREE(form->filename); form->filename = strdup( filename ); form->has_been_saved = 1; - ewl_window_set_title( EWL_WINDOW(form->window), form->filename ); + ewl_window_set_title( EWL_WINDOW(form->window), title ); form_save_file( form, 0 ); ewl_widget_destroy( w->parent ); } else @@ -500,6 +500,8 @@ void form_save_file( Ewler_Form *form, int save_as ) { + char *path; + if( !form ) form = inspector_get_form(); @@ -511,6 +513,10 @@ ewl_widget_show( window ); dialog = ewl_filedialog_new( EWL_FILEDIALOG_TYPE_SAVE ); + + if( (path = project_get_path()) ) + ewl_filedialog_set_directory( EWL_FILEDIALOG(dialog), path ); + ewl_container_append_child( EWL_CONTAINER(window), dialog ); ewl_callback_append( dialog, EWL_CALLBACK_VALUE_CHANGED, __save_form_cb, form ); @@ -656,6 +662,9 @@ if( form->dirty ) fprintf( stderr, "closing a dirty form\n" ); + if( !form->has_been_saved ) + project_remove_file( form->filename ); + FREE( form->filename ); ewl_widget_destroy( form->window ); FREE( form ); @@ -665,6 +674,20 @@ } } +int +form_is_open( char *filename ) +{ + Ewler_Form *form; + + ecore_list_goto_first( forms ); + + while( (form = ecore_list_next(forms)) ) + if( !strcmp( form->filename, filename ) ) + return 1; + + return 0; +} + void __form_delete( Ewler_Form *form ) { =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/form.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- form.h 27 Jul 2004 13:51:05 -0000 1.4 +++ form.h 10 Aug 2004 21:45:34 -0000 1.5 @@ -33,5 +33,6 @@ void form_save_file( Ewler_Form *form, int save_as ); void form_open_file( char *filename ); +int form_is_open( char *filename ); #endif =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/main.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- main.c 27 Jul 2004 13:51:05 -0000 1.3 +++ main.c 10 Aug 2004 21:45:34 -0000 1.4 @@ -4,6 +4,7 @@ #include "form.h" #include "widgets.h" #include "inspector.h" +#include "project.h" static Ewl_Widget *main_win; static Ewl_Widget *main_layout; @@ -30,9 +31,6 @@ __destroy_main_window, NULL ); ewl_object_set_fill_policy( EWL_OBJECT(main_win), EWL_FLAG_FILL_SHRINK ); ewl_object_set_minimum_size( EWL_OBJECT(main_win), 300, 400 ); -#if 0 - ewl_object_set_maximum_size( EWL_OBJECT(main_win), 300, 400 ); -#endif ewl_object_set_preferred_size( EWL_OBJECT(main_win), 300, 400 ); ewl_widget_show( main_win ); @@ -46,6 +44,8 @@ ewler_forms_init(); ewler_inspector_init(); + ewler_projects_init(); + ewl_main(); return 0; =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/project.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- project.c 25 Jul 2004 01:01:49 -0000 1.2 +++ project.c 10 Aug 2004 21:45:34 -0000 1.3 @@ -1,232 +1,323 @@ #include <Ewl.h> +#include <sys/time.h> +#include <time.h> +#include "form.h" #include "ewler.h" #include "project.h" static Ewl_Widget *project_win; -static Ewl_Widget *new_project_win; - -static int project_dirty = 0; -static Ecore_Sheap *project_files; -static char *project_filename; static Ewl_Widget *project_tree; -static int project_open = 0; -static void create_new_project( const char *filename ); +static Ewler_Project *project; + +static Ewl_Widget *options_dialog; +static Ewl_Widget *params[3]; static void -__destroy_window( Ewl_Widget *w, void *ev_data, void *user_data ) +__projects_destroy_cb( Ewl_Widget *w, void *ev_data, void *user_data ) { - if( user_data ) - ewl_widget_destroy( EWL_WIDGET(user_data) ); - else - ewl_widget_destroy( w ); + projects_toggle(); } static void -__ok_new_project( Ewl_Widget *w, void *ev_data, void *user_data ) +__project_new_cb( Ewl_Widget *w, void *ev_data, void *user_data ) { - FILE *fptr; - char *filename = ewl_entry_get_text( EWL_ENTRY(user_data) ); + char *headers[2] = { NULL, NULL }; - if( (fptr = fopen( filename, "r" )) ) { - fclose( fptr ); - ewler_error_dialog( "File already exists" ); - } else { - create_new_project( filename ); - - ewl_widget_destroy( new_project_win ); + IF_FREE(project->name); + IF_FREE(project->filename); + IF_FREE(project->path); + + if( project->members ) { + ecore_list_set_free_cb( project->members, free ); + ecore_list_destroy( project->members ); } + + project->name = strdup( "Untitled" ); + project->filename = NULL; + project->path = NULL; + project->members = ecore_list_new(); + ecore_list_set_free_cb( project->members, free ); + + project->dirty = 0; + project->filename_set = 0; + + headers[0] = project->name; + + ewl_container_reset( EWL_CONTAINER(project_tree) ); + ewl_tree_set_headers( EWL_TREE(project_tree), headers ); } static void -create_new_project( const char *filename ) +__project_member_mouse_down( Ewl_Widget *w, void *ev_data, void *user_data ) { - FILE *fptr; - char *headers[] = { NULL }; + Ewl_Widget *text, *cell; + char *filename; + Ewl_Event_Mouse_Down *ev = ev_data; + static struct timeval last = { 0, 0 }; + struct timeval now; + int msec_diff; + + gettimeofday( &now, NULL ); + + cell = ewl_row_get_column( EWL_ROW(w), 0 ); + + text = ecore_list_goto_first( EWL_CONTAINER(cell)->children ); + + filename = ewl_text_text_get( EWL_TEXT(text) ); + + if( ev->button == 1 ) { + msec_diff = (now.tv_sec - last.tv_sec) * 1000 + + (now.tv_usec - last.tv_usec) / 1000; + + if( msec_diff < 250 ) { + static char buf[1024]; + + if( *filename == '/' ) { + if( !form_is_open( filename ) ) + form_open_file( filename ); + } else { + sprintf( buf, "%s/%s", project->path, filename ); + if( !form_is_open( buf ) ) + form_open_file( buf ); + } + } - fptr = fopen( filename, "w" ); - fclose( fptr ); + last = now; + } +} + +void +projects_toggle( void ) +{ + if( VISIBLE(project_win) ) + ewl_widget_hide( project_win ); + else + ewl_widget_show( project_win ); +} - project_files = ecore_sheap_new( ecore_str_compare, 17 ); - project_filename = strdup( filename ); +void +ewler_projects_init( void ) +{ project_win = ewl_window_new(); + ewl_window_set_title( EWL_WINDOW(project_win), "Project Overview" ); - /* add hide_project_win */ - ewl_object_set_minimum_size( EWL_OBJECT(project_win), 200, 400 ); - ewl_widget_show( project_win ); + ewl_object_set_minimum_size( EWL_OBJECT(project_win), 300, 200 ); + ewl_object_set_insets( EWL_OBJECT(project_tree), 5, 5, 5, 5 ); - project_tree = ewl_tree_new( 1 ); + ewl_callback_append( project_win, EWL_CALLBACK_DELETE_WINDOW, + __projects_destroy_cb, NULL ); - headers[0] = project_filename; + project = NEW(Ewler_Project, 1); - ewl_tree_set_headers( EWL_TREE(project_tree), headers ); + project_tree = ewl_tree_new( 1 ); ewl_container_append_child( EWL_CONTAINER(project_win), project_tree ); - ewl_widget_show( project_tree ); - project_open = 1; -} + __project_new_cb( NULL, NULL, NULL ); -static void -__open_file_from_project( Ewl_Widget *e, void *ev_data, void *user_data ) -{ - ewler_open_file( (char *) user_data ); + ewl_widget_show( project_tree ); } static void -project_rebuild_tree( void ) +project_update( void ) { - if( project_tree ) { - int i; - char *filename; + char *headers[2] = { NULL, NULL }; + Ecore_Sheap *sorted_list; + char *filename; + int i; + + headers[0] = project->name; + + ewl_container_reset( EWL_CONTAINER(project_tree) ); + ewl_tree_set_headers( EWL_TREE(project_tree), headers ); + + sorted_list = ecore_sheap_new( ecore_str_compare, + ecore_list_nodes( project->members ) ); - ewl_container_reset( EWL_CONTAINER(project_tree) ); + ecore_list_goto_first( project->members ); - for( i = 0; (filename = ecore_sheap_item( project_files, i )); i++ ) { - Ewl_Widget *row; + while( (filename = ecore_list_next( project->members )) ) + ecore_sheap_insert( sorted_list, filename ); - row = ewl_tree_add_text_row( EWL_TREE(project_tree), NULL, &filename ); - ewl_callback_del_type( row->parent, EWL_CALLBACK_CLICKED ); - ewl_callback_append( row, EWL_CALLBACK_CLICKED, - __open_file_from_project, filename ); + ecore_sheap_sort( sorted_list ); + + for( i=0;i<sorted_list->size;i++ ) { + Ewl_Widget *text, *row; + + filename = ecore_sheap_item( sorted_list, i ); + + if( filename ) { + text = ewl_text_new( filename ); + ewl_widget_show( text ); + + row = ewl_tree_add_row( EWL_TREE(project_tree), NULL, &text ); + ewl_callback_append( row, EWL_CALLBACK_MOUSE_DOWN, + __project_member_mouse_down, NULL ); ewl_widget_show( row ); } } + + ecore_sheap_destroy( sorted_list ); } void -project_new_dialog( void ) +project_new( void ) { - Ewl_Widget *entry_layout; - Ewl_Widget *label, *entry, *button; - - new_project_win = ewl_dialog_new(EWL_POSITION_BOTTOM); - ewl_window_set_title( EWL_WINDOW(new_project_win), "New Project" ); - ewl_callback_append( new_project_win, EWL_CALLBACK_DELETE_WINDOW, - __destroy_window, NULL ); - - entry_layout = ewl_hbox_new(); - ewl_container_prepend_child( EWL_CONTAINER(EWL_DIALOG(new_project_win)->vbox), - entry_layout ); - ewl_object_set_insets( EWL_OBJECT(entry_layout), 20, 20, 10, 10 ); - ewl_widget_show( entry_layout ); - - label = ewl_text_new( "Project File" ); - ewl_container_append_child( EWL_CONTAINER(entry_layout), label ); - ewl_object_set_alignment( EWL_OBJECT(label), EWL_FLAG_ALIGN_BOTTOM ); - ewl_object_set_padding( EWL_OBJECT(label), 0, 0, 0, 3 ); - ewl_widget_show( label ); - - entry = ewl_entry_new( "unnamed.pro" ); - ewl_container_append_child( EWL_CONTAINER(entry_layout), entry ); - ewl_object_set_alignment( EWL_OBJECT(entry), EWL_FLAG_ALIGN_BOTTOM ); - ewl_callback_append( entry, EWL_CALLBACK_VALUE_CHANGED, - __ok_new_project, entry ); - ewl_widget_show( entry ); - - button = ewl_dialog_add_button( EWL_DIALOG(new_project_win), - EWL_STOCK_OK, EWL_RESPONSE_OK ); - ewl_callback_append( button, EWL_CALLBACK_CLICKED, __ok_new_project, entry ); + ewler_yesno_dialog( __project_new_cb, NULL, NULL, + "This will destroy your current project, are you sure?" ); +} - button = ewl_dialog_add_button( EWL_DIALOG(new_project_win), - EWL_STOCK_CANCEL, EWL_RESPONSE_CANCEL); - ewl_callback_append( button, EWL_CALLBACK_CLICKED, - __destroy_window, new_project_win ); +void +project_add_file( char *filename ) +{ + ecore_list_append( project->members, strdup(filename) ); - ewl_widget_show( new_project_win ); + project_update(); } -static void -open_project( char *filename ) +char * +project_set_file( char *old, char *filename ) { - FILE *fptr; - char *headers[] = { NULL }; - static char type[64], prj_file[256]; + char *old_name = NULL; - if( (fptr = fopen( filename, "r" )) == NULL ) { - ewler_error_dialog( "File '%s' cannot be opened.", filename ); - return; + if( project->path ) + if( !strncmp( project->path, filename, strlen( project->path ) ) ) { + filename += strlen( project->path ); + if( filename[0] == '/' ) + filename++; + } + + ecore_list_goto_first( project->members ); + + while( (old_name = ecore_list_current( project->members )) ) { + if( !strcmp( old, old_name ) ) + break; + ecore_list_next( project->members ); } - /* make sure that the current project is closed */ + ecore_list_remove_destroy( project->members ); - project_files = ecore_sheap_new( ecore_str_compare, 17 ); - project_tree = ewl_tree_new( 1 ); + ecore_list_append( project->members, strdup( filename ) ); - while( !feof( fptr ) ) { - fscanf( fptr, "%s %s\n", type, prj_file ); - if( !strcmp( type, "form" ) ) - project_add_form( strdup( prj_file ) ); - } + project_update(); - fclose( fptr ); + return filename; +} - project_filename = strdup( filename ); - project_win = ewl_window_new(); - ewl_window_set_title( EWL_WINDOW(project_win), "Project Overview" ); - /* add hide_project_win */ - ewl_object_set_minimum_size( EWL_OBJECT(project_win), 200, 400 ); - ewl_widget_show( project_win ); +void +project_remove_file( char *filename ) +{ + char *old_name = NULL; + + if( project->path ) + if( !strncmp( project->path, filename, strlen( project->path ) ) ) { + filename += strlen( project->path ); + while( *filename == '/' ) + filename++; + } - headers[0] = project_filename; + ecore_list_goto_first( project->members ); - ewl_tree_set_headers( EWL_TREE(project_tree), headers ); - ewl_container_append_child( EWL_CONTAINER(project_win), project_tree ); - ewl_widget_show( project_tree ); + while( (old_name = ecore_list_current( project->members )) ) { + if( !strcmp( filename, old_name ) ) + break; + ecore_list_next( project->members ); + } - project_dirty = 0; + ecore_list_remove_destroy( project->members ); + + project_update(); +} + +char * +project_get_path( void ) +{ + return project->path; } static void -__open_project_cb( Ewl_Widget *w, void *ev_data, void *user_data ) +__apply_changes( Ewl_Widget *w, void *ev_data, void *user_data ) { - FILE *fptr; - char *filename = ev_data; + IF_FREE(project->name); + IF_FREE(project->filename); + IF_FREE(project->path); + + project->name = ewl_entry_get_text( EWL_ENTRY(params[0]) ); + project->path = ewl_entry_get_text( EWL_ENTRY(params[1]) ); + if( strlen( project->path ) == 0 ) + project->path = NULL; + project->filename = ewl_entry_get_text( EWL_ENTRY(params[2]) ); + if( strlen( project->filename ) == 0 ) + project->filename = NULL; - if( filename ) { - /* ok clicked */ - if( (fptr = fopen( filename, "r" )) ) { - fclose( fptr ); - open_project( filename ); - - ewl_widget_destroy( w ); - } else { - ewler_error_dialog( "File '%s' cannot be opened.", filename ); - } - } else { - /* cancelled */ - ewl_widget_destroy( w ); - } + project->filename_set = 1; + + project_update(); } void -project_open_dialog( void ) +project_options_dialog( void ) { - Ewl_Widget *window, *dialog; + Ewl_Widget *label; + Ewl_Widget *vbox, *hbox; + Ewl_Widget *button; - window = ewl_window_new(); - ewl_widget_show( window ); + if( options_dialog && VISIBLE(options_dialog) ) + return; - dialog = ewl_filedialog_new( EWL_FILEDIALOG_TYPE_OPEN ); - ewl_container_append_child( EWL_CONTAINER(window), dialog ); - ewl_callback_append( dialog, EWL_CALLBACK_VALUE_CHANGED, - __open_project_cb, NULL ); - ewl_callback_append( window, EWL_CALLBACK_DELETE_WINDOW, - __destroy_window, NULL ); - ewl_widget_show( dialog ); -} + options_dialog = ewl_dialog_new(EWL_POSITION_BOTTOM); + ewl_object_set_minimum_w( EWL_OBJECT(options_dialog), 400 ); + ewl_window_set_title( EWL_WINDOW(options_dialog), "Project Options" ); + ewl_callback_append( options_dialog, EWL_CALLBACK_DELETE_WINDOW, + __destroy_dialog, options_dialog ); + + vbox = ewl_vbox_new(); + ewl_container_prepend_child( EWL_CONTAINER(EWL_DIALOG(options_dialog)->vbox), + vbox ); + ewl_widget_show( vbox ); + + hbox = ewl_hbox_new(); + ewl_container_append_child( EWL_CONTAINER(vbox), hbox ); + ewl_widget_show( hbox ); + label = ewl_text_new( "Project Name:" ); + params[0] = ewl_entry_new( project->name ? project->name : "" ); + ewl_container_append_child( EWL_CONTAINER(hbox), label ); + ewl_container_append_child( EWL_CONTAINER(hbox), params[0] ); + ewl_widget_show( label ); + ewl_widget_show( params[0] ); -int -project_add_form( char *filename ) -{ - if( project_files ) { - ecore_sheap_insert( project_files, filename ); - ecore_sheap_sort( project_files ); + hbox = ewl_hbox_new(); + ewl_container_append_child( EWL_CONTAINER(vbox), hbox ); + ewl_widget_show( hbox ); + label = ewl_text_new( "Project Directory:" ); + params[1] = ewl_entry_new( project->path ? project->path : "" ); + ewl_container_append_child( EWL_CONTAINER(hbox), label ); + ewl_container_append_child( EWL_CONTAINER(hbox), params[1] ); + ewl_widget_show( label ); + ewl_widget_show( params[1] ); - project_rebuild_tree(); - project_dirty = 1; - return 0; - } + hbox = ewl_hbox_new(); + ewl_container_append_child( EWL_CONTAINER(vbox), hbox ); + ewl_widget_show( hbox ); + label = ewl_text_new( "Project File:" ); + params[2] = ewl_entry_new( project->filename ? project->filename : "" ); + ewl_container_append_child( EWL_CONTAINER(hbox), label ); + ewl_container_append_child( EWL_CONTAINER(hbox), params[2] ); + ewl_widget_show( label ); + ewl_widget_show( params[2] ); + + button = ewl_dialog_add_button( EWL_DIALOG(options_dialog), + EWL_STOCK_OK, EWL_RESPONSE_OK ); + ewl_callback_append( button, EWL_CALLBACK_CLICKED, + __apply_changes, NULL ); + ewl_callback_append( button, EWL_CALLBACK_CLICKED, + __destroy_dialog, options_dialog ); + + button = ewl_dialog_add_button( EWL_DIALOG(options_dialog), + EWL_STOCK_CANCEL, EWL_RESPONSE_CANCEL ); + ewl_callback_append( button, EWL_CALLBACK_CLICKED, + __destroy_dialog, options_dialog ); - return -1; + ewl_widget_show( options_dialog ); } =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/project.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- project.h 8 Jun 2004 18:30:05 -0000 1.1 +++ project.h 10 Aug 2004 21:45:34 -0000 1.2 @@ -1,8 +1,25 @@ #ifndef PROJECT_H #define PROJECT_H -void project_new_dialog( void ); -int project_add_form( char *filename ); -void project_open_dialog( void ); +typedef struct Ewler_Project Ewler_Project; + +struct Ewler_Project { + char *name; + char *filename; /* filename of the project description */ + char *path; /* project dir */ + Ecore_List *members; + + int dirty : 1; + int filename_set : 1; +}; + +void projects_toggle( void ); +void ewler_projects_init( void ); +void project_new( void ); +void project_add_file( char *filename ); +char *project_set_file( char *old, char *filename ); +void project_remove_file( char *filename ); +char *project_get_path( void ); +void project_options_dialog( void ); #endif ------------------------------------------------------- SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift. http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285 _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs