forked from enlightenment/enlightenment
- more work on eap editor (currently broken)
- fix efm (some features currently broken) - change scrollbar so completely (currently broken) SVN revision: 18027
This commit is contained in:
parent
2a3f77d8f6
commit
b01c9dad89
|
@ -103,7 +103,9 @@ e_icon_layout.h \
|
|||
e_int_border_locks.h \
|
||||
e_thumb.h \
|
||||
e_int_border_remember.h \
|
||||
e_eap_editor.h
|
||||
e_eap_editor.h \
|
||||
e_widget_iconsel.h \
|
||||
e_widget_fileman.h
|
||||
|
||||
enlightenment_src = \
|
||||
e_user.c \
|
||||
|
@ -188,6 +190,8 @@ e_int_border_locks.c \
|
|||
e_thumb.c \
|
||||
e_int_border_remember.c \
|
||||
e_eap_editor.c \
|
||||
e_widget_iconsel.c \
|
||||
e_widget_fileman.c \
|
||||
$(ENLIGHTENMENTHEADERS)
|
||||
|
||||
enlightenment_SOURCES = \
|
||||
|
|
|
@ -1,285 +1,370 @@
|
|||
#include "e.h"
|
||||
|
||||
typedef struct _E_App_Edit E_App_Edit;
|
||||
typedef struct _E_App_Edit_CFData E_App_Edit_CFData;
|
||||
|
||||
struct _E_App_Edit
|
||||
{
|
||||
E_App *eap;
|
||||
|
||||
Evas_Object *img;
|
||||
Evas_Object *img_widget;
|
||||
|
||||
E_App_Edit_CFData *cfdata;
|
||||
};
|
||||
|
||||
struct _E_App_Edit_CFData
|
||||
{
|
||||
/*- BASIC -*/
|
||||
char *name;
|
||||
char *exe;
|
||||
/*- ADVANCED -*/
|
||||
char *generic;
|
||||
char *comment;
|
||||
char *wname;
|
||||
char *wclass;
|
||||
char *wtitle;
|
||||
char *wrole;
|
||||
char *iclass;
|
||||
char *path;
|
||||
int startup_notify;
|
||||
int wait_exit;
|
||||
/*- common -*/
|
||||
char *image;
|
||||
E_App_Edit *editor;
|
||||
};
|
||||
|
||||
/* local subsystem functions */
|
||||
|
||||
static void _e_eap_edit_save_cb(void *data, E_Dialog *dia);
|
||||
static void _e_eap_edit_cancel_cb(void *data, E_Dialog *dia);
|
||||
static void _e_eap_edit_browse_cb(void *data1, void *data2);
|
||||
static void _e_eap_edit_free(E_App_Edit *app);
|
||||
static void _e_eap_edit_selector_cb(E_Fileman *fileman, char *file, void *data);
|
||||
|
||||
static void _e_eap_edit_save_cb(void *data, E_Dialog *dia);
|
||||
static void _e_eap_edit_cancel_cb(void *data, E_Dialog *dia);
|
||||
static void _e_eap_edit_browse_cb(void *data1, void *data2);
|
||||
static void _e_eap_edit_free(E_App_Edit *app);
|
||||
static void _e_eap_edit_selector_cb(E_Fileman *fileman, char *file, void *data);
|
||||
static void _e_eap_edit_fill_data(E_App_Edit_CFData *cdfata);
|
||||
static void *_e_eap_edit_create_data(E_Config_Dialog *cfd);
|
||||
static void _e_eap_edit_free_data(E_Config_Dialog *cfd, void *data);
|
||||
static int _e_eap_edit_basic_apply_data(E_Config_Dialog *cfd, void *data);
|
||||
static int _e_eap_edit_advanced_apply_data(E_Config_Dialog *cfd, void *data);
|
||||
static Evas_Object *_e_eap_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, void *data);
|
||||
static Evas_Object *_e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, void *data);
|
||||
|
||||
|
||||
#define IFDUP(src, dst) if(src) dst = strdup(src); else dst = NULL
|
||||
|
||||
/* externally accessible functions */
|
||||
E_App_Edit *
|
||||
|
||||
void
|
||||
e_eap_edit_show(E_Container *con, E_App *a)
|
||||
{
|
||||
E_Manager *man;
|
||||
E_App_Edit *app;
|
||||
E_Config_Dialog *cfd;
|
||||
E_Config_Dialog_View v;
|
||||
E_App_Edit *editor;
|
||||
Evas_Object *o, *ol;
|
||||
|
||||
app = E_OBJECT_ALLOC(E_App_Edit, E_EAP_EDIT_TYPE, _e_eap_edit_free);
|
||||
if (!app) return NULL;
|
||||
app->dia = e_dialog_new(con);
|
||||
if (!app->dia)
|
||||
{
|
||||
free(app);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
app->con = con;
|
||||
e_dialog_title_set(app->dia, _("Eap Editor"));
|
||||
app->evas = e_win_evas_get(app->dia->win);
|
||||
|
||||
app->eap = a;
|
||||
if(!con)
|
||||
return;
|
||||
|
||||
ol = e_widget_list_add(app->evas, 0, 0);
|
||||
o = e_widget_table_add(app->evas, _("Eap Info"), 0);
|
||||
editor = E_NEW(E_App_Edit, 1);
|
||||
if (!editor) return;
|
||||
|
||||
IFDUP(a->name, app->data.name);
|
||||
IFDUP(a->generic, app->data.generic);
|
||||
IFDUP(a->comment, app->data.comment);
|
||||
IFDUP(a->exe, app->data.exe);
|
||||
IFDUP(a->win_name, app->data.wname);
|
||||
IFDUP(a->win_class, app->data.wclass);
|
||||
IFDUP(a->win_title, app->data.wtitle);
|
||||
IFDUP(a->win_role, app->data.wrole);
|
||||
IFDUP(a->path, app->data.path);
|
||||
editor->eap = a;
|
||||
|
||||
if(a->path)
|
||||
{
|
||||
app->img = edje_object_add(app->evas);
|
||||
edje_object_file_set(app->img, a->path, "icon");
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
app->img = edje_object_add(app->evas);
|
||||
e_theme_edje_object_set(app->img, "base/theme/icons/enlightenment/e", "icons/enlightenment/e");
|
||||
}
|
||||
|
||||
app->img_widget = e_widget_image_add_from_object(app->evas, app->img, 48, 48);
|
||||
e_widget_table_object_append(o, app->img_widget,
|
||||
0, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(o, e_widget_button_add(app->evas, "Set Icon",
|
||||
NULL, _e_eap_edit_browse_cb,
|
||||
app, NULL),
|
||||
1, 0, 1, 1,
|
||||
0, 0, 0, 0);
|
||||
|
||||
e_widget_table_object_append(o, e_widget_label_add(app->evas, "App name"),
|
||||
0, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
{
|
||||
Evas_Object *entry;
|
||||
entry = e_widget_entry_add(app->evas, &(app->data.name));
|
||||
e_widget_min_size_set(entry, 100, 1);
|
||||
e_widget_table_object_append(o, entry,
|
||||
1, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
}
|
||||
|
||||
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Generic Info"),
|
||||
0, 2, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.generic)),
|
||||
1, 2, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Comment"),
|
||||
0, 3, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.comment)),
|
||||
1, 3, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Executable"),
|
||||
0, 4, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.exe)),
|
||||
1, 4, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Window Name"),
|
||||
0, 5, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.wname)),
|
||||
1, 5, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Window Class"),
|
||||
0, 6, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.wclass)),
|
||||
1, 6, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Window Title"),
|
||||
0, 7, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.wtitle)),
|
||||
1, 7, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Window Role"),
|
||||
0, 8, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.wrole)),
|
||||
1, 8, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Icon Class"),
|
||||
0, 9, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.iclass)),
|
||||
1, 9, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Path"),
|
||||
0, 10, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_table_object_append(o, e_widget_entry_add(app->evas, &(app->data.path)),
|
||||
1, 10, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Startup notify"),
|
||||
0, 11, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_table_object_append(o, e_widget_check_add(app->evas, "", &(app->data.startup_notify)),
|
||||
1, 11, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(o, e_widget_label_add(app->evas, "Wait exit"),
|
||||
0, 12, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_table_object_append(o, e_widget_check_add(app->evas, "", &(app->data.wait_exit)),
|
||||
1, 12, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_list_object_append(ol, o, 1, 1, 0.5);
|
||||
|
||||
{
|
||||
Evas_Coord minw, minh;
|
||||
e_widget_min_size_get(ol, &minw, &minh);
|
||||
e_dialog_content_set(app->dia, ol, minw, minh);
|
||||
}
|
||||
|
||||
e_dialog_button_add(app->dia, _("Cancel"), NULL, _e_eap_edit_cancel_cb, app);
|
||||
e_dialog_button_add(app->dia, _("Save"), NULL, _e_eap_edit_save_cb, app);
|
||||
|
||||
e_dialog_show(app->dia);
|
||||
/* methods */
|
||||
v.create_cfdata = _e_eap_edit_create_data;
|
||||
v.free_cfdata = _e_eap_edit_free_data;
|
||||
v.basic.apply_cfdata = _e_eap_edit_basic_apply_data;
|
||||
v.basic.create_widgets = _e_eap_edit_basic_create_widgets;
|
||||
v.advanced.apply_cfdata = _e_eap_edit_advanced_apply_data;
|
||||
v.advanced.create_widgets = _e_eap_edit_advanced_create_widgets;
|
||||
/* create config diaolg for NULL object/data */
|
||||
cfd = e_config_dialog_new(con, _("Eap Editor"), NULL, 0, &v, editor);
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
|
||||
static void
|
||||
_e_eap_edit_save_cb(void *data, E_Dialog *dia)
|
||||
_e_eap_edit_fill_data(E_App_Edit_CFData *cfdata)
|
||||
{
|
||||
/*- BASIC -*/
|
||||
IFDUP(cfdata->editor->eap->name, cfdata->name);
|
||||
IFDUP(cfdata->editor->eap->exe, cfdata->exe);
|
||||
/*- ADVANCED -*/
|
||||
IFDUP(cfdata->editor->eap->generic, cfdata->generic);
|
||||
IFDUP(cfdata->editor->eap->comment, cfdata->comment);
|
||||
IFDUP(cfdata->editor->eap->win_name, cfdata->wname);
|
||||
IFDUP(cfdata->editor->eap->win_class, cfdata->wclass);
|
||||
IFDUP(cfdata->editor->eap->win_title, cfdata->wtitle);
|
||||
IFDUP(cfdata->editor->eap->win_role, cfdata->wrole);
|
||||
IFDUP(cfdata->editor->eap->path, cfdata->path);
|
||||
}
|
||||
|
||||
static void *
|
||||
_e_eap_edit_create_data(E_Config_Dialog *cfd)
|
||||
{
|
||||
E_App_Edit_CFData *cfdata;
|
||||
|
||||
cfdata = E_NEW(E_App_Edit_CFData, 1);
|
||||
if (!cfdata) return NULL;
|
||||
cfdata->editor = cfd->data;
|
||||
_e_eap_edit_fill_data(cfdata);
|
||||
return cfdata;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_eap_edit_free_data(E_Config_Dialog *cfd, void *data)
|
||||
{
|
||||
free(data);
|
||||
}
|
||||
|
||||
static int
|
||||
_e_eap_edit_basic_apply_data(E_Config_Dialog *cfd, void *data)
|
||||
{
|
||||
E_App_Edit *editor;
|
||||
E_App *eap;
|
||||
E_App_Edit_CFData *cfdata;
|
||||
|
||||
editor = data;
|
||||
cfdata = data;
|
||||
editor = cfdata->editor;
|
||||
eap = editor->eap;
|
||||
|
||||
if(!(editor->data.path))
|
||||
return;
|
||||
|
||||
printf("path : %s\n", editor->data.path);
|
||||
if(!(cfdata->path))
|
||||
return -1;
|
||||
|
||||
E_FREE(eap->name);
|
||||
E_FREE(eap->exe);
|
||||
E_FREE(eap->image);
|
||||
|
||||
IFDUP(cfdata->name, eap->name);
|
||||
IFDUP(cfdata->exe, eap->exe);
|
||||
IFDUP(cfdata->image, eap->image);
|
||||
|
||||
e_app_fields_save(eap);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int
|
||||
_e_eap_edit_advanced_apply_data(E_Config_Dialog *cfd, void *data)
|
||||
{
|
||||
E_App_Edit *editor;
|
||||
E_App *eap;
|
||||
E_App_Edit_CFData *cfdata;
|
||||
|
||||
cfdata = data;
|
||||
editor = cfdata->editor;
|
||||
eap = editor->eap;
|
||||
|
||||
if(!(cfdata->path))
|
||||
return -1;
|
||||
|
||||
E_FREE(eap->generic);
|
||||
E_FREE(eap->comment);
|
||||
E_FREE(eap->exe);
|
||||
E_FREE(eap->win_name);
|
||||
E_FREE(eap->win_class);
|
||||
E_FREE(eap->win_title);
|
||||
E_FREE(eap->win_role);
|
||||
E_FREE(eap->icon_class);
|
||||
E_FREE(eap->path);
|
||||
E_FREE(eap->image);
|
||||
if(editor->data.startup_notify)
|
||||
eap->startup_notify = 1;
|
||||
if(editor->data.wait_exit)
|
||||
eap->wait_exit = 1;
|
||||
|
||||
IFDUP(editor->data.name, eap->name);
|
||||
IFDUP(editor->data.generic, eap->generic);
|
||||
IFDUP(editor->data.comment, eap->comment);
|
||||
IFDUP(editor->data.exe, eap->exe);
|
||||
IFDUP(editor->data.wname, eap->win_name);
|
||||
IFDUP(editor->data.wclass, eap->win_class);
|
||||
IFDUP(editor->data.wtitle, eap->win_title);
|
||||
IFDUP(editor->data.wrole, eap->win_role);
|
||||
IFDUP(editor->data.iclass, eap->icon_class);
|
||||
IFDUP(editor->data.path, eap->path);
|
||||
IFDUP(editor->data.image, eap->image);
|
||||
|
||||
printf("image is: %s\n", eap->image);
|
||||
|
||||
printf("eap path: %s\n", eap->path);
|
||||
|
||||
if(cfdata->startup_notify)
|
||||
eap->startup_notify = 1;
|
||||
if(cfdata->wait_exit)
|
||||
eap->wait_exit = 1;
|
||||
|
||||
IFDUP(cfdata->generic, eap->generic);
|
||||
IFDUP(cfdata->comment, eap->comment);
|
||||
IFDUP(cfdata->wname, eap->win_name);
|
||||
IFDUP(cfdata->wclass, eap->win_class);
|
||||
IFDUP(cfdata->wtitle, eap->win_title);
|
||||
IFDUP(cfdata->wrole, eap->win_role);
|
||||
IFDUP(cfdata->iclass, eap->icon_class);
|
||||
IFDUP(cfdata->path, eap->path);
|
||||
|
||||
e_app_fields_save(eap);
|
||||
|
||||
_e_eap_edit_free(editor);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_eap_edit_cancel_cb(void *data, E_Dialog *dia)
|
||||
{
|
||||
_e_eap_edit_free(data);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_eap_edit_browse_cb(void *data1, void *data2)
|
||||
static Evas_Object *
|
||||
_e_eap_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, void *data)
|
||||
{
|
||||
E_Fileman *fileman;
|
||||
E_App_Edit_CFData *cfdata;
|
||||
E_App_Edit *editor;
|
||||
E_App *eap;
|
||||
Evas_Object *ol, *o;
|
||||
Evas_Object *entry;
|
||||
|
||||
editor = data1;
|
||||
fileman = e_fileman_new (editor->dia->win->container);
|
||||
e_fileman_selector_enable(fileman, _e_eap_edit_selector_cb, editor);
|
||||
e_win_resize(fileman->win, 640, 300);
|
||||
e_fileman_show (fileman);
|
||||
}
|
||||
|
||||
/* need to make sure we can load the image */
|
||||
static void
|
||||
_e_eap_edit_selector_cb(E_Fileman *fileman, char *file, void *data)
|
||||
{
|
||||
E_App_Edit *editor;
|
||||
char *ext;
|
||||
Evas_Object *img;
|
||||
cfdata = data;
|
||||
editor = cfdata->editor;
|
||||
eap = editor->eap;
|
||||
|
||||
ext = strrchr(file, '.');
|
||||
if(!ext)
|
||||
return;
|
||||
if(strcasecmp(ext, ".png") && strcasecmp(ext, ".jpg") &&
|
||||
strcasecmp(ext, ".jpeg"))
|
||||
return;
|
||||
ol = e_widget_list_add(evas, 0, 1);
|
||||
o = e_widget_frametable_add(evas, _("Icon"), 0);
|
||||
|
||||
if(eap->path)
|
||||
{
|
||||
editor->img = e_icon_add(evas);
|
||||
e_icon_file_key_set(editor->img, eap->path, "images/0");
|
||||
e_icon_fill_inside_set(editor->img, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
editor->img = edje_object_add(evas);
|
||||
e_theme_edje_object_set(editor->img, "base/theme/icons/enlightenment/e", "icons/enlightenment/e");
|
||||
}
|
||||
|
||||
editor->img_widget = e_widget_iconsel_add(evas, editor->img,
|
||||
48, 48, &cfdata->image);
|
||||
|
||||
editor = data;
|
||||
E_FREE(editor->eap->image);
|
||||
editor->data.image = strdup(file);
|
||||
e_widget_sub_object_del(editor->img_widget, editor->img);
|
||||
evas_object_del(editor->img);
|
||||
editor->img = evas_object_image_add(editor->evas);
|
||||
evas_object_image_file_set(editor->img, file, NULL);
|
||||
evas_object_resize(editor->img, 48, 48);
|
||||
evas_object_image_fill_set(editor->img, 0, 0, 48, 48);
|
||||
evas_object_show(editor->img);
|
||||
e_widget_resize_object_set(editor->img_widget, editor->img);
|
||||
e_widget_sub_object_add(editor->img_widget, editor->img);
|
||||
e_widget_min_size_set(editor->img_widget, 48, 48);
|
||||
evas_object_resize(editor->img, 48, 48); //temp hack
|
||||
e_widget_frametable_object_append(o, editor->img_widget,
|
||||
0, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
|
||||
e_widget_list_object_append(ol, o, 1, 1, 0.5);
|
||||
|
||||
o = e_widget_frametable_add(evas, _("Basic Info"), 0);
|
||||
|
||||
e_object_del(fileman);
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, "App name"),
|
||||
0, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
entry = e_widget_entry_add(evas, &(cfdata->name));
|
||||
e_widget_min_size_set(entry, 100, 1);
|
||||
e_widget_frametable_object_append(o, entry,
|
||||
1, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, "Executable"),
|
||||
0, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(cfdata->exe)),
|
||||
1, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_list_object_append(ol, o, 1, 1, 0.5);
|
||||
|
||||
return ol;
|
||||
}
|
||||
|
||||
static void _e_eap_edit_free(E_App_Edit *app)
|
||||
static Evas_Object *
|
||||
_e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, void *data)
|
||||
{
|
||||
e_object_del(E_OBJECT(app->eap));
|
||||
e_object_del(E_OBJECT(app->dia));
|
||||
E_FREE(app);
|
||||
E_App_Edit_CFData *cfdata;
|
||||
E_App_Edit *editor;
|
||||
E_App *eap;
|
||||
Evas_Object *ol, *o;
|
||||
Evas_Object *entry;
|
||||
|
||||
cfdata = data;
|
||||
editor = cfdata->editor;
|
||||
eap = editor->eap;
|
||||
|
||||
ol = e_widget_table_add(evas, _("Advanced"), 0);
|
||||
|
||||
o = e_widget_frametable_add(evas, _("General"), 0);
|
||||
|
||||
/*- general info -*/
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, "Generic Info"),
|
||||
0, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
entry = e_widget_entry_add(evas, &(cfdata->generic));
|
||||
e_widget_min_size_set(entry, 100, 1);
|
||||
e_widget_frametable_object_append(o, entry,
|
||||
1, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, "Comment"),
|
||||
0, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(cfdata->comment)),
|
||||
1, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(ol, o, 0, 0, 1, 1, 1 ,1, 1, 1);
|
||||
|
||||
|
||||
/*- window info -*/
|
||||
|
||||
o = e_widget_frametable_add(evas, _("Window"), 0);
|
||||
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, "Window Name"),
|
||||
0, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
entry = e_widget_entry_add(evas, &(cfdata->wname));
|
||||
e_widget_min_size_set(entry, 100, 1);
|
||||
e_widget_frametable_object_append(o, entry,
|
||||
1, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, "Window Class"),
|
||||
0, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(cfdata->wclass)),
|
||||
1, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, "Window Title"),
|
||||
0, 2, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(cfdata->wtitle)),
|
||||
1, 2, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, "Window Role"),
|
||||
0, 3, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(cfdata->wrole)),
|
||||
1, 3, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(ol, o, 0, 1, 1, 1, 1 ,1, 1, 1);
|
||||
|
||||
/*- icon info -*/
|
||||
|
||||
o = e_widget_frametable_add(evas, _("Icon"), 0);
|
||||
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, "Icon Class"),
|
||||
0, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
entry = e_widget_entry_add(evas, &(cfdata->iclass));
|
||||
e_widget_min_size_set(entry, 100, 1);
|
||||
e_widget_frametable_object_append(o, entry,
|
||||
1, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, "Path"),
|
||||
0, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(cfdata->path)),
|
||||
1, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(ol, o, 1, 0, 1, 1, 1 ,1, 1, 1);
|
||||
|
||||
|
||||
/*- misc info -*/
|
||||
|
||||
o = e_widget_frametable_add(evas, _("Misc"), 0);
|
||||
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, "Startup notify"),
|
||||
0, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_frametable_object_append(o, e_widget_check_add(evas, "", &(cfdata->startup_notify)),
|
||||
1, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, "Wait exit"),
|
||||
0, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_frametable_object_append(o, e_widget_check_add(evas, "", &(cfdata->wait_exit)),
|
||||
1, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(ol, o, 1, 1, 1, 1, 1 ,1, 1, 1);
|
||||
|
||||
return ol;
|
||||
}
|
||||
|
|
|
@ -1,45 +1,9 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
|
||||
typedef struct _E_App_Edit E_App_Edit;
|
||||
|
||||
#else
|
||||
#ifndef E_EAP_EDIT_H
|
||||
#define E_EAP_EDIT_H
|
||||
|
||||
#define E_EAP_EDIT_TYPE 0xE0b01019
|
||||
|
||||
struct _E_App_Edit
|
||||
{
|
||||
E_Object e_obj_inherit;
|
||||
|
||||
E_Container *con;
|
||||
E_Win *win;
|
||||
Evas *evas;
|
||||
E_Dialog *dia;
|
||||
|
||||
E_App *eap;
|
||||
|
||||
Evas_Object *img;
|
||||
Evas_Object *img_widget;
|
||||
|
||||
struct {
|
||||
char *image;
|
||||
char *name;
|
||||
char *generic;
|
||||
char *comment;
|
||||
char *exe;
|
||||
char *wname;
|
||||
char *wclass;
|
||||
char *wtitle;
|
||||
char *wrole;
|
||||
char *iclass;
|
||||
char *path;
|
||||
int startup_notify;
|
||||
int wait_exit;
|
||||
} data;
|
||||
};
|
||||
|
||||
E_App_Edit *e_eap_edit_show(E_Container *con, E_App *a);
|
||||
EAPI void e_eap_edit_show(E_Container *con, E_App *a);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -30,8 +30,6 @@ static void _e_fm_icon_smart_add (Evas_Object *obj);
|
|||
static void _e_fm_icon_smart_del (Evas_Object *obj);
|
||||
static void _e_fm_icon_smart_move (Evas_Object *obj, Evas_Coord x, Evas_Coord y);
|
||||
static void _e_fm_icon_smart_resize (Evas_Object *obj, Evas_Coord w, Evas_Coord h);
|
||||
static void _e_fm_icon_smart_show (Evas_Object *obj);
|
||||
static void _e_fm_icon_smart_hide (Evas_Object *obj);
|
||||
static void _e_fm_icon_smart_clip_set (Evas_Object *obj, Evas_Object *clip);
|
||||
static void _e_fm_icon_smart_clip_unset (Evas_Object *obj);
|
||||
|
||||
|
@ -86,8 +84,8 @@ e_fm_icon_add(Evas *evas)
|
|||
NULL, NULL, NULL, NULL, NULL,
|
||||
_e_fm_icon_smart_move,
|
||||
_e_fm_icon_smart_resize,
|
||||
_e_fm_icon_smart_show,
|
||||
_e_fm_icon_smart_hide,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
_e_fm_icon_smart_clip_set,
|
||||
_e_fm_icon_smart_clip_unset,
|
||||
|
@ -109,6 +107,39 @@ e_fm_icon_file_set(Evas_Object *obj, E_Fm_File *file)
|
|||
e_object_ref(E_OBJECT(file));
|
||||
sd->file = file;
|
||||
file->icon_object = obj;
|
||||
|
||||
if (e_fm_file_can_preview(sd->file))
|
||||
{
|
||||
sd->thumb_path = e_thumb_file_get(sd->file->path);
|
||||
if (e_thumb_exists(sd->file->path))
|
||||
sd->image_object = e_thumb_evas_object_get(sd->file->path,
|
||||
sd->evas,
|
||||
sd->w,
|
||||
sd->h);
|
||||
else
|
||||
{
|
||||
thumb_files = evas_list_append(thumb_files, sd);
|
||||
if (pid == -1) _e_fm_icon_thumb_generate();
|
||||
_e_fm_icon_icon_mime_get(sd);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_e_fm_icon_icon_mime_get(sd);
|
||||
}
|
||||
|
||||
if (sd->image_object)
|
||||
{
|
||||
edje_object_part_swallow(sd->icon_object, "icon_swallow", sd->image_object);
|
||||
evas_object_smart_member_add(sd->image_object, obj);
|
||||
evas_object_show(sd->image_object);
|
||||
}
|
||||
|
||||
if(sd->saved_title)
|
||||
edje_object_part_text_set(sd->icon_object, "icon_title", sd->saved_title);
|
||||
else
|
||||
edje_object_part_text_set(sd->icon_object, "icon_title", sd->file->name);
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -178,8 +209,25 @@ _e_fm_icon_smart_add(Evas_Object *obj)
|
|||
sd->event_object = evas_object_rectangle_add(sd->evas);
|
||||
evas_object_color_set(sd->event_object, 0, 0, 0, 0);
|
||||
evas_object_smart_member_add(sd->event_object, obj);
|
||||
|
||||
evas_object_show(sd->event_object);
|
||||
evas_object_smart_data_set(obj, sd);
|
||||
|
||||
sd->visible = 1;
|
||||
sd->icon_object = edje_object_add(sd->evas);
|
||||
e_theme_edje_object_set(sd->icon_object, "base/theme/fileman",
|
||||
"fileman/icon");
|
||||
evas_object_smart_member_add(sd->icon_object, obj);
|
||||
|
||||
evas_object_show(sd->icon_object);
|
||||
evas_object_show(sd->event_object);
|
||||
|
||||
{
|
||||
Evas_Coord icon_w, icon_h;
|
||||
edje_object_size_min_calc(sd->icon_object, &icon_w, &icon_h);
|
||||
evas_object_resize(sd->icon_object, icon_w, icon_h);
|
||||
evas_object_resize(sd->event_object, icon_w, icon_h);
|
||||
evas_object_resize(sd->obj, icon_w, icon_h);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -245,90 +293,6 @@ _e_fm_icon_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
|
|||
//if (sd->image_object) evas_object_resize(sd->image_object, w, h);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_fm_icon_smart_show(Evas_Object *obj)
|
||||
{
|
||||
E_Smart_Data *sd;
|
||||
|
||||
sd = evas_object_smart_data_get(obj);
|
||||
if ((!sd) && (!sd->file)) return;
|
||||
if (sd->visible) return;
|
||||
|
||||
evas_object_show(sd->event_object);
|
||||
sd->visible = 1;
|
||||
sd->icon_object = edje_object_add(sd->evas);
|
||||
e_theme_edje_object_set(sd->icon_object, "base/theme/fileman",
|
||||
"fileman/icon");
|
||||
evas_object_smart_member_add(sd->icon_object, obj);
|
||||
|
||||
if (e_fm_file_can_preview(sd->file))
|
||||
{
|
||||
sd->thumb_path = e_thumb_file_get(sd->file->path);
|
||||
if (e_thumb_exists(sd->file->path))
|
||||
sd->image_object = e_thumb_evas_object_get(sd->file->path,
|
||||
sd->evas,
|
||||
sd->w,
|
||||
sd->h);
|
||||
else
|
||||
{
|
||||
thumb_files = evas_list_append(thumb_files, sd);
|
||||
if (pid == -1) _e_fm_icon_thumb_generate();
|
||||
_e_fm_icon_icon_mime_get(sd);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_e_fm_icon_icon_mime_get(sd);
|
||||
}
|
||||
|
||||
if (sd->image_object)
|
||||
{
|
||||
edje_object_part_swallow(sd->icon_object, "icon_swallow", sd->image_object);
|
||||
evas_object_smart_member_add(sd->image_object, obj);
|
||||
}
|
||||
if(sd->saved_title)
|
||||
edje_object_part_text_set(sd->icon_object, "icon_title", sd->saved_title);
|
||||
else
|
||||
edje_object_part_text_set(sd->icon_object, "icon_title", sd->file->name);
|
||||
|
||||
evas_object_show(sd->icon_object);
|
||||
|
||||
{
|
||||
Evas_Coord icon_w, icon_h;
|
||||
edje_object_size_min_calc(sd->icon_object, &icon_w, &icon_h);
|
||||
evas_object_resize(sd->icon_object, icon_w, icon_h);
|
||||
evas_object_resize(sd->event_object, icon_w, icon_h);
|
||||
evas_object_resize(sd->obj, icon_w, icon_h);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_fm_icon_smart_hide(Evas_Object *obj)
|
||||
{
|
||||
E_Smart_Data *sd;
|
||||
|
||||
sd = evas_object_smart_data_get(obj);
|
||||
if (!sd) return;
|
||||
if (!sd->visible) return;
|
||||
|
||||
evas_object_hide(sd->event_object);
|
||||
sd->visible = 0;
|
||||
if (sd->icon_object)
|
||||
{
|
||||
evas_object_smart_member_del(sd->icon_object);
|
||||
evas_object_del(sd->icon_object);
|
||||
}
|
||||
sd->icon_object = NULL;
|
||||
if (sd->image_object)
|
||||
{
|
||||
evas_object_smart_member_del(sd->image_object);
|
||||
evas_object_del(sd->image_object);
|
||||
}
|
||||
sd->image_object = NULL;
|
||||
if (sd->thumb_path) free(sd->thumb_path);
|
||||
sd->thumb_path = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_fm_icon_smart_clip_set(Evas_Object *obj, Evas_Object *clip)
|
||||
{
|
||||
|
@ -338,6 +302,7 @@ _e_fm_icon_smart_clip_set(Evas_Object *obj, Evas_Object *clip)
|
|||
if (!sd) return;
|
||||
|
||||
evas_object_clip_set(sd->event_object, clip);
|
||||
evas_object_clip_set(sd->icon_object, clip);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -359,7 +324,7 @@ _e_fm_icon_icon_mime_get(E_Smart_Data *sd)
|
|||
if (sd->file->type == E_FM_FILE_TYPE_DIRECTORY)
|
||||
{
|
||||
e_theme_edje_object_set(sd->image_object, "base/theme/fileman",
|
||||
"fileman/icons/folder");
|
||||
"icons/fileman/folder");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -376,15 +341,15 @@ _e_fm_icon_icon_mime_get(E_Smart_Data *sd)
|
|||
for (; *ext2; ext2++)
|
||||
*ext2 = tolower(*ext2);
|
||||
|
||||
snprintf(part, PATH_MAX, "fileman/icons/%s", (ext + 1));
|
||||
snprintf(part, PATH_MAX, "icons/fileman/%s", (ext + 1));
|
||||
|
||||
if (!e_theme_edje_object_set(sd->image_object, "base/theme/fileman", part))
|
||||
e_theme_edje_object_set(sd->image_object, "base/theme/fileman", "fileman/icons/file");
|
||||
e_theme_edje_object_set(sd->image_object, "base/theme/fileman", "icons/fileman/file");
|
||||
|
||||
free(ext);
|
||||
}
|
||||
else
|
||||
e_theme_edje_object_set(sd->image_object, "base/theme/fileman", "fileman/icons/file");
|
||||
e_theme_edje_object_set(sd->image_object, "base/theme/fileman", "icons/fileman/file");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -183,8 +183,6 @@ static void _e_fm_smart_add(Evas_Object *object);
|
|||
static void _e_fm_smart_del(Evas_Object *object);
|
||||
static void _e_fm_smart_move(Evas_Object *object, Evas_Coord x, Evas_Coord y);
|
||||
static void _e_fm_smart_resize(Evas_Object *object, Evas_Coord w, Evas_Coord h);
|
||||
static void _e_fm_smart_show(Evas_Object *object);
|
||||
static void _e_fm_smart_hide(Evas_Object *object);
|
||||
|
||||
static void _e_fm_redraw(E_Fm_Smart_Data *sd);
|
||||
|
||||
|
@ -254,8 +252,8 @@ e_fm_init(void)
|
|||
NULL, NULL, NULL, NULL, NULL,
|
||||
_e_fm_smart_move, /* move */
|
||||
_e_fm_smart_resize, /* resize */
|
||||
_e_fm_smart_show, /* show */
|
||||
_e_fm_smart_hide, /* hide */
|
||||
NULL,/* show */
|
||||
NULL,/* hide */
|
||||
NULL, /* color_set */
|
||||
NULL, /* clip_set */
|
||||
NULL, /* clip_unset */
|
||||
|
@ -432,6 +430,17 @@ e_fm_selector_enable(Evas_Object *object, void (*func)(Evas_Object *object, char
|
|||
sd->selector_data = data;
|
||||
}
|
||||
|
||||
void
|
||||
e_fm_background_set(Evas_Object *object, Evas_Object *bg)
|
||||
{
|
||||
E_Fm_Smart_Data *sd;
|
||||
|
||||
if ((!object) || !(sd = evas_object_smart_data_get(object)))
|
||||
return;
|
||||
|
||||
sd->bg = bg;
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
|
||||
static void
|
||||
|
@ -452,25 +461,29 @@ _e_fm_smart_add(Evas_Object *object)
|
|||
sd->evas = evas_object_evas_get(object);
|
||||
sd->frozen = 0;
|
||||
sd->is_selector = 0;
|
||||
sd->bg = evas_object_rectangle_add(sd->evas); // this should become an edje
|
||||
evas_object_color_set(sd->bg, 0, 0, 0, 0);
|
||||
evas_object_show(sd->bg);
|
||||
|
||||
sd->bg = edje_object_add(sd->evas);
|
||||
evas_object_smart_member_add(sd->bg, object);
|
||||
evas_object_show(sd->bg);
|
||||
e_theme_edje_object_set(sd->selection.band.obj,
|
||||
"base/theme/fileman/background",
|
||||
"fileman/background");
|
||||
evas_object_event_callback_add(sd->bg, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
_e_fm_mouse_down_cb, sd);
|
||||
evas_object_event_callback_add(sd->bg, EVAS_CALLBACK_MOUSE_UP,
|
||||
_e_fm_mouse_up_cb, sd);
|
||||
evas_object_event_callback_add(sd->bg, EVAS_CALLBACK_MOUSE_MOVE,
|
||||
_e_fm_mouse_move_cb, sd);
|
||||
evas_object_smart_member_add(sd->bg, object);
|
||||
|
||||
|
||||
sd->layout = e_icon_layout_add(sd->evas);
|
||||
evas_object_smart_member_add(sd->layout, object);
|
||||
e_icon_layout_spacing_set(sd->layout, sd->icon_info.x_space, sd->icon_info.y_space);
|
||||
evas_object_stack_above(sd->layout, sd->bg);
|
||||
evas_object_show(sd->layout);
|
||||
|
||||
sd->clip = evas_object_rectangle_add(sd->evas);
|
||||
evas_object_smart_member_add(sd->clip, object);
|
||||
evas_object_show(sd->clip);
|
||||
evas_object_move(sd->clip, -100000, -100000);
|
||||
evas_object_resize(sd->clip, 200000, 200000);
|
||||
evas_object_color_set(sd->clip, 255, 255, 255, 255);
|
||||
|
@ -479,6 +492,7 @@ _e_fm_smart_add(Evas_Object *object)
|
|||
evas_object_clip_set(sd->layout, sd->clip);
|
||||
|
||||
sd->selection.band.obj = edje_object_add(sd->evas);
|
||||
evas_object_smart_member_add(sd->selection.band.obj, object);
|
||||
e_theme_edje_object_set(sd->selection.band.obj,
|
||||
"base/theme/fileman/rubberband",
|
||||
"fileman/rubberband");
|
||||
|
@ -629,28 +643,6 @@ _e_fm_smart_resize(Evas_Object *object, Evas_Coord w, Evas_Coord h)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_fm_smart_show(Evas_Object *object)
|
||||
{
|
||||
E_Fm_Smart_Data *sd;
|
||||
|
||||
sd = evas_object_smart_data_get(object);
|
||||
if (!sd) return;
|
||||
|
||||
evas_object_show(sd->clip);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_fm_smart_hide(Evas_Object *object)
|
||||
{
|
||||
E_Fm_Smart_Data *sd;
|
||||
|
||||
sd = evas_object_smart_data_get(object);
|
||||
if (!sd) return;
|
||||
|
||||
evas_object_hide(sd->clip);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_fm_redraw(E_Fm_Smart_Data *sd)
|
||||
{
|
||||
|
|
|
@ -38,6 +38,7 @@ EAPI void e_fm_reconfigure_callback_add(Evas_Object *object, vo
|
|||
EAPI int e_fm_freeze(Evas_Object *freeze);
|
||||
EAPI int e_fm_thaw(Evas_Object *freeze);
|
||||
EAPI void e_fm_selector_enable(Evas_Object *object, void (*func)(Evas_Object *object, char *file, void *data), void *data);
|
||||
EAPI void e_fm_background_set(Evas_Object *object, Evas_Object *bg);
|
||||
|
||||
extern int E_EVENT_FM_RECONFIGURE;
|
||||
extern int E_EVENT_FM_DIRECTORY_CHANGE;
|
||||
|
|
|
@ -19,7 +19,7 @@ struct _E_Smart_Data
|
|||
int clip_frozen;
|
||||
int fixed;
|
||||
unsigned char changed : 1;
|
||||
Evas_List *items;
|
||||
Evas_List *items;
|
||||
};
|
||||
|
||||
struct _E_Icon_Layout_Item
|
||||
|
@ -42,8 +42,6 @@ static void _e_icon_layout_smart_add(Evas_Object *obj);
|
|||
static void _e_icon_layout_smart_del(Evas_Object *obj);
|
||||
static void _e_icon_layout_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
|
||||
static void _e_icon_layout_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
|
||||
static void _e_icon_layout_smart_show(Evas_Object *obj);
|
||||
static void _e_icon_layout_smart_hide(Evas_Object *obj);
|
||||
static void _e_icon_layout_smart_color_set(Evas_Object *obj, int r, int g, int b, int a);
|
||||
static void _e_icon_layout_smart_clip_set(Evas_Object *obj, Evas_Object *clip);
|
||||
static void _e_icon_layout_smart_clip_unset(Evas_Object *obj);
|
||||
|
@ -270,6 +268,7 @@ _e_icon_layout_smart_adopt(E_Smart_Data *sd, Evas_Object *obj)
|
|||
li->h = 0;
|
||||
evas_object_clip_set(obj, sd->clip);
|
||||
evas_object_smart_member_add(obj, li->sd->obj);
|
||||
evas_object_show(obj);
|
||||
evas_object_data_set(obj, "e_icon_layout_data", li);
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_FREE,
|
||||
_e_icon_layout_smart_item_del_hook, NULL);
|
||||
|
@ -397,8 +396,8 @@ _e_icon_layout_smart_init(void)
|
|||
NULL, NULL, NULL, NULL, NULL,
|
||||
_e_icon_layout_smart_move,
|
||||
_e_icon_layout_smart_resize,
|
||||
_e_icon_layout_smart_show,
|
||||
_e_icon_layout_smart_hide,
|
||||
NULL,
|
||||
NULL,
|
||||
_e_icon_layout_smart_color_set,
|
||||
_e_icon_layout_smart_clip_set,
|
||||
_e_icon_layout_smart_clip_unset,
|
||||
|
@ -425,11 +424,12 @@ _e_icon_layout_smart_add(Evas_Object *obj)
|
|||
sd->yc = 0;
|
||||
sd->fixed = 0;
|
||||
sd->clip = evas_object_rectangle_add(evas_object_evas_get(obj));
|
||||
evas_object_smart_member_add(sd->clip, obj);
|
||||
evas_object_move(sd->clip, 0, 0);
|
||||
evas_object_resize(sd->clip, 0, 0);
|
||||
evas_object_color_set(sd->clip, 255, 255, 255, 255);
|
||||
evas_object_smart_data_set(obj, sd);
|
||||
evas_object_smart_member_add(sd->clip, obj);
|
||||
evas_object_show(sd->clip);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -493,29 +493,9 @@ _e_icon_layout_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
|
|||
sd->w = w;
|
||||
sd->h = h;
|
||||
sd->changed = 1;
|
||||
_e_icon_layout_smart_reconfigure(sd);
|
||||
_e_icon_layout_smart_reconfigure(sd);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_icon_layout_smart_show(Evas_Object *obj)
|
||||
{
|
||||
E_Smart_Data *sd;
|
||||
|
||||
sd = evas_object_smart_data_get(obj);
|
||||
if (!sd) return;
|
||||
if (sd->items) evas_object_show(sd->clip);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_icon_layout_smart_hide(Evas_Object *obj)
|
||||
{
|
||||
E_Smart_Data *sd;
|
||||
|
||||
sd = evas_object_smart_data_get(obj);
|
||||
if (!sd) return;
|
||||
evas_object_hide(sd->clip);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_e_icon_layout_smart_color_set(Evas_Object *obj, int r, int g, int b, int a)
|
||||
{
|
||||
|
|
|
@ -614,11 +614,10 @@ static void
|
|||
_e_int_menus_eapedit_item_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
/* This is temporarily put here so we can test the eap editor */
|
||||
E_App_Edit *eap_edit;
|
||||
E_App *a;
|
||||
|
||||
a = e_app_empty_new(NULL);
|
||||
eap_edit = e_eap_edit_show(m->zone->container, a);
|
||||
e_eap_edit_show(m->zone->container, a);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -13,8 +13,19 @@ typedef struct _E_Scrollbar_Smart_Data E_Scrollbar_Smart_Data;
|
|||
|
||||
struct _E_Scrollbar_Smart_Data
|
||||
{
|
||||
Evas_Object *edje_object;
|
||||
|
||||
struct {
|
||||
Evas_Object *object;
|
||||
Evas_Coord x, y, w, h;
|
||||
} edje, drag;
|
||||
|
||||
struct {
|
||||
Evas_Coord x, y, w, h;
|
||||
} confine;
|
||||
|
||||
int is_dragging;
|
||||
|
||||
Evas_Coord mx, my;
|
||||
|
||||
struct {
|
||||
double min;
|
||||
double max;
|
||||
|
@ -33,7 +44,11 @@ static void _e_scrollbar_smart_resize(Evas_Object *object, Evas_Coord w, Evas_Co
|
|||
static void _e_scrollbar_smart_show(Evas_Object *object);
|
||||
static void _e_scrollbar_smart_hide(Evas_Object *object);
|
||||
static void _e_scrollbar_drag_cb(void *data, Evas_Object *object, const char *emission, const char *source);
|
||||
|
||||
|
||||
static void _e_scrollbar_drag_mouse_move_cb(void *data, Evas *evas, Evas_Object *object, void *event_info);
|
||||
static void _e_scrollbar_drag_mouse_up_cb(void *data, Evas *evas, Evas_Object *object, void *event_info);
|
||||
static void _e_scrollbar_drag_mouse_down_cb(void *data, Evas *evas, Evas_Object *object, void *event_info);
|
||||
|
||||
static Evas_Smart *e_scrollbar_smart = NULL;
|
||||
|
||||
Evas_Object *
|
||||
|
@ -71,16 +86,22 @@ e_scrollbar_direction_set(Evas_Object *object, E_Scrollbar_Direction dir)
|
|||
switch (dir)
|
||||
{
|
||||
case E_SCROLLBAR_HORIZONTAL:
|
||||
e_theme_edje_object_set(sd->edje_object,
|
||||
e_theme_edje_object_set(sd->edje.object,
|
||||
"base/theme/widgets/hscrollbar",
|
||||
"widgets/hscrollbar");
|
||||
e_theme_edje_object_set(sd->drag.object,
|
||||
"base/theme/widgets/vscrollbar",
|
||||
"widgets/hscrollbar_drag");
|
||||
sd->direction = dir;
|
||||
break;
|
||||
|
||||
case E_SCROLLBAR_VERTICAL:
|
||||
e_theme_edje_object_set(sd->edje_object,
|
||||
e_theme_edje_object_set(sd->edje.object,
|
||||
"base/theme/widgets/vscrollbar",
|
||||
"widgets/vscrollbar");
|
||||
e_theme_edje_object_set(sd->drag.object,
|
||||
"base/theme/widgets/vscrollbar",
|
||||
"widgets/vscrollbar_drag");
|
||||
sd->direction = dir;
|
||||
break;
|
||||
}
|
||||
|
@ -125,9 +146,9 @@ e_scrollbar_value_set(Evas_Object *object, double value)
|
|||
sd->value.current = value;
|
||||
|
||||
if (sd->direction == E_SCROLLBAR_HORIZONTAL)
|
||||
edje_object_part_drag_value_set(sd->edje_object, "drag", value, 0);
|
||||
edje_object_part_drag_value_set(sd->edje.object, "drag", value, 0);
|
||||
else
|
||||
edje_object_part_drag_value_set(sd->edje_object, "drag", 0, value);
|
||||
edje_object_part_drag_value_set(sd->edje.object, "drag", 0, value);
|
||||
}
|
||||
|
||||
double
|
||||
|
@ -139,7 +160,7 @@ e_scrollbar_value_get(Evas_Object *object)
|
|||
if ((!object) || !(sd = evas_object_smart_data_get(object)))
|
||||
return 0.0;
|
||||
|
||||
edje_object_part_drag_value_get(sd->edje_object, "drag", &dx, &dy);
|
||||
edje_object_part_drag_value_get(sd->edje.object, "drag", &dx, &dy);
|
||||
|
||||
if (sd->direction == E_SCROLLBAR_HORIZONTAL)
|
||||
sd->value.current = dx;
|
||||
|
@ -159,13 +180,13 @@ e_scrollbar_increments_set(Evas_Object *object, double step, double page)
|
|||
|
||||
if (sd->direction == E_SCROLLBAR_HORIZONTAL)
|
||||
{
|
||||
edje_object_part_drag_step_set(sd->edje_object, "drag", step, 0);
|
||||
edje_object_part_drag_page_set(sd->edje_object, "drag", page, 0);
|
||||
edje_object_part_drag_step_set(sd->edje.object, "drag", step, 0);
|
||||
edje_object_part_drag_page_set(sd->edje.object, "drag", page, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
edje_object_part_drag_step_set(sd->edje_object, "drag", 0, step);
|
||||
edje_object_part_drag_page_set(sd->edje_object, "drag", 0, page);
|
||||
edje_object_part_drag_step_set(sd->edje.object, "drag", 0, step);
|
||||
edje_object_part_drag_page_set(sd->edje.object, "drag", 0, page);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -179,8 +200,8 @@ e_scrollbar_increments_get(Evas_Object *object, double *step, double *page)
|
|||
if ((!object) || !(sd = evas_object_smart_data_get(object)))
|
||||
return;
|
||||
|
||||
edje_object_part_drag_step_get(sd->edje_object, "drag", &stepx, &stepy);
|
||||
edje_object_part_drag_page_get(sd->edje_object, "drag", &pagex, &pagey);
|
||||
edje_object_part_drag_step_get(sd->edje.object, "drag", &stepx, &stepy);
|
||||
edje_object_part_drag_page_get(sd->edje.object, "drag", &pagex, &pagey);
|
||||
|
||||
if (sd->direction == E_SCROLLBAR_HORIZONTAL)
|
||||
{
|
||||
|
@ -210,19 +231,45 @@ _e_scrollbar_smart_add(Evas_Object *object)
|
|||
|
||||
sd = calloc(1, sizeof(E_Scrollbar_Smart_Data));
|
||||
if (!sd) return;
|
||||
sd->is_dragging = 0;
|
||||
sd->value.min = 0.0;
|
||||
sd->value.max = 1.0;
|
||||
sd->callbacks = NULL;
|
||||
sd->direction = E_SCROLLBAR_HORIZONTAL;
|
||||
sd->edje_object = edje_object_add(evas);
|
||||
e_theme_edje_object_set(sd->edje_object,
|
||||
sd->direction = E_SCROLLBAR_HORIZONTAL;
|
||||
|
||||
sd->edje.object = edje_object_add(evas);
|
||||
sd->edje.x = 0;
|
||||
sd->edje.y = 0;
|
||||
sd->edje.w = 0;
|
||||
sd->edje.h = 0;
|
||||
e_theme_edje_object_set(sd->edje.object, "base/theme/widgets/hscrollbar",
|
||||
"widgets/hscrollbar");
|
||||
|
||||
sd->drag.object = edje_object_add(evas);
|
||||
sd->drag.x = 0;
|
||||
sd->drag.y = 0;
|
||||
sd->drag.w = 0;
|
||||
sd->drag.h = 0;
|
||||
e_theme_edje_object_set(sd->drag.object,
|
||||
"base/theme/widgets/hscrollbar",
|
||||
"widgets/hscrollbar");
|
||||
edje_object_signal_callback_add(sd->edje_object, "drag", "*", _e_scrollbar_drag_cb, sd);
|
||||
evas_object_data_set(sd->edje_object, "smart", object);
|
||||
evas_object_smart_member_add(sd->edje_object, object);
|
||||
"widgets/hscrollbar_drag");
|
||||
|
||||
edje_object_part_geometry_get(sd->drag.object, "confine",
|
||||
&sd->confine.x, &sd->confine.y,
|
||||
&sd->confine.w, sd->confine.h);
|
||||
|
||||
evas_object_event_callback_add(sd->drag.object, EVAS_CALLBACK_MOUSE_MOVE, _e_scrollbar_drag_mouse_move_cb, sd);
|
||||
evas_object_event_callback_add(sd->drag.object, EVAS_CALLBACK_MOUSE_UP, _e_scrollbar_drag_mouse_up_cb, sd);
|
||||
evas_object_event_callback_add(sd->drag.object, EVAS_CALLBACK_MOUSE_DOWN, _e_scrollbar_drag_mouse_down_cb, sd);
|
||||
|
||||
evas_object_data_set(sd->edje.object, "smart", object);
|
||||
evas_object_smart_member_add(sd->edje.object, object);
|
||||
evas_object_smart_member_add(sd->drag.object, object);
|
||||
|
||||
evas_object_smart_data_set(object, sd);
|
||||
|
||||
evas_object_show(sd->edje.object);
|
||||
evas_object_show(sd->drag.object);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -233,8 +280,8 @@ _e_scrollbar_smart_del(Evas_Object *object)
|
|||
if ((!object) || !(sd = evas_object_smart_data_get(object)))
|
||||
return;
|
||||
|
||||
evas_object_del(sd->edje_object);
|
||||
|
||||
evas_object_del(sd->edje.object);
|
||||
evas_object_del(sd->drag.object);
|
||||
free(sd);
|
||||
}
|
||||
|
||||
|
@ -242,12 +289,28 @@ _e_scrollbar_smart_del(Evas_Object *object)
|
|||
static void
|
||||
_e_scrollbar_smart_move(Evas_Object *object, Evas_Coord x, Evas_Coord y)
|
||||
{
|
||||
E_Scrollbar_Smart_Data *sd;
|
||||
|
||||
E_Scrollbar_Smart_Data *sd;
|
||||
Evas_Coord we, ye, yd, wd;
|
||||
Evas_Coord cx, cy, cw, ch;
|
||||
|
||||
if ((!object) || !(sd = evas_object_smart_data_get(object)))
|
||||
return;
|
||||
|
||||
evas_object_move(sd->edje_object, x, y);
|
||||
|
||||
evas_object_geometry_get(sd->edje.object, NULL, &ye, &we, NULL);
|
||||
evas_object_geometry_get(sd->drag.object, NULL, &yd, &wd, NULL);
|
||||
|
||||
evas_object_move(sd->edje.object, x, y);
|
||||
edje_object_part_geometry_get(sd->edje.object, "confine", &cx, &cy, &cw, &ch);
|
||||
evas_object_move(sd->drag.object, x + cx + abs(wd - cw)/2, y + cy);
|
||||
|
||||
sd->edje.x = x;
|
||||
sd->edje.y = y;
|
||||
|
||||
sd->confine.x = x + cx;
|
||||
sd->confine.y = y + cy;
|
||||
|
||||
sd->drag.x = x + cx + abs(cw - wd)/2;
|
||||
sd->drag.y = y + cy ;
|
||||
}
|
||||
|
||||
/* Called when the object is resized */
|
||||
|
@ -255,11 +318,18 @@ static void
|
|||
_e_scrollbar_smart_resize(Evas_Object *object, Evas_Coord w, Evas_Coord h)
|
||||
{
|
||||
E_Scrollbar_Smart_Data *sd;
|
||||
|
||||
|
||||
if ((!object) || !(sd = evas_object_smart_data_get(object)))
|
||||
return;
|
||||
|
||||
evas_object_resize(sd->edje_object, w, h);
|
||||
return;
|
||||
|
||||
evas_object_resize(sd->edje.object, w, h);
|
||||
sd->edje.w = w;
|
||||
sd->edje.h = h;
|
||||
edje_object_part_geometry_get(sd->edje.object, "confine", NULL, NULL,
|
||||
&sd->confine.w, &sd->confine.h);
|
||||
evas_object_resize(sd->drag.object, sd->confine.w, 20);
|
||||
sd->drag.w = sd->confine.w;
|
||||
sd->drag.h = 20;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -270,7 +340,9 @@ _e_scrollbar_smart_show(Evas_Object *object)
|
|||
if ((!object) || !(sd = evas_object_smart_data_get(object)))
|
||||
return;
|
||||
|
||||
evas_object_show(sd->edje_object);
|
||||
evas_object_show(sd->edje.object);
|
||||
evas_object_show(sd->drag.object);
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -281,7 +353,8 @@ _e_scrollbar_smart_hide(Evas_Object *object)
|
|||
if ((!object) || !(sd = evas_object_smart_data_get(object)))
|
||||
return;
|
||||
|
||||
evas_object_hide(sd->edje_object);
|
||||
evas_object_hide(sd->edje.object);
|
||||
evas_object_hide(sd->drag.object);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -308,3 +381,65 @@ _e_scrollbar_drag_cb(void *data, Evas_Object *object, const char *emission, cons
|
|||
handler->cb.drag(smart_object, sd->value.current, handler->data);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_scrollbar_drag_mouse_down_cb(void *data, Evas *evas, Evas_Object *object, void *event_info)
|
||||
{
|
||||
E_Scrollbar_Smart_Data *sd;
|
||||
Evas_Event_Mouse_Down *ev;
|
||||
|
||||
ev = event_info;
|
||||
sd = data;
|
||||
sd->mx = ev->canvas.x - sd->drag.x;
|
||||
sd->my = ev->canvas.y - sd->drag.y;
|
||||
sd->is_dragging = 1;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_scrollbar_drag_mouse_up_cb(void *data, Evas *evas, Evas_Object *object, void *event_info)
|
||||
{
|
||||
E_Scrollbar_Smart_Data *sd;
|
||||
|
||||
sd = data;
|
||||
sd->is_dragging = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_scrollbar_drag_mouse_move_cb(void *data, Evas *evas, Evas_Object *object, void *event_info)
|
||||
{
|
||||
E_Scrollbar_Smart_Data *sd;
|
||||
Evas_Event_Mouse_Move *ev = event_info;
|
||||
Evas_Coord x, y, w, h;
|
||||
Evas_Coord cx, cy, cw, ch;
|
||||
|
||||
sd = data;
|
||||
|
||||
if(!sd->is_dragging) return;
|
||||
|
||||
if(sd->direction = E_SCROLLBAR_VERTICAL)
|
||||
{
|
||||
if (sd->drag.y < sd->confine.y)
|
||||
{
|
||||
evas_object_move(sd->drag.object, sd->drag.x, sd->confine.y);
|
||||
sd->drag.y = sd->confine.y;
|
||||
return;
|
||||
}
|
||||
|
||||
if (sd->drag.y == sd->confine.y && ev->cur.canvas.y - sd->my < sd->confine.y)
|
||||
return;
|
||||
|
||||
if (sd->drag.y + sd->drag.h > sd->confine.y + sd->confine.h)
|
||||
{
|
||||
evas_object_move(sd->drag.object, sd->drag.x, sd->confine.y + sd->confine.h - sd->drag.h);
|
||||
sd->drag.y = sd->confine.y + sd->confine.h - sd->drag.h;
|
||||
return;
|
||||
}
|
||||
|
||||
if (sd->drag.y + sd->drag.h == sd->confine.y + sd->confine.h &&
|
||||
ev->cur.canvas.y + sd->my > sd->confine.y + sd->confine.h)
|
||||
return;
|
||||
|
||||
evas_object_move(sd->drag.object, sd->drag.x, ev->cur.canvas.y - sd->my);
|
||||
sd->drag.y = ev->cur.canvas.y - sd->my;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#include "e.h"
|
||||
|
||||
|
||||
typedef struct _E_Widget_Data E_Widget_Data;
|
||||
struct _E_Widget_Data
|
||||
{
|
||||
Evas_Object *o_fm;
|
||||
char **valptr;
|
||||
Ecore_Event_Handler *change_handler;
|
||||
};
|
||||
|
||||
static void _e_wid_del_hook(Evas_Object *obj);
|
||||
static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static int _e_wid_text_change(void *data, Evas_Object *entry, char *key);
|
||||
|
||||
/* local subsystem functions */
|
||||
|
||||
static void
|
||||
_e_wid_del_hook(Evas_Object *obj)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
|
||||
wd = e_widget_data_get(obj);
|
||||
free(wd);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
e_widget_focus_steal(data);
|
||||
}
|
||||
|
||||
static int
|
||||
_e_wid_text_change(void *data, Evas_Object *entry, char *key)
|
||||
{
|
||||
#if 0
|
||||
E_Widget_Data *wd;
|
||||
int size;
|
||||
|
||||
wd = data;
|
||||
|
||||
if(*(wd->valptr) == NULL)
|
||||
{
|
||||
size = (strlen(key) + 1) * sizeof(char);
|
||||
*(wd->valptr) = realloc(*(wd->valptr), size);
|
||||
snprintf(*(wd->valptr), size, "%s", key);
|
||||
}
|
||||
else
|
||||
{
|
||||
char *tmp;
|
||||
|
||||
size = (strlen(*(wd->valptr)) + strlen(key) + 1) * sizeof(char);
|
||||
tmp = E_NEW(char *, strlen(*(wd->valptr)) + 1);
|
||||
snprintf(tmp, strlen(*(wd->valptr)) + 1, "%s", *(wd->valptr));
|
||||
*(wd->valptr) = realloc(*(wd->valptr), size);
|
||||
snprintf(*(wd->valptr), size, "%s%s\0", tmp, key);
|
||||
E_FREE(tmp);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* externally accessible functions */
|
||||
Evas_Object *
|
||||
e_widget_fileman_add(Evas *evas, char **val)
|
||||
{
|
||||
Evas_Object *obj, *o, *bg, *scrollbar;
|
||||
E_Widget_Data *wd;
|
||||
Evas_Coord mw, mh;
|
||||
|
||||
obj = e_widget_add(evas);
|
||||
|
||||
e_widget_del_hook_set(obj, _e_wid_del_hook);
|
||||
|
||||
wd = calloc(1, sizeof(E_Widget_Data));
|
||||
wd->valptr = val;
|
||||
e_widget_data_set(obj, wd);
|
||||
|
||||
bg = edje_object_add(evas);
|
||||
e_theme_edje_object_set(bg, "base/theme/widgets/fileselector",
|
||||
"widgets/fileselector/main");
|
||||
evas_object_show(bg);
|
||||
|
||||
o = e_fm_add(evas);
|
||||
wd->o_fm = o;
|
||||
|
||||
scrollbar = e_scrollbar_add(evas);
|
||||
e_scrollbar_direction_set(scrollbar, E_SCROLLBAR_VERTICAL);
|
||||
|
||||
edje_object_part_swallow(bg, "items", wd->o_fm);
|
||||
edje_object_part_swallow(bg, "vscrollbar", scrollbar);
|
||||
evas_object_show(bg);
|
||||
evas_object_resize(bg, 300, 200);
|
||||
e_widget_min_size_set(obj, 300, 200);
|
||||
|
||||
e_widget_sub_object_add(obj, bg);
|
||||
evas_object_event_callback_add(bg, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_focus_steal, obj);
|
||||
e_widget_resize_object_set(obj, bg);
|
||||
|
||||
return obj;
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#ifdef E_TYPEDEFS
|
||||
#else
|
||||
#ifndef E_WIDGET_FM_H
|
||||
#define E_WIDGET_FM_H
|
||||
|
||||
EAPI Evas_Object *e_widget_fileman_add(Evas *evas, char **val);
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -0,0 +1,253 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#include "e.h"
|
||||
|
||||
typedef struct _E_Widget_Data E_Widget_Data;
|
||||
struct _E_Widget_Data
|
||||
{
|
||||
E_Container *con;
|
||||
Evas_Object *o_button;
|
||||
Evas_Object *o_icon;
|
||||
char **valptr;
|
||||
};
|
||||
|
||||
static void _e_wid_del_hook(Evas_Object *obj);
|
||||
static void _e_wid_focus_hook(Evas_Object *obj);
|
||||
static void _e_wid_activate_hook(Evas_Object *obj);
|
||||
static void _e_wid_active_hook_cb(E_Fileman *fileman, char *file, void *data);
|
||||
static void _e_wid_disable_hook(Evas_Object *obj);
|
||||
static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
/* local subsystem functions */
|
||||
|
||||
/* externally accessible functions */
|
||||
Evas_Object *
|
||||
e_widget_iconsel_add(Evas *evas, Evas_Object *icon, Evas_Coord minw, Evas_Coord minh, char **file)
|
||||
{
|
||||
Evas_Object *obj, *o;
|
||||
E_Widget_Data *wd;
|
||||
Evas_Coord mw, mh;
|
||||
E_Manager *man;
|
||||
|
||||
obj = e_widget_add(evas);
|
||||
|
||||
e_widget_del_hook_set(obj, _e_wid_del_hook);
|
||||
e_widget_focus_hook_set(obj, _e_wid_focus_hook);
|
||||
e_widget_activate_hook_set(obj, _e_wid_activate_hook);
|
||||
e_widget_disable_hook_set(obj, _e_wid_disable_hook);
|
||||
wd = calloc(1, sizeof(E_Widget_Data));
|
||||
wd->valptr = file;
|
||||
e_widget_data_set(obj, wd);
|
||||
|
||||
man = e_manager_current_get();
|
||||
if (!man) return NULL;
|
||||
wd->con = e_container_current_get(man);
|
||||
if (!wd->con) wd->con = e_container_number_get(man, 0);
|
||||
if (!wd->con) return NULL;
|
||||
|
||||
o = edje_object_add(evas);
|
||||
wd->o_button = o;
|
||||
e_theme_edje_object_set(o, "base/theme/widgets",
|
||||
"widgets/button");
|
||||
edje_object_signal_callback_add(o, "click", "", _e_wid_signal_cb1, obj);
|
||||
edje_object_part_text_set(o, "label", "");
|
||||
evas_object_show(o);
|
||||
|
||||
e_widget_sub_object_add(obj, o);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_focus_steal, obj);
|
||||
e_widget_resize_object_set(obj, o);
|
||||
|
||||
if (icon)
|
||||
{
|
||||
wd->o_icon = icon;
|
||||
edje_extern_object_min_size_set(icon, minw, minh);
|
||||
evas_object_pass_events_set(icon, 1);
|
||||
edje_object_part_swallow(wd->o_button, "icon_swallow", wd->o_icon);
|
||||
edje_object_signal_emit(wd->o_button, "icon_visible", "");
|
||||
edje_object_message_signal_process(wd->o_button);
|
||||
evas_object_show(wd->o_icon);
|
||||
e_widget_sub_object_add(obj, wd->o_icon);
|
||||
}
|
||||
|
||||
edje_object_size_min_calc(wd->o_button, &mw, &mh);
|
||||
e_widget_min_size_set(obj, mw, mh);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
Evas_Object *
|
||||
e_widget_iconsel_add_from_file(Evas *evas, char *icon, Evas_Coord minw, Evas_Coord minh, char **file)
|
||||
{
|
||||
Evas_Object *obj, *o;
|
||||
E_Widget_Data *wd;
|
||||
Evas_Coord mw, mh;
|
||||
|
||||
obj = e_widget_add(evas);
|
||||
|
||||
e_widget_del_hook_set(obj, _e_wid_del_hook);
|
||||
e_widget_focus_hook_set(obj, _e_wid_focus_hook);
|
||||
e_widget_activate_hook_set(obj, _e_wid_activate_hook);
|
||||
e_widget_disable_hook_set(obj, _e_wid_disable_hook);
|
||||
wd = calloc(1, sizeof(E_Widget_Data));
|
||||
wd->valptr = file;
|
||||
e_widget_data_set(obj, wd);
|
||||
|
||||
o = edje_object_add(evas);
|
||||
wd->o_button = o;
|
||||
e_theme_edje_object_set(o, "base/theme/widgets",
|
||||
"widgets/button");
|
||||
edje_object_signal_callback_add(o, "click", "", _e_wid_signal_cb1, obj);
|
||||
edje_object_part_text_set(o, "label", "");
|
||||
evas_object_show(o);
|
||||
|
||||
e_widget_sub_object_add(obj, o);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_focus_steal, obj);
|
||||
e_widget_resize_object_set(obj, o);
|
||||
|
||||
if (icon)
|
||||
{
|
||||
o = edje_object_add(evas);
|
||||
wd->o_icon = o;
|
||||
e_util_edje_icon_set(o, icon);
|
||||
evas_object_pass_events_set(icon, 1);
|
||||
edje_object_part_swallow(wd->o_button, "icon_swallow", o);
|
||||
edje_object_signal_emit(wd->o_button, "icon_visible", "");
|
||||
edje_object_message_signal_process(wd->o_button);
|
||||
evas_object_show(o);
|
||||
e_widget_sub_object_add(obj, o);
|
||||
}
|
||||
|
||||
edje_object_size_min_calc(wd->o_button, &mw, &mh);
|
||||
e_widget_min_size_set(obj, mw, mh);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_wid_del_hook(Evas_Object *obj)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
|
||||
wd = e_widget_data_get(obj);
|
||||
free(wd);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_wid_focus_hook(Evas_Object *obj)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
|
||||
wd = e_widget_data_get(obj);
|
||||
if (e_widget_focus_get(obj))
|
||||
{
|
||||
edje_object_signal_emit(wd->o_button, "focus_in", "");
|
||||
evas_object_focus_set(wd->o_button, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
edje_object_signal_emit(wd->o_button, "focus_out", "");
|
||||
evas_object_focus_set(wd->o_button, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_wid_activate_hook(Evas_Object *obj)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
E_Fileman *fileman;
|
||||
E_Popup *popup;
|
||||
E_Zone *zone;
|
||||
E_Dialog *dia;
|
||||
Evas_Object *table;
|
||||
Evas_Object *button;
|
||||
Evas *evas;
|
||||
Evas_Object *ol;
|
||||
Evas_Coord w, h;
|
||||
|
||||
wd = e_widget_data_get(obj);
|
||||
|
||||
dia = e_dialog_new(wd->con);
|
||||
|
||||
evas = dia->win->evas;
|
||||
|
||||
ol = e_widget_list_add(evas, 0, 1);
|
||||
|
||||
table = e_widget_frametable_add(evas, "Places", 0);
|
||||
|
||||
e_widget_frametable_object_append(table, e_widget_button_add(evas, "Home", "fileman/home", NULL,
|
||||
NULL, NULL),
|
||||
0, 0, 1, 1, 1, 0, 1, 0);
|
||||
|
||||
e_widget_frametable_object_append(table, e_widget_button_add(evas, " Desktop", "fileman/desktop", NULL,
|
||||
NULL, NULL),
|
||||
0, 1, 1, 1, 1, 0, 1, 0);
|
||||
|
||||
e_widget_frametable_object_append(table, e_widget_button_add(evas, " Icons", "fileman/folder", NULL,
|
||||
NULL, NULL),
|
||||
0, 2, 1, 1, 1, 0, 1, 0);
|
||||
|
||||
e_widget_list_object_append(ol, table, 1, 1, 0.0);
|
||||
|
||||
table = e_widget_frametable_add(evas, "Select File", 0);
|
||||
|
||||
e_widget_frametable_object_append(table, e_widget_fileman_add(evas, NULL),
|
||||
0, 0, 4, 4, 1, 1, 1, 1);
|
||||
|
||||
e_widget_list_object_append(ol, table, 1, 1, 0.0);
|
||||
|
||||
e_widget_min_size_get(ol, &w, &h);
|
||||
e_dialog_content_set(dia, ol, w, h);
|
||||
e_dialog_title_set(dia, "Select File");
|
||||
e_dialog_show(dia);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_wid_active_hook_cb(E_Fileman *fileman, char *file, void *data)
|
||||
{
|
||||
char *ext;
|
||||
Evas *evas;
|
||||
E_Widget_Data *wd;
|
||||
|
||||
|
||||
wd = e_widget_data_get(data);
|
||||
|
||||
ext = strrchr(file, '.');
|
||||
if(!ext)
|
||||
return;
|
||||
if(strcasecmp(ext, ".png") && strcasecmp(ext, ".jpg") &&
|
||||
strcasecmp(ext, ".jpeg"))
|
||||
return;
|
||||
|
||||
e_icon_file_set(wd->o_icon, file);
|
||||
E_FREE(*(wd->valptr));
|
||||
*(wd->valptr) = strdup(file);
|
||||
e_object_del(fileman);
|
||||
}
|
||||
|
||||
|
||||
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_button, "disabled", "");
|
||||
else
|
||||
edje_object_signal_emit(wd->o_button, "enabled", "");
|
||||
}
|
||||
|
||||
static void
|
||||
_e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
e_widget_focus_steal(data);
|
||||
_e_wid_activate_hook(data);
|
||||
e_widget_change(data);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
e_widget_focus_steal(data);
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#ifdef E_TYPEDEFS
|
||||
#else
|
||||
#ifndef E_WIDGET_BUTTON_H
|
||||
#define E_WIDGET_BUTTON_H
|
||||
|
||||
EAPI Evas_Object *e_widget_iconsel_add(Evas *evas, Evas_Object *icon, Evas_Coord minw, Evas_Coord minh, void (*func) (void *data, void *data2), void *data, void *data2);
|
||||
EAPI Evas_Object *e_widget_iconsel_add_from_file(Evas *evas, char *icon, Evas_Coord minw, Evas_Coord minh, void (*func) (void *data, void *data2), void *data, void *data2);
|
||||
|
||||
#endif
|
||||
#endif
|
Loading…
Reference in New Issue