better desktop file editor, presents more space in less space!
authorGustavo Sverzut Barbieri <barbieri@gmail.com>
Sat, 6 Mar 2010 00:42:09 +0000 (00:42 +0000)
committerGustavo Sverzut Barbieri <barbieri@gmail.com>
Sat, 6 Mar 2010 00:42:09 +0000 (00:42 +0000)
 * 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

src/bin/e_eap_editor.c
src/modules/conf_applications/e_int_config_apps.c

index c19c028..2f17d00 100644 (file)
@@ -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;
+       _e_desktop_edit_update_orig_path(cfdata);
+       cfdata->editor->saved = efreet_desktop_save_as
+         (cfdata->desktop, cfdata->orig_path);
+     }
+   return 1;
+}
 
-       if ((cfdata->desktop->name) && (cfdata->desktop->name[0]))
-         {
-            const char *s = cfdata->desktop->name;
-            i = 0;
+static int
+_e_desktop_edit_basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *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;
 
-            while (i < sizeof(basename) && s[i])
+       EINA_LIST_FREE(lst, str)
+         {
+            if (!cfdata->changed_categories)
               {
-                 if (isalnum(s[i]))
-                   basename[i] = s[i];
-                 else
-                   basename[i] = '_';
-                 i++;
+                 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;
               }
-            basename[i] = '\0';
+            eina_stringshare_del(str);
          }
-       else
-         eina_strlcpy(basename, "unnamed_desktop", sizeof(basename));
+     }
+   ret |= cfdata->changed_categories;
 
-       i = 0;
-       snprintf(path, sizeof(path), "%s/applications/%s.desktop", 
-                efreet_data_home_get(), basename);
-       while (ecore_file_exists(path))
+   if (!ret)
+     {
+       if (cfdata->edited_mimes)
          {
-            snprintf(path, sizeof(path), "%s/applications/%s-%d.desktop", 
-                     efreet_data_home_get(), basename, i);
-            i++;
+            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);
+              }
+
          }
-       cfdata->editor->saved = efreet_desktop_save_as(cfdata->desktop, path);
+       ret |= cfdata->changed_mimes;
      }
-   return 1;
+
+   return ret;
 }
 
-/**
- * Apply the advanced config dialog
- */
-static int
-_e_desktop_edit_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
+static void
+_e_desktop_editor_name_changed(void *data, Evas_Object *obj __UNUSED__)
 {
-   return _e_desktop_edit_basic_apply_data(cfd, cfdata);
+   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;
 }
 
-/**
- * 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)
+_e_desktop_edit_basic_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data *cfdata)
 {
-   E_Desktop_Edit *editor;
-   Evas_Object *ol, *o;
-   Evas_Object *entry;
+   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);
+
+   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_frametable_add(evas, _("Icon"), 0);
-   editor->img_widget = 
-     e_widget_button_add(evas, "", NULL, _e_desktop_editor_cb_icon_select, 
-                        cfdata, editor);
+   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);
-
-   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);
-
-   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;
-}
+   e_widget_size_min_set(editor->img_widget, 128, 128);
 
-/**
- * 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;
+   e_widget_toolbook_page_append
+     (otb, NULL, _("Icon"), editor->img_widget, 0, 0, 0, 0, 0.5, 0.5);
 
-   editor = cfdata->editor;
 
-   ol = _e_desktop_edit_basic_create_widgets(cfd, evas, cfdata);
-
-   o = e_widget_frametable_add(evas, _("General"), 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);
-
-   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_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_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);
-
-   return ol;
+   ol = e_widget_list_add(evas, 0, 0);
+
+   o = e_widget_label_add(evas, _("Generic Name"));
+   e_widget_list_object_append(ol, o, 1, 0, 0.0);
+
+   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_label_add(evas, _("Window Class"));
+   e_widget_list_object_append(ol, o, 1, 0, 0.0);
+
+   o = e_widget_entry_add(evas, &(cfdata->startup_wm_class), NULL, NULL, NULL);
+   e_widget_list_object_append(ol, o, 1, 0, 0.0);
+
+   o = e_widget_label_add(evas, _("Categories"));
+   e_widget_list_object_append(ol, o, 1, 0, 0.0);
+
+   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_label_add(evas, _("Mime Types"));
+   e_widget_list_object_append(ol, o, 1, 0, 0.0);
+
+   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
index db87a62..4909d60 100644 (file)
@@ -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;
 }