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


SVN revision: 24589
This commit is contained in:
Carsten Haitzler 2006-08-12 12:49:52 +00:00
parent 1b34e1f692
commit d104992051
14 changed files with 583 additions and 92 deletions

11
TODO
View File

@ -34,9 +34,6 @@ Some of the things (in very short form) that need to be done to E17...
ESSENTIAL FEATURES
-------------------------------------------------------------------------------
* fm2 needs to have right mouse menu on files for rename and delete
* wallpaper select needs to see if target .edj name exists - if so - find
a new target name
* fsel needs "add" button for favorites to add whataver directory is selected
if any dir is selected (create symlink)
* fsel needs to clear the entry when entering a new dir
@ -71,9 +68,9 @@ Some of the things (in very short form) that need to be done to E17...
* Dragging a non-eap icon from a border to the ibar should automatically
create the icon and add that (instead of warning the user that this can't be
done)
* new fm code relays-out a dir every time the queue is processed - maybe try
* new fm code re-lays-out a dir every time the queue is processed - maybe try
to speed this up
* new fm code's file scannign isnt insanely fast - icon size calcs etc. speed
* new fm code's file scanning isn't insanely fast - icon size calcs etc. speed
up for special cases like list view?
]]]
@ -82,10 +79,6 @@ Some of the things (in very short form) that need to be done to E17...
CLEANUPS
-------------------------------------------------------------------------------
* bg import dialog and code needs a big workover - needs a few more options on
import like quality (lossy low, medium, high, perfect), when scaling do you
stretch, scale retaining aspect within the screen or extend beyond screen
boundaries (so nothing is left blank) etc.
* bg needs a gradient dialog that can take a set of pre-drawn png's and edc
recipies and use colored rects and overlayed png's recolored with color
options to create vertical, horizontal, radial etc. gradients quickly and

View File

@ -42,6 +42,7 @@ group {
part {
name: "sld_runner";
mouse_events: 0;
clip_to: "clip";
description {
state: "default" 0.0;
max: 2 99999;
@ -63,6 +64,7 @@ group {
part {
name: "label_under";
mouse_events: 0;
clip_to: "clip";
description {
state: "default" 0.0;
visible: 0;
@ -95,6 +97,7 @@ group {
name: "label";
type: TEXT;
mouse_events: 0;
clip_to: "clip";
description {
state: "default" 0.0;
visible: 0;
@ -124,6 +127,7 @@ group {
part {
name: "label_over";
mouse_events: 0;
clip_to: "clip";
description {
state: "default" 0.0;
visible: 0;
@ -257,6 +261,7 @@ group {
part {
name: "slider_glow";
mouse_events: 0;
clip_to: "clip";
description {
state: "default" 0.0;
min: 32 32;
@ -278,6 +283,33 @@ group {
color: 255 255 255 255;
}
}
part {
name: "clip";
type: RECT;
description {
state: "default" 0.0;
}
description {
state: "disabled" 0.0;
inherit: "default" 0.0;
color: 255 255 255 128;
}
}
part {
name: "catch";
type: RECT;
mouse_events: 1;
description {
state: "default" 0.0;
visible: 0;
color: 0 0 0 0;
}
description {
state: "disabled" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
}
programs {
program {
@ -368,6 +400,22 @@ group {
target: "label";
target: "label_over";
}
program {
name: "disable";
signal: "disabled";
source: "";
action: STATE_SET "disabled" 0.0;
target: "clip";
target: "catch";
}
program {
name: "enable";
signal: "enabled";
source: "";
action: STATE_SET "default" 0.0;
target: "clip";
target: "catch";
}
}
}
@ -404,6 +452,7 @@ group {
part {
name: "sld_runner";
mouse_events: 0;
clip_to: "clip";
description {
state: "default" 0.0;
max: 99999 2;
@ -425,6 +474,7 @@ group {
part {
name: "label_under";
mouse_events: 0;
clip_to: "clip";
description {
state: "default" 0.0;
visible: 0;
@ -457,6 +507,7 @@ group {
name: "label";
type: TEXT;
mouse_events: 0;
clip_to: "clip";
description {
state: "default" 0.0;
visible: 0;
@ -487,6 +538,7 @@ group {
part {
name: "label_over";
mouse_events: 0;
clip_to: "clip";
description {
state: "default" 0.0;
visible: 0;
@ -572,6 +624,7 @@ group {
part {
name: "slider_img";
mouse_events: 0;
clip_to: "clip";
description {
state: "default" 0.0;
min: 32 32;
@ -641,6 +694,33 @@ group {
color: 255 255 255 255;
}
}
part {
name: "clip";
type: RECT;
description {
state: "default" 0.0;
}
description {
state: "disabled" 0.0;
inherit: "default" 0.0;
color: 255 255 255 128;
}
}
part {
name: "catch";
type: RECT;
mouse_events: 1;
description {
state: "default" 0.0;
visible: 0;
color: 0 0 0 0;
}
description {
state: "disabled" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
}
programs {
program {
@ -731,5 +811,21 @@ group {
target: "label";
target: "label_over";
}
program {
name: "disable";
signal: "disabled";
source: "";
action: STATE_SET "disabled" 0.0;
target: "clip";
target: "catch";
}
program {
name: "enable";
signal: "enabled";
source: "";
action: STATE_SET "default" 0.0;
target: "clip";
target: "catch";
}
}
}

View File

@ -4667,6 +4667,8 @@ _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_border_eval(E_Border *bd)
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 @@ _e_border_eval(E_Border *bd)
if ((bd->remember) && (rem_change))
e_remember_update(bd->remember, bd);
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

View File

@ -1,31 +1,15 @@
#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
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)
@ -35,11 +19,12 @@ e_entry_dialog_show(const char *title, const char *icon, const char *text,
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_entry_dialog_show(const char *title, const char *icon, const char *text,
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_cancel(void *data, E_Dialog *dia)
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 @@ _e_entry_dialog_delete(E_Win *win)
dia = win->data;
ed = dia->data;
e_object_del(E_OBJECT(dia));
free(ed);
e_object_del(E_OBJECT(ed));
}

View File

@ -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
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);
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 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

View File

@ -72,6 +72,9 @@ struct _E_Fm2_Icon
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_color_set(Evas_Object *obj, int r, int g, int b, int a)
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 @@ e_fm2_path_set(Evas_Object *obj, char *dev, char *path)
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 @@ e_fm2_path_set(Evas_Object *obj, char *dev, char *path)
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 @@ e_fm2_path_get(Evas_Object *obj, const char **dev, const char **path)
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 @@ _e_fm2_icon_free(E_Fm2_Icon *ic)
{
/* 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 @@ _e_fm2_cb_icon_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_inf
}
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);
}
}
}
@ -2227,3 +2288,250 @@ _e_fm2_smart_clip_unset(Evas_Object *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));
}

View File

@ -100,6 +100,7 @@ EAPI int e_fm2_shutdown(void);
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);

View File

@ -22,6 +22,16 @@ struct _Import
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;
Ecore_Exe *exe;
@ -40,6 +50,7 @@ struct _E_Config_Dialog_Data
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);
@ -129,23 +140,32 @@ e_int_config_wallpaper_import(E_Config_Dialog *parent)
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_int_config_wallpaper_import(E_Config_Dialog *parent)
e_widget_focus_set(import->box_obj, 1);
win->data = import;
_import_opt_disabled_set(import, 1);
return win;
}
@ -200,18 +222,35 @@ e_int_config_wallpaper_del(E_Win *win)
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 @@ _import_edj_gen(Import *import)
{
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 @@ _import_edj_gen(Import *import)
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");
@ -368,7 +412,12 @@ _import_cb_edje_cc_exit(void *data, int type, void *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);

View File

@ -32,7 +32,6 @@ static void _e_int_menus_apps_start (void *data, E_Menu *m);
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);
@ -385,15 +384,6 @@ _e_int_menus_main_showhide(void *data, E_Menu *m, E_Menu_Item *mi)
if (act) act->func.go(E_OBJECT(m->zone), NULL);
}
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)
{
@ -632,14 +622,6 @@ _e_int_menus_config_pre_cb(void *data, E_Menu *m)
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)
{

View File

@ -10,6 +10,7 @@ struct _E_Widget_Data
};
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 @@ e_widget_framelist_add(Evas *evas, char *label, int horiz)
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);
@ -94,3 +96,15 @@ _e_wid_del_hook(Evas_Object *obj)
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", "");
}

View File

@ -10,6 +10,7 @@ struct _E_Widget_Data
};
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 @@ e_widget_frametable_add(Evas *evas, char *label, int homogenous)
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);
@ -83,3 +85,15 @@ _e_wid_del_hook(Evas_Object *obj)
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", "");
}

View File

@ -255,7 +255,7 @@ e_widget_fsel_add(Evas *evas, char *dev, char *path, char *selected, char *filte
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;

View File

@ -15,6 +15,7 @@ static void _e_wid_del_hook(Evas_Object *obj);
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_slider_add(Evas *evas, int horiz, int rev, char *fmt, double min, doubl
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;
@ -189,3 +191,17 @@ _e_wid_cb_changed(void *data, Evas_Object *obj, void *event_info)
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", "");
}

View File

@ -156,7 +156,7 @@ _cb_add(void *data, void *data2)
cfdata = data;
e_entry_dialog_show(_("Create new ibar source"), "enlightenment/e",
_("Enter a name for this new source"), NULL, NULL,
_("Enter a name for this new source"), "", NULL, NULL,
_cb_entry_ok, NULL, cfdata);
}