forked from enlightenment/enlightenment
better desktop file editor, presents more space in less space!
* use toolbook and segment all information to different pages * icon got its own page, with bigger view * labels on one line, entries on the next: more consistency, better alignment, takes less horizontal space and allows entries to show more characters. * editing new desktop files (Settings > Apps > New Application) will use a dynamically created name based on application name, instead of falling back to a numeric based _new_app-%d.desktop. SVN revision: 46902
This commit is contained in:
parent
bf01f9d9c1
commit
9e35127d35
|
@ -23,6 +23,15 @@ struct _E_Config_Dialog_Data
|
|||
int show_in_menus;
|
||||
|
||||
E_Desktop_Edit *editor;
|
||||
|
||||
char *orig_path; /* informational only */
|
||||
Evas_Object *orig_path_entry; /* to set when info changes */
|
||||
|
||||
/* speed up check_changed tests */
|
||||
Eina_Bool changed_categories;
|
||||
Eina_Bool changed_mimes;
|
||||
Eina_Bool edited_categories;
|
||||
Eina_Bool edited_mimes;
|
||||
};
|
||||
|
||||
/* local subsystem functions */
|
||||
|
@ -32,9 +41,8 @@ static void _e_desktop_edit_free(E_Desktop_Edit *editor);
|
|||
static void *_e_desktop_edit_create_data(E_Config_Dialog *cfd);
|
||||
static void _e_desktop_edit_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data);
|
||||
static int _e_desktop_edit_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data);
|
||||
static int _e_desktop_edit_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data);
|
||||
static int _e_desktop_edit_basic_check_changed(E_Config_Dialog *cfd, E_Config_Dialog_Data *data);
|
||||
static Evas_Object *_e_desktop_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *data);
|
||||
static Evas_Object *_e_desktop_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *data);
|
||||
static void _e_desktop_editor_cb_icon_select(void *data1, void *data2);
|
||||
static void _e_desktop_edit_cb_icon_select_destroy(void *obj);
|
||||
static void _e_desktop_edit_cb_icon_select_ok(void *data, E_Dialog *dia);
|
||||
|
@ -208,8 +216,7 @@ _e_desktop_edit_view_create(E_Desktop_Edit *editor, E_Container *con)
|
|||
v->free_cfdata = _e_desktop_edit_free_data;
|
||||
v->basic.apply_cfdata = _e_desktop_edit_basic_apply_data;
|
||||
v->basic.create_widgets = _e_desktop_edit_basic_create_widgets;
|
||||
v->advanced.apply_cfdata = _e_desktop_edit_advanced_apply_data;
|
||||
v->advanced.create_widgets = _e_desktop_edit_advanced_create_widgets;
|
||||
v->basic.check_changed = _e_desktop_edit_basic_check_changed;
|
||||
|
||||
editor->cfd =
|
||||
e_config_dialog_new(con, _("Desktop Entry Editor"), "E",
|
||||
|
@ -296,11 +303,12 @@ _e_desktop_edit_create_data(E_Config_Dialog *cfd)
|
|||
if (!desktop) desktop = cfdata->desktop;
|
||||
|
||||
IFDUP(desktop->name, cfdata->name);
|
||||
IFDUP(desktop->name, cfdata->generic_name);
|
||||
IFDUP(desktop->generic_name, cfdata->generic_name);
|
||||
IFDUP(desktop->comment, cfdata->comment);
|
||||
IFDUP(desktop->exec, cfdata->exec);
|
||||
IFDUP(desktop->try_exec, cfdata->try_exec);
|
||||
IFDUP(desktop->startup_wm_class, cfdata->startup_wm_class);
|
||||
IFDUP(desktop->orig_path, cfdata->orig_path);
|
||||
|
||||
if (desktop->categories)
|
||||
cfdata->categories = efreet_desktop_string_list_join(desktop->categories);
|
||||
|
@ -320,7 +328,7 @@ _e_desktop_edit_create_data(E_Config_Dialog *cfd)
|
|||
* Frees the config dialog data
|
||||
*/
|
||||
static void
|
||||
_e_desktop_edit_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
_e_desktop_edit_free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
if (cfdata->editor->tmp_image_path)
|
||||
{
|
||||
|
@ -342,6 +350,7 @@ _e_desktop_edit_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
IFFREE(cfdata->categories);
|
||||
IFFREE(cfdata->icon);
|
||||
IFFREE(cfdata->mimes);
|
||||
IFFREE(cfdata->orig_path);
|
||||
|
||||
if (cfdata->editor->icon_fsel_dia)
|
||||
e_object_del(E_OBJECT(cfdata->editor->icon_fsel_dia));
|
||||
|
@ -350,11 +359,73 @@ _e_desktop_edit_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
free(cfdata);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desktop_edit_user_local_desktop_filename_generate(E_Config_Dialog_Data *cfdata, char *path)
|
||||
{
|
||||
char basename[PATH_MAX];
|
||||
const char *name;
|
||||
unsigned int i;
|
||||
int prefix;
|
||||
|
||||
if ((cfdata->name) && (cfdata->name[0]))
|
||||
name = cfdata->name;
|
||||
else if ((cfdata->desktop) && (cfdata->desktop->name) &&
|
||||
(cfdata->desktop->name[0]))
|
||||
name = cfdata->name;
|
||||
else
|
||||
name = NULL;
|
||||
|
||||
if (name)
|
||||
{
|
||||
const char *s = name;
|
||||
for (i = 0; i < sizeof(basename) && s[i]; i++)
|
||||
{
|
||||
if (isalnum(s[i]))
|
||||
basename[i] = s[i];
|
||||
else
|
||||
basename[i] = '_';
|
||||
}
|
||||
basename[i] = '\0';
|
||||
}
|
||||
else
|
||||
eina_strlcpy(basename, "unnamed_desktop", sizeof(basename));
|
||||
|
||||
i = snprintf(path, PATH_MAX, "%s/applications/%s.desktop",
|
||||
efreet_data_home_get(), basename);
|
||||
if (i >= PATH_MAX)
|
||||
{
|
||||
path[0] = '\0';
|
||||
return;
|
||||
}
|
||||
prefix = i - (sizeof(".desktop") - 1);
|
||||
|
||||
for (i = 0; ecore_file_exists(path); i++)
|
||||
snprintf(path + prefix, PATH_MAX - prefix, "-%u.desktop", i);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desktop_edit_update_orig_path(E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
const char *orig_path;
|
||||
char path[PATH_MAX];
|
||||
|
||||
if ((cfdata->desktop->orig_path) && (cfdata->desktop->orig_path[0]))
|
||||
orig_path = cfdata->desktop->orig_path;
|
||||
else
|
||||
{
|
||||
_e_desktop_edit_user_local_desktop_filename_generate(cfdata, path);
|
||||
orig_path = cfdata->orig_path = strdup(path);
|
||||
}
|
||||
|
||||
if (cfdata->orig_path_entry)
|
||||
e_widget_entry_text_set(cfdata->orig_path_entry, orig_path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the basic config dialog
|
||||
*/
|
||||
static int
|
||||
_e_desktop_edit_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
_e_desktop_edit_basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
E_Desktop_Edit *editor;
|
||||
char *str;
|
||||
|
@ -393,155 +464,279 @@ _e_desktop_edit_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfd
|
|||
cfdata->editor->saved = efreet_desktop_save(cfdata->desktop);
|
||||
else
|
||||
{
|
||||
/* find a suitable name to save the desktop as */
|
||||
char basename[PATH_MAX];
|
||||
char path[PATH_MAX];
|
||||
int i;
|
||||
|
||||
if ((cfdata->desktop->name) && (cfdata->desktop->name[0]))
|
||||
{
|
||||
const char *s = cfdata->desktop->name;
|
||||
i = 0;
|
||||
|
||||
while (i < sizeof(basename) && s[i])
|
||||
{
|
||||
if (isalnum(s[i]))
|
||||
basename[i] = s[i];
|
||||
else
|
||||
basename[i] = '_';
|
||||
i++;
|
||||
}
|
||||
basename[i] = '\0';
|
||||
}
|
||||
else
|
||||
eina_strlcpy(basename, "unnamed_desktop", sizeof(basename));
|
||||
|
||||
i = 0;
|
||||
snprintf(path, sizeof(path), "%s/applications/%s.desktop",
|
||||
efreet_data_home_get(), basename);
|
||||
while (ecore_file_exists(path))
|
||||
{
|
||||
snprintf(path, sizeof(path), "%s/applications/%s-%d.desktop",
|
||||
efreet_data_home_get(), basename, i);
|
||||
i++;
|
||||
}
|
||||
cfdata->editor->saved = efreet_desktop_save_as(cfdata->desktop, path);
|
||||
_e_desktop_edit_update_orig_path(cfdata);
|
||||
cfdata->editor->saved = efreet_desktop_save_as
|
||||
(cfdata->desktop, cfdata->orig_path);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the advanced config dialog
|
||||
*/
|
||||
static int
|
||||
_e_desktop_edit_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
_e_desktop_edit_basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
return _e_desktop_edit_basic_apply_data(cfd, cfdata);
|
||||
int ret;
|
||||
|
||||
if ((cfdata->startup_notify != cfdata->desktop->startup_notify) ||
|
||||
(cfdata->terminal != cfdata->desktop->terminal) ||
|
||||
(cfdata->show_in_menus != !cfdata->desktop->no_display))
|
||||
return 1;
|
||||
|
||||
#define CHECK(k) \
|
||||
do \
|
||||
{ \
|
||||
const char *__k; \
|
||||
if (cfdata->desktop->k) \
|
||||
__k = cfdata->desktop->k; \
|
||||
else if ((cfdata->editor) && (cfdata->editor->desktop)) \
|
||||
__k = cfdata->editor->desktop->k; \
|
||||
else \
|
||||
__k = NULL; \
|
||||
if ((cfdata->k && !__k) || (!cfdata->k && __k) || \
|
||||
(cfdata->k && __k && strcmp(cfdata->k, __k) != 0)) \
|
||||
return 1; \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
CHECK(name);
|
||||
CHECK(exec);
|
||||
CHECK(comment);
|
||||
CHECK(generic_name);
|
||||
CHECK(try_exec);
|
||||
CHECK(startup_wm_class);
|
||||
CHECK(icon);
|
||||
#undef CHECK
|
||||
|
||||
ret = 0;
|
||||
|
||||
if (cfdata->edited_categories)
|
||||
{
|
||||
const char *str;
|
||||
Eina_List *lst, *old_lst;
|
||||
|
||||
cfdata->edited_categories = EINA_FALSE;
|
||||
cfdata->changed_categories = EINA_FALSE;
|
||||
|
||||
if (cfdata->desktop->categories)
|
||||
old_lst = cfdata->desktop->categories;
|
||||
else if ((cfdata->editor) && (cfdata->editor->desktop))
|
||||
old_lst = cfdata->editor->desktop->categories;
|
||||
else
|
||||
old_lst = NULL;
|
||||
|
||||
lst = efreet_desktop_string_list_parse(cfdata->categories);
|
||||
if (eina_list_count(lst) != eina_list_count(old_lst))
|
||||
cfdata->changed_categories = EINA_TRUE;
|
||||
|
||||
EINA_LIST_FREE(lst, str)
|
||||
{
|
||||
if (!cfdata->changed_categories)
|
||||
{
|
||||
Eina_List *n;
|
||||
const char *old;
|
||||
Eina_Bool found = EINA_FALSE;
|
||||
EINA_LIST_FOREACH(old_lst, n, old)
|
||||
{
|
||||
if (strcmp(str, old) == 0)
|
||||
{
|
||||
found = EINA_TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
cfdata->changed_categories = EINA_TRUE;
|
||||
}
|
||||
eina_stringshare_del(str);
|
||||
}
|
||||
}
|
||||
ret |= cfdata->changed_categories;
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
if (cfdata->edited_mimes)
|
||||
{
|
||||
const char *str;
|
||||
Eina_List *lst, *old_lst;
|
||||
|
||||
cfdata->edited_mimes = EINA_FALSE;
|
||||
cfdata->changed_mimes = EINA_FALSE;
|
||||
|
||||
if (cfdata->desktop->mime_types)
|
||||
old_lst = cfdata->desktop->mime_types;
|
||||
else if ((cfdata->editor) && (cfdata->editor->desktop))
|
||||
old_lst = cfdata->editor->desktop->mime_types;
|
||||
else
|
||||
old_lst = NULL;
|
||||
|
||||
lst = efreet_desktop_string_list_parse(cfdata->mimes);
|
||||
if (eina_list_count(lst) != eina_list_count(old_lst))
|
||||
cfdata->changed_mimes = EINA_TRUE;
|
||||
|
||||
EINA_LIST_FREE(lst, str)
|
||||
{
|
||||
if (!cfdata->changed_mimes)
|
||||
{
|
||||
Eina_List *n;
|
||||
const char *old;
|
||||
Eina_Bool found = EINA_FALSE;
|
||||
EINA_LIST_FOREACH(old_lst, n, old)
|
||||
{
|
||||
if (strcmp(str, old) == 0)
|
||||
{
|
||||
found = EINA_TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
cfdata->changed_mimes = EINA_TRUE;
|
||||
}
|
||||
eina_stringshare_del(str);
|
||||
}
|
||||
|
||||
}
|
||||
ret |= cfdata->changed_mimes;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the gui for the basic dialog
|
||||
*/
|
||||
static Evas_Object *
|
||||
_e_desktop_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||
static void
|
||||
_e_desktop_editor_name_changed(void *data, Evas_Object *obj __UNUSED__)
|
||||
{
|
||||
E_Desktop_Edit *editor;
|
||||
Evas_Object *ol, *o;
|
||||
Evas_Object *entry;
|
||||
E_Config_Dialog_Data *cfdata = data;
|
||||
_e_desktop_edit_update_orig_path(cfdata);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desktop_editor_categories_changed(void *data, Evas_Object *obj __UNUSED__)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata = data;
|
||||
cfdata->edited_categories = EINA_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desktop_editor_mimes_changed(void *data, Evas_Object *obj __UNUSED__)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata = data;
|
||||
cfdata->edited_mimes = EINA_TRUE;
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_e_desktop_edit_basic_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
E_Desktop_Edit *editor = cfdata->editor;
|
||||
Evas_Object *otb, *ol, *o, *oh;
|
||||
Evas_Coord mw, mh;
|
||||
|
||||
editor = cfdata->editor;
|
||||
editor->evas = evas;
|
||||
|
||||
ol = e_widget_table_add(evas, 0);
|
||||
otb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale);
|
||||
|
||||
o = e_widget_frametable_add(evas, _("Icon"), 0);
|
||||
editor->img_widget =
|
||||
e_widget_button_add(evas, "", NULL, _e_desktop_editor_cb_icon_select,
|
||||
cfdata, editor);
|
||||
ol = e_widget_list_add(evas, 0, 0);
|
||||
|
||||
o = e_widget_label_add(evas, _("Name"));
|
||||
e_widget_size_min_get(o, &mw, &mh);
|
||||
if (mw < 220) mw = 220;
|
||||
e_widget_size_min_set(o, mw, mh);
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
|
||||
o = e_widget_entry_add(evas, &(cfdata->name), NULL, NULL, NULL);
|
||||
if ((!cfdata->desktop->orig_path) || (!cfdata->desktop->orig_path[0]))
|
||||
e_widget_on_change_hook_set(o, _e_desktop_editor_name_changed, cfdata);
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
|
||||
o = e_widget_label_add(evas, _("Executable"));
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
|
||||
oh = e_widget_list_add(evas, 0, 1);
|
||||
|
||||
editor->entry_widget = e_widget_entry_add
|
||||
(evas, &(cfdata->exec), NULL, NULL, NULL);
|
||||
e_widget_list_object_append(oh, editor->entry_widget, 1, 1, 0.5);
|
||||
|
||||
o = e_widget_button_add
|
||||
(evas, "...", NULL, _e_desktop_editor_cb_exec_select, cfdata, editor);
|
||||
e_widget_list_object_append(oh, o, 0, 0, 0.5);
|
||||
|
||||
e_widget_list_object_append(ol, oh, 1, 0, 0.0);
|
||||
|
||||
o = e_widget_label_add(evas, _("Comment"));
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
|
||||
o = e_widget_entry_add(evas, &(cfdata->comment), NULL, NULL, NULL);
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
|
||||
e_widget_toolbook_page_append
|
||||
(otb, NULL, _("Basic"), ol, 1, 0, 1, 0, 0.5, 0.0);
|
||||
|
||||
e_widget_size_min_get(ol, &mw, &mh);
|
||||
|
||||
editor->img_widget = e_widget_button_add
|
||||
(evas, "", NULL, _e_desktop_editor_cb_icon_select, cfdata, editor);
|
||||
_e_desktop_editor_icon_update(cfdata);
|
||||
e_widget_size_min_set(editor->img_widget, 48, 48);
|
||||
e_widget_frametable_object_append(o, editor->img_widget,
|
||||
0, 0, 1, 1, 0, 0, 1, 1);
|
||||
e_widget_table_object_append(ol, o, 0, 0, 1, 1, 1 ,1, 1, 1);
|
||||
e_widget_size_min_set(editor->img_widget, 128, 128);
|
||||
|
||||
o = e_widget_frametable_add(evas, _("Basic Info"), 0);
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Name")),
|
||||
0, 0, 1, 1, 1, 1, 1, 0);
|
||||
e_widget_toolbook_page_append
|
||||
(otb, NULL, _("Icon"), editor->img_widget, 0, 0, 0, 0, 0.5, 0.5);
|
||||
|
||||
entry = e_widget_entry_add(evas, &(cfdata->name), NULL, NULL, NULL);
|
||||
e_widget_size_min_set(entry, 100, 1);
|
||||
e_widget_frametable_object_append(o, entry, 1, 0, 1, 1, 1, 1, 1, 0);
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Executable")),
|
||||
0, 1, 1, 1, 1, 1, 1, 0);
|
||||
editor->entry_widget = e_widget_entry_add(evas, &(cfdata->exec), NULL, NULL, NULL);
|
||||
e_widget_frametable_object_append(o, editor->entry_widget,
|
||||
1, 1, 1, 1, 1, 1, 1, 0);
|
||||
e_widget_frametable_object_append(o, e_widget_button_add(evas, "...", NULL,
|
||||
_e_desktop_editor_cb_exec_select, cfdata, editor),
|
||||
2, 1, 1, 1, 1, 1, 0, 0);
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Comment")),
|
||||
0, 2, 1, 1, 1, 1, 1, 0);
|
||||
e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(cfdata->comment), NULL, NULL, NULL),
|
||||
1, 2, 1, 1, 1, 1, 1, 0);
|
||||
e_widget_table_object_append(ol, o, 1, 0, 1, 1, 1 ,1, 1, 1);
|
||||
return ol;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the gui for the advanced dialog
|
||||
*/
|
||||
static Evas_Object *
|
||||
_e_desktop_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
E_Desktop_Edit *editor;
|
||||
Evas_Object *ol, *o;
|
||||
Evas_Object *entry;
|
||||
Evas_Object *fn;
|
||||
ol = e_widget_list_add(evas, 0, 0);
|
||||
|
||||
editor = cfdata->editor;
|
||||
o = e_widget_label_add(evas, _("Generic Name"));
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
|
||||
ol = _e_desktop_edit_basic_create_widgets(cfd, evas, cfdata);
|
||||
o = e_widget_entry_add(evas, &(cfdata->generic_name), NULL, NULL, NULL);
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
|
||||
o = e_widget_frametable_add(evas, _("General"), 0);
|
||||
o = e_widget_label_add(evas, _("Window Class"));
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
|
||||
/*- general info -*/
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Generic Name")),
|
||||
0, 0, 1, 1, 1, 1, 0, 1);
|
||||
entry = e_widget_entry_add(evas, &(cfdata->generic_name), NULL, NULL, NULL);
|
||||
e_widget_frametable_object_append(o, entry, 1, 0, 2, 1, 1, 1, 1, 1);
|
||||
o = e_widget_entry_add(evas, &(cfdata->startup_wm_class), NULL, NULL, NULL);
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Window Class")),
|
||||
0, 1, 1, 1, 1, 1, 0, 1);
|
||||
e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(cfdata->startup_wm_class), NULL, NULL, NULL),
|
||||
1, 1, 2, 1, 1, 1, 1, 1);
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Categories")),
|
||||
0, 2, 1, 1, 1, 1, 0, 1);
|
||||
e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(cfdata->categories), NULL, NULL, NULL),
|
||||
1, 2, 2, 1, 1, 1, 1, 1);
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Mime Types")),
|
||||
0, 3, 1, 1, 1, 1, 0, 1);
|
||||
e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(cfdata->mimes), NULL, NULL, NULL),
|
||||
1, 3, 2, 1, 1, 1, 1, 1);
|
||||
e_widget_table_object_append(ol, o, 0, 1, 2, 1, 1 ,1, 1, 1);
|
||||
o = e_widget_label_add(evas, _("Categories"));
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
|
||||
o = e_widget_frametable_add(evas, _("Options"), 0);
|
||||
e_widget_frametable_object_append(o, e_widget_check_add(evas, _("Startup Notify"), &(cfdata->startup_notify)),
|
||||
0, 0, 2, 1, 1, 1, 1, 1);
|
||||
e_widget_frametable_object_append(o, e_widget_check_add(evas, _("Run in Terminal"), &(cfdata->terminal)),
|
||||
0, 1, 2, 1, 1, 1, 1, 1);
|
||||
e_widget_frametable_object_append(o, e_widget_check_add(evas, _("Show in Menus"), &(cfdata->show_in_menus)),
|
||||
0, 2, 2, 1, 1, 1, 1, 1);
|
||||
e_widget_table_object_append(ol, o, 0, 2, 2, 1, 1 ,1, 1, 1);
|
||||
o = e_widget_entry_add(evas, &(cfdata->categories), NULL, NULL, NULL);
|
||||
e_widget_on_change_hook_set(o, _e_desktop_editor_categories_changed, cfdata);
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
|
||||
o = e_widget_frametable_add(evas, _("Desktop file"), 0);
|
||||
e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Filename")),
|
||||
0, 0, 1, 1, 0, 0, 0, 0);
|
||||
fn = e_widget_entry_add(evas, &(cfdata->editor->desktop->orig_path), NULL, NULL, NULL);
|
||||
e_widget_frametable_object_append(o, fn, 1, 0, 2, 1, 1, 1, 1, 1);
|
||||
e_widget_disabled_set(fn, 1);
|
||||
e_widget_table_object_append(ol, o, 0, 3, 2, 1, 1 ,1, 1, 1);
|
||||
o = e_widget_label_add(evas, _("Mime Types"));
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
|
||||
return ol;
|
||||
o = e_widget_entry_add(evas, &(cfdata->mimes), NULL, NULL, NULL);
|
||||
e_widget_on_change_hook_set(o, _e_desktop_editor_mimes_changed, cfdata);
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
|
||||
o = e_widget_label_add(evas, _("Desktop file"));
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
|
||||
o = e_widget_entry_add(evas, NULL, NULL, NULL, NULL);
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
e_widget_disabled_set(o, 1);
|
||||
cfdata->orig_path_entry = o;
|
||||
_e_desktop_edit_update_orig_path(cfdata);
|
||||
|
||||
e_widget_toolbook_page_append
|
||||
(otb, NULL, _("General"), ol, 1, 0, 1, 0, 0.5, 0.0);
|
||||
|
||||
|
||||
ol = e_widget_list_add(evas, 0, 0);
|
||||
o = e_widget_check_add(evas, _("Startup Notify"), &(cfdata->startup_notify));
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
o = e_widget_check_add(evas, _("Run in Terminal"), &(cfdata->terminal));
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
o = e_widget_check_add(evas, _("Show in Menus"), &(cfdata->show_in_menus));
|
||||
e_widget_list_object_append(ol, o, 1, 0, 0.0);
|
||||
e_widget_toolbook_page_append
|
||||
(otb, NULL, _("Options"), ol, 1, 0, 1, 0, 0.5, 0.0);
|
||||
|
||||
e_widget_toolbook_page_show(otb, 0);
|
||||
|
||||
e_dialog_resizable_set(cfd->dia, 1);
|
||||
e_util_win_auto_resize_fill(cfd->dia->win);
|
||||
e_win_centered_set(cfd->dia->win, 1);
|
||||
|
||||
return otb;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -58,37 +58,7 @@ e_int_config_apps_favs(E_Container *con, const char *params __UNUSED__)
|
|||
E_Config_Dialog *
|
||||
e_int_config_apps_add(E_Container *con, const char *params __UNUSED__)
|
||||
{
|
||||
E_Desktop_Edit *ed;
|
||||
Efreet_Desktop *de = NULL;
|
||||
char path[PATH_MAX];
|
||||
const char *desktop_dir;
|
||||
|
||||
desktop_dir = e_user_desktop_dir_get();
|
||||
if (desktop_dir)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 1; i < 65536; i++)
|
||||
{
|
||||
snprintf(path, sizeof(path), "%s/_new_app-%i.desktop",
|
||||
desktop_dir, i);
|
||||
if (!ecore_file_exists(path))
|
||||
{
|
||||
de = efreet_desktop_empty_new(path);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!de)
|
||||
{
|
||||
snprintf(path, sizeof(path), "%s/_rename_me-%i.desktop",
|
||||
desktop_dir, (int)ecore_time_get());
|
||||
de = efreet_desktop_empty_new(NULL);
|
||||
}
|
||||
}
|
||||
else
|
||||
de = efreet_desktop_empty_new(NULL);
|
||||
if (!de) return NULL;
|
||||
ed = e_desktop_edit(con, de);
|
||||
E_Desktop_Edit *ed = e_desktop_edit(con, NULL);
|
||||
if (!ed) return NULL;
|
||||
return ed->cfd;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue