Enlightenment CVS committal Author : andreas99 Project : e16 Module : tools
Dir : e16/tools/e16menuedit2/src Modified Files: e16menu.c e16menu.h treeview.c Log Message: removed strange bug that could possibly destroy menu files =================================================================== RCS file: /cvsroot/enlightenment/e16/tools/e16menuedit2/src/e16menu.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e16menu.c 28 Jul 2004 22:12:28 -0000 1.1 +++ e16menu.c 6 Aug 2004 19:18:43 -0000 1.2 @@ -25,6 +25,7 @@ */ #include <stdio.h> + #include <errno.h> #include "e16menu.h" #include "file.h" #include "e16menuedit2.h" @@ -344,3 +345,60 @@ return FALSE; } + +gboolean table_check_func (GtkTreeModel *model, GtkTreePath *path, + GtkTreeIter *iter, gpointer user_data) +{ + gchar *description, *icon, *params; + gchar *tree_path_str; + gboolean has_child; + gint depth; + gchar buffer[128]; + + gtk_tree_model_get (model, iter, + COL_DESCRIPTION, &description, + COL_ICONNAME, &icon, + COL_PARAMS, ¶ms, + -1); + + tree_path_str = gtk_tree_path_to_string(path); + + has_child = gtk_tree_model_iter_has_child (model, iter); + depth = gtk_tree_path_get_depth (path) - 1; + + errno = 0; + + if (depth + 1 >= MAX_RECURSION) + { + g_print ("maximum menu recursion reached! -> %d\n", MAX_RECURSION); + return TRUE; + } + + if (depth > 0) + { + if (has_child) + { + /* some checks for submenus */ + if (!strcmp (params, "")) + { + errno = 1; + return TRUE; + } + } + else + { + /* some checks for entries */ + } + } + else + { + /* check for root node */ + } + + g_free(tree_path_str); + g_free(description); + g_free(icon); + g_free(params); + + return FALSE; +} =================================================================== RCS file: /cvsroot/enlightenment/e16/tools/e16menuedit2/src/e16menu.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e16menu.h 28 Jul 2004 22:12:28 -0000 1.1 +++ e16menu.h 6 Aug 2004 19:18:43 -0000 1.2 @@ -39,6 +39,8 @@ GtkTreeIter *iter); gboolean table_save_func (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data); +gboolean table_check_func (GtkTreeModel *model, GtkTreePath *path, + GtkTreeIter *iter, gpointer user_data); gchar *menu_file[MAX_RECURSION]; =================================================================== RCS file: /cvsroot/enlightenment/e16/tools/e16menuedit2/src/treeview.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- treeview.c 2 Aug 2004 19:36:15 -0000 1.2 +++ treeview.c 6 Aug 2004 19:18:43 -0000 1.3 @@ -25,6 +25,7 @@ */ #include <string.h> +#include <errno.h> #include "treeview.h" #include "e16menu.h" #include "callbacks.h" @@ -48,14 +49,14 @@ gtk_tree_view_insert_column_with_attributes ( GTK_TREE_VIEW (treeview_menu), -1, - "Description", + _("Description"), renderer_desc, "text", COL_DESCRIPTION, NULL); renderer_icon = gtk_cell_renderer_pixbuf_new (); icon_column = gtk_tree_view_column_new_with_attributes ( - "Icon", + _("Icon"), renderer_icon, "pixbuf", COL_ICON, NULL); @@ -77,7 +78,7 @@ g_object_set (renderer_params, "editable", TRUE, NULL); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview_menu), -1, - "Parameters", + _("Parameters"), renderer_params, "text", COL_PARAMS, NULL); @@ -186,14 +187,25 @@ int i = 0; model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview_menu)); - gtk_tree_model_foreach (GTK_TREE_MODEL(model), table_save_func, NULL); + gtk_tree_model_foreach (GTK_TREE_MODEL(model), table_check_func, NULL); - g_print ("Menu saved!\n"); - - /* free allocated menu files */ - while (menu_file[i] != NULL) + if (errno == 0) + { + gtk_tree_model_foreach (GTK_TREE_MODEL(model), table_save_func, NULL); + g_print ("Menu saved!\n"); + + /* free allocated menu files */ + while (menu_file[i] != NULL) + { + g_free (menu_file[i]); + i++; + } + } + else { - g_free (menu_file[i]); - i++; + g_print ("some error occurred while checking menu!\nmenu not saved!\n"); } + + + } ------------------------------------------------------- This SF.Net email is sponsored by OSTG. Have you noticed the changes on Linux.com, ITManagersJournal and NewsForge in the past few weeks? Now, one more big change to announce. We are now OSTG- Open Source Technology Group. Come see the changes on the new OSTG site. www.ostg.com _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs