Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.c e_entry_dialog.c e_entry_dialog.h e_fm.c e_fm.h e_int_config_wallpaper_import.c e_int_menus.c e_widget_framelist.c e_widget_frametable.c e_widget_fsel.c e_widget_slider.c Log Message: * border property patch - dont generate on moves * entry dialog becomes object - supports initial text contents of the entry * fm2 gets menu patch (heavily worked so its safe) so u can delete and rename files (and dirs) that you have permission to do so with. * picutre importing disables or enables the scale and encoding stuff depending on what is selected * more widgets support enable/disable * importer detects duaplicate destination target filenames and tries alternate names. * fsel widget displays extensions by default. * test filemanager menu gone * pants on! =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.521 retrieving revision 1.522 diff -u -3 -r1.521 -r1.522 --- e_border.c 7 Aug 2006 20:25:34 -0000 1.521 +++ e_border.c 12 Aug 2006 12:49:52 -0000 1.522 @@ -4663,10 +4663,12 @@ static void _e_border_eval(E_Border *bd) -{ +{ E_Event_Border_Property *event; int change_urgent = 0; int rem_change = 0; + int send_event = 1; + /* fetch any info queued to be fetched */ if (bd->client.icccm.fetch.client_leader) @@ -5834,6 +5836,7 @@ e_container_shape_move(bd->shape, bd->x, bd->y); bd->changes.pos = 0; rem_change = 1; + send_event = 0; } else if (bd->changes.size) { @@ -6223,11 +6226,13 @@ if ((bd->remember) && (rem_change)) e_remember_update(bd->remember, bd); - - event = calloc(1, sizeof(E_Event_Border_Property)); - event->border = bd; - e_object_ref(E_OBJECT(bd)); - ecore_event_add(E_EVENT_BORDER_PROPERTY, event, _e_border_event_border_property_free, NULL); + if(send_event) + { + event = calloc(1, sizeof(E_Event_Border_Property)); + event->border = bd; + e_object_ref(E_OBJECT(bd)); + ecore_event_add(E_EVENT_BORDER_PROPERTY, event, _e_border_event_border_property_free, NULL); + } } static void =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_entry_dialog.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_entry_dialog.c 2 Jun 2006 19:07:50 -0000 1.1 +++ e_entry_dialog.c 12 Aug 2006 12:49:52 -0000 1.2 @@ -1,32 +1,16 @@ #include "e.h" -typedef struct _E_Entry_Dialog E_Entry_Dialog; -struct _E_Entry_Dialog -{ - struct - { - void *data; - void (*func)(char *text, void *data); - } ok; - struct - { - void *data; - void (*func)(void *data); - } cancel; - E_Dialog *dia; - Evas_Object *entry; - char *text; -}; - /* Private function definitions */ -static void _e_entry_dialog_delete(E_Win *win); +static void _e_entry_dialog_free(E_Entry_Dialog *dia); static void _e_entry_dialog_ok(void *data, E_Dialog *dia); static void _e_entry_dialog_cancel(void *data, E_Dialog *dia); +static void _e_entry_dialog_delete(E_Win *win); /* Externally accesible functions */ -EAPI void -e_entry_dialog_show(const char *title, const char *icon, const char *text, - const char *button_text, const char *button2_text, +EAPI E_Entry_Dialog * +e_entry_dialog_show(const char *title, const char *icon, const char *text, + const char *initial_text, + const char *button_text, const char *button2_text, void (*func)(char *text, void *data), void (*func2)(void *data), void *data) { @@ -34,12 +18,13 @@ E_Dialog *dia; Evas_Object *o, *ob; int w, h; - - ed = E_NEW(E_Entry_Dialog, 1); + + ed = E_OBJECT_ALLOC(E_Entry_Dialog, E_ENTRY_DIALOG_TYPE, _e_entry_dialog_free); ed->ok.func = func; ed->ok.data = data; ed->cancel.func = func2; ed->cancel.data = data; + ed->text = strdup(initial_text); dia = e_dialog_new(e_container_current_get(e_manager_current_get())); if (!dia) @@ -72,17 +57,27 @@ e_win_centered_set(dia->win, 1); e_dialog_show(dia); + return ed; } /* Private Function Bodies */ static void +_e_entry_dialog_free(E_Entry_Dialog *ed) +{ + e_object_del(E_OBJECT(ed->dia)); + free(ed); +} + +static void _e_entry_dialog_ok(void *data, E_Dialog *dia) { E_Entry_Dialog *ed; ed = data; + e_object_ref(E_OBJECT(ed)); if (ed->ok.func) ed->ok.func(ed->text, ed->ok.data); - _e_entry_dialog_delete(ed->dia->win); + e_object_del(E_OBJECT(ed)); + e_object_unref(E_OBJECT(ed)); } static void @@ -91,8 +86,10 @@ E_Entry_Dialog *ed; ed = data; + e_object_ref(E_OBJECT(ed)); if (ed->cancel.func) ed->cancel.func(ed->cancel.data); - _e_entry_dialog_delete(ed->dia->win); + e_object_del(E_OBJECT(ed)); + e_object_unref(E_OBJECT(ed)); } static void @@ -103,7 +100,5 @@ dia = win->data; ed = dia->data; - - e_object_del(E_OBJECT(dia)); - free(ed); + e_object_del(E_OBJECT(ed)); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_entry_dialog.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- e_entry_dialog.h 9 Jul 2006 18:35:56 -0000 1.2 +++ e_entry_dialog.h 12 Aug 2006 12:49:52 -0000 1.3 @@ -1,24 +1,42 @@ -#ifdef E_TYPEDEF +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ +#ifdef E_TYPEDEFS + +typedef struct _E_Entry_Dialog E_Entry_Dialog; #else #ifndef E_ENTRY_DIALOG_H #define E_ENTRY_DIALOG_H -/* - * @title - dialog title - * @icon - dialog icon - * @text - the text shown in the dialog - * @button_text - "Ok" button text - * @button2_text - "Cancel" button text - * @func - the function to call if ok is pressed - * @func2 - the function to call if cancel is pressed - * @data - the pointer passed to func -*/ +#define E_ENTRY_DIALOG_TYPE 0xE0b01025 + +struct _E_Entry_Dialog +{ + E_Object e_obj_inherit; + + E_Dialog *dia; + Evas_Object *entry; + char *text; + struct { + void (*func) (char *text, void *data); + void *data; + } ok; + struct { + void (*func) (void *data); + void *data; + } cancel; +}; -EAPI void e_entry_dialog_show(const char *title, const char *icon, const char *text, - const char *button_text, const char *button2_text, - void (*func)(char *text, void *data), - void (*func2)(void *data), void *data); +EAPI E_Entry_Dialog *e_entry_dialog_show(const char *title, + const char *icon, + const char *text, + const char *initial_text, + const char *button_text, + const char *button2_text, + void (*func) (char *text, void *data), + void (*func2) (void *data), + void *data); #endif #endif =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_fm.c,v retrieving revision 1.25 retrieving revision 1.26 diff -u -3 -r1.25 -r1.26 --- e_fm.c 8 Aug 2006 11:16:19 -0000 1.25 +++ e_fm.c 12 Aug 2006 12:49:52 -0000 1.26 @@ -72,6 +72,9 @@ Evas_Object *obj, *obj_icon; int saved_x, saved_y; int saved_rel; + E_Menu *menu; + E_Entry_Dialog *entry_dialog; + E_Dialog *dialog; E_Fm2_Icon_Info info; @@ -137,6 +140,17 @@ static void _e_fm2_smart_clip_set(Evas_Object *obj, Evas_Object * clip); static void _e_fm2_smart_clip_unset(Evas_Object *obj); +static void _e_fm2_menu_action_display(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp); +static void _e_fm2_menu_post_cb(void *data, E_Menu *m); +static void _e_fm2_file_rename(void *data, E_Menu *m, E_Menu_Item *mi); +static void _e_fm2_file_rename_delete_cb(void *obj); +static void _e_fm2_file_rename_yes_cb(char *text, void *data); +static void _e_fm2_file_rename_no_cb(char *text, void *data); +static void _e_fm2_file_delete(void *data, E_Menu *m, E_Menu_Item *mi); +static void _e_fm2_file_delete_delete_cb(void *obj); +static void _e_fm2_file_delete_yes_cb(void *data, E_Dialog *dialog); +static void _e_fm2_file_delete_no_cb(void *data, E_Dialog *dialog); + static char *_meta_path = NULL; static Evas_Smart *_e_fm2_smart = NULL; @@ -228,10 +242,6 @@ sd->config->theme.fixed = 0; } - _e_fm2_scan_stop(obj); - _e_fm2_queue_free(obj); - _e_fm2_regions_free(obj); - _e_fm2_icons_free(obj); if (sd->dev) evas_stringshare_del(sd->dev); if (sd->path) evas_stringshare_del(sd->path); if (sd->realpath) evas_stringshare_del(sd->realpath); @@ -239,6 +249,12 @@ if (dev) sd->dev = evas_stringshare_add(dev); sd->path = evas_stringshare_add(path); sd->realpath = _e_fm2_dev_path_map(sd->dev, sd->path); + + _e_fm2_scan_stop(obj); + _e_fm2_queue_free(obj); + _e_fm2_regions_free(obj); + _e_fm2_icons_free(obj); + _e_fm2_scan_start(obj); evas_object_smart_callback_call(obj, "dir_changed", NULL); sd->tmp.iter = 0; @@ -259,6 +275,26 @@ if (path) *path = sd->path; } +EAPI void +e_fm2_refresh(Evas_Object *obj) +{ + E_Fm2_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; // safety + if (!evas_object_type_get(obj)) return; // safety + if (strcmp(evas_object_type_get(obj), "e_fm")) return; // safety + + _e_fm2_scan_stop(obj); + _e_fm2_queue_free(obj); + _e_fm2_regions_free(obj); + _e_fm2_icons_free(obj); + + _e_fm2_scan_start(obj); +// evas_object_smart_callback_call(obj, "dir_changed", NULL); + sd->tmp.iter = 0; +} + EAPI int e_fm2_has_parent_get(Evas_Object *obj) { @@ -1248,6 +1284,22 @@ { /* free icon, object data etc. etc. */ _e_fm2_icon_unrealize(ic); + if (ic->menu) + { + e_menu_post_deactivate_callback_set(ic->menu, NULL, NULL); + e_object_del(E_OBJECT(ic->menu)); + ic->menu = NULL; + } + if (ic->dialog) + { + e_object_del(E_OBJECT(ic->dialog)); + ic->dialog = NULL; + } + if (ic->entry_dialog) + { + e_object_del(E_OBJECT(ic->entry_dialog)); + ic->entry_dialog = NULL; + } if (ic->info.file) evas_stringshare_del(ic->info.file); if (ic->info.mime) evas_stringshare_del(ic->info.mime); if (ic->info.label) evas_stringshare_del(ic->info.label); @@ -1809,6 +1861,15 @@ } else if (ev->button == 3) { + char buf[4096]; + + snprintf(buf, sizeof(buf), "%s/%s", ic->sd->realpath, ic->info.file); + if (ecore_file_can_write(buf)) + { + _e_fm2_menu_action_display(ic, obj, ev->timestamp); + evas_event_feed_mouse_up(evas_object_evas_get(obj), ev->button, + EVAS_BUTTON_NONE, ev->timestamp, NULL); + } } } @@ -1821,13 +1882,13 @@ ic = data; ev = event_info; } - + static void _e_fm2_cb_icon_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info) { Evas_Event_Mouse_Move *ev; E_Fm2_Icon *ic; - + ic = data; ev = event_info; } @@ -2226,4 +2287,251 @@ sd = evas_object_smart_data_get(obj); if (!sd) return; evas_object_clip_unset(sd->clip); +} + +static void +_e_fm2_menu_action_display(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp) +{ + E_Fm2_Smart_Data *sd; + E_Menu *mn; + E_Menu_Item *mi; + E_Manager *man; + E_Container *con; + E_Zone *zone; + int x, y; + + sd = ic->sd; + + mn = e_menu_new(); + e_menu_category_set(mn, "fileman/action"); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Delete")); + e_menu_item_icon_edje_set(mi, + (char *)e_theme_edje_file_get("base/theme/fileman", + "fileman/button/delete"), + "fileman/button/delete"); + e_menu_item_callback_set(mi, _e_fm2_file_delete, ic); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Rename")); + e_menu_item_icon_edje_set(mi, + (char *)e_theme_edje_file_get("base/theme/fileman", + "fileman/button/rename"), + "fileman/button/rename"); + e_menu_item_callback_set(mi, _e_fm2_file_rename, ic); + + man = e_manager_current_get(); + if (!man) + { + e_object_del(E_OBJECT(mn)); + return; + } + con = e_container_current_get(man); + if (!con) + { + e_object_del(E_OBJECT(mn)); + return; + } + ecore_x_pointer_xy_get(con->win, &x, &y); + zone = e_util_zone_current_get(man); + if (!zone) + { + e_object_del(E_OBJECT(mn)); + return; + } + ic->menu = mn; + e_menu_post_deactivate_callback_set(mn, _e_fm2_menu_post_cb, ic); + e_menu_activate_mouse(mn, zone, + x, y, 1, 1, + E_MENU_POP_DIRECTION_DOWN, timestamp); +} + +static void +_e_fm2_menu_post_cb(void *data, E_Menu *m) +{ + E_Fm2_Icon *ic; + + ic = data; + ic->menu = NULL; +} + +static void +_e_fm2_file_rename(void *data, E_Menu *m, E_Menu_Item *mi) +{ + E_Fm2_Icon *ic; + E_Manager *man; + E_Container *con; + char *old_path; + char text[PATH_MAX + 256]; + + ic = data; + if (ic->entry_dialog) return; + + man = e_manager_current_get(); + if (!man) return; + con = e_container_current_get(man); + if (!con) return; + + snprintf(text, PATH_MAX + 256, + _("Rename %s to"), + ic->info.file); + ic->entry_dialog = e_entry_dialog_show(_("Rename File"), "enlightenment/e", + text, ic->info.file, NULL, NULL, + _e_fm2_file_rename_yes_cb, + _e_fm2_file_rename_no_cb, ic); + E_OBJECT(ic->entry_dialog)->data = ic; + e_object_del_attach_func_set(E_OBJECT(ic->entry_dialog), _e_fm2_file_rename_delete_cb); +} + +static void +_e_fm2_file_rename_delete_cb(void *obj) +{ + E_Fm2_Icon *ic; + + ic = E_OBJECT(obj)->data; + ic->entry_dialog = NULL; +} + +static void +_e_fm2_file_rename_yes_cb(char *text, void *data) +{ + E_Fm2_Icon *ic; + E_Dialog *dialog; + E_Manager *man; + E_Container *con; + char newpath[PATH_MAX]; + char oldpath[PATH_MAX]; + char error[PATH_MAX + 256]; + + ic = data; + ic->dialog = NULL; + if ((text) && (strcmp(text, ic->info.file))) + { + snprintf(newpath, PATH_MAX, "%s/%s", ic->sd->realpath, text); + snprintf(oldpath, PATH_MAX, "%s/%s", ic->sd->realpath, ic->info.file); + + if (!ecore_file_mv(oldpath, newpath)) + { + man = e_manager_current_get(); + if (!man) return; + con = e_container_current_get(man); + if (!con) return; + + dialog = e_dialog_new(con); + e_dialog_button_add(dialog, _("OK"), NULL, NULL, NULL); + e_dialog_button_focus_num(dialog, 1); + e_dialog_title_set(dialog, _("Error")); + snprintf(error, PATH_MAX + 256, + _("Could not rename from <b>%s</b> to <b>%s</b>"), + ic->info.file, text); + e_dialog_text_set(dialog, error); + e_win_centered_set(dialog->win, 1); + e_dialog_show(dialog); + return; + } + e_fm2_refresh(ic->sd->obj); + } +} + +static void +_e_fm2_file_rename_no_cb(char *text, void *data) +{ + E_Fm2_Icon *ic; + + ic = data; + ic->dialog = NULL; +} + +static void +_e_fm2_file_delete(void *data, E_Menu *m, E_Menu_Item *mi) +{ + E_Manager *man; + E_Container *con; + E_Dialog *dialog; + E_Fm2_Icon *ic; + char text[PATH_MAX + 256]; + + man = e_manager_current_get(); + if (!man) return; + con = e_container_current_get(man); + if (!con) return; + + ic = data; + if (ic->dialog) return; + dialog = e_dialog_new(con); + ic->dialog = dialog; + E_OBJECT(dialog)->data = ic; + e_object_del_attach_func_set(E_OBJECT(dialog), _e_fm2_file_delete_delete_cb); + e_dialog_button_add(dialog, _("Yes"), NULL, _e_fm2_file_delete_yes_cb, ic); + e_dialog_button_add(dialog, _("No"), NULL, _e_fm2_file_delete_no_cb, ic); + e_dialog_button_focus_num(dialog, 1); + e_dialog_title_set(dialog, _("Confirm Delete")); + snprintf(text, PATH_MAX + 256, + _("Are you sure you want to delete <br>" + "<b>%s/%s</b> ?"), + ic->sd->realpath, ic->info.file); + e_dialog_text_set(dialog, text); + e_win_centered_set(dialog->win, 1); + e_dialog_show(dialog); +} + +static void +_e_fm2_file_delete_delete_cb(void *obj) +{ + E_Fm2_Icon *ic; + + ic = E_OBJECT(obj)->data; + ic->dialog = NULL; +} + +static void +_e_fm2_file_delete_yes_cb(void *data, E_Dialog *dialog) +{ + E_Manager *man; + E_Container *con; + E_Fm2_Icon *ic; + Evas_Object *obj; + char path[PATH_MAX]; + int ret; + + ic = data; + ic->dialog = NULL; + + snprintf(path, PATH_MAX, "%s/%s", ic->sd->realpath, ic->info.file); + + if (!(ecore_file_recursive_rm(path))) + { + char text[PATH_MAX + 256]; + + man = e_manager_current_get(); + if (!man) return; + con = e_container_current_get(man); + if (!con) return; + + e_object_del(E_OBJECT(dialog)); + dialog = e_dialog_new(con); + e_dialog_button_add(dialog, _("OK"), NULL, NULL, NULL); + e_dialog_button_focus_num(dialog, 1); + e_dialog_title_set(dialog, _("Error")); + snprintf(text, PATH_MAX + 256, + _("Could not delete <br><b>%s</b>"), path); + e_dialog_text_set(dialog, text); + e_win_centered_set(dialog->win, 1); + e_dialog_show(dialog); + e_object_del(E_OBJECT(dialog)); + return; + } + e_object_del(E_OBJECT(dialog)); + e_fm2_refresh(ic->sd->obj); +} + +static void +_e_fm2_file_delete_no_cb(void *data, E_Dialog *dialog) +{ + E_Fm2_Icon *ic; + + ic = data; + ic->dialog = NULL; + e_object_del(E_OBJECT(dialog)); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_fm.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- e_fm.h 7 Aug 2006 20:25:34 -0000 1.9 +++ e_fm.h 12 Aug 2006 12:49:52 -0000 1.10 @@ -100,6 +100,7 @@ EAPI Evas_Object *e_fm2_add(Evas *evas); EAPI void e_fm2_path_set(Evas_Object *obj, char *dev, char *path); EAPI void e_fm2_path_get(Evas_Object *obj, const char **dev, const char **path); +EAPI void e_fm2_refresh(Evas_Object *obj); EAPI const char *e_fm2_real_path_get(Evas_Object *obj); EAPI int e_fm2_has_parent_get(Evas_Object *obj); EAPI void e_fm2_parent_go(Evas_Object *obj); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_wallpaper_import.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_int_config_wallpaper_import.c 8 Aug 2006 20:41:46 -0000 1.3 +++ e_int_config_wallpaper_import.c 12 Aug 2006 12:49:52 -0000 1.4 @@ -21,6 +21,16 @@ Evas_Object *ok_obj; Evas_Object *close_obj; + + Evas_Object *fill_stretch_obj; + Evas_Object *fill_center_obj; + Evas_Object *fill_tile_obj; + Evas_Object *fill_within_obj; + Evas_Object *fill_fill_obj; + Evas_Object *perfect_obj; + Evas_Object *quality_obj; + Evas_Object *frame_fill_obj; + Evas_Object *frame_quality_obj; E_Win *win; @@ -40,6 +50,7 @@ static Ecore_Event_Handler *_import_edje_cc_exit_handler = NULL; +static void _import_opt_disabled_set(Import *import, int disabled); static void _import_cb_sel_change(void *data, Evas_Object *obj); static void _import_edj_gen(Import *import); static int _import_cb_edje_cc_exit(void *data, int type, void *event); @@ -101,7 +112,7 @@ import->box_obj = o; edje_object_part_swallow(import->bg_obj, "buttons_swallow", o); - o = evas_object_rectangle_add(evas); + o = evas_object_rectangle_add(evas); import->event_obj = o; mask = 0; evas_object_key_grab(o, "Tab", mask, ~mask, 0); @@ -129,23 +140,32 @@ ot = e_widget_table_add(evas, 0); of = e_widget_frametable_add(evas, _("Fill and Stretch Options"), 1); + import->frame_fill_obj = of; rg = e_widget_radio_group_new(&cfdata->method); ord = e_widget_radio_icon_add(evas, _("Stretch"), "enlightenment/wallpaper_stretch", 24, 24, IMPORT_STRETCH, rg); + import->fill_stretch_obj = ord; e_widget_frametable_object_append(of, ord, 0, 0, 1, 1, 1, 0, 1, 0); ord = e_widget_radio_icon_add(evas, _("Center"), "enlightenment/wallpaper_center", 24, 24, IMPORT_CENTER, rg); + import->fill_center_obj = ord; e_widget_frametable_object_append(of, ord, 1, 0, 1, 1, 1, 0, 1, 0); ord = e_widget_radio_icon_add(evas, _("Tile"), "enlightenment/wallpaper_tile", 24, 24, IMPORT_TILE, rg); + import->fill_tile_obj = ord; e_widget_frametable_object_append(of, ord, 2, 0, 1, 1, 1, 0, 1, 0); ord = e_widget_radio_icon_add(evas, _("Within"), "enlightenment/wallpaper_scale_aspect_in", 24, 24, IMPORT_SCALE_ASPECT_IN, rg); + import->fill_within_obj = ord; e_widget_frametable_object_append(of, ord, 3, 0, 1, 1, 1, 0, 1, 0); ord = e_widget_radio_icon_add(evas, _("Fill"), "enlightenment/wallpaper_scale_aspect_out", 24, 24, IMPORT_SCALE_ASPECT_OUT, rg); + import->fill_fill_obj = ord; e_widget_frametable_object_append(of, ord, 4, 0, 1, 1, 1, 0, 1, 0); e_widget_table_object_append(ot, of, 0, 0, 1, 1, 1, 1, 1, 0); of = e_widget_frametable_add(evas, _("File Quality"), 0); + import->frame_quality_obj = of; ord = e_widget_slider_add(evas, 1, 0, _("%3.0f%%"), 0.0, 100.0, 1.0, 0, &(cfdata->quality), NULL, 150); + import->quality_obj = ord; e_widget_frametable_object_append(of, ord, 0, 0, 1, 1, 1, 0, 1, 0); ord = e_widget_check_add(evas, _("Perfect"), &(cfdata->perfect)); + import->perfect_obj = ord; e_widget_frametable_object_append(of, ord, 1, 0, 1, 1, 0, 0, 0, 0); e_widget_table_object_append(ot, of, 0, 1, 1, 1, 1, 1, 1, 0); @@ -180,6 +200,8 @@ e_widget_focus_set(import->box_obj, 1); win->data = import; + + _import_opt_disabled_set(import, 1); return win; } @@ -200,18 +222,35 @@ if (import) free(import); } +static void +_import_opt_disabled_set(Import *import, int disabled) +{ + e_widget_disabled_set(import->fill_stretch_obj, disabled); + e_widget_disabled_set(import->fill_center_obj, disabled); + e_widget_disabled_set(import->fill_tile_obj, disabled); + e_widget_disabled_set(import->fill_within_obj, disabled); + e_widget_disabled_set(import->fill_fill_obj, disabled); + e_widget_disabled_set(import->perfect_obj, disabled); + e_widget_disabled_set(import->quality_obj, disabled); + e_widget_disabled_set(import->frame_fill_obj, disabled); + e_widget_disabled_set(import->frame_quality_obj, disabled); +} + static void _import_cb_sel_change(void *data, Evas_Object *obj) { Import *import; - const char *path; + const char *path, *p = NULL; import = data; path = e_widget_fsel_selection_path_get(import->fsel_obj); E_FREE(import->cfdata->file); if (path) import->cfdata->file = strdup(path); - /* FIXME: based on selection - disable or enable the scale options ie .edj files - * do not use the options */ + if (path) p = strrchr(path, '.'); + if ((!p) || (!strcasecmp(p, ".edj"))) + _import_opt_disabled_set(import, 1); + else + _import_opt_disabled_set(import, 0); } static void @@ -219,7 +258,7 @@ { Evas *evas; Evas_Object *img; - int fd; + int fd, num = 1; int w = 0, h = 0; const char *file; char buf[4096], cmd[4096], tmpn[4096], ipart[4096], enc[128]; @@ -237,6 +276,11 @@ return; } snprintf(buf, sizeof(buf), "%s/.e/e/backgrounds/%s.edj", homedir, fstrip); + while (ecore_file_exists(buf)) + { + snprintf(buf, sizeof(buf), "%s/.e/e/backgrounds/%s-%i.edj", homedir, fstrip, num); + num++; + } free(fstrip); free(homedir); strcpy(tmpn, "/tmp/e_bgdlg_new.edc-tmp-XXXXXX"); @@ -367,8 +411,13 @@ ev = event; import = data; if (ev->exe != import->exe) return 1; - - /* FIXME - error code - handle */ + + if (ev->exit_code != 0) + { + e_util_dialog_show(_("Picture Import Error"), + _("Enlightenment was unable to import the picture<br>" + "due to conversion errors.")); + } e_int_config_wallpaper_update(import->parent, import->fdest); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_menus.c,v retrieving revision 1.145 retrieving revision 1.146 diff -u -3 -r1.145 -r1.146 --- e_int_menus.c 9 Aug 2006 15:24:34 -0000 1.145 +++ e_int_menus.c 12 Aug 2006 12:49:52 -0000 1.146 @@ -32,7 +32,6 @@ static void _e_int_menus_apps_del_hook (void *obj); static void _e_int_menus_apps_free_hook (void *obj); static void _e_int_menus_apps_run (void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_int_menus_main_fm(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_int_menus_config_pre_cb (void *data, E_Menu *m); static void _e_int_menus_config_free_hook (void *obj); static void _e_int_menus_config_item_cb (void *data, E_Menu *m, E_Menu_Item *mi); @@ -386,15 +385,6 @@ } static void -_e_int_menus_main_fm(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Fileman *fileman; - - fileman = e_fileman_new (m->zone->container); - e_fileman_show (fileman); -} - -static void _e_int_menus_main_restart(void *data, E_Menu *m, E_Menu_Item *mi) { E_Action *a; @@ -632,14 +622,6 @@ e_util_menu_item_edje_icon_set(mi, "enlightenment/e"); e_menu_item_callback_set(mi, _e_int_menus_eapedit_item_cb, NULL); - mi = e_menu_item_new(m); - e_menu_item_separator_set(mi, 1); - - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Test Filemanager")); - e_util_menu_item_edje_icon_set(mi, "enlightenment/fileman"); - e_menu_item_callback_set(mi, _e_int_menus_main_fm, NULL); - l = evas_hash_find(_e_int_menus_augmentation, "config"); if (l) { =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_framelist.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- e_widget_framelist.c 23 Jul 2006 11:22:13 -0000 1.8 +++ e_widget_framelist.c 12 Aug 2006 12:49:52 -0000 1.9 @@ -10,6 +10,7 @@ }; static void _e_wid_del_hook(Evas_Object *obj); +static void _e_wid_disable_hook(Evas_Object *obj); /* local subsystem functions */ @@ -24,6 +25,7 @@ obj = e_widget_add(evas); e_widget_del_hook_set(obj, _e_wid_del_hook); + e_widget_disable_hook_set(obj, _e_wid_disable_hook); wd = calloc(1, sizeof(E_Widget_Data)); e_widget_data_set(obj, wd); @@ -93,4 +95,16 @@ wd = e_widget_data_get(obj); free(wd); +} + +static void +_e_wid_disable_hook(Evas_Object *obj) +{ + E_Widget_Data *wd; + + wd = e_widget_data_get(obj); + if (e_widget_disabled_get(obj)) + edje_object_signal_emit(wd->o_frame, "disabled", ""); + else + edje_object_signal_emit(wd->o_frame, "enabled", ""); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_frametable.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_widget_frametable.c 21 Jul 2006 20:16:46 -0000 1.3 +++ e_widget_frametable.c 12 Aug 2006 12:49:52 -0000 1.4 @@ -10,6 +10,7 @@ }; static void _e_wid_del_hook(Evas_Object *obj); +static void _e_wid_disable_hook(Evas_Object *obj); /* local subsystem functions */ @@ -24,6 +25,7 @@ obj = e_widget_add(evas); e_widget_del_hook_set(obj, _e_wid_del_hook); + e_widget_disable_hook_set(obj, _e_wid_disable_hook); wd = calloc(1, sizeof(E_Widget_Data)); e_widget_data_set(obj, wd); @@ -82,4 +84,16 @@ wd = e_widget_data_get(obj); free(wd); +} + +static void +_e_wid_disable_hook(Evas_Object *obj) +{ + E_Widget_Data *wd; + + wd = e_widget_data_get(obj); + if (e_widget_disabled_get(obj)) + edje_object_signal_emit(wd->o_frame, "disabled", ""); + else + edje_object_signal_emit(wd->o_frame, "enabled", ""); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_fsel.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- e_widget_fsel.c 7 Aug 2006 20:25:34 -0000 1.5 +++ e_widget_fsel.c 12 Aug 2006 12:49:52 -0000 1.6 @@ -255,7 +255,7 @@ fmc.icon.list.h = 24; fmc.icon.fixed.w = 1; fmc.icon.fixed.h = 1; - fmc.icon.extension.show = 0; + fmc.icon.extension.show = 1; fmc.list.sort.no_case = 1; fmc.list.sort.dirs.first = 1; fmc.list.sort.dirs.last = 0; =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_slider.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- e_widget_slider.c 1 Apr 2006 09:24:56 -0000 1.6 +++ e_widget_slider.c 12 Aug 2006 12:49:52 -0000 1.7 @@ -15,6 +15,7 @@ static void _e_wid_focus_hook(Evas_Object *obj); static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_wid_cb_changed(void *data, Evas_Object *obj, void *event_info); +static void _e_wid_disable_hook(Evas_Object *obj); /* externally accessible functions */ EAPI Evas_Object * @@ -28,6 +29,7 @@ e_widget_del_hook_set(obj, _e_wid_del_hook); e_widget_focus_hook_set(obj, _e_wid_focus_hook); + e_widget_disable_hook_set(obj, _e_wid_disable_hook); wd = calloc(1, sizeof(E_Widget_Data)); e_widget_data_set(obj, wd); wd->o_widget = obj; @@ -188,4 +190,18 @@ if (wd->dval) *(wd->dval) = e_slider_value_get(wd->o_slider); else if (wd->ival) *(wd->ival) = e_slider_value_get(wd->o_slider); e_widget_change(wd->o_widget); +} + +static void +_e_wid_disable_hook(Evas_Object *obj) +{ + E_Widget_Data *wd; + + wd = e_widget_data_get(obj); + if (e_widget_disabled_get(obj)) + edje_object_signal_emit(e_slider_edje_object_get(wd->o_slider), + "disabled", ""); + else + edje_object_signal_emit(e_slider_edje_object_get(wd->o_slider), + "enabled", ""); } ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs