From: <enl...@li...> - 2006-02-20 11:57:52
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: etk_list_viewer.c layout_etk_simple.c Log Message: minor visual fixes =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/etk_list_viewer.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- etk_list_viewer.c 20 Feb 2006 10:03:44 -0000 1.7 +++ etk_list_viewer.c 20 Feb 2006 11:57:48 -0000 1.8 @@ -323,8 +323,10 @@ etk_tree_mode_set(ETK_TREE(viewer->tree), ETK_TREE_MODE_LIST); viewer->tree_col1 = etk_tree_col_new(ETK_TREE(viewer->tree), _("Icon"), - etk_tree_model_image_new(ETK_TREE(viewer->tree), ETK_TREE_FROM_FILE), 16); - etk_tree_col_expand_set(viewer->tree_col1, ETK_TRUE); + etk_tree_model_image_new(ETK_TREE(viewer->tree), ETK_TREE_FROM_FILE), 48); + /* Perhaps this is better than expanding it? -- CodeWarrior + * etk_tree_col_expand_set(viewer->tree_col1, ETK_TRUE); + */ viewer->tree_col1 = etk_tree_col_new(ETK_TREE(viewer->tree), _("Filename"), etk_tree_model_text_new(ETK_TREE(viewer->tree)), 100); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/layout_etk_simple.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- layout_etk_simple.c 20 Feb 2006 11:27:47 -0000 1.8 +++ layout_etk_simple.c 20 Feb 2006 11:57:48 -0000 1.9 @@ -271,7 +271,7 @@ /*Tree init*/ gui->tree = etk_tree_new(); - etk_paned_add1(ETK_PANED(gui->paned), gui->tree, ETK_TRUE); + etk_paned_add1(ETK_PANED(gui->paned), gui->tree, ETK_FALSE); etk_tree_mode_set(ETK_TREE(gui->tree), ETK_TREE_MODE_TREE); col = etk_tree_col_new(ETK_TREE(gui->tree), _("Folders"), etk_tree_model_icon_text_new(ETK_TREE(gui->tree), ETK_TREE_FROM_EDJE), 60); |
From: <enl...@li...> - 2006-02-20 12:09:00
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: layout_etk_simple.c Log Message: add statusbars, 3 for now. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/layout_etk_simple.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- layout_etk_simple.c 20 Feb 2006 11:57:48 -0000 1.9 +++ layout_etk_simple.c 20 Feb 2006 12:08:58 -0000 1.10 @@ -16,6 +16,8 @@ entropy_gui_component_instance *structure_viewer; Etk_Widget *tree; Etk_Widget *paned; + Etk_Widget *statusbar_box; + Etk_Widget *statusbars[3]; }; typedef enum _Etk_Menu_Item_Type @@ -265,7 +267,7 @@ etk_box_pack_start(ETK_BOX(vbox), menubar, ETK_FALSE, ETK_FALSE, 0); - etk_box_pack_end(ETK_BOX(vbox), gui->paned, TRUE, TRUE, 0); + etk_box_pack_start(ETK_BOX(vbox), gui->paned, TRUE, TRUE, 0); //etk_widget_size_request_set(ETK_WIDGET(window), 800,600); @@ -338,12 +340,22 @@ etk_paned_add2(ETK_PANED(gui->paned), instance->gui_object, ETK_TRUE); + gui->statusbar_box = etk_hbox_new(ETK_TRUE, 0); + etk_box_pack_start(ETK_BOX(vbox), gui->statusbar_box, ETK_FALSE, ETK_FALSE, 0); + gui->statusbars[0] = etk_statusbar_new(); + etk_statusbar_has_resize_grip_set(ETK_STATUSBAR(gui->statusbars[0]), ETK_FALSE); + etk_box_pack_start(ETK_BOX(gui->statusbar_box), gui->statusbars[0], ETK_TRUE, ETK_TRUE, 0); + + gui->statusbars[1] = etk_statusbar_new(); + etk_statusbar_has_resize_grip_set(ETK_STATUSBAR(gui->statusbars[1]), ETK_FALSE); + etk_box_pack_start(ETK_BOX(gui->statusbar_box), gui->statusbars[1], ETK_TRUE, ETK_TRUE, 0); + + gui->statusbars[2] = etk_statusbar_new(); + etk_statusbar_has_resize_grip_set(ETK_STATUSBAR(gui->statusbars[2]), ETK_TRUE); + etk_box_pack_start(ETK_BOX(gui->statusbar_box), gui->statusbars[2], ETK_TRUE, ETK_TRUE, 0); + etk_widget_show_all (window); - - - - return layout; } |
From: <enl...@li...> - 2006-02-20 12:34:18
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/lib Modified Files: etk_tree.c Log Message: --printf =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tree.c,v retrieving revision 1.38 retrieving revision 1.39 diff -u -3 -r1.38 -r1.39 --- etk_tree.c 20 Feb 2006 11:31:00 -0000 1.38 +++ etk_tree.c 20 Feb 2006 12:34:13 -0000 1.39 @@ -1893,7 +1893,6 @@ /* Double or triple click */ if (!(evas_event->flags & EVAS_BUTTON_NONE) && (_etk_tree_last_clicked_row == row_objects->row)) { - printf("DOUBLE!\n"); event.button = evas_event->button; event.canvas.x = evas_event->canvas.x; event.canvas.y = evas_event->canvas.y; @@ -1903,9 +1902,11 @@ event.locks = evas_event->locks; event.flags = evas_event->flags; event.timestamp = evas_event->timestamp; + + printf("DOUBLE!\n"); + if(!row_objects->row->tree->dnd_event) { - printf("NOPE!\n"); etk_signal_emit(_etk_tree_signals[ETK_TREE_ROW_CLICKED_SIGNAL], ETK_OBJECT(row_objects->row->tree), NULL, row_objects->row, &event); } @@ -1915,7 +1916,6 @@ if (!(evas_event->flags & EVAS_BUTTON_TRIPLE_CLICK) && (evas_event->button == 1) && !row_objects->row->tree->dnd_event) { - printf("NOPE2!\n"); etk_signal_emit(_etk_tree_signals[ETK_TREE_ROW_ACTIVATED_SIGNAL], ETK_OBJECT(row_objects->row->tree), NULL, row_objects->row); } } @@ -2835,7 +2835,7 @@ tree = ETK_TREE(object); tree->dnd_event = ETK_TRUE; - + evas_event_feed_mouse_down(etk_toplevel_widget_evas_get(win), 1, EVAS_BUTTON_NONE, ecore_x_current_time_get(), |
From: <enl...@li...> - 2006-02-20 13:08:20
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/lib Modified Files: etk_tree.c Log Message: --printf, fix prototype in test =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tree.c,v retrieving revision 1.39 retrieving revision 1.40 diff -u -3 -r1.39 -r1.40 --- etk_tree.c 20 Feb 2006 12:34:13 -0000 1.39 +++ etk_tree.c 20 Feb 2006 13:08:11 -0000 1.40 @@ -1901,9 +1901,7 @@ event.modifiers = evas_event->modifiers; event.locks = evas_event->locks; event.flags = evas_event->flags; - event.timestamp = evas_event->timestamp; - - printf("DOUBLE!\n"); + event.timestamp = evas_event->timestamp; if(!row_objects->row->tree->dnd_event) { |
From: <enl...@li...> - 2006-02-20 13:08:20
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/bin Modified Files: etk_tree_test.c Log Message: --printf, fix prototype in test =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/bin/etk_tree_test.c,v retrieving revision 1.25 retrieving revision 1.26 diff -u -3 -r1.25 -r1.26 --- etk_tree_test.c 20 Feb 2006 10:31:23 -0000 1.25 +++ etk_tree_test.c 20 Feb 2006 13:08:11 -0000 1.26 @@ -4,7 +4,7 @@ #include "config.h" static void _etk_test_tree_drag_drop_cb(Etk_Object *object, void *event, void *data); -static void _etk_test_tree_drag_begin_cb(Etk_Object *object, void *event, void *data); +static void _etk_test_tree_drag_begin_cb(Etk_Object *object, void *data); static void _etk_test_tree_add_items(Etk_Tree *tree, int n); static void _etk_test_tree_row_selected(Etk_Object *object, Etk_Tree_Row *row, void *data); static void _etk_test_tree_row_unselected(Etk_Object *object, Etk_Tree_Row *row, void *data); @@ -150,7 +150,7 @@ printf(_("Row dropped on %p: \"%s\" %d %s\n"), row, col1_string, col2_value, col3_path); } -static void _etk_test_tree_drag_begin_cb(Etk_Object *object, void *event, void *data) +static void _etk_test_tree_drag_begin_cb(Etk_Object *object, void *data) { Etk_Tree *tree; Etk_Tree_Row *row; |
From: <enl...@li...> - 2006-02-20 13:22:40
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/exhibit/src/bin Modified Files: exhibit_tab.c Log Message: - add drag support to thumb list. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_tab.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- exhibit_tab.c 15 Jan 2006 12:31:48 -0000 1.6 +++ exhibit_tab.c 20 Feb 2006 13:22:37 -0000 1.7 @@ -1,5 +1,7 @@ #include "exhibit.h" +static void _ex_tab_tree_drag_begin_cb(Etk_Object *object, void *data); + Ex_Tab * _ex_tab_new(Exhibit *e, char *dir) { @@ -23,6 +25,8 @@ etk_tree_build(ETK_TREE(tab->dtree)); tab->itree = etk_tree_new(); + etk_widget_dnd_source_set(ETK_WIDGET(tab->itree), ETK_TRUE); + etk_signal_connect("drag_begin", ETK_OBJECT(tab->itree), ETK_CALLBACK(_ex_tab_tree_drag_begin_cb), tab); etk_widget_size_request_set(tab->itree, 180, 120); etk_tree_multiple_select_set(ETK_TREE(tab->itree), ETK_TRUE); etk_signal_connect("row_selected", ETK_OBJECT(tab->itree), ETK_CALLBACK(_ex_main_itree_item_clicked_cb), e); @@ -90,3 +94,38 @@ etk_widget_show_all(tab->e->win); } + +static void _ex_tab_tree_drag_begin_cb(Etk_Object *object, void *data) +{ + Ex_Tab *tab; + Etk_Tree *tree; + Etk_Tree_Row *row; + char *icol1_string; + char *icol2_string; + const char **types; + unsigned int num_types; + char *drag_data; + Etk_Drag *drag; + Etk_Widget *image; + + tab = data; + tree = ETK_TREE(object); + row = etk_tree_selected_row_get(tree); + + drag = (ETK_WIDGET(tree))->drag; + + etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), &icol1_string, &icol2_string, etk_tree_nth_col_get(tree, 1),NULL); + + types = calloc(1, sizeof(char*)); + num_types = 1; + types[0] = strdup("text/uri-list"); + drag_data = calloc(PATH_MAX, sizeof(char)); + snprintf(drag_data, PATH_MAX * sizeof(char), "file://%s/%s", tab->cur_path, icol2_string); + + etk_drag_types_set(drag, types, num_types); + etk_drag_data_set(drag, drag_data, strlen(drag_data) + 1); + image = etk_image_new_from_file(icol1_string); + etk_image_keep_aspect_set(ETK_IMAGE(image), ETK_TRUE); + etk_widget_size_request_set(image, 96, 96); + etk_container_add(ETK_CONTAINER(drag), image); +} |
From: <enl...@li...> - 2006-02-20 14:43:08
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/exhibit/src/bin Modified Files: exhibit_main.c Log Message: and add drop support. wicked. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_main.c,v retrieving revision 1.39 retrieving revision 1.40 diff -u -3 -r1.39 -r1.40 --- exhibit_main.c 11 Feb 2006 23:38:54 -0000 1.39 +++ exhibit_main.c 20 Feb 2006 14:43:00 -0000 1.40 @@ -144,42 +144,32 @@ } void -_ex_main_itree_item_clicked_cb(Etk_Object *object, Etk_Tree_Row *row, void *data) +_ex_main_image_set(Exhibit *e, char *image) { - Etk_Tree *tree; Etk_Range *hs, *vs; - char *icol_string; char *title; int w, h; int bytes; char size[30]; - Exhibit *e; - - e = data; - e->zoom = 0; - _ex_main_statusbar_zoom_update(e); - tree = ETK_TREE(object); - - etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, &icol_string, etk_tree_nth_col_get(tree, 1),NULL); - title = calloc(strlen(icol_string) + strlen(WINDOW_TITLE) + 5, sizeof(char)); - snprintf(title, strlen(icol_string) + strlen(WINDOW_TITLE) + 5, "%s - %s", icol_string, WINDOW_TITLE); + title = calloc(strlen(image) + strlen(WINDOW_TITLE) + 5, sizeof(char)); + snprintf(title, strlen(image) + strlen(WINDOW_TITLE) + 5, "%s - %s", image, WINDOW_TITLE); etk_window_title_set(ETK_WINDOW(e->win), title); - if(_ex_file_is_ebg(icol_string)) + if(_ex_file_is_ebg(image)) { /* can we do this without the size request? it doesnt look good */ etk_widget_size_request_set(ETK_WIDGET(e->cur_tab->image), 800, 600); - etk_image_set_from_edje(ETK_IMAGE(e->cur_tab->image), icol_string, "desktop/background"); + etk_image_set_from_edje(ETK_IMAGE(e->cur_tab->image), image, "desktop/background"); } else { - etk_image_set_from_file(ETK_IMAGE(e->cur_tab->image), icol_string); + etk_image_set_from_file(ETK_IMAGE(e->cur_tab->image), image); etk_image_size_get(ETK_IMAGE(e->cur_tab->image), &w, &h); etk_widget_size_request_set(ETK_WIDGET(e->cur_tab->image), w, h); } - bytes = ecore_file_size(icol_string); + bytes = ecore_file_size(image); snprintf(size, sizeof(size), "%d K", (int)(bytes/1024)); etk_statusbar_pop(ETK_STATUSBAR(e->statusbar[0]), 0); etk_statusbar_push(ETK_STATUSBAR(e->statusbar[0]), size, 0); @@ -197,6 +187,24 @@ } void +_ex_main_itree_item_clicked_cb(Etk_Object *object, Etk_Tree_Row *row, void *data) +{ + Exhibit *e; + Etk_Tree *tree; + char *icol_string; + + e = data; + e->zoom = 0; + _ex_main_statusbar_zoom_update(e); + + tree = ETK_TREE(object); + + etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, &icol_string, etk_tree_nth_col_get(tree, 1),NULL); + + _ex_main_image_set(e, icol_string); +} + +void _ex_main_dtree_item_clicked_cb(Etk_Object *object, Etk_Tree_Row *row, void *data) { Etk_Tree *tree; @@ -669,6 +677,54 @@ etk_notebook_current_page_set(ETK_NOTEBOOK(e->notebook), evas_list_count(e->tabs) - 1); } +static void _etk_main_drag_drop_cb(Etk_Object *object, void *event, void *data) +{ + Etk_Event_Selection_Request *ev; + Etk_Selection_Data_Files *files; + Exhibit *e; + + int i; + + ev = event; + e = data; + + if(ev->content != ETK_SELECTION_CONTENT_FILES) + return; + + files = ev->data; + + for (i = 0; i < files->num_files; i++) + { + char *dir; + char *file; + + + if ((file = strstr(files->files[i], "file://")) == NULL) + continue; + + + file += strlen("file://"); + dir = ecore_file_get_dir(file); + + if(!ecore_file_is_dir(dir)) + continue; + + if(!ecore_file_exists(file)) + file = NULL; + + E_FREE(e->cur_tab->dir); + e->cur_tab->dir = strdup(dir); + etk_tree_clear(ETK_TREE(e->cur_tab->itree)); + etk_tree_clear(ETK_TREE(e->cur_tab->dtree)); + _ex_main_populate_files(e, ecore_file_get_file(file)); + if(ecore_file_exists(file) && !ecore_file_is_dir(file)) + _ex_main_image_set(e, file); + etk_notebook_page_tab_label_set(ETK_NOTEBOOK(e->notebook), e->cur_tab->num, _ex_file_get(e->cur_tab->cur_path)); + break; + } +} + + void _ex_main_window_show(char *dir) { @@ -676,7 +732,9 @@ Ex_Tab *tab; char *file; char *homedir; - + char **dnd_types; + int dnd_types_num; + e = calloc(1, sizeof(Exhibit)); e->mouse.down = 0; e->menu = NULL; @@ -705,6 +763,12 @@ tab = NULL; e->win = etk_window_new(); + etk_widget_dnd_dest_set(e->win, ETK_TRUE); + dnd_types_num = 1; + dnd_types = calloc(dnd_types_num, sizeof(char*)); + dnd_types[0] = strdup("text/uri-list"); + etk_signal_connect("drag_drop", ETK_OBJECT(e->win), ETK_CALLBACK(_etk_main_drag_drop_cb), e); + etk_widget_dnd_types_set(e->win, dnd_types, dnd_types_num); etk_window_title_set(ETK_WINDOW(e->win), WINDOW_TITLE " - Image Viewing the Kewl Way!"); etk_window_wmclass_set(ETK_WINDOW(e->win), "exhibit", "Exhibit"); etk_window_resize(ETK_WINDOW(e->win), WINDOW_WIDTH, WINDOW_HEIGHT); |
From: <enl...@li...> - 2006-02-21 00:56:12
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/lib Modified Files: etk_widget.c etk_widget.h Log Message: ask and ye shall get! - add function to get drag widget from drag object =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_widget.c,v retrieving revision 1.38 retrieving revision 1.39 diff -u -3 -r1.38 -r1.39 --- etk_widget.c 20 Feb 2006 10:31:30 -0000 1.38 +++ etk_widget.c 21 Feb 2006 00:56:09 -0000 1.39 @@ -1403,6 +1403,32 @@ etk_container_add(ETK_CONTAINER(widget->drag), drag_widget); } +/** + * @brief Gets the visual data for the drag (the widget to be displayed) + * @param widget a widget + * @Returns Return the widget that will appear in the drag window + */ +Etk_Widget *etk_widget_dnd_drag_widget_get(Etk_Widget *widget) +{ + Evas_List *children = NULL; + + if(!widget) + return; + + children = etk_container_children_get(ETK_CONTAINER(widget->drag)); + + if(!children) + return NULL; + + if(evas_list_count(children) < 1) + return NULL; + + if(ETK_IS_WIDGET(children->data)) + return (Etk_Widget*)children->data; + + return NULL; +} + void etk_widget_dnd_drag_data_set(Etk_Widget *widget, const char **types, int num_types, void *data, int data_size) { if(!widget) =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_widget.h,v retrieving revision 1.24 retrieving revision 1.25 diff -u -3 -r1.24 -r1.25 --- etk_widget.h 20 Feb 2006 10:31:30 -0000 1.24 +++ etk_widget.h 21 Feb 2006 00:56:09 -0000 1.25 @@ -276,6 +276,7 @@ void etk_widget_dnd_source_set(Etk_Widget *widget, Etk_Bool on); Etk_Bool etk_widget_dnd_source_get(Etk_Widget *widget); void etk_widget_dnd_drag_widget_set(Etk_Widget *widget, Etk_Widget *drag_widget); +Etk_Widget *etk_widget_dnd_drag_widget_get(Etk_Widget *widget); void etk_widget_dnd_drag_data_set(Etk_Widget *widget, const char **types, int num_types, void *data, int data_size); const char **etk_widget_dnd_files_get(Etk_Widget *e, int *num_files); void etk_widget_dnd_types_set(Etk_Widget *widget, char **types, int num); |
From: <enl...@li...> - 2006-02-21 08:49:37
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/entropy/src/plugins Modified Files: etk_list_viewer.c Log Message: nasty! set it to one then allocate (= =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/etk_list_viewer.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- etk_list_viewer.c 21 Feb 2006 03:50:28 -0000 1.10 +++ etk_list_viewer.c 21 Feb 2006 08:49:36 -0000 1.11 @@ -395,9 +395,9 @@ /*DND Setup*/ + dnd_types_num = 1; dnd_types = calloc(dnd_types_num, sizeof(char*)); dnd_types[0] = strdup("text/plain"); - dnd_types_num = 1; etk_widget_dnd_source_set(viewer->tree, ETK_TRUE); etk_widget_dnd_drag_widget_set(viewer->tree, etk_button_new_with_label("Drag Widget")); etk_widget_dnd_drag_data_set(viewer->tree, dnd_types, dnd_types_num, "This is the drag data!", strlen("This is the drag data!") + 1); |
From: <enl...@li...> - 2006-02-21 16:48:45
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/lib Modified Files: etk_tree.c Log Message: typo =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tree.c,v retrieving revision 1.41 retrieving revision 1.42 diff -u -3 -r1.41 -r1.42 --- etk_tree.c 21 Feb 2006 14:18:02 -0000 1.41 +++ etk_tree.c 21 Feb 2006 16:48:39 -0000 1.42 @@ -1529,7 +1529,7 @@ tree->expander_size = 0; tree->headers_clip = NULL; tree->rows_widgets = NULL; - tree->num_rows_selected = 0; + tree->num_selected_rows = 0; tree->built = ETK_FALSE; tree->frozen = ETK_FALSE; |
From: <enl...@li...> - 2006-02-23 14:05:29
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/lib Modified Files: etk_tree.c Log Message: - keep state when using Shift+Click on the tree for selection so we can count the number of selected items properly. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tree.c,v retrieving revision 1.44 retrieving revision 1.45 diff -u -3 -r1.44 -r1.45 --- etk_tree.c 23 Feb 2006 13:50:30 -0000 1.44 +++ etk_tree.c 23 Feb 2006 14:05:20 -0000 1.45 @@ -1955,6 +1955,8 @@ event.locks = evas_event->locks; event.flags = EVAS_BUTTON_NONE; event.timestamp = evas_event->timestamp; + + printf("selected = %d\n", row_objects->row->tree->num_selected_rows); if (!evas_key_modifier_is_set(event.modifiers, "Control") && !evas_key_modifier_is_set(event.modifiers, "Shift") && @@ -2738,7 +2740,6 @@ if (!evas_key_modifier_is_set(modifiers, "Control")) { etk_tree_unselect_all(tree); - tree->num_selected_rows = 1; } if (!tree->last_selected) @@ -2761,11 +2762,17 @@ } else { + Etk_Bool state; + + state = r->selected; r->selected |= selected; - if(!r->selected) - ++tree->num_selected_rows; - else - --tree->num_selected_rows; + if(state != r->selected) + { + if(!r->selected) + --tree->num_selected_rows; + else + ++tree->num_selected_rows; + } } } if (selected) |
From: <enl...@li...> - 2006-02-23 23:07:25
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/lib Modified Files: etk_tree.c Log Message: --printf =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tree.c,v retrieving revision 1.45 retrieving revision 1.46 diff -u -3 -r1.45 -r1.46 --- etk_tree.c 23 Feb 2006 14:05:20 -0000 1.45 +++ etk_tree.c 23 Feb 2006 23:07:16 -0000 1.46 @@ -1955,8 +1955,6 @@ event.locks = evas_event->locks; event.flags = EVAS_BUTTON_NONE; event.timestamp = evas_event->timestamp; - - printf("selected = %d\n", row_objects->row->tree->num_selected_rows); if (!evas_key_modifier_is_set(event.modifiers, "Control") && !evas_key_modifier_is_set(event.modifiers, "Shift") && |
From: <enl...@li...> - 2006-02-25 03:35:59
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/bin Modified Files: etk_entry_test.c Log Message: - add the ability to turn an Etk_Entry into a password field. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/bin/etk_entry_test.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- etk_entry_test.c 15 Jan 2006 11:07:16 -0000 1.6 +++ etk_entry_test.c 25 Feb 2006 03:35:56 -0000 1.7 @@ -1,6 +1,7 @@ #include "etk_test.h" static void _etk_test_entry_print_clicked(Etk_Object *object, void *data); +static void _etk_test_entry_password_toggled(Etk_Object *object, void *data); static Etk_Widget *label = NULL; static Etk_Widget *entry = NULL; @@ -22,16 +23,20 @@ etk_window_title_set(ETK_WINDOW(win), _("Etk Entry Test")); etk_signal_connect("delete_event", ETK_OBJECT(win), ETK_CALLBACK(etk_window_hide_on_delete), NULL); - table = etk_table_new(2, 2, ETK_FALSE); + table = etk_table_new(3, 2, ETK_FALSE); etk_container_add(ETK_CONTAINER(win), table); entry = etk_entry_new(); etk_table_attach(ETK_TABLE(table), entry, 0, 0, 0, 0, 0, 0, ETK_FILL_POLICY_HEXPAND | ETK_FILL_POLICY_HFILL); - button = etk_button_new_with_label(_("Print the text!!!")); + button = etk_button_new_with_label(_("Print text")); etk_table_attach(ETK_TABLE(table), button, 1, 1, 0, 0, 0, 0, ETK_FILL_POLICY_NONE); etk_signal_connect("clicked", ETK_OBJECT(button), ETK_CALLBACK(_etk_test_entry_print_clicked), NULL); + button = etk_toggle_button_new_with_label(_("Toggle password")); + etk_table_attach(ETK_TABLE(table), button, 2, 2, 0, 0, 0, 0, ETK_FILL_POLICY_NONE); + etk_signal_connect("toggled", ETK_OBJECT(button), ETK_CALLBACK(_etk_test_entry_password_toggled), NULL); + label = etk_label_new(" "); etk_table_attach(ETK_TABLE(table), label, 0, 1, 1, 1, 0, 0, ETK_FILL_POLICY_HEXPAND | ETK_FILL_POLICY_HFILL); @@ -43,3 +48,10 @@ { etk_label_set(ETK_LABEL(label), etk_entry_text_get(ETK_ENTRY(entry))); } + + +/* Turns the entry into a password */ +static void _etk_test_entry_password_toggled(Etk_Object *object, void *data) +{ + etk_entry_password_set(ETK_ENTRY(entry), !etk_entry_password_get(ETK_ENTRY(entry))); +} |
From: <enl...@li...> - 2006-02-27 08:33:38
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/lib Modified Files: etk_tree.c Log Message: we dont need to send that clicked signal it seems. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tree.c,v retrieving revision 1.47 retrieving revision 1.48 diff -u -3 -r1.47 -r1.48 --- etk_tree.c 27 Feb 2006 02:28:18 -0000 1.47 +++ etk_tree.c 27 Feb 2006 08:33:36 -0000 1.48 @@ -1922,11 +1922,14 @@ event.locks = evas_event->locks; event.flags = evas_event->flags; event.timestamp = evas_event->timestamp; - + +#if 0 + /* we dont need this anymore */ if(!row_objects->row->tree->dnd_event) { etk_signal_emit(_etk_tree_signals[ETK_TREE_ROW_CLICKED_SIGNAL], ETK_OBJECT(row_objects->row->tree), NULL, row_objects->row, &event); } +#enfif /* We have to check this again because the user can remove the row on the "clicked" signal */ if (!row_objects->row) |
From: <enl...@li...> - 2006-02-27 09:10:03
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/lib Modified Files: etk_tree.c Log Message: typo! =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tree.c,v retrieving revision 1.48 retrieving revision 1.49 diff -u -3 -r1.48 -r1.49 --- etk_tree.c 27 Feb 2006 08:33:36 -0000 1.48 +++ etk_tree.c 27 Feb 2006 09:10:00 -0000 1.49 @@ -1929,7 +1929,7 @@ { etk_signal_emit(_etk_tree_signals[ETK_TREE_ROW_CLICKED_SIGNAL], ETK_OBJECT(row_objects->row->tree), NULL, row_objects->row, &event); } -#enfif +#endif /* We have to check this again because the user can remove the row on the "clicked" signal */ if (!row_objects->row) |
From: <enl...@li...> - 2006-02-27 22:14:51
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/lib Modified Files: etk_types.h etk_widget.c etk_window.c etk_window.h Log Message: - this started out as a patch from ezek, but got heavily modified to allow new window positioning according to mouse and center on parent (if parent = another window, then center on that, if not, center on root window) =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_types.h,v retrieving revision 1.29 retrieving revision 1.30 diff -u -3 -r1.29 -r1.30 --- etk_types.h 15 Feb 2006 18:36:55 -0000 1.29 +++ etk_types.h 27 Feb 2006 22:14:48 -0000 1.30 @@ -45,6 +45,7 @@ typedef enum _Etk_Pointer_Type Etk_Pointer_Type; typedef struct _Etk_Toplevel_Widget Etk_Toplevel_Widget; typedef struct _Etk_Window Etk_Window; +typedef enum _Etk_Window_Position Etk_Window_Position; typedef struct _Etk_Dialog Etk_Dialog; typedef enum _Etk_Dialog_Response_ID Etk_Dialog_Response_ID; typedef struct _Etk_Container Etk_Container; =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_widget.c,v retrieving revision 1.40 retrieving revision 1.41 diff -u -3 -r1.40 -r1.41 --- etk_widget.c 27 Feb 2006 22:00:17 -0000 1.40 +++ etk_widget.c 27 Feb 2006 22:14:49 -0000 1.41 @@ -517,10 +517,11 @@ if (!widget) return; - if (!widget->visibility_locked) - etk_widget_show(widget); for (l = widget->children; l; l = l->next) etk_widget_show_all(ETK_WIDGET(l->data)); + + if (!widget->visibility_locked) + etk_widget_show(widget); } /** =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_window.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- etk_window.c 16 Feb 2006 01:40:16 -0000 1.13 +++ etk_window.c 27 Feb 2006 22:14:50 -0000 1.14 @@ -460,6 +460,63 @@ return ETK_TRUE; } +/** + * @brief Moves the window to a defined position + * @param window a window + * @param position + */ +void etk_window_position_set(Etk_Window *window, Etk_Window_Position position) +{ +#if HAVE_ECORE_X + int w, h; + int x2, y2, w2, h2; + + if (!window) + return; + + switch (position) + { + case ETK_WINDOW_POSITION_CENTER: + + if(!(ETK_WIDGET(window))->visible) + { + window->position = ETK_WINDOW_POSITION_CENTER; + break; + } + + if(window->parent) + ecore_evas_geometry_get(window->parent->ecore_evas, + &x2, &y2, &w2, &h2); + else + ecore_x_window_geometry_get(ecore_x_window_root_first_get(), + &x2, &y2, &w2, &h2); + + ecore_evas_geometry_get(window->ecore_evas, NULL, NULL, &w, &h); + ecore_evas_move(window->ecore_evas, x2 + (w2 - w) / 2, + y2 + (h2 - h) / 2); + break; + + case ETK_WINDOW_POSITION_MOUSE: + ecore_x_pointer_xy_get(ecore_x_window_root_first_get(), &x2, &y2); + ecore_evas_move(window->ecore_evas, x2, y2); + break; + } +#endif +} + +/** + * @brief Sets the window's parent + * @param window a window + * @param parent a window + */ +void etk_window_parent_set(Etk_Window *window, Etk_Window *parent) +{ + if(!window || !parent) + return; + + window->parent = parent; +} + /************************** * * Etk specific functions @@ -474,8 +531,10 @@ window->delete_event = _etk_window_delete_event_handler; - window->ecore_evas = ecore_evas_software_x11_new(NULL, 0, 0, 0, 0, 0); + window->ecore_evas = ecore_evas_software_x11_new(0, 0, 0, 0, 0, 0); window->x_window = ecore_evas_software_x11_window_get(window->ecore_evas); + window->position = -1; + window->parent = NULL; /* TODO: free!! */ #if HAVE_ECORE_X @@ -501,7 +560,7 @@ /* TODO: font path */ evas_font_path_append(ETK_TOPLEVEL_WIDGET(window)->evas, PACKAGE_DATA_DIR "/fonts/"); ecore_evas_data_set(window->ecore_evas, "etk_window", window); - ecore_evas_callback_resize_set(window->ecore_evas, _etk_window_move_cb); + ecore_evas_callback_move_set(window->ecore_evas, _etk_window_move_cb); ecore_evas_callback_resize_set(window->ecore_evas, _etk_window_resize_cb); ecore_evas_callback_focus_in_set(window->ecore_evas, _etk_window_focus_in_cb); ecore_evas_callback_focus_out_set(window->ecore_evas, _etk_window_focus_out_cb); @@ -535,6 +594,16 @@ if (!(window = ETK_WINDOW(ecore_evas_data_get(ecore_evas, "etk_window")))) return; etk_signal_emit(_etk_window_signals[ETK_WINDOW_MOVE_SIGNAL], ETK_OBJECT(window), NULL); + + switch(window->position) + { + case ETK_WINDOW_POSITION_CENTER: + etk_window_position_set(window, ETK_WINDOW_POSITION_CENTER); + break; + + default: + break; + } } /* Called when the window is resized */ @@ -545,7 +614,7 @@ if (!(window = ETK_WINDOW(ecore_evas_data_get(ecore_evas, "etk_window")))) return; etk_signal_emit(_etk_window_signals[ETK_WINDOW_RESIZE_SIGNAL], ETK_OBJECT(window), NULL); - etk_widget_redraw_queue(ETK_WIDGET(window)); + etk_widget_redraw_queue(ETK_WIDGET(window)); } /* Called when the window is focused in */ =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_window.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- etk_window.h 11 Feb 2006 10:27:14 -0000 1.5 +++ etk_window.h 27 Feb 2006 22:14:50 -0000 1.6 @@ -20,6 +20,16 @@ /** @brief Check if the object is an Etk_Window */ #define ETK_IS_WINDOW(obj) (ETK_OBJECT_CHECK_TYPE((obj), ETK_WINDOW_TYPE)) +/** + * @enum Etk_Window_Position + * @brief The position of a window + */ +enum _Etk_Window_Position +{ + ETK_WINDOW_POSITION_CENTER, + ETK_WINDOW_POSITION_MOUSE +}; + struct _Etk_Window { /* private: */ @@ -28,7 +38,10 @@ Ecore_Evas *ecore_evas; Ecore_X_Window x_window; - + + Etk_Window_Position position; + Etk_Window *parent; + Etk_Bool (*delete_event)(Etk_Window *window); }; @@ -53,20 +66,23 @@ void etk_window_focus(Etk_Window *window); void etk_window_unfocus(Etk_Window *window); -void etk_window_decorated_set(Etk_Window *window, Etk_Bool decorated); +void etk_window_decorated_set(Etk_Window *window, Etk_Bool decorated); Etk_Bool etk_window_decorated_get(Etk_Window *window); -void etk_window_shaped_set(Etk_Window *window, Etk_Bool shaped); +void etk_window_shaped_set(Etk_Window *window, Etk_Bool shaped); Etk_Bool etk_window_shaped_get(Etk_Window *window); -void etk_window_skip_taskbar_hint_set(Etk_Window *window, Etk_Bool skip_taskbar_hint); +void etk_window_skip_taskbar_hint_set(Etk_Window *window, Etk_Bool skip_taskbar_hint); Etk_Bool etk_window_skip_taskbar_hint_get(Etk_Window *window); -void etk_window_skip_pager_hint_set(Etk_Window *window, Etk_Bool skip_pager_hint); +void etk_window_skip_pager_hint_set(Etk_Window *window, Etk_Bool skip_pager_hint); Etk_Bool etk_window_skip_pager_hint_get(Etk_Window *window); -void etk_window_dnd_aware_set(Etk_Window *window, Etk_Bool on); +void etk_window_dnd_aware_set(Etk_Window *window, Etk_Bool on); Etk_Bool etk_window_hide_on_delete(Etk_Object *window, void *data); +void etk_window_position_set(Etk_Window *window, Etk_Window_Position position); +void etk_window_parent_set(Etk_Window *window, Etk_Window *parent); + /** @} */ #endif |
From: <enl...@li...> - 2006-03-02 13:29:12
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/entropy/src/dialogs Modified Files: etk_interaction_dialog.c Log Message: temporary fix =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/dialogs/etk_interaction_dialog.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- etk_interaction_dialog.c 2 Mar 2006 06:54:03 -0000 1.3 +++ etk_interaction_dialog.c 2 Mar 2006 13:28:57 -0000 1.4 @@ -18,6 +18,8 @@ window = etk_object_data_get(ETK_OBJECT(w), "window"); etk_object_destroy(ETK_OBJECT(window)); + /* this is a temporary fix */ + etk_signal_stop(); } void entropy_etk_user_interaction_dialog_new(entropy_file_operation* interact) |
From: <enl...@li...> - 2006-03-02 14:37:52
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/lib Modified Files: etk_argument.c etk_dnd.c etk_notebook.c Log Message: - formatting - patch from ezek for etk_notebook_page_remove's implementation =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_argument.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- etk_argument.c 2 Mar 2006 00:48:00 -0000 1.2 +++ etk_argument.c 2 Mar 2006 14:37:50 -0000 1.3 @@ -53,178 +53,178 @@ /* no arguments */ if(argc < 2) - { - /* check for required arguments */ - i = 0; - arg = args; - while(arg->short_name != -1) - { - if(arg->flags & ETK_ARGUMENT_FLAG_REQUIRED) - { - printf(_("Argument %d '-%c | --%s' is required\n"), i, arg->short_name, arg->long_name); - return ETK_ARGUMENT_RETURN_REQUIRED_NOT_FOUND; - } - ++i; ++arg; - } - return ETK_ARGUMENT_RETURN_OK; - } + { + /* check for required arguments */ + i = 0; + arg = args; + while(arg->short_name != -1) + { + if(arg->flags & ETK_ARGUMENT_FLAG_REQUIRED) + { + printf(_("Argument %d '-%c | --%s' is required\n"), i, arg->short_name, arg->long_name); + return ETK_ARGUMENT_RETURN_REQUIRED_NOT_FOUND; + } + ++i; ++arg; + } + return ETK_ARGUMENT_RETURN_OK; + } for(i = 1; i < argc; i++) - { - char *cur; - - cur = argv[i]; - if(!cur) continue; - - /* min length is 2, anything less is invalid */ - if(strlen(cur) < 2) - { - printf(_("Argument %d '%s' is too short\n"), i, argv[i]); - return ETK_ARGUMENT_RETURN_MALFORMED; - } - - /* short (single char) argument of the form -d val or -dval */ - if(cur[0] == '-' && cur[1] != '-') - { - arg = args; - - while(arg->short_name != -1) + { + char *cur; + + cur = argv[i]; + if(!cur) continue; + + /* min length is 2, anything less is invalid */ + if(strlen(cur) < 2) + { + printf(_("Argument %d '%s' is too short\n"), i, argv[i]); + return ETK_ARGUMENT_RETURN_MALFORMED; + } + + /* short (single char) argument of the form -d val or -dval */ + if(cur[0] == '-' && cur[1] != '-') + { + arg = args; + + while(arg->short_name != -1) + { + /* match found for short arg */ + if(arg->short_name == cur[1]) + { + /* check to see if arg needs value */ + if((arg->flags & ETK_ARGUMENT_FLAG_VALUE_REQUIRED) && + i + 1 < argc) + { + char *val = argv[i + 1]; + + /* if no value is present, report error */ + if(val[0] == '-') + { + printf(_("Argument %d '%s' requires a value\n"), i, cur); + return ETK_ARGUMENT_RETURN_REQUIRED_VALUE_NOT_FOUND; + } + + if(arg->data) + *(arg->data) = *val; + else + arg->data = val; + arg->flags |= ETK_ARGUMENT_FLAG_PRIV_SET; + ++i; + } + else if (arg->flags & ETK_ARGUMENT_FLAG_VALUE_REQUIRED + && i + 1 >= argc) { - /* match found for short arg */ - if(arg->short_name == cur[1]) - { - /* check to see if arg needs value */ - if((arg->flags & ETK_ARGUMENT_FLAG_VALUE_REQUIRED) && - i + 1 < argc) - { - char *val = argv[i + 1]; - - /* if no value is present, report error */ - if(val[0] == '-') - { - printf(_("Argument %d '%s' requires a value\n"), i, cur); - return ETK_ARGUMENT_RETURN_REQUIRED_VALUE_NOT_FOUND; - } - - if(arg->data) - *(arg->data) = *val; - else - arg->data = val; - arg->flags |= ETK_ARGUMENT_FLAG_PRIV_SET; - ++i; - } - else if (arg->flags & ETK_ARGUMENT_FLAG_VALUE_REQUIRED - && i + 1 >= argc) - { - /* if no value is present, report error */ - printf(_("Argument %d '%s' requires a value\n"), i, cur); - return ETK_ARGUMENT_RETURN_REQUIRED_VALUE_NOT_FOUND; - } - else if(!(arg->flags & ETK_ARGUMENT_FLAG_VALUE_REQUIRED)) - arg->flags |= ETK_ARGUMENT_FLAG_PRIV_SET; - } - ++arg; + /* if no value is present, report error */ + printf(_("Argument %d '%s' requires a value\n"), i, cur); + return ETK_ARGUMENT_RETURN_REQUIRED_VALUE_NOT_FOUND; } - } - /* long argument of the form --debug or --debug=something */ - else if(cur[0] == '-' && cur[1] == '-' && strlen(cur) > 2) - { - arg = args; - - while(arg->short_name != -1) + else if(!(arg->flags & ETK_ARGUMENT_FLAG_VALUE_REQUIRED)) + arg->flags |= ETK_ARGUMENT_FLAG_PRIV_SET; + } + ++arg; + } + } + /* long argument of the form --debug or --debug=something */ + else if(cur[0] == '-' && cur[1] == '-' && strlen(cur) > 2) + { + arg = args; + + while(arg->short_name != -1) + { + char *tmp = NULL; + char *tmp2; + + if(!arg->long_name) + continue; + + /* check if arg if of the form --foo=bar */ + tmp = strchr(cur, '='); + if(tmp) + { + tmp2 = cur; + cur = calloc(tmp - tmp2 + 1, sizeof(char)); + snprintf(cur, (tmp - tmp2 + 1) * sizeof(char), "%s", tmp2); + } + else + tmp = NULL; + + /* match found for long arg */ + if(!strcmp(arg->long_name, cur + 2)) + { + /* check to see if arg needs value */ + if((arg->flags & ETK_ARGUMENT_FLAG_VALUE_REQUIRED) && + ((i + 1 < argc) || (tmp != NULL))) { - char *tmp = NULL; - char *tmp2; + char *val; - if(!arg->long_name) - continue; + if(!tmp) + val = argv[i + 1]; + else + val = tmp + 1; - /* check if arg if of the form --foo=bar */ - tmp = strchr(cur, '='); - if(tmp ) - { - tmp2 = cur; - cur = calloc(tmp - tmp2 + 1, sizeof(char)); - snprintf(cur, (tmp - tmp2 + 1) * sizeof(char), "%s", tmp2); - } - else - tmp = NULL; - - /* match found for long arg */ - if(!strcmp(arg->long_name, cur + 2)) - { - /* check to see if arg needs value */ - if((arg->flags & ETK_ARGUMENT_FLAG_VALUE_REQUIRED) && - ((i + 1 < argc) || (tmp != NULL))) - { - char *val; - - if(!tmp) - val = argv[i + 1]; - else - val = tmp + 1; - - /* if no value is present, report error */ - if(val[0] == '-') - { - printf(_("Argument %d '%s' requires a value\n"), i, cur); - return ETK_ARGUMENT_RETURN_REQUIRED_VALUE_NOT_FOUND; - } - - if(arg->data) - *(arg->data) = *val; - else - arg->data = val; - arg->flags |= ETK_ARGUMENT_FLAG_PRIV_SET; - - if(!tmp) - ++i; - } - else if (arg->flags & ETK_ARGUMENT_FLAG_VALUE_REQUIRED - && i + 1 >= argc) - { - /* if no value is present, report error */ - printf(_("Argument %d '%s' requires a value\n"), i, cur); - return ETK_ARGUMENT_RETURN_REQUIRED_VALUE_NOT_FOUND; - } - else if(!(arg->flags & ETK_ARGUMENT_FLAG_VALUE_REQUIRED)) - arg->flags |= ETK_ARGUMENT_FLAG_PRIV_SET; - } - - if(tmp) - { - free(cur); - cur = argv[i]; - } + /* if no value is present, report error */ + if(val[0] == '-') + { + printf(_("Argument %d '%s' requires a value\n"), i, cur); + return ETK_ARGUMENT_RETURN_REQUIRED_VALUE_NOT_FOUND; + } + + if(arg->data) + *(arg->data) = *val; + else + arg->data = val; + arg->flags |= ETK_ARGUMENT_FLAG_PRIV_SET; - ++arg; + if(!tmp) + ++i; + } + else if (arg->flags & ETK_ARGUMENT_FLAG_VALUE_REQUIRED + && i + 1 >= argc) + { + /* if no value is present, report error */ + printf(_("Argument %d '%s' requires a value\n"), i, cur); + return ETK_ARGUMENT_RETURN_REQUIRED_VALUE_NOT_FOUND; } - } - } + else if(!(arg->flags & ETK_ARGUMENT_FLAG_VALUE_REQUIRED)) + arg->flags |= ETK_ARGUMENT_FLAG_PRIV_SET; + } + + if(tmp) + { + free(cur); + cur = argv[i]; + } + + ++arg; + } + } + } /* check for required arguments */ i = 0; arg = args; while(arg->short_name != -1) - { - if(!(arg->flags & ETK_ARGUMENT_FLAG_PRIV_SET) && - arg->flags & ETK_ARGUMENT_FLAG_REQUIRED) - { - printf(_("Argument %d '-%c | --%s' is required\n"), i, arg->short_name, arg->long_name); - return ETK_ARGUMENT_RETURN_REQUIRED_NOT_FOUND; - } - ++i; ++arg; - } + { + if(!(arg->flags & ETK_ARGUMENT_FLAG_PRIV_SET) && + arg->flags & ETK_ARGUMENT_FLAG_REQUIRED) + { + printf(_("Argument %d '-%c | --%s' is required\n"), i, arg->short_name, arg->long_name); + return ETK_ARGUMENT_RETURN_REQUIRED_NOT_FOUND; + } + ++i; ++arg; + } /* call all the callbacks */ i = 0; arg = args; while(arg->short_name != -1) - { - if(arg->func && arg->flags & ETK_ARGUMENT_FLAG_PRIV_SET) - arg->func(args, i); - ++i; ++arg; - } + { + if(arg->func && arg->flags & ETK_ARGUMENT_FLAG_PRIV_SET) + arg->func(args, i); + ++i; ++arg; + } return ETK_ARGUMENT_RETURN_OK; } =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_dnd.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- etk_dnd.c 16 Feb 2006 01:40:16 -0000 1.10 +++ etk_dnd.c 2 Mar 2006 14:37:50 -0000 1.11 @@ -369,7 +369,7 @@ case ECORE_X_SELECTION_SECONDARY: sel = ev->data; - printf("secondary: %s %s\n", ev->target, sel->data); + //printf("secondary: %s %s\n", ev->target, sel->data); break; case ECORE_X_SELECTION_XDND: =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_notebook.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- etk_notebook.c 27 Feb 2006 22:00:16 -0000 1.9 +++ etk_notebook.c 2 Mar 2006 14:37:50 -0000 1.10 @@ -103,6 +103,28 @@ } /** + * @brief Delete the specified page of the notebook + * @param notebook a notebook + * @param page_num the number of the page to delete to + */ +void etk_notebook_page_remove(Etk_Notebook *notebook, int page_num) +{ + Evas_List *l; + Etk_Notebook_Page *page; + + if (!notebook || !(l = evas_list_nth_list(notebook->pages, page_num))) + return; + + page = l->data; + etk_widget_parent_set(page->page_frame, NULL); + etk_object_destroy(ETK_OBJECT(page->page_frame)); + etk_widget_parent_set(page->tab, NULL); + etk_object_destroy(ETK_OBJECT(page->tab)); + free(page); + notebook->pages = evas_list_remove_list(notebook->pages, l); +} + +/** * @brief Sets the label of the tab of a page of the notebook * @param notebook a notebook * @param page_num the number of the page to set the tab label to |
From: <enl...@li...> - 2006-03-02 14:38:23
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/data/themes/default/widgets Modified Files: tree.edc Log Message: - formatting - patch from ezek for etk_notebook_page_remove's implementation =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/data/themes/default/widgets/tree.edc,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- tree.edc 22 Feb 2006 22:31:03 -0000 1.12 +++ tree.edc 2 Mar 2006 14:37:50 -0000 1.13 @@ -30,6 +30,7 @@ } } FOCUS_GLOW(0.0, 0.0, -1, -1, "tree", 1.0, 1.0, 0, 0, "tree") + DRAG_GLOW(0.0, 0.0, -1, -1, "tree", 1.0, 1.0, 0, 0, "tree"); } programs { program { @@ -44,6 +45,24 @@ source: ""; UNFOCUS_GLOW_ACTION } + program { + name: "drag_enter"; + signal: "drag_enter"; + source: ""; + DRAG_ENTER_ACTION + } + program { + name: "drag_leave"; + signal: "drag_leave"; + source: ""; + DRAG_LEAVE_ACTION + } + program { + name: "drag_drop"; + signal: "drag_drop"; + source: ""; + DRAG_LEAVE_ACTION + } } } group { |
From: <enl...@li...> - 2006-03-03 11:43:39
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/lib Modified Files: etk_object.c Log Message: fix shutdown =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_object.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- etk_object.c 3 Mar 2006 10:04:27 -0000 1.14 +++ etk_object.c 3 Mar 2006 11:43:38 -0000 1.15 @@ -97,7 +97,7 @@ new_object = calloc(1,object_type->type_size); new_object->type = object_type; - _etk_object_created_objects = evas_hash_add(_etk_object_created_objects, (char*)new_object, (char*)1); + _etk_object_created_objects = evas_hash_add(_etk_object_created_objects, (char*)new_object, new_object); etk_type_object_construct(object_type, new_object); va_copy(args2, args); @@ -118,7 +118,7 @@ etk_signal_emit(_etk_object_signals[ETK_OBJECT_DESTROYED_SIGNAL], object, NULL); etk_type_destructors_call(object->type, object); - _etk_object_created_objects = evas_hash_del(_etk_object_created_objects, (char*)object, (char*)1); + _etk_object_created_objects = evas_hash_del(_etk_object_created_objects, (char*)object, object); free(object); } @@ -129,7 +129,7 @@ { // while (_etk_object_created_objects) // etk_object_destroy(ETK_OBJECT(_etk_object_created_objects->data)); - evas_hash_foreach(_etk_object_created_objects, _etk_object_hash_foreach, NULL); + evas_hash_foreach(_etk_object_created_objects, _etk_object_hash_foreach, NULL); } void *etk_object_lookup(Etk_Object *object) @@ -624,7 +624,8 @@ /* Used when we want to iterate over the hash to destroy all objects */ static Evas_Bool _etk_object_hash_foreach(Evas_Hash *hash, const char *key, void *data, void *fdata) { - etk_object_destroy(ETK_OBJECT(key)); + /* destroying using the void *data seems to work better */ + etk_object_destroy(ETK_OBJECT(data)); return 1; } |
From: <enl...@li...> - 2006-03-03 13:23:17
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/lib Modified Files: etk_object.c etk_widget.c Log Message: use list and hash implementation for performance and accuracy =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_object.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- etk_object.c 3 Mar 2006 11:43:38 -0000 1.15 +++ etk_object.c 3 Mar 2006 13:23:11 -0000 1.16 @@ -31,7 +31,8 @@ static Evas_Bool _etk_object_data_free_cb(Evas_Hash *hash, const char *key, void *data, void *fdata); static Evas_Bool _etk_object_hash_foreach(Evas_Hash *hash, const char *key, void *data, void *fdata); -static Evas_Hash *_etk_object_created_objects = NULL; +static Evas_List *_etk_object_created_objects = NULL; +static Evas_Hash *_etk_object_created_objects_hash = NULL; static Etk_Signal *_etk_object_signals[ETK_OBJECT_NUM_SIGNALS]; /************************** @@ -97,7 +98,8 @@ new_object = calloc(1,object_type->type_size); new_object->type = object_type; - _etk_object_created_objects = evas_hash_add(_etk_object_created_objects, (char*)new_object, new_object); + _etk_object_created_objects = evas_list_append(_etk_object_created_objects, new_object); + _etk_object_created_objects_hash = evas_hash_add(_etk_object_created_objects_hash, new_object, new_object); etk_type_object_construct(object_type, new_object); va_copy(args2, args); @@ -118,7 +120,8 @@ etk_signal_emit(_etk_object_signals[ETK_OBJECT_DESTROYED_SIGNAL], object, NULL); etk_type_destructors_call(object->type, object); - _etk_object_created_objects = evas_hash_del(_etk_object_created_objects, (char*)object, object); + _etk_object_created_objects = evas_list_remove(_etk_object_created_objects, object); + _etk_object_created_objects_hash = evas_hash_del(_etk_object_created_objects_hash, object, object); free(object); } @@ -127,14 +130,17 @@ */ void etk_object_destroy_all_objects() { -// while (_etk_object_created_objects) -// etk_object_destroy(ETK_OBJECT(_etk_object_created_objects->data)); - evas_hash_foreach(_etk_object_created_objects, _etk_object_hash_foreach, NULL); + while (_etk_object_created_objects) + etk_object_destroy(ETK_OBJECT(_etk_object_created_objects->data)); } +/* + * @brief Looks up an object so we know if it exists + * @param object the object we want to find + */ void *etk_object_lookup(Etk_Object *object) { - return evas_hash_find(_etk_object_created_objects, (char *)object); + return evas_hash_find(_etk_object_created_objects_hash, object); } /** @@ -621,12 +627,4 @@ return 1; } -/* Used when we want to iterate over the hash to destroy all objects */ -static Evas_Bool _etk_object_hash_foreach(Evas_Hash *hash, const char *key, void *data, void *fdata) -{ - /* destroying using the void *data seems to work better */ - etk_object_destroy(ETK_OBJECT(data)); - return 1; -} - /** @} */ =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_widget.c,v retrieving revision 1.43 retrieving revision 1.44 diff -u -3 -r1.43 -r1.44 --- etk_widget.c 3 Mar 2006 10:04:27 -0000 1.43 +++ etk_widget.c 3 Mar 2006 13:23:12 -0000 1.44 @@ -1938,7 +1938,7 @@ etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_IN_SIGNAL], ETK_OBJECT(widget), NULL, &event); - if (_etk_widget_propagate_event && widget->parent) + if (_etk_widget_propagate_event && widget->parent && etk_object_lookup(ETK_OBJECT(widget))) _etk_widget_mouse_in_cb(widget->parent, evas, NULL, event_info); } @@ -1974,7 +1974,7 @@ etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_OUT_SIGNAL], ETK_OBJECT(widget), NULL, &event); - if (_etk_widget_propagate_event && widget->parent) + if (_etk_widget_propagate_event && widget->parent && etk_object_lookup(ETK_OBJECT(widget))) _etk_widget_mouse_out_cb(widget->parent, evas, NULL, event_info); } @@ -2014,7 +2014,7 @@ etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_MOVE_SIGNAL], ETK_OBJECT(widget), NULL, &event); - if (_etk_widget_propagate_event && widget->parent) + if (_etk_widget_propagate_event && widget->parent && etk_object_lookup(ETK_OBJECT(widget))) _etk_widget_mouse_move_cb(widget->parent, evas, NULL, event_info); } @@ -2082,11 +2082,14 @@ etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_UP_SIGNAL], ETK_OBJECT(widget), NULL, &event); + if(!etk_object_lookup(ETK_OBJECT(widget))) + return; + if (evas_event->canvas.x >= widget->geometry.x && evas_event->canvas.x <= widget->geometry.x + widget->geometry.w && evas_event->canvas.y >= widget->geometry.y && evas_event->canvas.y <= widget->geometry.y + widget->geometry.h) etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_CLICK_SIGNAL], ETK_OBJECT(widget), NULL, &event); - if (_etk_widget_propagate_event && widget->repeat_events && widget->parent && etk_object_lookup(ETK_OBJECT(widget))) + if (_etk_widget_propagate_event && widget->repeat_events && widget->parent) _etk_widget_mouse_up_cb(widget->parent, evas, NULL, event_info); } @@ -2115,7 +2118,7 @@ etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_WHEEL_SIGNAL], ETK_OBJECT(widget), NULL, &event); - if (_etk_widget_propagate_event && widget->parent) + if (_etk_widget_propagate_event && widget->parent && etk_object_lookup(ETK_OBJECT(widget))) _etk_widget_mouse_wheel_cb(widget->parent, evas, NULL, event_info); } @@ -2142,7 +2145,7 @@ etk_signal_emit(_etk_widget_signals[ETK_WIDGET_KEY_DOWN_SIGNAL], ETK_OBJECT(widget), NULL, &event); - if (_etk_widget_propagate_event && widget->parent) + if (_etk_widget_propagate_event && widget->parent && etk_object_lookup(ETK_OBJECT(widget))) _etk_widget_key_down_cb(widget->parent, evas, NULL, event_info); } @@ -2195,7 +2198,7 @@ etk_signal_emit(_etk_widget_signals[ETK_WIDGET_KEY_UP_SIGNAL], ETK_OBJECT(widget), NULL, &event); - if (_etk_widget_propagate_event && widget->parent) + if (_etk_widget_propagate_event && widget->parent && etk_object_lookup(ETK_OBJECT(widget))) _etk_widget_key_up_cb(widget->parent, evas, NULL, event_info); } |
From: <enl...@li...> - 2006-03-05 01:02:51
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/extrackt/src/bin/etk_fe Modified Files: gui.c Log Message: update menus =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/extrackt/src/bin/etk_fe/gui.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- gui.c 18 Feb 2006 12:45:54 -0000 1.3 +++ gui.c 5 Mar 2006 01:02:49 -0000 1.4 @@ -226,10 +226,10 @@ switch (item_type) { case E_GUI_MENU_ITEM_NORMAL: - menu_item = etk_menu_item_new_with_label(label); + menu_item = etk_menu_item_image_new_with_label(label); break; case E_GUI_MENU_ITEM_SEPERATOR: - menu_item = etk_menu_separator_new(); + menu_item = etk_menu_item_separator_new(); break; default: return NULL; @@ -662,7 +662,7 @@ for(l = gui->ex->config.rippers; l; l=l->next) { ecx = (Ex_Config_Exe *)l->data; - _etk_fe_gui_menu_item_new(E_GUI_MENU_ITEM_NORMAL, _(ecx->name), ETK_MENU_SHELL(gui->ripper_menu), _etk_fe_gui_ripper_select_cb, gui); + _etk_fe_gui_menu_item_new(E_GUI_MENU_ITEM_NORMAL, _(ecx->name), ETK_MENU_SHELL(gui->ripper_menu), ETK_CALLBACK(_etk_fe_gui_ripper_select_cb), gui); } /* FIXME we should save the last selected * fill the values for the first */ |
From: <enl...@li...> - 2006-03-05 01:02:54
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/exhibit/src/bin Modified Files: exhibit_main.c exhibit_menus.c exhibit_tab.c Log Message: update menus =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_main.c,v retrieving revision 1.42 retrieving revision 1.43 diff -u -3 -r1.42 -r1.43 --- exhibit_main.c 3 Mar 2006 11:54:22 -0000 1.42 +++ exhibit_main.c 5 Mar 2006 01:02:50 -0000 1.43 @@ -732,7 +732,7 @@ Ex_Tab *tab; char *file; char *homedir; - char **dnd_types; + const char **dnd_types; int dnd_types_num; e = calloc(1, sizeof(Exhibit)); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_menus.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- exhibit_menus.c 3 Mar 2006 00:44:37 -0000 1.16 +++ exhibit_menus.c 5 Mar 2006 01:02:50 -0000 1.17 @@ -26,10 +26,10 @@ switch (item_type) { case EX_MENU_ITEM_NORMAL: - menu_item = etk_menu_item_new_with_label(label); + menu_item = etk_menu_item_image_new_with_label(label); break; case EX_MENU_ITEM_SEPERATOR: - menu_item = etk_menu_separator_new(); + menu_item = etk_menu_item_separator_new(); break; default: return NULL; @@ -40,7 +40,7 @@ Etk_Widget *image; image = etk_image_new_from_stock(stock_id, ETK_STOCK_SMALL); - etk_menu_item_image_set(ETK_MENU_ITEM(menu_item), ETK_IMAGE(image)); + etk_menu_item_image_set(ETK_MENU_ITEM_IMAGE(menu_item), ETK_IMAGE(image)); } else if (stock_id < ETK_STOCK_NO_STOCK) { @@ -52,7 +52,7 @@ image = etk_image_new_from_edje(PACKAGE_DATA_DIR "/images/images.edj", ex_images[stock_id]); - etk_menu_item_image_set(ETK_MENU_ITEM(menu_item), ETK_IMAGE(image)); + etk_menu_item_image_set(ETK_MENU_ITEM_IMAGE(menu_item), ETK_IMAGE(image)); } } etk_menu_shell_append(menu_shell, ETK_MENU_ITEM(menu_item)); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_tab.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- exhibit_tab.c 23 Feb 2006 13:20:44 -0000 1.9 +++ exhibit_tab.c 5 Mar 2006 01:02:50 -0000 1.10 @@ -103,7 +103,7 @@ Ex_Tab *tab; Etk_Tree *tree; Etk_Tree_Row *row; - Etk_Drag *drag; + Etk_Widget *drag; Etk_Widget *image; Evas_List *rows; char *icol1_string; @@ -137,7 +137,7 @@ drag_data = calloc(PATH_MAX * evas_list_count(rows), sizeof(char)); for(ll = rows; ll; ll = ll->next) { - char *tmp[PATH_MAX]; + char tmp[PATH_MAX]; row = ll->data; etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), &icol1_string, &icol2_string, etk_tree_nth_col_get(tree, 1),NULL); @@ -176,6 +176,6 @@ etk_container_add(ETK_CONTAINER(drag), image); } - etk_drag_types_set(drag, types, num_types); - etk_drag_data_set(drag, drag_data, strlen(drag_data) + 1); + etk_drag_types_set(ETK_DRAG(drag), types, num_types); + etk_drag_data_set(ETK_DRAG(drag), drag_data, strlen(drag_data) + 1); } |
From: <enl...@li...> - 2006-03-06 19:37:15
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/lib Modified Files: etk_window.c Log Message: fix center =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_window.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- etk_window.c 6 Mar 2006 00:04:43 -0000 1.15 +++ etk_window.c 6 Mar 2006 19:37:12 -0000 1.16 @@ -220,8 +220,8 @@ /* TODO: will it work with multiscreen? */ ecore_x_window_geometry_get(ecore_x_window_root_first_get(), &x, &y, &w, &h); - ecore_evas_geometry_get(window->ecore_evas, NULL, NULL, &cw, &ch); - ecore_evas_move(window->ecore_evas, x + (w - cw) / 2, y + (h - ch) / 2); + ecore_evas_geometry_get(window_to_center->ecore_evas, NULL, NULL, &cw, &ch); + ecore_evas_move(window_to_center->ecore_evas, x + (w - cw) / 2, y + (h - ch) / 2); } } |
From: <enl...@li...> - 2006-03-06 22:49:16
|
Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto Dir : e17/proto/etk/src/lib Modified Files: etk_filechooser_widget.c etk_tooltips.c etk_tooltips.h etk_tree.c Log Message: - more tooltip work - trying out tooltips on trees using the file selector, not 100% bug free - make the action/go_up button in the filechooser work =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_filechooser_widget.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- etk_filechooser_widget.c 12 Feb 2006 12:27:49 -0000 1.7 +++ etk_filechooser_widget.c 6 Mar 2006 22:49:11 -0000 1.8 @@ -4,6 +4,7 @@ #include <stdio.h> #include <string.h> #include <limits.h> +#include <Ecore.h> #include <Ecore_Data.h> #include <Ecore_File.h> #include "etk_theme.h" @@ -16,6 +17,7 @@ #include "etk_box.h" #include "etk_hbox.h" #include "etk_vbox.h" +#include "etk_tooltips.h" #include "config.h" /* OS-specific to list the mount points */ @@ -63,6 +65,8 @@ static void _etk_filechooser_widget_place_activated_cb(Etk_Object *object, Etk_Tree_Row *row, void *data); static void _etk_filechooser_widget_fav_activated_cb(Etk_Object *object, Etk_Tree_Row *row, void *data); static void _etk_filechooser_widget_file_activated_cb(Etk_Object *object, Etk_Tree_Row *row, void *data); +static void _etk_filechooser_files_tree_row_mouse_in_cb(Etk_Object *object, Etk_Tree_Row *row, void *data); +static void _etk_filechooser_files_tree_row_mouse_out_cb(Etk_Object *object, Etk_Tree_Row *row, void *data); static void _etk_filechooser_widget_places_tree_fill(Etk_Filechooser_Widget *fcw); static void _etk_filechooser_widget_favs_tree_fill(Etk_Filechooser_Widget *fcw); @@ -92,6 +96,9 @@ static int _etk_filechooser_num_unsupported_fs = sizeof(_etk_filechooser_unsupported_fs) / sizeof (_etk_filechooser_unsupported_fs[0]); /* static Etk_Signal *_etk_filechooser_widget_signals[ETK_FILECHOOSER_WIDGET_NUM_SIGNALS]; */ +static Ecore_Timer *_etk_filechooser_timer = NULL; +static char _etk_filechooser_tooltip_text[PATH_MAX + 128]; + /************************** * * Implementation @@ -341,6 +348,8 @@ etk_widget_show(fcw->files_tree); etk_widget_visibility_locked_set(fcw->files_tree, ETK_TRUE); etk_signal_connect("row_activated", ETK_OBJECT(fcw->files_tree), ETK_CALLBACK(_etk_filechooser_widget_file_activated_cb), fcw); + etk_signal_connect("row_mouse_in", ETK_OBJECT(fcw->files_tree), ETK_CALLBACK(_etk_filechooser_files_tree_row_mouse_in_cb), fcw); + etk_signal_connect("row_mouse_out", ETK_OBJECT(fcw->files_tree), ETK_CALLBACK(_etk_filechooser_files_tree_row_mouse_out_cb), fcw); _etk_filechooser_widget_places_tree_fill(ETK_FILECHOOSER_WIDGET(fcw)); _etk_filechooser_widget_favs_tree_fill(ETK_FILECHOOSER_WIDGET(fcw)); @@ -349,7 +358,7 @@ etk_filechooser_widget_current_folder_set(ETK_FILECHOOSER_WIDGET(fcw), NULL); } -/* Destroys the status bar */ +/* Destroys the file chooser */ static void _etk_filechooser_widget_destructor(Etk_Filechooser_Widget *filechooser_widget) { if (!filechooser_widget) @@ -437,7 +446,12 @@ return; if (strcmp(selected_dir, "..") == 0) - ; + { + char back[PATH_MAX]; + + snprintf(back, PATH_MAX, "%s/..", filechooser_widget->current_folder); + etk_filechooser_widget_current_folder_set(filechooser_widget, back); + } else etk_filechooser_widget_current_folder_set(filechooser_widget, selected_dir); } @@ -464,6 +478,11 @@ etk_tree_row_fields_get(row, filechooser_widget->files_name_col, NULL, NULL, &selected_file, NULL); snprintf(file_path, PATH_MAX, "%s/%s", filechooser_widget->current_folder, selected_file); + + if(_etk_filechooser_timer) + ecore_timer_del(_etk_filechooser_timer); + _etk_filechooser_timer = NULL; + etk_tooltips_pop_down(); if (ecore_file_exists(file_path)) { @@ -474,6 +493,54 @@ } } +static int _etk_filechooser_timer_cb(void *data) +{ + Etk_Filechooser_Widget *fcw; + + _etk_filechooser_timer = NULL; + + if (!(fcw = ETK_FILECHOOSER_WIDGET(data))) + return 0; + + etk_tooltips_tip_set(ETK_WIDGET(fcw), _etk_filechooser_tooltip_text); + return 0; +} + +/* Called when the mouse enters a row */ +static void _etk_filechooser_files_tree_row_mouse_in_cb(Etk_Object *object, Etk_Tree_Row *row, void *data) +{ + Etk_Filechooser_Widget *fcw; + char *selected_file; + char file_path[PATH_MAX]; + + if (!(fcw = ETK_FILECHOOSER_WIDGET(data))) + return; + + etk_tree_row_fields_get(row, fcw->files_name_col, NULL, NULL, &selected_file, NULL); + + snprintf(file_path, PATH_MAX, "%s/%s", fcw->current_folder, selected_file); + if(!ecore_file_exists(file_path)) + return; + + snprintf(_etk_filechooser_tooltip_text, sizeof(_etk_filechooser_tooltip_text), " %s <br> %d Kb <br> ", selected_file, ecore_file_size(file_path) / 1024); + + _etk_filechooser_timer = ecore_timer_add(0.08, _etk_filechooser_timer_cb, fcw); +} + +/* Called when the mouse leaves a row */ +static void _etk_filechooser_files_tree_row_mouse_out_cb(Etk_Object *object, Etk_Tree_Row *row, void *data) +{ + Etk_Filechooser_Widget *fcw; + + if (!(fcw = ETK_FILECHOOSER_WIDGET(data))) + return; + + if(_etk_filechooser_timer) + ecore_timer_del(_etk_filechooser_timer); + _etk_filechooser_timer = NULL; + etk_tooltips_tip_set(ETK_WIDGET(fcw), NULL); +} + /************************** * * Private functions =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tooltips.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- etk_tooltips.c 6 Mar 2006 00:15:22 -0000 1.2 +++ etk_tooltips.c 6 Mar 2006 22:49:12 -0000 1.3 @@ -22,12 +22,14 @@ static void _etk_tooltips_mouse_out_cb(Etk_Object *object, Etk_Event_Mouse_In_Out *event, void *data); static void _etk_tooltips_mouse_move_cb(Etk_Object *object, Etk_Event_Mouse_Move *event, void *data); static void _etk_tooltips_mouse_down_cb(Etk_Object *object, void *event, void *data); +static void _etk_tooltips_mouse_wheel_cb(Etk_Object *object, void *event, void *data); static void _etk_tooltips_key_down_cb(Etk_Object *object, void *event, void *data); static void _etk_tooltips_widget_unrealize_cb(Etk_Object *object, void *data); static int _etk_tooltips_timer_cb(void *data); static Etk_Widget *_etk_tooltips_window = NULL; static Etk_Widget *_etk_tooltips_label = NULL; +static Etk_Object *_etk_tooltips_cur_object = NULL; static double _etk_tooltips_delay = 1.0; static Etk_Bool _etk_tooltips_enabled = ETK_FALSE; static Etk_Bool _etk_tooltips_initialized = ETK_FALSE; @@ -107,21 +109,41 @@ key = calloc(32, sizeof(char)); snprintf(key, 32 * sizeof(char), "%p", widget); + if((tip_text = evas_hash_find(_etk_tooltips_hash, key)) != NULL) { - free(tip_text); - tip_text = strdup(text); - _etk_tooltips_hash = evas_hash_modify(_etk_tooltips_hash, key, tip_text); + if(text == NULL) + { + _etk_tooltips_hash = evas_hash_del(_etk_tooltips_hash, key, tip_text); + etk_signal_disconnect("mouse_in", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_in_cb)); + etk_signal_disconnect("mouse_out", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_out_cb)); + etk_signal_disconnect("mouse_move", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_move_cb)); + etk_signal_disconnect("mouse_down", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_down_cb)); + etk_signal_disconnect("mouse_wheel", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_wheel_cb)); + etk_signal_disconnect("key_down", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_key_down_cb)); + etk_signal_disconnect("unrealize", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_widget_unrealize_cb)); + free(tip_text); + } + else + { + free(tip_text); + tip_text = strdup(text); + _etk_tooltips_hash = evas_hash_modify(_etk_tooltips_hash, key, tip_text); + } } else { - _etk_tooltips_hash = evas_hash_add(_etk_tooltips_hash, key, strdup(text)); - etk_signal_connect("mouse_in", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_in_cb), NULL); - etk_signal_connect("mouse_out", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_out_cb), NULL); - etk_signal_connect("mouse_move", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_move_cb), NULL); - etk_signal_connect("mouse_down", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_down_cb), NULL); - etk_signal_connect("key_down", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_key_down_cb), NULL); - etk_signal_connect("unrealize", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_widget_unrealize_cb), NULL); + if(text != NULL) + { + _etk_tooltips_hash = evas_hash_add(_etk_tooltips_hash, key, strdup(text)); + etk_signal_connect("mouse_in", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_in_cb), NULL); + etk_signal_connect("mouse_out", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_out_cb), NULL); + etk_signal_connect("mouse_move", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_move_cb), NULL); + etk_signal_connect("mouse_down", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_down_cb), NULL); + etk_signal_connect("mouse_wheel", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_wheel_cb), NULL); + etk_signal_connect("key_down", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_key_down_cb), NULL); + etk_signal_connect("unrealize", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_widget_unrealize_cb), NULL); + } } free(key); } @@ -147,40 +169,36 @@ return NULL; } -static void _etk_tooltips_mouse_in_cb(Etk_Object *object, Etk_Event_Mouse_In_Out *event, void *data) -{ -#if HAVE_ECORE_X - if(!_etk_tooltips_enabled) - return; - - _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, object); -#endif -} - -static int _etk_tooltips_timer_cb(void *data) +/** + * @brief Instantly pop up the tooltip if applicable + * @param widget the widget we want to pop up on + */ +void etk_tooltips_pop_up(Etk_Widget *widget) { #if HAVE_ECORE_X - const char *text; + const char *text = NULL; int x, y; char *key; + + if(!ETK_IS_OBJECT(widget)) + return; key = calloc(32, sizeof(char)); - snprintf(key, 32 * sizeof(char), "%p", data); + snprintf(key, 32 * sizeof(char), "%p", ETK_OBJECT(widget)); if((text = evas_hash_find(_etk_tooltips_hash, key)) == NULL) { free(key); _etk_tooltips_timer = NULL; - return 0; - } - + return; + } + { /* We are doing this because if the label / window grow, then are not shrinking anymore */ - etk_object_destroy(ETK_OBJECT(_etk_tooltips_window)); + etk_object_destroy(ETK_OBJECT(_etk_tooltips_window)); _etk_tooltips_window = etk_widget_new(ETK_WINDOW_TYPE, "theme_group", "tooltip", "decorated", ETK_FALSE, "skip_taskbar", ETK_TRUE, "skip_pager", ETK_TRUE, NULL); - + _etk_tooltips_label = etk_label_new(NULL); - etk_container_add(ETK_CONTAINER(_etk_tooltips_window), _etk_tooltips_label); - + etk_container_add(ETK_CONTAINER(_etk_tooltips_window), _etk_tooltips_label); } etk_label_set(ETK_LABEL(_etk_tooltips_label), text); @@ -190,51 +208,96 @@ etk_widget_show_all(_etk_tooltips_window); free(key); #endif - _etk_tooltips_timer = NULL; + _etk_tooltips_timer = NULL; +} + +/** + * @brief Instantly pop down the tooltip if applicable + */ +void etk_tooltips_pop_down() +{ + if(!_etk_tooltips_enabled) + return; + + etk_widget_hide(_etk_tooltips_window); + if(_etk_tooltips_timer) + ecore_timer_del(_etk_tooltips_timer); + _etk_tooltips_cur_object = NULL; +} + +/* Callback for when the mouse enters a widget */ +static void _etk_tooltips_mouse_in_cb(Etk_Object *object, Etk_Event_Mouse_In_Out *event, void *data) +{ +#if HAVE_ECORE_X + if(!_etk_tooltips_enabled || !ETK_IS_OBJECT(object)) + return; + + _etk_tooltips_cur_object = object; + _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, NULL); +#endif +} + +/* Timer callback, pops up the tooltip */ +static int _etk_tooltips_timer_cb(void *data) +{ + etk_tooltips_pop_up(ETK_WIDGET(_etk_tooltips_cur_object)); return 0; } +/* Callback for when the mouse leave the widget */ static void _etk_tooltips_mouse_out_cb(Etk_Object *object, Etk_Event_Mouse_In_Out *event, void *data) { if(!_etk_tooltips_enabled) return; - ecore_timer_del(_etk_tooltips_timer); + etk_tooltips_pop_down(); } +/* Callback for when the mouse moves on the widget */ static void _etk_tooltips_mouse_move_cb(Etk_Object *object, Etk_Event_Mouse_Move *event, void *data) { if(!_etk_tooltips_enabled) return; - etk_widget_hide(_etk_tooltips_window); - if(_etk_tooltips_timer) - ecore_timer_del(_etk_tooltips_timer); - _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, object); + etk_tooltips_pop_down(); + _etk_tooltips_cur_object = object; + _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, NULL); } +/* Callback for when the mouse clicks the widget */ static void _etk_tooltips_mouse_down_cb(Etk_Object *object, void *event, void *data) { if(!_etk_tooltips_enabled) return; - etk_widget_hide(_etk_tooltips_window); - if(_etk_tooltips_timer) - ecore_timer_del(_etk_tooltips_timer); - _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, object); + etk_tooltips_pop_down(); + _etk_tooltips_cur_object = object; + _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, NULL); +} + +/* Callback for when the mouse wheel is moved on the widget */ +static void _etk_tooltips_mouse_wheel_cb(Etk_Object *object, void *event, void *data) +{ + if(!_etk_tooltips_enabled) + return; + + etk_tooltips_pop_down(); + _etk_tooltips_cur_object = object; + _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, NULL); } +/* Callback for when the a key is pressed on the widget */ static void _etk_tooltips_key_down_cb(Etk_Object *object, void *event, void *data) { if(!_etk_tooltips_enabled) return; - etk_widget_hide(_etk_tooltips_window); - if(_etk_tooltips_timer) - ecore_timer_del(_etk_tooltips_timer); - _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, object); + etk_tooltips_pop_down(); + _etk_tooltips_cur_object = object; + _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, NULL); } +/* Callback for when the widget is unrealized */ static void _etk_tooltips_widget_unrealize_cb(Etk_Object *object, void *data) { char *key; =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tooltips.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- etk_tooltips.h 5 Mar 2006 23:52:58 -0000 1.1 +++ etk_tooltips.h 6 Mar 2006 22:49:12 -0000 1.2 @@ -17,6 +17,8 @@ void etk_tooltips_tip_set(Etk_Widget *widget, const char *text); const char *etk_tooltips_tip_get(Etk_Widget *widget); +void etk_tooltips_pop_up(Etk_Widget *widget); +void etk_tooltips_pop_down(); /** @} */ =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tree.c,v retrieving revision 1.54 retrieving revision 1.55 diff -u -3 -r1.54 -r1.55 --- etk_tree.c 4 Mar 2006 23:29:47 -0000 1.54 +++ etk_tree.c 6 Mar 2006 22:49:12 -0000 1.55 @@ -60,6 +60,8 @@ ETK_TREE_ROW_ACTIVATED_SIGNAL, ETK_TREE_ROW_EXPANDED_SIGNAL, ETK_TREE_ROW_COLLAPSED_SIGNAL, + ETK_TREE_ROW_MOUSE_IN_SIGNAL, + ETK_TREE_ROW_MOUSE_OUT_SIGNAL, ETK_TREE_SELECT_ALL_SIGNAL, ETK_TREE_UNSELECT_ALL_SIGNAL, ETK_TREE_NUM_SIGNALS @@ -116,6 +118,8 @@ static void _etk_tree_row_pressed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _etk_tree_row_clicked_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _etk_tree_row_mouse_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _etk_tree_row_mouse_in_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _etk_tree_row_mouse_out_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _etk_tree_focus_cb(Etk_Object *object, void *event, void *data); static void _etk_tree_unfocus_cb(Etk_Object *object, void *event, void *data); static void _etk_tree_key_down_cb(Etk_Object *object, void *event, void *data); @@ -173,6 +177,8 @@ _etk_tree_signals[ETK_TREE_ROW_ACTIVATED_SIGNAL] = etk_signal_new("row_activated", tree_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); _etk_tree_signals[ETK_TREE_ROW_EXPANDED_SIGNAL] = etk_signal_new("row_expaned", tree_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); _etk_tree_signals[ETK_TREE_ROW_COLLAPSED_SIGNAL] = etk_signal_new("row_collapsed", tree_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); + _etk_tree_signals[ETK_TREE_ROW_MOUSE_IN_SIGNAL] = etk_signal_new("row_mouse_in", tree_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); + _etk_tree_signals[ETK_TREE_ROW_MOUSE_OUT_SIGNAL] = etk_signal_new("row_mouse_out", tree_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); _etk_tree_signals[ETK_TREE_SELECT_ALL_SIGNAL] = etk_signal_new("select_all", tree_type, -1, etk_marshaller_VOID__VOID, NULL, NULL); _etk_tree_signals[ETK_TREE_UNSELECT_ALL_SIGNAL] = etk_signal_new("unselect_all", tree_type, -1, etk_marshaller_VOID__VOID, NULL, NULL); @@ -1922,7 +1928,7 @@ event.modifiers = evas_event->modifiers; event.locks = evas_event->locks; event.flags = evas_event->flags; - event.timestamp = evas_event->timestamp; + event.timestamp = evas_event->timestamp; if(!row_objects->row->tree->dnd_event) { @@ -2005,11 +2011,61 @@ if(ev->buttons & 0x001 && !_etk_tree_drag_started) { - Etk_Drag *drag; + Etk_Widget *drag; _etk_tree_drag_started = ETK_TRUE; drag = (ETK_WIDGET(row_objects->row->tree))->drag; - etk_drag_begin(drag); + etk_drag_begin(ETK_DRAG(drag)); + } +} + +/* Called when the mouse moves into a row */ +static void _etk_tree_row_mouse_in_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Etk_Event_Mouse_In_Out event; + Evas_Event_Mouse_In *evas_event; + Etk_Tree_Row_Objects *row_objects; + + evas_event = event_info; + if (!(row_objects = data) || !row_objects->row) + return; + + event.canvas.x = evas_event->canvas.x; + event.canvas.y = evas_event->canvas.y; + event.widget.x = evas_event->canvas.x - ETK_WIDGET(row_objects->row->tree)->inner_geometry.x; + event.widget.y = evas_event->canvas.y - ETK_WIDGET(row_objects->row->tree)->inner_geometry.y; + event.modifiers = evas_event->modifiers; + event.locks = evas_event->locks; + event.timestamp = evas_event->timestamp; + + if(!_etk_tree_drag_started) + { + etk_signal_emit(_etk_tree_signals[ETK_TREE_ROW_MOUSE_IN_SIGNAL], ETK_OBJECT(row_objects->row->tree), NULL, row_objects->row, &event); + } +} + +/* Called when the mouse moves outside a row */ +static void _etk_tree_row_mouse_out_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Etk_Event_Mouse_In_Out event; + Evas_Event_Mouse_Out *evas_event; + Etk_Tree_Row_Objects *row_objects; + + evas_event = event_info; + if (!(row_objects = data) || !row_objects->row) + return; + + event.canvas.x = evas_event->canvas.x; + event.canvas.y = evas_event->canvas.y; + event.widget.x = evas_event->canvas.x - ETK_WIDGET(row_objects->row->tree)->inner_geometry.x; + event.widget.y = evas_event->canvas.y - ETK_WIDGET(row_objects->row->tree)->inner_geometry.y; + event.modifiers = evas_event->modifiers; + event.locks = evas_event->locks; + event.timestamp = evas_event->timestamp; + + if(!_etk_tree_drag_started) + { + etk_signal_emit(_etk_tree_signals[ETK_TREE_ROW_MOUSE_OUT_SIGNAL], ETK_OBJECT(row_objects->row->tree), NULL, row_objects->row, &event); } } @@ -2581,6 +2637,8 @@ evas_object_event_callback_add(new_row_objects->background, EVAS_CALLBACK_MOUSE_DOWN, _etk_tree_row_pressed_cb, new_row_objects); evas_object_event_callback_add(new_row_objects->background, EVAS_CALLBACK_MOUSE_UP, _etk_tree_row_clicked_cb, new_row_objects); evas_object_event_callback_add(new_row_objects->background, EVAS_CALLBACK_MOUSE_MOVE, _etk_tree_row_mouse_move_cb, new_row_objects); + evas_object_event_callback_add(new_row_objects->background, EVAS_CALLBACK_MOUSE_IN, _etk_tree_row_mouse_in_cb, new_row_objects); + evas_object_event_callback_add(new_row_objects->background, EVAS_CALLBACK_MOUSE_OUT, _etk_tree_row_mouse_out_cb, new_row_objects); etk_widget_member_object_add(tree->grid, new_row_objects->background); /* Creates the expander of the row */ |