* Right clicking on an application on the left hand side of the All
Applications dialog now includes "Edit Application" menu item. * Needed to pass the file info from e_fm so we know which app was right clicked on. There is probably a better way to do this, and raster says this callback method is just quick'n'dirty'n'temporary. SVN revision: 25229
This commit is contained in:
parent
a53e2a4436
commit
2e467b5261
|
@ -38,7 +38,7 @@ struct _E_Fm2_Smart_Data
|
|||
} regions;
|
||||
struct {
|
||||
struct {
|
||||
void (*func) (void *data, Evas_Object *obj, E_Menu *m);
|
||||
void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info);
|
||||
void *data;
|
||||
} start, end;
|
||||
} icon_menu;
|
||||
|
@ -487,7 +487,7 @@ e_fm2_file_show(Evas_Object *obj, const char *file)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_fm2_icon_menu_start_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m), void *data)
|
||||
e_fm2_icon_menu_start_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info), void *data)
|
||||
{
|
||||
E_Fm2_Smart_Data *sd;
|
||||
|
||||
|
@ -500,7 +500,7 @@ e_fm2_icon_menu_start_extend_callback_set(Evas_Object *obj, void (*func) (void *
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_fm2_icon_menu_end_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m), void *data)
|
||||
e_fm2_icon_menu_end_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info), void *data)
|
||||
{
|
||||
E_Fm2_Smart_Data *sd;
|
||||
|
||||
|
@ -2571,7 +2571,7 @@ _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp)
|
|||
|
||||
if (sd->icon_menu.start.func)
|
||||
{
|
||||
sd->icon_menu.start.func(sd->icon_menu.start.data, sd->obj, mn);
|
||||
sd->icon_menu.start.func(sd->icon_menu.start.data, sd->obj, mn, &(ic->info));
|
||||
mi = e_menu_item_new(mn);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
}
|
||||
|
@ -2652,7 +2652,7 @@ _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp)
|
|||
|
||||
if (sd->icon_menu.end.func)
|
||||
{
|
||||
sd->icon_menu.end.func(sd->icon_menu.end.data, sd->obj, mn);
|
||||
sd->icon_menu.end.func(sd->icon_menu.end.data, sd->obj, mn, &(ic->info));
|
||||
mi = e_menu_item_new(mn);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
}
|
||||
|
|
|
@ -113,8 +113,8 @@ EAPI Evas_List *e_fm2_selected_list_get(Evas_Object *obj);
|
|||
EAPI Evas_List *e_fm2_all_list_get(Evas_Object *obj);
|
||||
EAPI void e_fm2_select_set(Evas_Object *obj, const char *file, int select);
|
||||
EAPI void e_fm2_file_show(Evas_Object *obj, const char *file);
|
||||
EAPI void e_fm2_icon_menu_start_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m), void *data);
|
||||
EAPI void e_fm2_icon_menu_end_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m), void *data);
|
||||
EAPI void e_fm2_icon_menu_start_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info), void *data);
|
||||
EAPI void e_fm2_icon_menu_end_extend_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info), void *data);
|
||||
|
||||
EAPI void e_fm2_pan_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
|
||||
EAPI void e_fm2_pan_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y);
|
||||
|
|
|
@ -14,8 +14,6 @@
|
|||
*
|
||||
* These things require support from e_fm -
|
||||
* DND from left side to righ side, and to ibar etc.
|
||||
* fm right click menu of eap/.desktop brings up eap editor.
|
||||
* Display contents of .order files on right side.
|
||||
* Stop user from deleting standard directories on right side.
|
||||
* Stop user from creating new directories on left side.
|
||||
*/
|
||||
|
@ -29,6 +27,7 @@ static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Co
|
|||
struct _E_Config_Dialog_Data
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
E_Fm2_Icon_Info *info;
|
||||
int state;
|
||||
struct {
|
||||
Evas_Object *o_fm_all;
|
||||
|
@ -184,14 +183,104 @@ _cb_files_selected(void *data, Evas_Object *obj, void *event_info)
|
|||
e_eap_edit_show(cfdata->cfd->con, a);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_files_edited(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
E_Fm2_Icon_Info *info;
|
||||
const char *realpath;
|
||||
char buf[4096];
|
||||
E_App *a;
|
||||
|
||||
cfdata = data;
|
||||
if (!cfdata->gui.o_fm_all) return;
|
||||
if (!cfdata->info) return;
|
||||
info = cfdata->info;
|
||||
|
||||
realpath = e_fm2_real_path_get(cfdata->gui.o_fm_all);
|
||||
|
||||
if (info->pseudo_link)
|
||||
snprintf(buf, sizeof(buf), "%s/%s", info->link, info->file);
|
||||
else
|
||||
snprintf(buf, sizeof(buf), "%s/%s", realpath, info->file);
|
||||
|
||||
if (ecore_file_is_dir(buf)) return;
|
||||
a = e_app_new(buf, 0);
|
||||
if (a)
|
||||
e_eap_edit_show(cfdata->cfd->con, a);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_files_add_edited(void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
E_Menu_Item *mi;
|
||||
|
||||
cfdata = data;
|
||||
/* We need to get this info data to the menu callback, all this is created on the fly when user right clicks. */
|
||||
cfdata->info = info;
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Edit Application"));
|
||||
e_menu_item_callback_set(mi, _cb_files_edited, cfdata);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_button_delete_left(void *data1, void *data2)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
Evas_List *selected;
|
||||
E_Fm2_Icon_Info *ici;
|
||||
const char *realpath;
|
||||
char buf[4096];
|
||||
E_App *a;
|
||||
|
||||
cfdata = data1;
|
||||
if (!cfdata->gui.o_fm_all) return;
|
||||
|
||||
selected = e_fm2_selected_list_get(cfdata->gui.o_fm_all);
|
||||
if (!selected) return;
|
||||
ici = selected->data;
|
||||
realpath = e_fm2_real_path_get(cfdata->gui.o_fm_all);
|
||||
if (!strcmp(realpath, "/"))
|
||||
snprintf(buf, sizeof(buf), "/%s", ici->file);
|
||||
else
|
||||
snprintf(buf, sizeof(buf), "%s/%s", realpath, ici->file);
|
||||
evas_list_free(selected);
|
||||
if (ecore_file_is_dir(buf)) return;
|
||||
printf("DELETING LEFT APPLICATION %s\n", buf);
|
||||
// FIXME: find parent, so that e_app_remove can do the right thing.
|
||||
// a = e_app_new(buf, 0);
|
||||
// if (a)
|
||||
// e_app_remove(a);
|
||||
e_fm2_refresh(cfdata->gui.o_fm_all);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_button_delete_right(void *data1, void *data2)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
Evas_List *selected;
|
||||
E_Fm2_Icon_Info *ici;
|
||||
const char *realpath;
|
||||
char buf[4096];
|
||||
E_App *a;
|
||||
|
||||
cfdata = data1;
|
||||
if (!cfdata->gui.o_fm) return;
|
||||
|
||||
selected = e_fm2_selected_list_get(cfdata->gui.o_fm);
|
||||
if (!selected) return;
|
||||
ici = selected->data;
|
||||
realpath = e_fm2_real_path_get(cfdata->gui.o_fm);
|
||||
if (!strcmp(realpath, "/"))
|
||||
snprintf(buf, sizeof(buf), "/%s", ici->file);
|
||||
else
|
||||
snprintf(buf, sizeof(buf), "%s/%s", realpath, ici->file);
|
||||
evas_list_free(selected);
|
||||
// if (ecore_file_is_dir(buf)) return;
|
||||
printf("DELETING RIGHT APPLICATION %s\n", buf);
|
||||
// FIXME: find parent .order, so that e_app_remove can do the right thing.
|
||||
e_fm2_refresh(cfdata->gui.o_fm);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -235,12 +324,18 @@ _cb_button_add(void *data1, void *data2)
|
|||
if ((a) && (parent))
|
||||
e_app_append(a, parent);
|
||||
}
|
||||
e_fm2_refresh(cfdata->gui.o_fm);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_button_regen(void *data1, void *data2)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
|
||||
cfdata = data1;
|
||||
e_fdo_menu_to_order();
|
||||
if (cfdata->gui.o_fm_all) e_fm2_refresh(cfdata->gui.o_fm_all);
|
||||
if (cfdata->gui.o_fm) e_fm2_refresh(cfdata->gui.o_fm);
|
||||
}
|
||||
|
||||
|
||||
|
@ -293,6 +388,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
e_fm2_config_set(mt, &fmc_all);
|
||||
evas_object_smart_callback_add(mt, "selected",
|
||||
_cb_files_selected, cfdata);
|
||||
e_fm2_icon_menu_start_extend_callback_set(mt, _cb_files_add_edited, cfdata);
|
||||
snprintf(path_all, sizeof(path_all), "%s/.e/e/applications/all", homedir);
|
||||
e_fm2_path_set(cfdata->gui.o_fm_all, path_all, "/");
|
||||
|
||||
|
|
Loading…
Reference in New Issue