2006-07-19 06:24:50 -07:00
|
|
|
/*
|
|
|
|
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
|
|
|
*/
|
2005-10-24 16:08:20 -07:00
|
|
|
#include "e.h"
|
|
|
|
|
2006-05-31 11:58:26 -07:00
|
|
|
struct _E_Config_Dialog_Data
|
2005-10-27 03:19:43 -07:00
|
|
|
{
|
2006-09-01 06:57:28 -07:00
|
|
|
E_App eap;
|
|
|
|
char *exe;
|
2006-09-25 11:15:37 -07:00
|
|
|
int icon_theme;
|
2006-09-01 06:57:28 -07:00
|
|
|
int startup_notify;
|
|
|
|
int wait_exit;
|
2005-10-27 03:19:43 -07:00
|
|
|
E_App_Edit *editor;
|
2006-09-16 13:59:40 -07:00
|
|
|
Evas_Object *themed;
|
2005-10-27 03:19:43 -07:00
|
|
|
};
|
|
|
|
|
2005-10-24 16:08:20 -07:00
|
|
|
/* local subsystem functions */
|
|
|
|
|
2006-09-03 08:11:04 -07:00
|
|
|
static void _e_eap_edit_free(E_App_Edit *editor);
|
2005-10-27 03:19:43 -07:00
|
|
|
static void *_e_eap_edit_create_data(E_Config_Dialog *cfd);
|
2006-05-31 11:58:26 -07:00
|
|
|
static void _e_eap_edit_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data);
|
|
|
|
static int _e_eap_edit_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data);
|
|
|
|
static int _e_eap_edit_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data);
|
|
|
|
static Evas_Object *_e_eap_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *data);
|
|
|
|
static Evas_Object *_e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *data);
|
2006-07-28 06:42:03 -07:00
|
|
|
static void _e_eap_editor_cb_icon_select(void *data1, void *data2);
|
|
|
|
static void _e_eap_edit_select_cb(void *data, Evas_Object *obj);
|
|
|
|
static void _e_eap_edit_change_cb(void *data, Evas_Object *obj);
|
|
|
|
static void _e_eap_edit_cb_icon_select_del(void *obj);
|
|
|
|
static void _e_eap_edit_cb_icon_select_ok(void *data, E_Dialog *dia);
|
|
|
|
static void _e_eap_edit_cb_icon_select_cancel(void *data, E_Dialog *dia);
|
2006-09-16 13:59:40 -07:00
|
|
|
static void _cb_files_icon_theme_changed(void *data, Evas_Object *obj, void *event_info);
|
2005-10-27 03:19:43 -07:00
|
|
|
|
2006-09-15 15:42:04 -07:00
|
|
|
#define IFADD(src, dst) if (src) dst = evas_stringshare_add(src); else dst = NULL
|
|
|
|
#define IFDEL(src) if (src) evas_stringshare_del(src); src = NULL;
|
2005-12-04 04:03:59 -08:00
|
|
|
#define IFDUP(src, dst) if (src) dst = strdup(src); else dst = NULL
|
2006-09-15 15:42:04 -07:00
|
|
|
#define IFFREE(src) if (src) free(src); src = NULL;
|
2005-12-04 04:03:59 -08:00
|
|
|
|
2005-10-24 16:08:20 -07:00
|
|
|
/* externally accessible functions */
|
2005-10-27 03:19:43 -07:00
|
|
|
|
2006-09-03 08:11:04 -07:00
|
|
|
EAPI E_App_Edit *
|
2005-10-24 16:08:20 -07:00
|
|
|
e_eap_edit_show(E_Container *con, E_App *a)
|
|
|
|
{
|
2006-01-22 10:20:59 -08:00
|
|
|
E_Config_Dialog_View *v;
|
2005-10-27 03:19:43 -07:00
|
|
|
E_App_Edit *editor;
|
2005-10-25 17:19:52 -07:00
|
|
|
|
2006-09-21 12:53:38 -07:00
|
|
|
if (!con) return NULL;
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-09-03 08:11:04 -07:00
|
|
|
editor = E_OBJECT_ALLOC(E_App_Edit, E_EAP_EDIT_TYPE, _e_eap_edit_free);
|
2006-09-06 01:22:57 -07:00
|
|
|
if (!editor) return NULL;
|
2006-07-28 06:42:03 -07:00
|
|
|
v = E_NEW(E_Config_Dialog_View, 1);
|
|
|
|
if (!v)
|
|
|
|
{
|
2006-09-06 01:22:57 -07:00
|
|
|
e_object_del(E_OBJECT(editor));
|
2006-09-03 08:11:04 -07:00
|
|
|
return NULL;
|
2006-07-28 06:42:03 -07:00
|
|
|
}
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2005-12-06 14:50:41 -08:00
|
|
|
editor->img = NULL;
|
2006-07-28 06:42:03 -07:00
|
|
|
editor->eap = a;
|
2006-05-13 07:57:20 -07:00
|
|
|
e_object_ref(E_OBJECT(editor->eap));
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-07-28 06:42:03 -07:00
|
|
|
/* 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 */
|
2006-08-14 08:22:46 -07:00
|
|
|
editor->cfd = e_config_dialog_new(con,
|
2006-08-31 07:51:44 -07:00
|
|
|
_("Application Editor"),
|
2006-08-14 08:22:46 -07:00
|
|
|
"E", "_eap_editor_dialog",
|
|
|
|
NULL, 0, v, editor);
|
2006-09-03 08:11:04 -07:00
|
|
|
return editor;
|
2005-10-27 03:19:43 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
/* local subsystem functions */
|
2006-09-03 08:11:04 -07:00
|
|
|
static void
|
|
|
|
_e_eap_edit_free(E_App_Edit *editor)
|
|
|
|
{
|
|
|
|
if (!editor) return;
|
2006-09-18 13:52:59 -07:00
|
|
|
E_OBJECT_CHECK(editor);
|
|
|
|
E_OBJECT_TYPE_CHECK(editor, E_EAP_EDIT_TYPE);
|
2006-09-03 08:11:04 -07:00
|
|
|
if (editor->cfd)
|
|
|
|
{
|
|
|
|
E_Object *obj;
|
2006-09-18 13:52:59 -07:00
|
|
|
|
2006-09-03 08:11:04 -07:00
|
|
|
obj = E_OBJECT(editor->cfd);
|
|
|
|
editor->cfd = NULL;
|
|
|
|
e_object_del(obj);
|
|
|
|
}
|
2006-09-18 13:52:59 -07:00
|
|
|
if (editor->eap)
|
|
|
|
{
|
2006-09-25 11:15:37 -07:00
|
|
|
/* This frees up the temp file created by the border menu "Create Icon". */
|
2006-09-18 13:52:59 -07:00
|
|
|
if (editor->eap->tmpfile) ecore_file_unlink(editor->eap->image);
|
|
|
|
editor->eap->tmpfile = 0;
|
|
|
|
IFDEL(editor->eap->image);
|
|
|
|
editor->eap->width = 0;
|
|
|
|
editor->eap->height = 0;
|
|
|
|
e_object_unref(E_OBJECT(editor->eap));
|
|
|
|
editor->eap = NULL;
|
|
|
|
}
|
2006-09-03 08:11:04 -07:00
|
|
|
// if (editor->img) evas_object_del(editor->img);
|
|
|
|
// if (editor->img_widget) evas_object_del(editor->img_widget);
|
|
|
|
// if (editor->fsel) evas_object_del(editor->fsel);
|
|
|
|
// if (editor->fsel_dia) e_object_del(E_OBJECT(editor->fsel_dia));
|
2006-09-15 15:42:04 -07:00
|
|
|
e_object_del(E_OBJECT(editor));
|
2006-09-03 08:11:04 -07:00
|
|
|
}
|
2005-10-27 03:19:43 -07:00
|
|
|
|
|
|
|
static void *
|
|
|
|
_e_eap_edit_create_data(E_Config_Dialog *cfd)
|
|
|
|
{
|
2006-05-31 11:58:26 -07:00
|
|
|
E_Config_Dialog_Data *cfdata;
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-05-31 11:58:26 -07:00
|
|
|
cfdata = E_NEW(E_Config_Dialog_Data, 1);
|
2005-10-27 03:19:43 -07:00
|
|
|
if (!cfdata) return NULL;
|
|
|
|
cfdata->editor = cfd->data;
|
2006-09-25 11:15:37 -07:00
|
|
|
/*- COMMON -*/
|
|
|
|
IFADD(cfdata->editor->eap->path, cfdata->eap.path);
|
|
|
|
IFADD(cfdata->editor->eap->name, cfdata->eap.name);
|
|
|
|
IFADD(cfdata->editor->eap->exe, cfdata->eap.exe);
|
|
|
|
IFADD(cfdata->editor->eap->exe_params, cfdata->eap.exe_params);
|
|
|
|
cfdata->exe = ecore_desktop_merge_command((char *)cfdata->editor->eap->exe, (char *)cfdata->editor->eap->exe_params);
|
|
|
|
IFADD(cfdata->editor->eap->image, cfdata->eap.image);
|
|
|
|
cfdata->eap.height = cfdata->editor->eap->height;
|
|
|
|
cfdata->eap.width = cfdata->editor->eap->width;
|
|
|
|
IFADD(cfdata->editor->eap->icon_theme, cfdata->eap.icon_theme);
|
|
|
|
IFADD(cfdata->editor->eap->icon, cfdata->eap.icon);
|
|
|
|
IFADD(cfdata->editor->eap->icon_class, cfdata->eap.icon_class);
|
|
|
|
IFADD(cfdata->editor->eap->icon_path, cfdata->eap.icon_path);
|
|
|
|
/*- ADVANCED -*/
|
|
|
|
IFADD(cfdata->editor->eap->generic, cfdata->eap.generic);
|
|
|
|
IFADD(cfdata->editor->eap->comment, cfdata->eap.comment);
|
|
|
|
IFADD(cfdata->editor->eap->win_name, cfdata->eap.win_name);
|
|
|
|
IFADD(cfdata->editor->eap->win_class, cfdata->eap.win_class);
|
|
|
|
IFADD(cfdata->editor->eap->win_title, cfdata->eap.win_title);
|
|
|
|
IFADD(cfdata->editor->eap->win_role, cfdata->eap.win_role);
|
|
|
|
cfdata->startup_notify = cfdata->editor->eap->startup_notify;
|
|
|
|
cfdata->wait_exit = cfdata->editor->eap->wait_exit;
|
|
|
|
|
|
|
|
if (!cfdata->eap.icon_path)
|
|
|
|
{
|
|
|
|
IFADD(cfdata->eap.image, cfdata->eap.icon_path);
|
|
|
|
if (!cfdata->eap.icon_path)
|
|
|
|
cfdata->icon_theme = 1;
|
|
|
|
}
|
2005-10-27 03:19:43 -07:00
|
|
|
return cfdata;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2006-09-25 11:15:37 -07:00
|
|
|
_e_eap_edit_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
2005-12-04 04:03:59 -08:00
|
|
|
{
|
2006-09-25 11:15:37 -07:00
|
|
|
IFDEL(cfdata->eap.path);
|
|
|
|
IFDEL(cfdata->eap.name);
|
|
|
|
IFDEL(cfdata->eap.exe);
|
|
|
|
IFDEL(cfdata->eap.exe_params);
|
|
|
|
IFFREE(cfdata->exe);
|
|
|
|
IFDEL(cfdata->eap.image);
|
|
|
|
IFDEL(cfdata->eap.icon_theme);
|
|
|
|
IFDEL(cfdata->eap.icon);
|
|
|
|
IFDEL(cfdata->eap.icon_class);
|
|
|
|
IFDEL(cfdata->eap.icon_path);
|
|
|
|
IFDEL(cfdata->eap.generic);
|
|
|
|
IFDEL(cfdata->eap.comment);
|
|
|
|
IFDEL(cfdata->eap.win_name);
|
|
|
|
IFDEL(cfdata->eap.win_class);
|
|
|
|
IFDEL(cfdata->eap.win_title);
|
|
|
|
IFDEL(cfdata->eap.win_role);
|
|
|
|
|
|
|
|
if (cfdata->editor)
|
2006-07-19 06:24:50 -07:00
|
|
|
{
|
2006-09-03 08:11:04 -07:00
|
|
|
E_Object *obj;
|
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
obj = E_OBJECT(cfdata->editor);
|
|
|
|
cfdata->editor = NULL;
|
2006-09-03 08:11:04 -07:00
|
|
|
e_object_del(obj);
|
2006-07-19 06:24:50 -07:00
|
|
|
}
|
2006-09-03 08:11:04 -07:00
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
free(cfdata);
|
2005-10-27 03:19:43 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2006-09-25 11:15:37 -07:00
|
|
|
_e_eap_edit_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
2005-10-27 03:19:43 -07:00
|
|
|
{
|
|
|
|
E_App_Edit *editor;
|
|
|
|
E_App *eap;
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
editor = cfdata->editor;
|
2005-10-27 03:19:43 -07:00
|
|
|
eap = editor->eap;
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
e_app_fields_empty(eap);
|
|
|
|
|
|
|
|
IFADD(cfdata->eap.path, eap->path);
|
|
|
|
IFADD(cfdata->eap.name, eap->name);
|
|
|
|
if (cfdata->exe)
|
2006-09-07 01:53:09 -07:00
|
|
|
{
|
|
|
|
char *exe;
|
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
exe = strchr(cfdata->exe, ' ');
|
2006-09-07 01:53:09 -07:00
|
|
|
if (exe)
|
|
|
|
{
|
|
|
|
*exe = '\0';
|
|
|
|
eap->exe_params = evas_stringshare_add(++exe);
|
|
|
|
*exe = ' ';
|
|
|
|
}
|
2006-09-25 11:15:37 -07:00
|
|
|
eap->exe = evas_stringshare_add(cfdata->exe);
|
2006-09-07 01:53:09 -07:00
|
|
|
}
|
2006-09-25 11:15:37 -07:00
|
|
|
/* FIXME: eap->image was created by the border menu "Create Icon" and it's the
|
|
|
|
* path to a temporary file. This was fine for .eaps' as the file got saved
|
|
|
|
* into the .eap. For .desktops, we need to copy this file inte ~/.e/e/icons
|
|
|
|
* and find a decent name for it.
|
|
|
|
*/
|
|
|
|
// IFADD(cfdata->eap.image, eap->image);
|
|
|
|
IFADD(cfdata->eap.icon_theme, eap->icon_theme);
|
|
|
|
IFADD(cfdata->eap.icon, eap->icon);
|
|
|
|
IFADD(cfdata->eap.icon_class, eap->icon_class);
|
|
|
|
IFADD(cfdata->eap.icon_path, eap->icon_path);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-01-14 13:05:44 -08:00
|
|
|
/* FIXME: hardcoded until the eap editor provides fields to change it */
|
2006-09-25 11:15:37 -07:00
|
|
|
if (cfdata->eap.width) eap->width = cfdata->eap.width;
|
2006-07-19 04:59:22 -07:00
|
|
|
else eap->width = 128;
|
2006-09-25 11:15:37 -07:00
|
|
|
if (cfdata->eap.height) eap->height = cfdata->eap.height;
|
2006-07-19 06:24:50 -07:00
|
|
|
else eap->height = 128;
|
2006-05-13 18:13:42 -07:00
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
IFADD(cfdata->eap.generic, eap->generic);
|
|
|
|
IFADD(cfdata->eap.comment, eap->comment);
|
|
|
|
IFADD(cfdata->eap.win_name, eap->win_name);
|
|
|
|
IFADD(cfdata->eap.win_class, eap->win_class);
|
|
|
|
IFADD(cfdata->eap.win_title, eap->win_title);
|
|
|
|
IFADD(cfdata->eap.win_role, eap->win_role);
|
|
|
|
eap->startup_notify = cfdata->startup_notify;
|
|
|
|
eap->wait_exit = cfdata->wait_exit;
|
|
|
|
|
2006-07-19 06:24:50 -07:00
|
|
|
if ((eap->name) && (eap->exe))
|
2006-09-18 13:52:59 -07:00
|
|
|
e_app_fields_save(eap);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2005-12-04 04:03:59 -08:00
|
|
|
return 1;
|
2005-10-24 16:08:20 -07:00
|
|
|
}
|
|
|
|
|
2005-10-27 03:19:43 -07:00
|
|
|
static int
|
2006-09-25 11:15:37 -07:00
|
|
|
_e_eap_edit_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
2005-10-24 18:03:50 -07:00
|
|
|
{
|
2006-09-25 11:15:37 -07:00
|
|
|
return _e_eap_edit_basic_apply_data(cfd, cfdata);
|
2005-10-24 18:03:50 -07:00
|
|
|
}
|
2005-10-24 16:08:20 -07:00
|
|
|
|
|
|
|
|
2005-10-27 03:19:43 -07:00
|
|
|
static Evas_Object *
|
2006-09-25 11:15:37 -07:00
|
|
|
_e_eap_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
2005-10-25 17:19:52 -07:00
|
|
|
{
|
|
|
|
E_App_Edit *editor;
|
2005-10-27 03:19:43 -07:00
|
|
|
E_App *eap;
|
2006-09-21 12:53:38 -07:00
|
|
|
Evas_Object *ol, *o;
|
2006-07-19 06:24:50 -07:00
|
|
|
Evas_Object *entry;
|
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
editor = cfdata->editor;
|
2006-07-28 06:42:03 -07:00
|
|
|
editor->evas = evas;
|
2005-10-27 03:19:43 -07:00
|
|
|
eap = editor->eap;
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2005-11-02 22:17:08 -08:00
|
|
|
ol = e_widget_table_add(evas, 0);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2005-10-27 03:19:43 -07:00
|
|
|
o = e_widget_frametable_add(evas, _("Icon"), 0);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-07-31 11:21:48 -07:00
|
|
|
if (editor->img)
|
|
|
|
{
|
|
|
|
evas_object_del(editor->img);
|
|
|
|
editor->img = NULL;
|
|
|
|
}
|
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
editor->img = e_app_icon_add(evas, &(cfdata->eap));
|
2006-07-19 06:24:50 -07:00
|
|
|
|
|
|
|
if (editor->img_widget) evas_object_del(editor->img_widget);
|
2006-07-28 06:42:03 -07:00
|
|
|
editor->img_widget = e_widget_button_add(evas, "", NULL,
|
2006-09-25 11:15:37 -07:00
|
|
|
_e_eap_editor_cb_icon_select, cfdata, editor);
|
2006-07-28 06:42:03 -07:00
|
|
|
e_widget_button_icon_set(editor->img_widget, editor->img);
|
|
|
|
e_widget_min_size_set(editor->img_widget, 48, 48);
|
2005-10-27 03:19:43 -07:00
|
|
|
e_widget_frametable_object_append(o, editor->img_widget,
|
2006-05-13 07:57:20 -07:00
|
|
|
0, 0, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2006-08-31 07:51:44 -07:00
|
|
|
|
2005-10-30 16:01:54 -08:00
|
|
|
e_widget_table_object_append(ol, o, 0, 0, 1, 1, 1 ,1, 1, 1);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2005-10-27 03:19:43 -07:00
|
|
|
o = e_widget_frametable_add(evas, _("Basic Info"), 0);
|
2006-09-25 11:15:37 -07:00
|
|
|
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Name")),
|
2005-10-27 03:19:43 -07:00
|
|
|
0, 0, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
entry = e_widget_entry_add(evas, (char **) &(cfdata->eap.name));
|
2005-10-27 03:19:43 -07:00
|
|
|
e_widget_min_size_set(entry, 100, 1);
|
|
|
|
e_widget_frametable_object_append(o, entry,
|
|
|
|
1, 0, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2005-11-27 13:24:48 -08:00
|
|
|
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Executable")),
|
2005-10-27 03:19:43 -07:00
|
|
|
0, 1, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2006-09-25 11:15:37 -07:00
|
|
|
e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(cfdata->exe)),
|
2005-10-27 03:19:43 -07:00
|
|
|
1, 1, 1, 1,
|
2006-07-19 06:24:50 -07:00
|
|
|
1, 1, 1, 1);
|
2005-10-30 16:01:54 -08:00
|
|
|
e_widget_table_object_append(ol, o, 1, 0, 1, 1, 1 ,1, 1, 1);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2005-10-27 03:19:43 -07:00
|
|
|
return ol;
|
2005-10-25 17:19:52 -07:00
|
|
|
}
|
|
|
|
|
2005-10-27 03:19:43 -07:00
|
|
|
static Evas_Object *
|
2006-09-25 11:15:37 -07:00
|
|
|
_e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
2005-10-25 17:19:52 -07:00
|
|
|
{
|
|
|
|
E_App_Edit *editor;
|
2005-10-27 03:19:43 -07:00
|
|
|
E_App *eap;
|
|
|
|
Evas_Object *ol, *o;
|
2006-07-19 06:24:50 -07:00
|
|
|
Evas_Object *entry;
|
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
editor = cfdata->editor;
|
2005-10-27 03:19:43 -07:00
|
|
|
eap = editor->eap;
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
ol = _e_eap_edit_basic_create_widgets(cfd, evas, cfdata);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2005-10-27 03:19:43 -07:00
|
|
|
o = e_widget_frametable_add(evas, _("General"), 0);
|
2005-10-25 17:19:52 -07:00
|
|
|
|
2005-10-27 03:19:43 -07:00
|
|
|
/*- general info -*/
|
2005-11-27 13:24:48 -08:00
|
|
|
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Generic Info")),
|
2006-05-13 07:57:20 -07:00
|
|
|
0, 0, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
entry = e_widget_entry_add(evas, (char **) &(cfdata->eap.generic));
|
2006-07-19 06:24:50 -07:00
|
|
|
e_widget_min_size_set(entry, 100, 1);
|
2005-10-27 03:19:43 -07:00
|
|
|
e_widget_frametable_object_append(o, entry,
|
2006-05-13 07:57:20 -07:00
|
|
|
1, 0, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2005-11-27 13:24:48 -08:00
|
|
|
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Comment")),
|
2006-05-13 07:57:20 -07:00
|
|
|
0, 1, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2006-09-25 11:15:37 -07:00
|
|
|
e_widget_frametable_object_append(o, e_widget_entry_add(evas, (char **) &(cfdata->eap.comment)),
|
2006-05-13 07:57:20 -07:00
|
|
|
1, 1, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2005-10-30 16:01:54 -08:00
|
|
|
e_widget_table_object_append(ol, o, 0, 1, 1, 1, 1 ,1, 1, 1);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
|
|
|
|
2005-10-27 03:19:43 -07:00
|
|
|
/*- window info -*/
|
|
|
|
o = e_widget_frametable_add(evas, _("Window"), 0);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2005-11-27 13:24:48 -08:00
|
|
|
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Window Name")),
|
2006-05-13 07:57:20 -07:00
|
|
|
0, 0, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
entry = e_widget_entry_add(evas, (char **) &(cfdata->eap.win_name));
|
2006-07-19 06:24:50 -07:00
|
|
|
e_widget_min_size_set(entry, 100, 1);
|
2005-10-27 03:19:43 -07:00
|
|
|
e_widget_frametable_object_append(o, entry,
|
2006-05-13 07:57:20 -07:00
|
|
|
1, 0, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2005-11-27 13:24:48 -08:00
|
|
|
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Window Class")),
|
2006-05-13 07:57:20 -07:00
|
|
|
0, 1, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2006-09-25 11:15:37 -07:00
|
|
|
e_widget_frametable_object_append(o, e_widget_entry_add(evas, (char **) &(cfdata->eap.win_class)),
|
2006-05-13 07:57:20 -07:00
|
|
|
1, 1, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2005-11-27 13:24:48 -08:00
|
|
|
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Window Title")),
|
2006-05-13 07:57:20 -07:00
|
|
|
0, 2, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2006-09-25 11:15:37 -07:00
|
|
|
e_widget_frametable_object_append(o, e_widget_entry_add(evas, (char **) &(cfdata->eap.win_title)),
|
2006-05-13 07:57:20 -07:00
|
|
|
1, 2, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2005-11-27 13:24:48 -08:00
|
|
|
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Window Role")),
|
2006-05-13 07:57:20 -07:00
|
|
|
0, 3, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2006-09-25 11:15:37 -07:00
|
|
|
e_widget_frametable_object_append(o, e_widget_entry_add(evas, (char **) &(cfdata->eap.win_role)),
|
2006-05-13 07:57:20 -07:00
|
|
|
1, 3, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2005-10-30 16:01:54 -08:00
|
|
|
e_widget_table_object_append(ol, o, 0, 2, 1, 1, 1 ,1, 1, 1);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2005-10-27 03:19:43 -07:00
|
|
|
/*- icon info -*/
|
2006-05-13 19:38:14 -07:00
|
|
|
o = e_widget_frametable_add(evas, _("Icon Theme"), 0);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
cfdata->themed = e_widget_check_add(evas, _("Use Icon Theme"), &(cfdata->icon_theme));
|
|
|
|
evas_object_smart_callback_add(cfdata->themed, "changed",
|
|
|
|
_cb_files_icon_theme_changed, cfdata);
|
|
|
|
e_widget_frametable_object_append(o, cfdata->themed,
|
|
|
|
1, 0, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
|
|
|
|
2005-11-27 13:24:48 -08:00
|
|
|
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Icon Class")),
|
2006-09-25 11:15:37 -07:00
|
|
|
0, 1, 1, 1,
|
2006-05-13 07:57:20 -07:00
|
|
|
1, 1, 1, 1);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
entry = e_widget_entry_add(evas, (char **) &(cfdata->eap.icon_class));
|
2006-07-19 06:24:50 -07:00
|
|
|
e_widget_min_size_set(entry, 100, 1);
|
2005-10-27 03:19:43 -07:00
|
|
|
e_widget_frametable_object_append(o, entry,
|
2006-09-25 11:15:37 -07:00
|
|
|
1, 1, 1, 1,
|
2006-05-13 07:57:20 -07:00
|
|
|
1, 1, 1, 1);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2005-10-30 16:01:54 -08:00
|
|
|
e_widget_table_object_append(ol, o, 1, 1, 1, 1, 1 ,1, 1, 1);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
|
|
|
|
2005-10-27 03:19:43 -07:00
|
|
|
/*- misc info -*/
|
2006-07-19 06:24:50 -07:00
|
|
|
o = e_widget_frametable_add(evas, _("Misc"), 0);
|
2006-09-25 11:15:37 -07:00
|
|
|
e_widget_frametable_object_append(o, e_widget_check_add(evas, _("Startup Notify"), &(cfdata->startup_notify)),
|
2005-10-30 16:01:54 -08:00
|
|
|
0, 0, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
2006-09-25 11:15:37 -07:00
|
|
|
e_widget_frametable_object_append(o, e_widget_check_add(evas, _("Wait Exit"), &(cfdata->wait_exit)),
|
2005-10-30 16:01:54 -08:00
|
|
|
0, 1, 1, 1,
|
|
|
|
1, 1, 1, 1);
|
|
|
|
e_widget_table_object_append(ol, o, 1, 2, 1, 1, 1 ,1, 1, 1);
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2005-10-27 03:19:43 -07:00
|
|
|
return ol;
|
2005-10-24 16:08:20 -07:00
|
|
|
}
|
2005-10-28 16:37:14 -07:00
|
|
|
|
2006-07-28 06:42:03 -07:00
|
|
|
static void
|
|
|
|
_e_eap_editor_cb_icon_select(void *data1, void *data2)
|
2005-10-28 16:37:14 -07:00
|
|
|
{
|
2006-07-28 06:42:03 -07:00
|
|
|
/* FIXME: Only one icon selection dialog! */
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
E_Dialog *dia;
|
|
|
|
Evas_Object *o;
|
|
|
|
Evas_Coord mw, mh;
|
2006-08-26 21:33:07 -07:00
|
|
|
E_App_Edit *editor;
|
2006-09-25 11:15:37 -07:00
|
|
|
char *dir = NULL;
|
2006-07-28 06:42:03 -07:00
|
|
|
|
2006-08-26 21:33:07 -07:00
|
|
|
editor = data2;
|
2006-07-28 06:42:03 -07:00
|
|
|
cfdata = data1;
|
2006-08-14 08:22:46 -07:00
|
|
|
dia = e_dialog_new(cfdata->editor->cfd->con, "E", "_eap_icon_select_dialog");
|
2006-07-28 06:42:03 -07:00
|
|
|
if (!dia) return;
|
2006-08-26 20:53:15 -07:00
|
|
|
e_dialog_title_set(dia, _("Select an Icon"));
|
2006-07-28 06:42:03 -07:00
|
|
|
dia->data = cfdata;
|
|
|
|
e_object_del_attach_func_set(E_OBJECT(dia), _e_eap_edit_cb_icon_select_del);
|
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
if (cfdata->eap.icon_path)
|
|
|
|
dir = ecore_file_get_dir(cfdata->eap.icon_path);
|
|
|
|
if (dir)
|
|
|
|
{
|
|
|
|
o = e_widget_fsel_add(dia->win->evas, dir, "/", NULL, NULL,
|
|
|
|
_e_eap_edit_select_cb, cfdata,
|
|
|
|
_e_eap_edit_change_cb, cfdata, 1);
|
|
|
|
free(dir);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
o = e_widget_fsel_add(dia->win->evas, "~/", "/", NULL, NULL,
|
|
|
|
_e_eap_edit_select_cb, cfdata,
|
|
|
|
_e_eap_edit_change_cb, cfdata, 1);
|
|
|
|
}
|
2006-07-28 06:42:03 -07:00
|
|
|
evas_object_show(o);
|
2006-08-26 22:33:19 -07:00
|
|
|
editor->fsel = o;
|
2006-07-28 06:42:03 -07:00
|
|
|
e_widget_min_size_get(o, &mw, &mh);
|
|
|
|
e_dialog_content_set(dia, o, mw, mh);
|
|
|
|
|
|
|
|
/* buttons at the bottom */
|
|
|
|
e_dialog_button_add(dia, "OK", NULL, _e_eap_edit_cb_icon_select_ok, cfdata);
|
|
|
|
e_dialog_button_add(dia, "Cancel", NULL, _e_eap_edit_cb_icon_select_cancel, cfdata);
|
|
|
|
e_dialog_resizable_set(dia, 1);
|
|
|
|
e_win_centered_set(dia->win, 1);
|
|
|
|
e_dialog_show(dia);
|
2006-08-26 20:36:33 -07:00
|
|
|
e_win_resize(dia->win, 475, 341);
|
2006-08-26 21:33:07 -07:00
|
|
|
editor->fsel_dia = dia;
|
2006-07-28 06:42:03 -07:00
|
|
|
}
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-07-28 06:42:03 -07:00
|
|
|
static void
|
|
|
|
_e_eap_edit_select_cb(void *data, Evas_Object *obj)
|
|
|
|
{
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
|
|
|
|
cfdata = data;
|
2005-10-28 16:37:14 -07:00
|
|
|
}
|
2005-12-05 14:20:34 -08:00
|
|
|
|
2006-07-28 06:42:03 -07:00
|
|
|
static void
|
|
|
|
_e_eap_edit_change_cb(void *data, Evas_Object *obj)
|
2005-12-05 14:20:34 -08:00
|
|
|
{
|
2006-07-28 06:42:03 -07:00
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
const char *file;
|
|
|
|
|
|
|
|
cfdata = data;
|
|
|
|
file = e_widget_fsel_selection_path_get(obj);
|
2006-08-10 06:29:59 -07:00
|
|
|
if (!file) return;
|
2006-07-28 06:42:03 -07:00
|
|
|
|
2006-09-25 11:15:37 -07:00
|
|
|
IFDEL(cfdata->eap.image);
|
|
|
|
IFADD(file, cfdata->eap.image);
|
2006-07-28 06:42:03 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_eap_edit_cb_icon_select_del(void *obj)
|
|
|
|
{
|
|
|
|
E_Dialog *dia;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
|
|
|
|
dia = obj;
|
|
|
|
cfdata = dia->data;
|
|
|
|
e_widget_focused_object_clear(cfdata->editor->img_widget);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_eap_edit_cb_icon_select_ok(void *data, E_Dialog *dia)
|
|
|
|
{
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
|
|
|
|
cfdata = data;
|
2006-09-25 11:15:37 -07:00
|
|
|
if (cfdata->eap.image)
|
2006-07-28 06:42:03 -07:00
|
|
|
{
|
2006-09-16 13:59:40 -07:00
|
|
|
e_widget_check_checked_set(cfdata->themed, 0);
|
|
|
|
_cb_files_icon_theme_changed(cfdata, NULL, NULL);
|
2006-07-28 06:42:03 -07:00
|
|
|
}
|
|
|
|
|
2006-09-16 13:59:40 -07:00
|
|
|
_e_eap_edit_cb_icon_select_cancel(data, dia);
|
2006-07-28 06:42:03 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_eap_edit_cb_icon_select_cancel(void *data, E_Dialog *dia)
|
|
|
|
{
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
2006-07-19 06:24:50 -07:00
|
|
|
|
2006-07-28 06:42:03 -07:00
|
|
|
cfdata = data;
|
|
|
|
e_widget_focused_object_clear(cfdata->editor->img_widget);
|
|
|
|
e_object_del_attach_func_set(E_OBJECT(dia), NULL);
|
|
|
|
e_object_del(E_OBJECT(dia));
|
2005-12-05 14:20:34 -08:00
|
|
|
}
|
2006-09-16 13:59:40 -07:00
|
|
|
|
|
|
|
static void
|
|
|
|
_cb_files_icon_theme_changed(void *data, Evas_Object *obj, void *event_info)
|
|
|
|
{
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
|
|
|
|
cfdata = data;
|
|
|
|
IFDEL(cfdata->eap.icon_path);
|
|
|
|
if (!cfdata->icon_theme)
|
|
|
|
{
|
2006-09-25 11:15:37 -07:00
|
|
|
IFADD(cfdata->eap.image, cfdata->eap.icon_path);
|
2006-09-16 13:59:40 -07:00
|
|
|
}
|
|
|
|
if (cfdata->editor->img) evas_object_del(cfdata->editor->img);
|
|
|
|
cfdata->editor->img = e_app_icon_add(cfdata->editor->evas, &(cfdata->eap));
|
|
|
|
e_widget_button_icon_set(cfdata->editor->img_widget, cfdata->editor->img);
|
|
|
|
}
|