From 94230efe1f2203229a8fe0ecf16dffd6b50fbeb5 Mon Sep 17 00:00:00 2001 From: Sebastian Dransfeld Date: Sat, 24 Mar 2007 23:51:46 +0000 Subject: [PATCH] Edit .order files. SVN revision: 29065 --- src/bin/e_order.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++- src/bin/e_order.h | 6 +++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/src/bin/e_order.c b/src/bin/e_order.c index 27cc5c28f..628e97414 100644 --- a/src/bin/e_order.c +++ b/src/bin/e_order.c @@ -56,6 +56,63 @@ e_order_new(const char *path) return eo; } +EAPI void +e_order_remove(E_Order *eo, Efreet_Desktop *desktop) +{ + eo->desktops = evas_list_remove(eo->desktops, desktop); + _e_order_save(eo); +} + +EAPI void +e_order_append(E_Order *eo, Efreet_Desktop *desktop) +{ + eo->desktops = evas_list_append(eo->desktops, desktop); + _e_order_save(eo); +} + +EAPI void +e_order_prepend_relative(E_Order *eo, Efreet_Desktop *desktop, Efreet_Desktop *before) +{ + eo->desktops = evas_list_prepend_relative(eo->desktops, desktop, before); + _e_order_save(eo); +} + +EAPI void +e_order_files_append(E_Order *eo, Evas_List *files) +{ + Evas_List *l; + + for (l = files; l ; l = l->next) + { + Efreet_Desktop *desktop; + const char *file; + + file = l->data; + desktop = efreet_desktop_get(file); + if (!desktop) continue; + eo->desktops = evas_list_append(eo->desktops, desktop); + } + _e_order_save(eo); +} + +EAPI void +e_order_files_prepend_relative(E_Order *eo, Evas_List *files, Efreet_Desktop *before) +{ + Evas_List *l; + + for (l = files; l ; l = l->next) + { + Efreet_Desktop *desktop; + const char *file; + + file = l->data; + desktop = efreet_desktop_get(file); + if (!desktop) continue; + eo->desktops = evas_list_prepend_relative(eo->desktops, desktop, before); + } + _e_order_save(eo); +} + static void _e_order_free(E_Order *eo) { @@ -87,7 +144,7 @@ _e_order_save(E_Order *eo) /* TODO: This only allows us to save .desktop files which are in * the default paths. If it isn't, we should copy it to the users - * application directory */ + * application directory. Or store the full path in the .order file */ desktop = l->data; path = efreet_util_path_in_default("applications", desktop->orig_path); if (!path) continue; diff --git a/src/bin/e_order.h b/src/bin/e_order.h index 2837c8d0d..888fdfd29 100644 --- a/src/bin/e_order.h +++ b/src/bin/e_order.h @@ -22,5 +22,11 @@ struct _E_Order EAPI E_Order *e_order_new(const char *path); +EAPI void e_order_remove(E_Order *eo, Efreet_Desktop *desktop); +EAPI void e_order_append(E_Order *eo, Efreet_Desktop *desktop); +EAPI void e_order_prepend_relative(E_Order *eo, Efreet_Desktop *desktop, Efreet_Desktop *before); +EAPI void e_order_files_append(E_Order *eo, Evas_List *files); +EAPI void e_order_files_prepend_relative(E_Order *eo, Evas_List *files, Efreet_Desktop *before); + #endif #endif