Enlightenment CVS committal Author : werkt Project : misc Module : ewler
Dir : misc/ewler/src Modified Files: ewler.c form.c form.h form_file.c inspector.c main.c selected.c widgets.c Added Files: layout.c layout.h Log Message: Bugfixes and major changes to layout/selected/inspector. =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/ewler.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ewler.c 25 Jul 2004 01:01:49 -0000 1.4 +++ ewler.c 27 Jul 2004 13:51:05 -0000 1.5 @@ -206,7 +206,7 @@ ewler_tools_init( Ewl_Widget *main_layout ) { tool_tree = ewl_tree_new( 1 ); - ewl_object_set_fill_policy( EWL_OBJECT(tool_tree), EWL_FLAG_FILL_ALL ); + ewl_object_set_fill_policy( EWL_OBJECT(tool_tree), EWL_FLAG_FILL_SHRINK ); ewl_container_append_child( EWL_CONTAINER(main_layout), tool_tree ); ewler_populate_tools(); =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/form.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- form.c 25 Jul 2004 01:01:49 -0000 1.9 +++ form.c 27 Jul 2004 13:51:05 -0000 1.10 @@ -43,7 +43,7 @@ static void __free_elements_rev_cb( void *val ) { - FREE( val ); + FREE(val); } static void @@ -129,9 +129,10 @@ ecore_list_goto_first( form->selected ); while( (c_s = ecore_list_next(form->selected)) ) { - ewl_object_request_position(EWL_OBJECT(c_s), - CURRENT_X(c_s) + dx, - CURRENT_Y(c_s) + dy); + if( c_s != form->overlay ) + ewl_object_request_position(EWL_OBJECT(c_s), + CURRENT_X(c_s) + dx, + CURRENT_Y(c_s) + dy); } } @@ -155,20 +156,35 @@ while( (c_s = ecore_list_next( form->selected )) ) { Ewl_Widget *c_w = ewler_selected_get( EWLER_SELECTED(c_s) ); - ewl_object_request_position(EWL_OBJECT(c_s), - CURRENT_X(c_s) - dx, - CURRENT_Y(c_s) - dy); - ewl_object_set_fill_policy( EWL_OBJECT(c_s), - ewl_object_get_fill_policy(EWL_OBJECT(c_w)) ); - ewl_object_set_alignment( EWL_OBJECT(c_s), - ewl_object_get_alignment(EWL_OBJECT(c_w)) ); - widget_changed(c_w); + + if( c_w != form->overlay ) { + ewl_object_request_position(EWL_OBJECT(c_s), + CURRENT_X(c_s) - dx, + CURRENT_Y(c_s) - dy); + ewl_object_set_fill_policy( EWL_OBJECT(c_s), + ewl_object_get_fill_policy(EWL_OBJECT(c_w)) ); + ewl_object_set_alignment( EWL_OBJECT(c_s), + ewl_object_get_alignment(EWL_OBJECT(c_w)) ); + widget_changed(c_w); + } } dragging.active = 0; } } static void +__destroy_widget( Ewl_Widget *w, void *ev_data, void *user_data ) +{ + Ewler_Form *form = user_data; + char *name; + + name = ecore_hash_remove( form->elements_rev, w ); + widget_destroy_info(w); + ecore_hash_remove( form->elements, name ); + FREE( name ); +} + +static void __mouse_in_form( Ewl_Widget *w, void *ev_data, void *user_data ) { Ewler_Form *form = EWLER_FORM(user_data); @@ -199,6 +215,7 @@ Ewler_Form *form = EWLER_FORM(user_data); static char widget_name_buf[256]; + if( form->popup ) { ewl_widget_destroy(form->popup); form->popup = NULL; @@ -226,6 +243,8 @@ ewl_object_set_fill_policy( EWL_OBJECT(nw), EWL_FLAG_FILL_NONE ); ewl_callback_del_type( nw, EWL_CALLBACK_CLICKED ); + ewl_callback_del_type( nw, EWL_CALLBACK_SELECT ); + ewl_callback_del_type( nw, EWL_CALLBACK_DESELECT ); ewl_callback_del_type( nw, EWL_CALLBACK_MOUSE_DOWN ); ewl_callback_del_type( nw, EWL_CALLBACK_MOUSE_UP ); ewl_callback_del_type( nw, EWL_CALLBACK_MOUSE_MOVE ); @@ -234,6 +253,8 @@ __mouse_down_widget, form ); ewl_callback_append( nw, EWL_CALLBACK_FOCUS_IN, __mouse_in_form, form ); + ewl_callback_append( nw, EWL_CALLBACK_DESTROY, + __destroy_widget, form ); ewl_object_request_position( EWL_OBJECT(nw), ev->x, ev->y ); ewl_container_append_child( EWL_CONTAINER(widget_container), nw ); ewl_widget_show( nw ); @@ -391,6 +412,8 @@ ewl_callback_append( form->window, EWL_CALLBACK_DELETE_WINDOW, __destroy_form, form ); ewl_object_set_preferred_size( EWL_OBJECT(form->window), 800, 600 ); + ewl_object_set_minimum_size( EWL_OBJECT(form->window), 800, 600 ); + ewl_object_set_fill_policy( EWL_OBJECT(form->window), EWL_FLAG_FILL_SHRINK ); ewl_widget_show( form->window ); snprintf( buf, 255, "Ewl_Form%d", count ); @@ -402,7 +425,7 @@ PACKAGE_DATA_DIR"/themes/ewler.eet"); ewl_theme_data_set_str(form->overlay, "/background/group", "background"); - ewl_object_set_fill_policy( EWL_OBJECT(form->overlay), EWL_FLAG_FILL_FILL ); + ewl_object_set_fill_policy( EWL_OBJECT(form->overlay), EWL_FLAG_FILL_ALL ); widget_create_info( form->overlay, "Ewl_Overlay", strdup( buf ) ); ewl_callback_append( form->overlay, EWL_CALLBACK_MOUSE_DOWN, __mouse_down_form, form ); @@ -433,6 +456,7 @@ form->dirty = 0; form->cnt = 0; form->popup = NULL; + form->layout = NULL; count++; @@ -454,12 +478,13 @@ form->filename = strdup( filename ); form->has_been_saved = 1; + ewl_window_set_title( EWL_WINDOW(form->window), form->filename ); form_save_file( form, 0 ); - ewl_widget_destroy( w ); + ewl_widget_destroy( w->parent ); } else ewler_error_dialog( "Unable to open file '%s' for writing", filename ); } else { - ewl_widget_destroy( w ); + ewl_widget_destroy( w->parent ); } } @@ -510,6 +535,8 @@ ewl_callback_append( form->window, EWL_CALLBACK_DELETE_WINDOW, __destroy_form, form ); ewl_object_set_preferred_size( EWL_OBJECT(form->window), 800, 600 ); + ewl_object_set_minimum_size( EWL_OBJECT(form->window), 800, 600 ); + ewl_object_set_fill_policy( EWL_OBJECT(form->window), EWL_FLAG_FILL_SHRINK ); ewl_widget_show( form->window ); form->elements = ecore_hash_new( ecore_str_hash, ecore_str_compare ); @@ -548,11 +575,14 @@ __mouse_in_form, form ); ewl_callback_append( form->overlay, EWL_CALLBACK_MOUSE_MOVE, __mouse_move_widget, form ); + ewl_callback_append( form->overlay, EWL_CALLBACK_KEY_DOWN, + __key_down_form, form ); form->selected = ecore_list_new(); form->has_been_saved = 1; form->dirty = 0; form->cnt = 0; + form->layout = NULL; ecore_list_append( forms, form ); } @@ -630,6 +660,14 @@ void __form_delete( Ewler_Form *form ) { + Ewl_Widget *s; + + ecore_list_goto_first( form->selected ); + + while( (s = ecore_list_next( form->selected)) ) + ewl_widget_destroy( s ); + + form_selected_clear( form ); } void =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/form.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- form.h 25 Jul 2004 01:01:49 -0000 1.3 +++ form.h 27 Jul 2004 13:51:05 -0000 1.4 @@ -7,7 +7,7 @@ struct Ewler_Form { Ewl_Widget *window; Ewl_Widget *overlay; - Ewl_Widget *selector; + Ewl_Widget *layout; Ecore_List *selected; Ecore_Hash *elements, *elements_rev; Ewl_Widget *popup; =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/form_file.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- form_file.c 6 Jul 2004 03:38:12 -0000 1.2 +++ form_file.c 27 Jul 2004 13:51:05 -0000 1.3 @@ -7,6 +7,7 @@ #include "ewler.h" #include "form.h" #include "widgets.h" +#include "selected.h" #define ENCODING "ISO-8859-1" @@ -63,33 +64,58 @@ if( data->w_str.value ) { xmlTextWriterWriteString( writer, data->w_str.value ); xmlTextWriterEndElement( writer ); - } else + } else { xmlTextWriterFullEndElement( writer ); + xmlTextWriterWriteString( writer, "\n" ); + } break; case WIDGET_POINTER_TYPE: xmlTextWriterFullEndElement( writer ); + xmlTextWriterWriteString( writer, "\n" ); break; case WIDGET_STRUCT_TYPE: ecore_list_for_each( data->w_struct.members, __write_element ); xmlTextWriterEndElement( writer ); break; + case WIDGET_ENUM_TYPE: + { + char *enum_name; + + enum_name = ecore_hash_get( data->type->w_enum.map_rev, + (void *) data->w_enum.value ); + + if( enum_name ) { + xmlTextWriterWriteString( writer, enum_name ); + xmlTextWriterEndElement( writer ); + } else { + xmlTextWriterFullEndElement( writer ); + xmlTextWriterWriteString( writer, "\n" ); + } + } + break; } } static void -write_widget( void *value ) +write_widget( Ewl_Widget *w ) { - Ewl_Widget *w = value; + Ewler_Selected *cs; Ecore_List *info = widget_get_info( w ); + if( !info ) + return; + xmlTextWriterStartElement( writer, "widget" ); xmlTextWriterWriteAttribute( writer, "type", widget_get_type( w ) ); - if( info ) - ecore_list_for_each( info, __write_element ); + ecore_list_for_each( info, __write_element ); + + if( widget_is_type( w, "Ewl_Container" ) ) { + ecore_list_goto_first( EWL_CONTAINER(w)->children ); - if( widget_is_type( w, "Ewl_Container" ) ) - ecore_list_for_each( EWL_CONTAINER(w)->children, write_widget ); + while( (cs = ecore_list_next( EWL_CONTAINER(w)->children )) ) + write_widget( ewler_selected_get( cs ) ); + } /* write callbacks for widget */ xmlTextWriterEndElement( writer ); @@ -154,8 +180,9 @@ printf( "unknown constructor for type %s\n", xml_attr ); exit( 1 ); } - if( parent ) + if( parent ) { ewl_container_append_child( EWL_CONTAINER(parent), cur ); + } if( !cur ) { ewler_error_dialog( "Could not create widget of type '%s'", @@ -174,9 +201,15 @@ * callbacks */ form_add_widget( form,(char *) widget_get_name( EWL_OBJECT(cur) ), cur ); + ecore_list_remove_first( info_stack ); ewl_widget_show( cur ); + if( cur->parent ) { + Ewl_Widget *s = ewler_selected_new( cur ); + ewl_callback_call( s, EWL_CALLBACK_DESELECT ); + ewl_widget_show( s ); + cur = cur->parent; } else { done = 1; =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/inspector.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- inspector.c 25 Jul 2004 01:01:49 -0000 1.5 +++ inspector.c 27 Jul 2004 13:51:05 -0000 1.6 @@ -35,8 +35,9 @@ ewl_window_set_title( EWL_WINDOW(inspector_win), "Inspector" ); ewl_callback_append( inspector_win, EWL_CALLBACK_DELETE_WINDOW, __hide_inspector_cb, NULL ); - ewl_object_set_minimum_size( EWL_OBJECT(inspector_win), 200, 400 ); ewl_object_set_preferred_size( EWL_OBJECT(inspector_win), 200, 400 ); + ewl_object_set_minimum_size( EWL_OBJECT(inspector_win), 200, 400 ); + ewl_object_set_fill_policy( EWL_OBJECT(inspector_win), EWL_FLAG_FILL_SHRINK ); inspector_tree = ewl_tree_new( 2 ); ewl_container_append_child( EWL_CONTAINER(inspector_win), inspector_tree ); @@ -66,14 +67,14 @@ /* PRAISE ME! */ static void -call_struct_set( Widget_Data_Elem *child, int index, int value ) +call_struct_set( Ewl_Widget *w, Widget_Data_Elem *child, int index, int value ) { Ecore_List *info; Widget_Type_Elem *type = child->type->w.parent; Widget_Data_Elem *parent; int args[4], len; - info = widget_get_info( active_widget ); + info = widget_get_info( w ); ecore_list_goto_first( info ); @@ -109,7 +110,7 @@ /* maybe put a ridiculous switch on the number of args, but for now just call * it with 4... the stack frame should be fine */ - parent->type->w.set( EWL_OBJECT(active_widget), + parent->type->w.set( EWL_OBJECT(w), args[0], args[1], args[2], args[3] ); } @@ -117,6 +118,7 @@ __inspector_entry_changed( Ewl_Widget *w, void *ev_data, void *user_data ) { Widget_Data_Elem *data = user_data; + Ewl_Widget *widget = ewl_widget_get_data( w, "widget" ); char *text, *endptr; int int_val; @@ -129,18 +131,18 @@ printf( "invalid integer value %s\n", text ); } else { if( data->type->w.set ) - data->type->w.set( EWL_OBJECT(active_widget), data->w_int.value ); + data->type->w.set( EWL_OBJECT(widget), data->w_int.value ); else if( data->type->w.parent && data->type->w.parent->w.set ) - call_struct_set( data, data->type->w.index, int_val ); + call_struct_set( widget, data, data->type->w.index, int_val ); data->w_int.value = int_val; } break; case WIDGET_STRING_TYPE: /* check string for validity */ if( data->type->w.set ) - data->type->w.set( EWL_OBJECT(active_widget), text ); + data->type->w.set( EWL_OBJECT(widget), text ); else if( data->type->w.parent && data->type->w.parent->w.set ) - call_struct_set( data, data->type->w.index, (int) text ); + call_struct_set( widget, data, data->type->w.index, (int) text ); if( !widget_get_error() ) { if( data->w_str.value ) { @@ -151,7 +153,7 @@ break; } - widget_changed( active_widget ); + widget_changed( widget ); inspector_update(); } @@ -159,9 +161,9 @@ __inspector_combo_changed( Ewl_Widget *w, void *ev_data, void *user_data ) { Widget_Data_Elem *data = user_data; + Ewl_Widget *widget = ewl_widget_get_data( w, "widget" ); char *text; int value; - Ewl_Object *active_object = EWL_OBJECT(active_widget); text = ewl_combo_get_selected( EWL_COMBO(w) ); @@ -170,15 +172,14 @@ value = (int) ecore_hash_get( data->type->w_enum.map, text ); - if( data->type->w.set ) { - data->type->w.set( EWL_OBJECT(active_widget), value ); - } + if( data->type->w.set ) + data->type->w.set( EWL_OBJECT(widget), value ); - ewl_object_set_fill_policy( EWL_OBJECT(active_widget->parent), - ewl_object_get_fill_policy(active_object) ); - ewl_object_set_alignment( EWL_OBJECT(active_widget->parent), - ewl_object_get_alignment(active_object) ); - widget_changed( active_widget ); + ewl_object_set_fill_policy( EWL_OBJECT(widget->parent), + ewl_object_get_fill_policy(EWL_OBJECT(widget)) ); + ewl_object_set_alignment( EWL_OBJECT(widget->parent), + ewl_object_get_alignment(EWL_OBJECT(widget)) ); + widget_changed( widget ); } static Ewl_Widget *t_combo; @@ -213,13 +214,14 @@ ecore_hash_for_each_node( data->type->w_enum.map, __populate_combo_cb ); - ewl_callback_append( EWL_WIDGET(row_elems[1]), EWL_CALLBACK_DESELECT, + ewl_callback_append( row_elems[1], EWL_CALLBACK_DESELECT, __inspector_combo_changed, data ); - ewl_callback_append( EWL_WIDGET(row_elems[1]), EWL_CALLBACK_VALUE_CHANGED, + ewl_callback_append( row_elems[1], EWL_CALLBACK_VALUE_CHANGED, __inspector_combo_changed, data ); ewl_widget_show( row_elems[1] ); ewl_widget_set_data( row_elems[1], "get", data ); + ewl_widget_set_data( row_elems[1], "widget", active_widget ); } else if( data->type->w.w_type != WIDGET_STRUCT_TYPE ) { row_elems[1] = ewl_entry_new( NULL ); @@ -230,6 +232,7 @@ ewl_widget_show( row_elems[1] ); ewl_widget_set_data( row_elems[1], "get", data ); + ewl_widget_set_data( row_elems[1], "widget", active_widget ); } if( data->type->w.w_flags & ELEM_NO_MODIFY ) @@ -318,6 +321,7 @@ inspector_reset( void ) { Ewl_Widget *s, *w = NULL; + Ewl_ScrollPane *scroll; Ecore_List *info; if( !active_form ) { @@ -338,7 +342,11 @@ return; } + scroll = EWL_SCROLLPANE(EWL_TREE(inspector_tree)->scrollarea); + ewl_container_reset( EWL_CONTAINER(inspector_tree) ); + ewl_scrollpane_set_vscrollbar_value( scroll, 0.0 ); + ewl_scrollpane_set_hscrollbar_value( scroll, 0.0 ); if( w ) { info = widget_get_info(w); =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/main.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- main.c 25 Jul 2004 01:01:49 -0000 1.2 +++ main.c 27 Jul 2004 13:51:05 -0000 1.3 @@ -28,14 +28,16 @@ ewl_window_set_title( EWL_WINDOW(main_win), "Ewler" ); ewl_callback_append( main_win, EWL_CALLBACK_DELETE_WINDOW, __destroy_main_window, NULL ); -#if 0 + 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 ); main_layout = ewl_vbox_new(); + ewl_object_set_fill_policy( EWL_OBJECT(main_layout), EWL_FLAG_FILL_SHRINK ); ewl_container_append_child( EWL_CONTAINER(main_win), main_layout ); ewl_widget_show( main_layout ); =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/selected.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- selected.c 25 Jul 2004 01:01:49 -0000 1.10 +++ selected.c 27 Jul 2004 13:51:05 -0000 1.11 @@ -151,7 +151,13 @@ s = EWLER_SELECTED(w); - evas_object_layer_set(w->theme_object, 1000); + /* THIS IS A HACK!!! THE WIDGET IS ALWAYS IN THE DEFAULT STATE, BUT WE + * HIDE IT IF THE BITSTATE DOESN'T SAY DEFAULT */ + if( !strcmp( w->bit_state, "default" ) ) + evas_object_layer_set(w->theme_object, 1000); + else + ewl_widget_set_state( w, "deselect" ); + ewl_container_append_child(EWL_CONTAINER(s), s->selected); if( ewl_widget_get_data( s->selected, "unsizable" ) ) =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/widgets.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- widgets.c 25 Jul 2004 01:01:49 -0000 1.3 +++ widgets.c 27 Jul 2004 13:51:05 -0000 1.4 @@ -318,7 +318,7 @@ } static void -__widget_realized( Ewl_Widget *w, void *ev_data, void *user_data ) +__widget_changed( Ewl_Widget *w, void *ev_data, void *user_data ) { widget_changed( w ); } @@ -350,7 +350,9 @@ ecore_hash_set( widgets_type_rev, w, strdup( name ) ); ewl_callback_append( w, EWL_CALLBACK_REALIZE, - __widget_realized, NULL ); + __widget_changed, NULL ); + ewl_callback_append( w, EWL_CALLBACK_CONFIGURE, + __widget_changed, NULL ); } void @@ -506,7 +508,8 @@ } else if( !strcmp( type, "enum" ) ) { elem->w_enum.w_type = WIDGET_ENUM_TYPE; elem->w_enum.map = ecore_hash_new( ecore_str_hash, ecore_str_compare ); - elem->w_enum.map_rev = ecore_hash_new( ecore_direct_hash, ecore_direct_compare ); + elem->w_enum.map_rev = + ecore_hash_new( ecore_direct_hash, ecore_direct_compare ); } else if( !strcmp( type, "enum_val" ) ) { FREE(elem); } else if( type[len-1] == '*' && strpbrk( type, " \t" ) ) { ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs