Enlightenment CVS committal

Author  : werkt
Project : misc
Module  : ewler

Dir     : misc/ewler/src


Modified Files:
        Makefile.am ewler.c form.c form.h inspector.c main.c project.c 
        selected.c selected.h widgets.c widgets.h 
Removed Files:
        ewl_button_stock.c ewl_button_stock.h ewl_dialog.c 
        ewl_dialog.h ewl_filedialog_stock.c ewl_filedialog_stock.h 
        ewl_stock.c ewl_stock.h 


Log Message:
Layouts, selected, and enums are now in the tree.

===================================================================
RCS file: /cvsroot/enlightenment/misc/ewler/src/Makefile.am,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- Makefile.am 6 Jul 2004 03:38:12 -0000       1.3
+++ Makefile.am 25 Jul 2004 01:01:49 -0000      1.4
@@ -7,10 +7,6 @@
 bin_PROGRAMS = ewler
 
 ewler_SOURCES = \
-       ewl_button_stock.c ewl_button_stock.h \
-       ewl_dialog.c ewl_dialog.h \
-       ewl_filedialog_stock.c ewl_filedialog_stock.h \
-       ewl_stock.c ewl_stock.h \
        ewler.c ewler.h \
        form.c form.h \
        form_file.c form_file.h \
@@ -18,6 +14,7 @@
        main.c \
        project.c project.h \
        selected.c selected.h \
-       widgets.c widgets.h
+       widgets.c widgets.h \
+       layout.c
 
 ewler_LDADD = @ewl_libs@ @xml2_libs@
===================================================================
RCS file: /cvsroot/enlightenment/misc/ewler/src/ewler.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- ewler.c     6 Jul 2004 05:19:54 -0000       1.3
+++ ewler.c     25 Jul 2004 01:01:49 -0000      1.4
@@ -2,10 +2,6 @@
 #include <stdio.h>
 #include <Ewl.h>
 
-#include "ewl_dialog.h"
-#include "ewl_stock.h"
-#include "ewl_filedialog_stock.h"
-
 #include "ewler.h"
 #include "form.h"
 #include "widgets.h"
@@ -48,23 +44,28 @@
 __open_form_cb( Ewl_Widget *w, void *ev_data, void *user_data )
 {
        char *filename = ev_data;
+       Ewl_Widget *window = user_data;
 
        if( filename ) {
                ewler_open_file( filename );
-               ewl_widget_destroy( w );
+               ewl_widget_destroy( window );
        }
 }
 
 static void
 __open_form( Ewl_Widget *w, void *ev_data, void *user_data )
 {
-       Ewl_Widget *dialog;
+       Ewl_Widget *window, *dialog;
+
+       window = ewl_window_new();
+       ewl_widget_show( window );
 
-       dialog = ewl_filedialog_stock_new( EWL_FILEDIALOG_TYPE_OPEN );
+       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_form_cb, NULL );
-       ewl_callback_append( dialog, EWL_CALLBACK_DELETE_WINDOW,
-                                                                                      
  __destroy_dialog, dialog );
+                                                                                      
  __open_form_cb, window );
+       ewl_callback_append( window, EWL_CALLBACK_DELETE_WINDOW,
+                                                                                      
  __destroy_dialog, window );
        ewl_widget_show( dialog );
 }
 
@@ -192,7 +193,7 @@
 void
 tool_set_name( Ewl_Widget *w, void *ev_data, void *user_data )
 {
-       active_tool = ewl_button_get_label( EWL_TEXT(w) );
+       active_tool = ewl_button_get_label( EWL_BUTTON(w) );
 }
 
 void
@@ -231,11 +232,12 @@
                                                                                       
                          tool_set_name, NULL );
                        } else
                                text[0] = ewl_text_new( class );
-                       ewl_object_set_fill_policy( text[0], EWL_FLAG_FILL_NONE );
+                       ewl_object_set_fill_policy( EWL_OBJECT(text[0]), 
EWL_FLAG_FILL_NONE );
                        ewl_widget_show( text[0] );
 
                        row = ewl_tree_add_row( EWL_TREE(tool_tree), EWL_ROW(prow), 
text );
                        ewl_object_set_fill_policy( EWL_OBJECT(row->parent), 
EWL_FLAG_FILL_FILL );
+                       ewl_tree_set_row_expand( EWL_ROW(row), EWL_TREE_NODE_EXPANDED 
);
 
                        add_tools_with_parent( class, row );
                        ewl_widget_show( row );
===================================================================
RCS file: /cvsroot/enlightenment/misc/ewler/src/form.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- form.c      6 Jul 2004 05:19:54 -0000       1.8
+++ form.c      25 Jul 2004 01:01:49 -0000      1.9
@@ -5,10 +5,6 @@
  */
 #include <Ewl.h>
 
-#include "ewl_stock.h"
-#include "ewl_dialog.h"
-#include "ewl_filedialog_stock.h"
-
 #include "ewler.h"
 #include "widgets.h"
 #include "form.h"
@@ -16,9 +12,12 @@
 #include "project.h"
 #include "inspector.h"
 #include "selected.h"
+#include "layout.h"
 
 Ecore_List *forms;
 static int widget_selected = 0;
+static int widget_created = 0;
+static Ecore_Hash *key_bindings = NULL;
 Ewl_Widget *widget_container = NULL;
 
 static struct {
@@ -50,7 +49,7 @@
 static void
 __destroy_form( Ewl_Widget *w, void *ev_data, void *user_data )
 {
-       Ewler_Form *form = EWLER_FORM(user_data);
+       Ewler_Form *form = user_data;
 
        if( form->dirty ) {
                /* manufacture save/ok/cancel dialog */
@@ -71,6 +70,17 @@
 }
 
 static void
+__destroy_popup( Ewl_Widget *w, void *ev_data, void *user_data )
+{
+       Ewler_Form *form = user_data;
+
+       if( form->popup ) {
+               ewl_widget_destroy( form->popup );
+               form->popup = NULL;
+       }
+}
+
+static void
 __mouse_down_widget( Ewl_Widget *w, void *ev_data, void *user_data )
 {
        Ewler_Form *form = EWLER_FORM(user_data);
@@ -78,25 +88,29 @@
        Ewler_Ctor tool_ctor;
 
        tool_ctor = widget_get_ctor( tool_get_name() );
-       if( tool_ctor && widget_is_type( w, "Ewl_Container" ) ) {
-               widget_container = w;
-       } else if( !widget_selected ) {
-               /* check for shift down */
-               if( ev->modifiers != EWL_KEY_MODIFIER_SHIFT &&
-                               ev->modifiers != EWL_KEY_MODIFIER_CTRL )
-                       form_selected_clear( form );
-
-               form_selected_append( form, w );
+       if( ev->button == 1 ) {
+               if( tool_ctor && widget_is_type( w, "Ewl_Container" ) ) {
+                       widget_container = w;
+                       dragging.active = 0;
+               } else if( !widget_selected ) {
+                       /* check for shift down */
+                       if( ev->modifiers != EWL_KEY_MODIFIER_SHIFT &&
+                                       ev->modifiers != EWL_KEY_MODIFIER_CTRL )
+                               form_selected_clear( form );
+
+                       form_selected_append( form, w->parent );
+
+                       dragging.ox = ev->x;
+                       dragging.oy = ev->y;
+                       dragging.active = 1;
 
-               dragging.ox = ev->x;
-               dragging.oy = ev->y;
-               dragging.active = 1;
+                       widget_selected = 1;
+               }
 
-               widget_selected = 1;
-       }
-       if( form->popup ) {
-               ewl_widget_destroy(form->popup);
-               form->popup = NULL;
+               if( form->popup ) {
+                       ewl_widget_destroy(form->popup);
+                       form->popup = NULL;
+               }
        }
 }
 
@@ -140,10 +154,15 @@
                ecore_list_goto_first( form->selected );
 
                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);
-                       widget_changed(ewler_selected_get(EWLER_SELECTED(c_s)));
+                       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;
        }
@@ -167,7 +186,8 @@
        ecore_list_goto_first( form->selected );
 
        while( (c_s = ecore_list_next( form->selected )) )
-               ewl_callback_call_with_event_data(c_s, EWL_CALLBACK_MOUSE_MOVE, 
ev_data);
+               if( c_s != form->overlay )
+                       ewl_callback_call_with_event_data(c_s, 
EWL_CALLBACK_MOUSE_MOVE, ev_data);
 }
 
 static void
@@ -190,6 +210,7 @@
                                tool_ctor = widget_get_ctor( tool_get_name() );
                                if( tool_ctor ) {
                                        char *widget_name;
+                                       Ewl_Widget *s;
 
                                        if( !widget_container )
                                                widget_container = form->overlay;
@@ -217,14 +238,18 @@
                                        ewl_container_append_child( 
EWL_CONTAINER(widget_container), nw );
                                        ewl_widget_show( nw );
 
+                                       s = ewler_selected_new( nw );
+                                       ewl_widget_show( s );
+
                                        form_selected_clear( form );
 
-                                       form_selected_append( form, nw );
+                                       form_selected_append( form, s );
 
                                        form_set_dirty( form );
 
                                        ecore_hash_set( form->elements, widget_name, 
nw );
                                        ecore_hash_set( form->elements_rev, nw, 
widget_name );
+                                       widget_created = 1;
                                } else {
                                        form_selected_clear( form );
                                        form_selected_append( form, form->overlay );
@@ -243,12 +268,35 @@
                        ewl_callback_call(form->popup, EWL_CALLBACK_SELECT);
 
                        menu_item = ewl_menu_item_new(NULL, "Lay Out Horizontally");
+                       ewl_callback_append( menu_item, EWL_CALLBACK_SELECT,
+                                                                                      
                  layout_horizontal_cb, form );
+                       ewl_callback_append( menu_item, EWL_CALLBACK_SELECT,
+                                                                                      
                  __destroy_popup, form );
                        ewl_container_append_child(EWL_CONTAINER(form->popup), 
menu_item);
                        ewl_widget_show(menu_item);
 
                        menu_item = ewl_menu_item_new(NULL, "Lay Out Vertically");
+                       ewl_callback_append( menu_item, EWL_CALLBACK_SELECT,
+                                                                                      
                  layout_vertical_cb, form );
+                       ewl_callback_append( menu_item, EWL_CALLBACK_SELECT,
+                                                                                      
                  __destroy_popup, form );
                        ewl_container_append_child(EWL_CONTAINER(form->popup), 
menu_item);
                        ewl_widget_show(menu_item);
+
+                       menu_item = EWL_WIDGET(ewl_menu_separator_new());
+                       ewl_container_append_child(EWL_CONTAINER(form->popup), 
menu_item);
+                       ewl_widget_show(menu_item);
+
+                       menu_item = ewl_menu_item_new(NULL, "Edit Callbacks");
+                       ewl_container_append_child(EWL_CONTAINER(form->popup), 
menu_item);
+                       ewl_callback_append( menu_item, EWL_CALLBACK_SELECT,
+                                                                                      
                  __destroy_popup, form );
+#if 0
+                       ewl_callback_append( menu_item, EWL_CALLBACK_SELECT,
+                                                                                      
                  callbacks_show, NULL );
+#endif
+
+                       ewl_widget_show(menu_item);
                        break;
        }
 
@@ -256,6 +304,17 @@
        widget_selected = 0;
 }
 
+static void
+__key_down_form( Ewl_Widget *w, void *ev_data, void *user_data )
+{
+       Ewler_Form *form = user_data;
+       Ewl_Event_Key_Down *ev = ev_data;
+       Ewler_Form_Key_Cb key_cb = ecore_hash_get( key_bindings, ev->keyname );
+
+       if( key_cb )
+               key_cb( form );
+}
+
 void
 form_set_widget_selected( void )
 {
@@ -268,6 +327,18 @@
        widget_selected = 0;
 }
 
+int
+form_widget_created( void )
+{
+       return widget_created;
+}
+
+void
+form_clear_widget_created( void )
+{
+       widget_created = 0;
+}
+
 void
 form_set_widget_dragging( Ewl_Widget *w, Ewl_Event_Mouse_Down *ev )
 {
@@ -286,12 +357,17 @@
 form_add_widget( Ewler_Form *form, char *name, Ewl_Widget *w )
 {
        ewl_callback_del_type( w, EWL_CALLBACK_CLICKED );
+       ewl_callback_del_type( w, EWL_CALLBACK_MOUSE_DOWN );
+       ewl_callback_del_type( w, EWL_CALLBACK_MOUSE_UP );
+       ewl_callback_del_type( w, EWL_CALLBACK_MOUSE_MOVE );
 
        ewl_callback_append( w, EWL_CALLBACK_MOUSE_DOWN,
                                                                                       
  __mouse_down_widget, form );
        ewl_callback_append( w, EWL_CALLBACK_FOCUS_IN,
                                                                                       
  __mouse_in_form, form );
 
+       ewl_object_set_fill_policy( EWL_OBJECT(w), EWL_FLAG_FILL_NONE );
+
        ecore_hash_set( form->elements, name, w );
        ecore_hash_set( form->elements_rev, w, name );
 }
@@ -336,10 +412,19 @@
                                                                                       
  __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 );
        ewl_container_append_child( EWL_CONTAINER(form->window), form->overlay );
        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 =
@@ -386,12 +471,16 @@
 
        if( form ) {
                if( !form->has_been_saved || save_as ) {
-                       Ewl_Widget *dialog;
+                       Ewl_Widget *window, *dialog;
 
-                       dialog = ewl_filedialog_stock_new( EWL_FILEDIALOG_TYPE_SAVE );
+                       window = ewl_window_new();
+                       ewl_widget_show( window );
+
+                       dialog = ewl_filedialog_new( EWL_FILEDIALOG_TYPE_SAVE );
+                       ewl_container_append_child( EWL_CONTAINER(window), dialog );
                        ewl_callback_append( dialog, EWL_CALLBACK_VALUE_CHANGED,
                                                                                       
                  __save_form_cb, form );
-                       ewl_callback_append( dialog, EWL_CALLBACK_DELETE_WINDOW,
+                       ewl_callback_append( window, EWL_CALLBACK_DELETE_WINDOW,
                                                                                       
                  __destroy_window, NULL );
                        ewl_widget_show( dialog );
                } else {
@@ -427,6 +516,8 @@
        form->elements_rev =
                ecore_hash_new( ecore_direct_hash, ecore_direct_compare );
 
+       form->popup = NULL;
+
        if( form_file_read( form ) ) {
                /* add support for more verbose errors from form_file */
                ewler_error_dialog( "Error opening form '%s'", form->filename );
@@ -435,8 +526,15 @@
                return;
        }
 
+       ewl_widget_set_data( form->overlay, "unsizable", (void *) 1 );
+       ewl_object_set_fill_policy( EWL_OBJECT(form->overlay), EWL_FLAG_FILL_FILL );
+
+       ewl_widget_set_appearance(form->overlay, "background");
+       ewl_theme_data_set_str(form->overlay, "/background/file",
+                                                                                      
          PACKAGE_DATA_DIR"/themes/ewler.eet");
+       ewl_theme_data_set_str(form->overlay, "/background/group", "background");
+
        ewl_container_append_child( EWL_CONTAINER(form->window), form->overlay );
-       ewl_widget_set_appearance( form->overlay, "entry" );
 
        ewl_callback_del_type( form->overlay, EWL_CALLBACK_MOUSE_DOWN );
        ewl_callback_del_type( form->overlay, EWL_CALLBACK_MOUSE_UP );
@@ -444,8 +542,12 @@
 
        ewl_callback_append( form->overlay, EWL_CALLBACK_MOUSE_DOWN,
                                                                                       
  __mouse_down_form, form );
+       ewl_callback_append( form->overlay, EWL_CALLBACK_MOUSE_MOVE,
+                                                                                      
  __mouse_move_form, form );
        ewl_callback_append( form->overlay, EWL_CALLBACK_FOCUS_IN,
                                                                                       
  __mouse_in_form, form );
+       ewl_callback_append( form->overlay, EWL_CALLBACK_MOUSE_MOVE,
+                                                                                      
  __mouse_move_widget, form );
 
        form->selected = ecore_list_new();
        form->has_been_saved = 1;
@@ -462,25 +564,34 @@
        ecore_list_goto_first( form->selected );
 
        while( (s = ecore_list_remove(form->selected)) ) {
+               if( s == form->overlay )
+                       continue;
+
+               ewl_callback_del(s, EWL_CALLBACK_MOUSE_MOVE,
+                                                                                
__mouse_move_widget);
+               ewl_callback_del(ewler_selected_get(EWLER_SELECTED(s)),
+                                                                                
EWL_CALLBACK_MOUSE_UP,
+                                                                                
__mouse_up_widget);
                ewl_callback_call(s, EWL_CALLBACK_DESELECT);
-               ewl_widget_destroy( s );
        }
 }
 
 void
-form_selected_append( Ewler_Form *form, Ewl_Widget *w )
+form_selected_append( Ewler_Form *form, Ewl_Widget *s )
 {
-       Ewl_Widget *s;
-       
-       s = ewler_selected_new( w );
-       ewl_callback_append(s, EWL_CALLBACK_MOUSE_MOVE,
-                                                                                      
 __mouse_move_widget, form);
-       ewl_callback_append(w, EWL_CALLBACK_MOUSE_UP,
-                                                                                      
 __mouse_up_widget, form);
-       ewl_widget_show(s);
+       if( s != form->overlay ) {
+               ewl_callback_call( s, EWL_CALLBACK_SELECT );
+               ewl_callback_append(s, EWL_CALLBACK_MOUSE_MOVE,
+                                                                                      
         __mouse_move_widget, form);
+               ewl_callback_append(ewler_selected_get(EWLER_SELECTED(s)),
+                                                                                      
         EWL_CALLBACK_MOUSE_UP,
+                                                                                      
         __mouse_up_widget, form);
+       }
 
-       ecore_list_append( form->selected, s );
-       inspector_reset();
+       if( ecore_list_goto( form->selected, s ) == NULL ) {
+               ecore_list_append( form->selected, s );
+               inspector_reset();
+       }
 }
 
 void
@@ -517,7 +628,57 @@
 }
 
 void
+__form_delete( Ewler_Form *form )
+{
+}
+
+void
+__form_select_up( Ewler_Form *form )
+{
+       Ewl_Widget *s = ecore_list_goto_first( form->selected );
+
+       if( !s || s == form->overlay ) {
+               return;
+       } else {
+               form_selected_clear( form );
+               if( (s = s->parent) == form->overlay )
+                       form_selected_append( form, s );
+               else if( (s = s->parent) )
+                       form_selected_append( form, s );
+       }
+}
+
+void
+__form_select_down( Ewler_Form *form )
+{
+       Ewl_Widget *s = ecore_list_goto_first( form->selected );
+
+       if( !s ) 
+               return;
+
+       if(s != form->overlay) {
+               s = ewler_selected_get( EWLER_SELECTED(s) );
+               if( widget_is_type(s, "Ewl_Container") &&
+                               !ecore_list_is_empty( EWL_CONTAINER(s)->children ) ) {
+                       s = ecore_list_goto_first( EWL_CONTAINER(s)->children );
+                       form_selected_clear( form );
+                       form_selected_append( form, s );
+               }
+       } else if( !ecore_list_is_empty( EWL_CONTAINER(s)->children ) ) {
+               s = ecore_list_goto_first( EWL_CONTAINER(s)->children );
+               form_selected_clear( form );
+               form_selected_append( form, s );
+       }
+}
+
+void
 ewler_forms_init( void )
 {
        forms = ecore_list_new();
+
+       key_bindings = ecore_hash_new( ecore_str_hash, ecore_str_compare );
+
+       ecore_hash_set( key_bindings, "Delete", __form_delete );
+       ecore_hash_set( key_bindings, "Up", __form_select_up );
+       ecore_hash_set( key_bindings, "Down", __form_select_down );
 }
===================================================================
RCS file: /cvsroot/enlightenment/misc/ewler/src/form.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- form.h      10 Jun 2004 23:32:39 -0000      1.2
+++ form.h      25 Jul 2004 01:01:49 -0000      1.3
@@ -7,6 +7,7 @@
 struct Ewler_Form {
        Ewl_Widget *window;
        Ewl_Widget *overlay;
+       Ewl_Widget *selector;
        Ecore_List *selected;
        Ecore_Hash *elements, *elements_rev;
        Ewl_Widget *popup;
@@ -16,6 +17,8 @@
        int cnt;
 };
 
+typedef void (*Ewler_Form_Key_Cb)( Ewler_Form *form );
+
 void ewler_forms_init( void );
 void ewler_forms_close( void );
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/ewler/src/inspector.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- inspector.c 6 Jul 2004 03:38:12 -0000       1.4
+++ inspector.c 25 Jul 2004 01:01:49 -0000      1.5
@@ -151,10 +151,50 @@
                        break;
        }
 
+       widget_changed( active_widget );
        inspector_update();
 }
 
 static void
+__inspector_combo_changed( Ewl_Widget *w, void *ev_data, void *user_data )
+{
+       Widget_Data_Elem *data = user_data;
+       char *text;
+       int value;
+       Ewl_Object *active_object = EWL_OBJECT(active_widget);
+
+       text = ewl_combo_get_selected( EWL_COMBO(w) );
+
+       if( data->type->w.w_type != WIDGET_ENUM_TYPE )
+               return;
+
+       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 );
+       }
+
+       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 );
+}
+
+static Ewl_Widget *t_combo;
+
+static void
+__populate_combo_cb( void *val )
+{
+       Ecore_Hash_Node *node = val;
+       Ewl_Widget *text;
+
+       text = ewl_menu_item_new( NULL, node->key );
+       ewl_container_append_child( EWL_CONTAINER(t_combo), text );
+       ewl_widget_show( text );
+}
+
+static void
 __populate_tree( void *val )
 {
        Ewl_Widget *trow, *row, *row_elems[3] = { NULL, NULL, NULL };
@@ -164,7 +204,23 @@
        row_elems[0] = ewl_text_new( data->type->w.name );
        ewl_widget_show( row_elems[0] );
 
-       if( data->type->w.w_type != WIDGET_STRUCT_TYPE ) {
+       if( data->type->w.w_type == WIDGET_ENUM_TYPE ) {
+               char *enum_val;
+
+               enum_val = ecore_hash_get( data->type->w_enum.map_rev,
+                                                                                      
                                  (void *) data->w_enum.value );
+               row_elems[1] = t_combo = ewl_combo_new( enum_val );
+
+               ecore_hash_for_each_node( data->type->w_enum.map, __populate_combo_cb 
);
+
+               ewl_callback_append( EWL_WIDGET(row_elems[1]), EWL_CALLBACK_DESELECT,
+                                                                                      
          __inspector_combo_changed, data );
+               ewl_callback_append( EWL_WIDGET(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 );
+       } else if( data->type->w.w_type != WIDGET_STRUCT_TYPE ) {
                row_elems[1] = ewl_entry_new( NULL );
 
                ewl_callback_append( EWL_WIDGET(row_elems[1]), EWL_CALLBACK_DESELECT,
@@ -261,7 +317,7 @@
 void
 inspector_reset( void )
 {
-       Ewl_Widget *s, *w;
+       Ewl_Widget *s, *w = NULL;
        Ecore_List *info;
 
        if( !active_form ) {
@@ -271,14 +327,20 @@
 
        s = ecore_list_goto_first( active_form->selected );
 
-       if( s && ewler_selected_get(EWLER_SELECTED(s)) == active_widget ) {
+       if( s == active_form->overlay ) {
+               w = s;
+       } else if( s ) {
+               w = ewler_selected_get(EWLER_SELECTED(s));
+       }
+
+       if( w == active_widget ) {
                inspector_update();
                return;
        }
 
        ewl_container_reset( EWL_CONTAINER(inspector_tree) );
        
-       if( (w = ewler_selected_get(EWLER_SELECTED(s))) ) {
+       if( w ) {
                info = widget_get_info(w);
                active_widget = w;
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/ewler/src/main.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- main.c      8 Jun 2004 18:30:05 -0000       1.1
+++ main.c      25 Jul 2004 01:01:49 -0000      1.2
@@ -28,8 +28,11 @@
        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_minimum_size( EWL_OBJECT(main_win), 300, 400 );
        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();
===================================================================
RCS file: /cvsroot/enlightenment/misc/ewler/src/project.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- project.c   8 Jun 2004 18:30:05 -0000       1.1
+++ project.c   25 Jul 2004 01:01:49 -0000      1.2
@@ -1,9 +1,5 @@
 #include <Ewl.h>
 
-#include "ewl_dialog.h"
-#include "ewl_stock.h"
-#include "ewl_filedialog_stock.h"
-
 #include "ewler.h"
 #include "project.h"
 
@@ -206,12 +202,16 @@
 void
 project_open_dialog( void )
 {
-       Ewl_Widget *dialog;
+       Ewl_Widget *window, *dialog;
+
+       window = ewl_window_new();
+       ewl_widget_show( window );
 
-       dialog = ewl_filedialog_stock_new( EWL_FILEDIALOG_TYPE_OPEN );
+       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( dialog, EWL_CALLBACK_DELETE_WINDOW,
+       ewl_callback_append( window, EWL_CALLBACK_DELETE_WINDOW,
                                                                                       
  __destroy_window, NULL );
        ewl_widget_show( dialog );
 }
===================================================================
RCS file: /cvsroot/enlightenment/misc/ewler/src/selected.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- selected.c  6 Jul 2004 05:19:54 -0000       1.9
+++ selected.c  25 Jul 2004 01:01:49 -0000      1.10
@@ -66,6 +66,7 @@
        ewl_theme_data_set_str(sw, "/selected/file",
                                                                                       
          PACKAGE_DATA_DIR"/themes/ewler.eet");
        ewl_theme_data_set_str(sw, "/selected/group", "selected");
+       ewl_widget_set_layer( sw, 0 );
 
        ewl_container_insert_child(parent, sw, s->index);
        ewl_object_request_geometry(EWL_OBJECT(s),
@@ -80,6 +81,8 @@
                                                                                       
 ewler_selected_realize_cb, s);
        ewl_callback_append(sw, EWL_CALLBACK_REALIZE,
                                                                                       
 ewler_selected_selector_realize_cb, NULL);
+       ewl_callback_append(sw, EWL_CALLBACK_SELECT,
+                                                                                      
 ewler_selected_select_cb, NULL);
        ewl_callback_append(sw, EWL_CALLBACK_DESELECT,
                                                                                       
 ewler_selected_deselect_cb, NULL);
        ewl_callback_append(sw, EWL_CALLBACK_MOUSE_MOVE,
@@ -88,7 +91,6 @@
                                                                                       
 ewler_selected_mouse_down_cb, NULL);
        ewl_callback_append(sw, EWL_CALLBACK_MOUSE_UP,
                                                                                       
 ewler_selected_mouse_up_cb, NULL);
-       ewl_container_intercept_callback(EWL_CONTAINER(sw), EWL_CALLBACK_MOUSE_DOWN);
 
        if( ewl_object_get_preferred_w(EWL_OBJECT(w)) < SELECTED_MIN_WIDTH &&
                        ewl_object_get_preferred_h(EWL_OBJECT(w)) < 
SELECTED_MIN_HEIGHT )
@@ -149,7 +151,7 @@
 
        s = EWLER_SELECTED(w);
 
-       evas_object_layer_set(w->theme_object, 10000);
+       evas_object_layer_set(w->theme_object, 1000);
        ewl_container_append_child(EWL_CONTAINER(s), s->selected);
 
        if( ewl_widget_get_data( s->selected, "unsizable" ) )
@@ -235,13 +237,27 @@
 
        s = EWLER_SELECTED(w);
 
+       ewl_container_nointercept_callback(EWL_CONTAINER(s), EWL_CALLBACK_MOUSE_DOWN);
        ewl_object_get_current_geometry(EWL_OBJECT(s), &x, &y, &width, &height);
-       ewl_container_insert_child(EWL_CONTAINER(w->parent), s->selected, s->index);
        ewl_object_request_geometry(EWL_OBJECT(s->selected),
                                                                                       
                                 x, y, width, height);
 
-       s->selected = NULL;
-       s->index = -1;
+       ewl_widget_set_state( w, "deselect" );
+       evas_object_layer_set(w->theme_object, -990);
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+void
+ewler_selected_select_cb(Ewl_Widget *w, void *ev_data, void *user_data)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       ewl_widget_set_state( w, "default" );
+       evas_object_layer_set(w->theme_object, 1000);
+       ewl_callback_append(w, EWL_CALLBACK_MOUSE_DOWN,
+                                                                                      
 ewler_selected_mouse_down_cb, NULL);
+       ewl_container_intercept_callback(EWL_CONTAINER(w), EWL_CALLBACK_MOUSE_DOWN);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -325,36 +341,47 @@
        Ewl_Embed *embed;
        Ewl_Event_Mouse_Down *ev = ev_data;
        Ewler_Selected *s = EWLER_SELECTED(w);
-       static int second_time = 0;
+       static Ecore_List *w_stack = NULL;
        int x, y;
 
        x = ev->x;
        y = ev->y;
 
-       if( second_time )
-               return;
-
-       form_set_widget_dragging( s->selected, ev );
-       embed = ewl_embed_find_by_widget(w);
-
-       part_selected = 0;
+       if( !w_stack )
+               w_stack = ecore_list_new();
 
-       evas_event_feed_mouse_down(embed->evas, ev->button);
+       if( ecore_list_goto_first( w_stack ) == s )
+               return;
 
-       if( !part_selected ) {
-               ewl_container_nointercept_callback(EWL_CONTAINER(s),
+       if( ev->button == 1 ) {
+               form_set_widget_dragging( s->selected, ev );
+               embed = ewl_embed_find_by_widget(w);
+
+               part_selected = 0;
+
+               evas_event_feed_mouse_down(embed->evas, ev->button);
+
+               if( !part_selected && !form_widget_created() ) {
+                       ewl_container_nointercept_callback(EWL_CONTAINER(s),
+                                                                                      
                                                                          
EWL_CALLBACK_MOUSE_DOWN);
+                       form_clear_widget_selected();
+
+                       ecore_list_prepend( w_stack, s );
+                       ewl_embed_feed_mouse_down(embed, ev->button, ev->clicks,
+                                                                                      
                                         ev->x, ev->y, ev->modifiers);
+                       ecore_list_remove_first( w_stack );
+
+                       ewl_callback_del_type(w, EWL_CALLBACK_MOUSE_DOWN);
+                       ewl_callback_append(w, EWL_CALLBACK_MOUSE_DOWN,
+                                                                                      
                 ewler_selected_mouse_down_cb, NULL);
+                       ewl_container_intercept_callback(EWL_CONTAINER(s),
                                                                                       
                                                                  
EWL_CALLBACK_MOUSE_DOWN);
-               form_clear_widget_selected();
-
-               second_time = 1;
-               ewl_embed_feed_mouse_down(embed, ev->button, ev->clicks,
-                                                                                      
                                 ev->x, ev->y, ev->modifiers);
-               second_time = 0;
-
-               ewl_container_intercept_callback(EWL_CONTAINER(s),
-                                                                                      
                                                          EWL_CALLBACK_MOUSE_DOWN);
 
-               form_set_widget_selected();
+                       form_set_widget_selected();
+               } else if( form_widget_created() ) {
+                       form_clear_widget_created();
+                       form_clear_widget_dragging();
+               }
        }
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/ewler/src/selected.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- selected.h  5 Jul 2004 02:40:46 -0000       1.5
+++ selected.h  25 Jul 2004 01:01:49 -0000      1.6
@@ -27,6 +27,7 @@
 void ewler_selected_realize_cb(Ewl_Widget *w, void *ev_data, void *user_data);
 void ewler_selected_selector_realize_cb(Ewl_Widget *w, void *ev_data,
                                                                                       
                                                                         void 
*user_data);
+void ewler_selected_select_cb(Ewl_Widget *w, void *ev_data, void *user_data);
 void ewler_selected_deselect_cb(Ewl_Widget *w, void *ev_data, void *user_data);
 void ewler_selected_focus_out_cb(Ewl_Widget *w, void *ev_data,
                                                                                       
                                                 void *user_data);
===================================================================
RCS file: /cvsroot/enlightenment/misc/ewler/src/widgets.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- widgets.c   6 Jul 2004 05:19:54 -0000       1.2
+++ widgets.c   25 Jul 2004 01:01:49 -0000      1.3
@@ -262,6 +262,12 @@
                        lvl--;
                        c_info = t_info;
                        break;
+               case WIDGET_ENUM_TYPE:
+                       if( elem->type->w.get )
+                               elem->w_enum.value = elem->type->w.get( 
EWL_OBJECT(c_widget) );
+                       else
+                               elem->w_enum.value = elem->type->w_enum.default_value;
+                       break;
        }
 
        ecore_list_prepend( c_info, elem );
@@ -293,6 +299,10 @@
                case WIDGET_STRUCT_TYPE:
                        ecore_list_for_each( data->w_struct.members, 
__update_elem_from_widget );
                        break;
+               case WIDGET_ENUM_TYPE:
+                       if( data->type->w.get )
+                               data->w_enum.value = data->type->w.get( 
EWL_OBJECT(c_widget) );
+                       break;
        }
 }
 
@@ -493,6 +503,12 @@
                elem->w_struct.w_type = WIDGET_STRUCT_TYPE;
                elem->w_struct.members =
                        ecore_hash_new( ecore_str_hash, ecore_str_compare );
+       } 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 );
+       } else if( !strcmp( type, "enum_val" ) ) {
+               FREE(elem);
        } else if( type[len-1] == '*' && strpbrk( type, " \t" ) ) {
                elem->w_ptr.w_type = WIDGET_POINTER_TYPE;
 
@@ -516,6 +532,7 @@
        static int class_visible;
        static Ecore_Hash *class, *elem_hash;
        static Widget_Type_Elem *elem, *last_elem = NULL;
+       Widget_Type_Elem *e;
        static void *ctor;
        int token;
 
@@ -576,7 +593,28 @@
                                case XML_READER_TYPE_ELEMENT:
                                        xml_attr = xmlTextReaderGetAttribute( reader, 
"type" );
 
-                                       elem = elem_new( xml_attr, reader );
+                                       e = elem_new( xml_attr, reader );
+                                       if( !e ) {
+                                               if( !strcmp( xml_attr, "enum_val" ) ) {
+                                                       int value;
+                                                       char *id;
+
+                                                       xml_attr = 
xmlTextReaderGetAttribute( reader, "value" );
+                                                       value = strtol( xml_attr, 
NULL, 0 );
+
+                                                       xml_attr = 
xmlTextReaderGetAttribute( reader, "id" );
+                                                       id = strdup( xml_attr );
+
+                                                       ecore_hash_set( 
elem->w_enum.map, id, (void *) value );
+                                                       ecore_hash_set( 
elem->w_enum.map_rev, (void *) value, id );
+                                               }
+                                               last_elem = elem;
+                                               elem = NULL;
+                                               break;
+                                       }
+
+                                       elem = e;
+
                                        elem->w.parent = last_elem;
                                        last_elem = elem;
 
@@ -608,13 +646,15 @@
                                                elem_hash = elem->w_struct.members;
                                        break;
                                case XML_READER_TYPE_END_ELEMENT:
-                                       last_elem = elem->w.parent;
-                                       if( elem->w.w_type == WIDGET_STRUCT_TYPE && 
last_elem )
-                                               elem_hash = 
last_elem->w_struct.members;
-                                       else if( elem->w.w_type == WIDGET_STRUCT_TYPE )
-                                               elem_hash = class;
+                                       if( elem ) {
+                                               last_elem = elem->w.parent;
+                                               if( elem->w.w_type == 
WIDGET_STRUCT_TYPE && last_elem )
+                                                       elem_hash = 
last_elem->w_struct.members;
+                                               else if( elem->w.w_type == 
WIDGET_STRUCT_TYPE )
+                                                       elem_hash = class;
 
-                                       ecore_hash_set( elem_hash, elem->w.name, elem 
);
+                                               ecore_hash_set( elem_hash, 
elem->w.name, elem );
+                                       }
 
                                        elem = last_elem;
                                        break;
===================================================================
RCS file: /cvsroot/enlightenment/misc/ewler/src/widgets.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- widgets.h   8 Jun 2004 18:30:05 -0000       1.1
+++ widgets.h   25 Jul 2004 01:01:49 -0000      1.2
@@ -5,6 +5,7 @@
 #define WIDGET_STRING_TYPE     2
 #define WIDGET_POINTER_TYPE    3
 #define WIDGET_STRUCT_TYPE     4
+#define WIDGET_ENUM_TYPE               5
 
 /* elem flags */
 #define ELEM_NO_MODIFY                 0x01
@@ -44,6 +45,13 @@
        Ecore_Hash *members;
 };
 
+struct Widget_Enum_Elem {
+       WIDGET_TYPE_BASE;
+       Ecore_Hash *map;
+       Ecore_Hash *map_rev;
+       int default_value;
+};
+
 union Widget_Type_Elem {
        struct {
                WIDGET_TYPE_BASE;
@@ -52,6 +60,7 @@
        struct Widget_String_Elem w_str;
        struct Widget_Pointer_Elem w_ptr;
        struct Widget_Struct_Elem w_struct;
+       struct Widget_Enum_Elem w_enum;
 };
 
 /* The actual structures used to store widget info */
@@ -77,12 +86,18 @@
        Ecore_List *members;
 };
 
+struct Widget_Enum_Data_Elem {
+       Widget_Type_Elem *type;
+       int value;
+};
+
 union Widget_Data_Elem {
        Widget_Type_Elem *type;
        struct Widget_Integer_Data_Elem w_int;
        struct Widget_String_Data_Elem w_str;
        struct Widget_Pointer_Data_Elem w_ptr;
        struct Widget_Struct_Data_Elem w_struct;
+       struct Widget_Enum_Data_Elem w_enum;
 };
 
 typedef Ewl_Widget *(*Ewler_Ctor)();




-------------------------------------------------------
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

Reply via email to