From f19ac31470a82903fdd644d325405de659107280 Mon Sep 17 00:00:00 2001 From: Miculcy Brian Date: Tue, 31 Aug 2010 13:49:17 +0000 Subject: [PATCH] allow to edit desktop files including urls SVN revision: 51783 --- src/bin/e_eap_editor.c | 45 ++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/src/bin/e_eap_editor.c b/src/bin/e_eap_editor.c index 69502f533..9ad7d0021 100644 --- a/src/bin/e_eap_editor.c +++ b/src/bin/e_eap_editor.c @@ -9,6 +9,7 @@ struct _E_Config_Dialog_Data char *comment; /* a longer description */ char *exec; /* command to execute */ char *try_exec; /* executable to test for an apps existance */ + char *url; /* url to open */ char *startup_wm_class; /* window class */ char *categories; /* list of category names that app is in */ @@ -316,6 +317,7 @@ _e_desktop_edit_create_data(E_Config_Dialog *cfd) IFDUP(desktop->comment, cfdata->comment); IFDUP(desktop->exec, cfdata->exec); IFDUP(desktop->try_exec, cfdata->try_exec); + IFDUP(desktop->url, cfdata->url); IFDUP(desktop->startup_wm_class, cfdata->startup_wm_class); IFDUP(desktop->orig_path, cfdata->orig_path); @@ -355,6 +357,7 @@ _e_desktop_edit_free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data IFFREE(cfdata->comment); IFFREE(cfdata->exec); IFFREE(cfdata->try_exec); + IFFREE(cfdata->url); IFFREE(cfdata->startup_wm_class); IFFREE(cfdata->categories); IFFREE(cfdata->icon); @@ -445,12 +448,14 @@ _e_desktop_edit_basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialo IFDUP(cfdata->name, cfdata->desktop->name); IFFREE(cfdata->desktop->exec); IFDUP(cfdata->exec, cfdata->desktop->exec); + IFFREE(cfdata->desktop->try_exec); + IFDUP(cfdata->try_exec, cfdata->desktop->try_exec); + IFFREE(cfdata->desktop->url); + IFDUP(cfdata->url, cfdata->desktop->url); IFFREE(cfdata->desktop->comment); IFDUP(cfdata->comment, cfdata->desktop->comment); IFFREE(cfdata->desktop->generic_name); IFDUP(cfdata->generic_name, cfdata->desktop->generic_name); - IFFREE(cfdata->desktop->try_exec); - IFDUP(cfdata->try_exec, cfdata->desktop->try_exec); IFFREE(cfdata->desktop->startup_wm_class); IFDUP(cfdata->startup_wm_class, cfdata->desktop->startup_wm_class); @@ -508,9 +513,10 @@ _e_desktop_edit_basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Di CHECK(name); CHECK(exec); + CHECK(try_exec); + CHECK(url); CHECK(comment); CHECK(generic_name); - CHECK(try_exec); CHECK(startup_wm_class); CHECK(icon); #undef CHECK @@ -660,20 +666,33 @@ _e_desktop_edit_basic_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas 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); + // FIXME: use radio buttons to switch between different .desktop file modes (executable, url, etc.) + if (cfdata->desktop->exec && *cfdata->desktop->exec) + { + 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); + 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); + 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); + 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); + e_widget_list_object_append(ol, oh, 1, 0, 0.0); + } + else if (cfdata->desktop->url && *cfdata->desktop->url) + { + o = e_widget_label_add(evas, _("URL")); + e_widget_list_object_append(ol, o, 1, 0, 0.0); + + editor->entry_widget = e_widget_entry_add + (evas, &(cfdata->url), NULL, NULL, NULL); + e_widget_list_object_append(ol, editor->entry_widget, 1, 0, 0.0); + } o = e_widget_label_add(evas, _("Comment")); e_widget_list_object_append(ol, o, 1, 0, 0.0);