]> granicus.if.org Git - graphviz/commitdiff
Reformat
authorerg <devnull@localhost>
Mon, 2 Nov 2009 16:55:40 +0000 (16:55 +0000)
committererg <devnull@localhost>
Mon, 2 Nov 2009 16:55:40 +0000 (16:55 +0000)
cmd/smyrna/gui/frmobjectui.c

index 356f4fc7c662c868957eba48311118d99ee492eb..a175e915153af203e4f657edcc9a6f17890dabc8 100644 (file)
 #define STRCASECMP strcasecmp
 #endif
 
-static attr_t* binarySearch( attr_list* l, char* searchKey);
+static attr_t *binarySearch(attr_list * l, char *searchKey);
 static int sel_node;
 static int sel_edge;
 static int sel_graph;
 
-static char* safestrdup(char* src)
+static char *safestrdup(char *src)
 {
-       if (!src)
-               return NULL;
-       else
-               return strdup(src);
+    if (!src)
+       return NULL;
+    else
+       return strdup(src);
 }
 static int get_object_type()
 {
-       if(gtk_toggle_button_get_active((GtkToggleButton*)glade_xml_get_widget(xml, "attrRB0")))
-               return AGRAPH;
-       if(gtk_toggle_button_get_active((GtkToggleButton*)glade_xml_get_widget(xml, "attrRB1")))
-               return AGNODE;
-       if(gtk_toggle_button_get_active((GtkToggleButton*)glade_xml_get_widget(xml, "attrRB2")))
-               return AGEDGE;
-       return -1;
+    if (gtk_toggle_button_get_active
+       ((GtkToggleButton *) glade_xml_get_widget(xml, "attrRB0")))
+       return AGRAPH;
+    if (gtk_toggle_button_get_active
+       ((GtkToggleButton *) glade_xml_get_widget(xml, "attrRB1")))
+       return AGNODE;
+    if (gtk_toggle_button_get_active
+       ((GtkToggleButton *) glade_xml_get_widget(xml, "attrRB2")))
+       return AGEDGE;
+    return -1;
 }
-void free_attr(attr_t* at)
+
+void free_attr(attr_t * at)
 {
-       free(at->defValG);
-       free(at->defValN);
-       free(at->defValE);
+    free(at->defValG);
+    free(at->defValN);
+    free(at->defValE);
 
-       free(at->name);
-       free(at);
+    free(at->name);
+    free(at);
 }
 
 
-attr_tnew_attr()
+attr_t *new_attr()
 {
-       attr_t* attr=malloc(sizeof(attr_t));
-       attr->defValG=(char*)0;
-       attr->defValN=(char*)0;
-       attr->defValE=(char*)0;
-       attr->name=(char*)0;
-       attr->value=(char*)0;
-       attr->propagate=0;
-       attr->objType[0]=0;
-       attr->objType[1]=0;
-       attr->objType[2]=0;
-       return attr;
+    attr_t *attr = malloc(sizeof(attr_t));
+    attr->defValG = (char *) 0;
+    attr->defValN = (char *) 0;
+    attr->defValE = (char *) 0;
+    attr->name = (char *) 0;
+    attr->value = (char *) 0;
+    attr->propagate = 0;
+    attr->objType[0] = 0;
+    attr->objType[1] = 0;
+    attr->objType[2] = 0;
+    return attr;
 }
 
 
-attr_tnew_attr_with_ref(Agsym_t * sym)
+attr_t *new_attr_with_ref(Agsym_t * sym)
 {
-       attr_t* attr=new_attr();
-       attr->name=safestrdup(sym->name);
-       switch (sym->kind)
-       {       
-       case AGRAPH:
-               attr->objType[0]=1;
-               if(sym->defval)
-                       attr->defValG=safestrdup(sym->defval);
-               break;
-       case AGNODE:
-               attr->objType[1]=1;
-               if(sym->defval)
-                       attr->defValN=safestrdup(sym->defval);
-               break;
-       case AGEDGE:
-               attr->objType[2]=1;
-               if(sym->defval)
-                       attr->defValE=safestrdup(sym->defval);
-               break;
-       }
-       return attr;
+    attr_t *attr = new_attr();
+    attr->name = safestrdup(sym->name);
+    switch (sym->kind) {
+    case AGRAPH:
+       attr->objType[0] = 1;
+       if (sym->defval)
+           attr->defValG = safestrdup(sym->defval);
+       break;
+    case AGNODE:
+       attr->objType[1] = 1;
+       if (sym->defval)
+           attr->defValN = safestrdup(sym->defval);
+       break;
+    case AGEDGE:
+       attr->objType[2] = 1;
+       if (sym->defval)
+           attr->defValE = safestrdup(sym->defval);
+       break;
+    }
+    return attr;
 }
 
-attr_t* new_attr_ref(attr_t* refAttr)
+attr_t *new_attr_ref(attr_t * refAttr)
 {
-       attr_t* attr=malloc(sizeof(attr_t));
-       *attr=*refAttr;
-       attr->defValG=safestrdup(refAttr->defValG);
-       attr->defValN=safestrdup(refAttr->defValN);
-       attr->defValE=safestrdup(refAttr->defValE);
-       attr->name=safestrdup(refAttr->name);
-       if (refAttr->value)
-               attr->value=safestrdup(refAttr->value);
-       return attr;
+    attr_t *attr = malloc(sizeof(attr_t));
+    *attr = *refAttr;
+    attr->defValG = safestrdup(refAttr->defValG);
+    attr->defValN = safestrdup(refAttr->defValN);
+    attr->defValE = safestrdup(refAttr->defValE);
+    attr->name = safestrdup(refAttr->name);
+    if (refAttr->value)
+       attr->value = safestrdup(refAttr->value);
+    return attr;
 }
 
-static void reset_attr_list_widgets(attr_list* l)
+static void reset_attr_list_widgets(attr_list * l)
 {
-       int id=0;
-       for (id;id < MAX_FILTERED_ATTR_COUNT ;id ++)
-       {
-               gtk_label_set_text(l->fLabels[id],"");
-       }
+    int id = 0;
+    for (id; id < MAX_FILTERED_ATTR_COUNT; id++) {
+       gtk_label_set_text(l->fLabels[id], "");
+    }
 }
 
 
 
-static void free_attr_list_widgets(attr_list* l)
+static void free_attr_list_widgets(attr_list * l)
 {
-       int id=0;
-       for (id;id < MAX_FILTERED_ATTR_COUNT ;id ++)
-       {
-               gtk_object_destroy((GtkObject*)l->fLabels[id]);
-       }
+    int id = 0;
+    for (id; id < MAX_FILTERED_ATTR_COUNT; id++) {
+       gtk_object_destroy((GtkObject *) l->fLabels[id]);
+    }
 }
 
 
-void free_attr_list(attr_list* l)
+void free_attr_list(attr_list * l)
 {
-       int id=0;
-       for (id;id < l->attr_count; id ++)
-       {
-               free_attr(l->attributes[id]);
-       }
-       if (l->with_widgets)
-               free_attr_list_widgets(l);
-       free(l);
+    int id = 0;
+    for (id; id < l->attr_count; id++) {
+       free_attr(l->attributes[id]);
+    }
+    if (l->with_widgets)
+       free_attr_list_widgets(l);
+    free(l);
 }
-attr_list* attr_list_new(Agraph_t * g,int with_widgets )
+attr_list *attr_list_new(Agraph_t * g, int with_widgets)
 {
-       int id=0;
-       attr_list* l=malloc(sizeof(attr_list));
-       l->attr_count=0;
-       l->capacity=DEFAULT_ATTR_LIST_CAPACITY;
-       l->attributes=malloc(DEFAULT_ATTR_LIST_CAPACITY * sizeof(attr_t*));
-       l->with_widgets=with_widgets;
-       /*create filter widgets*/
+    int id = 0;
+    attr_list *l = malloc(sizeof(attr_list));
+    l->attr_count = 0;
+    l->capacity = DEFAULT_ATTR_LIST_CAPACITY;
+    l->attributes = malloc(DEFAULT_ATTR_LIST_CAPACITY * sizeof(attr_t *));
+    l->with_widgets = with_widgets;
+    /*create filter widgets */
 
 /*                     gtk_widget_add_events(glade_xml_get_widget(xml, "frmObject"),
                        //  GDK_BUTTON_MOTION_MASK      = 1 << 4,
@@ -172,66 +172,69 @@ attr_list* attr_list_new(Agraph_t * g,int with_widgets )
                          GDK_SCROLL | GDK_VISIBILITY_NOTIFY_MASK);
 
     g_signal_connect((gpointer)glade_xml_get_widget(xml, "frmObject"), "motion_notify_event",  G_CALLBACK(attr_label_motion), NULL);*/
-       if(with_widgets)
-       {
-               for (id ; id < MAX_FILTERED_ATTR_COUNT ; id ++)
-               {
-                       l->fLabels[id]=(GtkLabel*)gtk_label_new(""); 
-
-                       gtk_widget_add_events((GtkWidget*)l->fLabels[id],
-                       //  GDK_BUTTON_MOTION_MASK      = 1 << 4,
-                         GDK_BUTTON_MOTION_MASK |
-                         GDK_POINTER_MOTION_MASK |
-                         GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS |
-                         GDK_BUTTON_RELEASE_MASK |
-                         GDK_SCROLL | GDK_VISIBILITY_NOTIFY_MASK);
-
-                       gtk_widget_show((GtkWidget*)l->fLabels[id]);
-                       gtk_fixed_put((GtkFixed*)glade_xml_get_widget(xml, "fixed6"),(GtkWidget*)l->fLabels[id],10,110+id * 13);
-               }
+    if (with_widgets) {
+       for (id; id < MAX_FILTERED_ATTR_COUNT; id++) {
+           l->fLabels[id] = (GtkLabel *) gtk_label_new("");
+
+           gtk_widget_add_events((GtkWidget *) l->fLabels[id],
+                                 //  GDK_BUTTON_MOTION_MASK      = 1 << 4,
+                                 GDK_BUTTON_MOTION_MASK |
+                                 GDK_POINTER_MOTION_MASK |
+                                 GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS |
+                                 GDK_BUTTON_RELEASE_MASK |
+                                 GDK_SCROLL | GDK_VISIBILITY_NOTIFY_MASK);
+
+           gtk_widget_show((GtkWidget *) l->fLabels[id]);
+           gtk_fixed_put((GtkFixed *) glade_xml_get_widget(xml, "fixed6"),
+                         (GtkWidget *) l->fLabels[id], 10, 110 + id * 13);
        }
-       return l;
+    }
+    return l;
 }
-void print_attr_list(attr_list* l)
+
+void print_attr_list(attr_list * l)
 {
-       int id=0;
-       for (id;id < l->attr_count; id ++)
-       {
-               printf ("%d  %s (%d %d %d) \n",l->attributes[id]->index,l->attributes[id]->name,l->attributes[id]->objType[0],l->attributes[id]->objType[1],l->attributes[id]->objType[2]);
-               printf ("defG:%s defN:%s defE:%s\n",l->attributes[id]->defValG,l->attributes[id]->defValN,l->attributes[id]->defValE);
-       }
+    int id = 0;
+    for (id; id < l->attr_count; id++) {
+       printf("%d  %s (%d %d %d) \n", l->attributes[id]->index,
+              l->attributes[id]->name, l->attributes[id]->objType[0],
+              l->attributes[id]->objType[1],
+              l->attributes[id]->objType[2]);
+       printf("defG:%s defN:%s defE:%s\n", l->attributes[id]->defValG,
+              l->attributes[id]->defValN, l->attributes[id]->defValE);
+    }
 }
 
-int attr_compare (const void * a, const void * b)
+int attr_compare(const void *a, const void *b)
 {
-       attr_t* a1=*(attr_t**)a;
-       attr_t* a2=*(attr_t**)b;
-       return STRCASECMP(a1->name,a2->name);
+    attr_t *a1 = *(attr_t **) a;
+    attr_t *a2 = *(attr_t **) b;
+    return STRCASECMP(a1->name, a2->name);
 }
 
-static void attr_list_sort(attr_list* l)
+static void attr_list_sort(attr_list * l)
 {
-  qsort (l->attributes, l->attr_count,sizeof(attr_t*), attr_compare);
+    qsort(l->attributes, l->attr_count, sizeof(attr_t *), attr_compare);
 
 }
 
-void attr_list_add(attr_list* l,attr_t* a)
+void attr_list_add(attr_list * l, attr_t * a)
 {
-       int id=0;
-       if ( (!l) || (!a))
-               return;
-       l->attr_count ++ ;
-       if (l->attr_count == l->capacity)
-       {
-               l->capacity = l->capacity + EXPAND_CAPACITY_VALUE;
-               l->attributes=realloc (l->attributes,l->capacity * sizeof(attr_t*));
-       }
-       l->attributes[l->attr_count-1]=a;
-       if (l->attr_count > 1)
-               attr_list_sort(l);
-       /*update indices*/
-       for (id;id < l->attr_count; id ++)
-               l->attributes[id]->index=id;
+    int id = 0;
+    if ((!l) || (!a))
+       return;
+    l->attr_count++;
+    if (l->attr_count == l->capacity) {
+       l->capacity = l->capacity + EXPAND_CAPACITY_VALUE;
+       l->attributes =
+           realloc(l->attributes, l->capacity * sizeof(attr_t *));
+    }
+    l->attributes[l->attr_count - 1] = a;
+    if (l->attr_count > 1)
+       attr_list_sort(l);
+    /*update indices */
+    for (id; id < l->attr_count; id++)
+       l->attributes[id]->index = id;
 
 
 
@@ -239,68 +242,69 @@ void attr_list_add(attr_list* l,attr_t* a)
 static attr_data_type get_attr_data_type(char c)
 {
 //typedef enum {attr_alpha,attr_float,attr_int,attr_bool,attr_drowdown,attr_color} attr_data_type;
-       switch (c)
-       {
-               case 'A':
-                       return attr_alpha;break;
-               case 'F':
-                       return attr_float;break;
-               case 'B':
-                       return attr_bool;break;
-               case 'I':
-                       return attr_int;break;
-       }
+    switch (c) {
+    case 'A':
        return attr_alpha;
+       break;
+    case 'F':
+       return attr_float;
+       break;
+    case 'B':
+       return attr_bool;
+       break;
+    case 'I':
+       return attr_int;
+       break;
+    }
+    return attr_alpha;
 
 }
-static void object_type_helper(char* a,int* t)
+static void object_type_helper(char *a, int *t)
 {
-       if (strcmp(a,"GRAPH")==0)
-               t[0]=1;
-       if (strcmp(a,"CLUSTER")==0)
-               t[0]=1;
-       if (strcmp(a,"NODE")==0)
-               t[1]=1;
-       if (strcmp(a,"EDGE")==0)
-               t[2]=1;
-       if (strcmp(a,"ANY_ELEMENT")==0)
-       {
-               t[0]=1;
-               t[1]=1;
-               t[2]=1;
-       }
+    if (strcmp(a, "GRAPH") == 0)
+       t[0] = 1;
+    if (strcmp(a, "CLUSTER") == 0)
+       t[0] = 1;
+    if (strcmp(a, "NODE") == 0)
+       t[1] = 1;
+    if (strcmp(a, "EDGE") == 0)
+       t[2] = 1;
+    if (strcmp(a, "ANY_ELEMENT") == 0) {
+       t[0] = 1;
+       t[1] = 1;
+       t[2] = 1;
+    }
 }
 
-static void set_attr_object_type(char* str,int* t)
+static void set_attr_object_type(char *str, int *t)
 {
-       
-       char* a;
-       a=strtok(str," ");
-       object_type_helper(a,t);
-       while (a=strtok(NULL," or "))
-               object_type_helper(a,t);
+
+    char *a;
+    a = strtok(str, " ");
+    object_type_helper(a, t);
+    while (a = strtok(NULL, " or "))
+       object_type_helper(a, t);
 
 }
 
-static attr_t* binarySearch( attr_list* l, char* searchKey)
+static attr_t *binarySearch(attr_list * l, char *searchKey)
 {
-       int middle,low,high,res;
-   low=0;
-   high=l->attr_count-1;
-
-   while ( low <= high ) {
-      middle = ( low + high ) / 2;
-         res=STRCASECMP(searchKey,l->attributes[middle]->name);
-         if ( res==0) {
-         return l->attributes[middle];
-      } 
-         else if               ( res < 0  ) {
-         high = middle - 1;
-      } else {
-         low = middle + 1;
-      }
-   }
-   return  NULL;
+    int middle, low, high, res;
+    low = 0;
+    high = l->attr_count - 1;
+
+    while (low <= high) {
+       middle = (low + high) / 2;
+       res = STRCASECMP(searchKey, l->attributes[middle]->name);
+       if (res == 0) {
+           return l->attributes[middle];
+       } else if (res < 0) {
+           high = middle - 1;
+       } else {
+           low = middle + 1;
+       }
+    }
+    return NULL;
 }
 
 
@@ -308,440 +312,447 @@ static attr_t* binarySearch( attr_list* l, char* searchKey)
 
 
 
-static attr_t* pBinarySearch( attr_list* l, char* searchKey)
+static attr_t *pBinarySearch(attr_list * l, char *searchKey)
 {
-       char buf[512];
-       int middle,low,high,res;
-   low=0;
-   high=l->attr_count-1;
-
-   while ( low <= high ) {
-      middle = ( low + high ) / 2;
-          strncpy ( buf, l->attributes[middle]->name, strlen(searchKey));
-               buf[strlen(searchKey)]='\0';
-         res=STRCASECMP(searchKey,buf);
-         if ( res==0) {
-         return l->attributes[middle];
-      } 
-//       else if               ( searchKey < b[ middle ] ) {
-         else if               ( res < 0  ) {
-         high = middle - 1;
-      } else {
-         low = middle + 1;
-      }
-   }
-   return  NULL;
+    char buf[512];
+    int middle, low, high, res;
+    low = 0;
+    high = l->attr_count - 1;
+
+    while (low <= high) {
+       middle = (low + high) / 2;
+       strncpy(buf, l->attributes[middle]->name, strlen(searchKey));
+       buf[strlen(searchKey)] = '\0';
+       res = STRCASECMP(searchKey, buf);
+       if (res == 0) {
+           return l->attributes[middle];
+       }
+//        else if               ( searchKey < b[ middle ] ) {
+       else if (res < 0) {
+           high = middle - 1;
+       } else {
+           low = middle + 1;
+       }
+    }
+    return NULL;
 
 }
 
 
 
 
-void create_filtered_list(char* prefix,attr_list* sl,attr_list* tl)
+void create_filtered_list(char *prefix, attr_list * sl, attr_list * tl)
 {
-       int res;
-       char buf[512];
-       attr_t* at;
-       int objKind=get_object_type();
-
-       if (strlen(prefix)==0)
-               return;
-       /*locate first occurance*/
-       at= pBinarySearch( sl, prefix);
-       if (!at)
-               return;
-
-       res=0;
-       /*go backward to get the first*/
-       while((at->index > 0) && (res == 0))
-       {
-               at=sl->attributes[at->index - 1];
-               strncpy ( buf, at->name, strlen(prefix));
-               buf[strlen(prefix)]='\0';;
-               res=STRCASECMP(prefix,buf);
-       }
-       res=0;
-       while((at->index <sl->attr_count) && (res == 0))
-       {
-               at=sl->attributes[at->index + 1];
-               strncpy ( buf, at->name, strlen(prefix));
-               buf[strlen(prefix)]='\0';
-               res=STRCASECMP(prefix,buf);
-               if((res == 0) && (at->objType[objKind]==1))
-                       attr_list_add(tl,new_attr_ref(at));
-       }
+    int res;
+    char buf[512];
+    attr_t *at;
+    int objKind = get_object_type();
+
+    if (strlen(prefix) == 0)
+       return;
+    /*locate first occurance */
+    at = pBinarySearch(sl, prefix);
+    if (!at)
+       return;
+
+    res = 0;
+    /*go backward to get the first */
+    while ((at->index > 0) && (res == 0)) {
+       at = sl->attributes[at->index - 1];
+       strncpy(buf, at->name, strlen(prefix));
+       buf[strlen(prefix)] = '\0';;
+       res = STRCASECMP(prefix, buf);
+    }
+    res = 0;
+    while ((at->index < sl->attr_count) && (res == 0)) {
+       at = sl->attributes[at->index + 1];
+       strncpy(buf, at->name, strlen(prefix));
+       buf[strlen(prefix)] = '\0';
+       res = STRCASECMP(prefix, buf);
+       if ((res == 0) && (at->objType[objKind] == 1))
+           attr_list_add(tl, new_attr_ref(at));
+    }
 }
-void filter_attributes(char* prefix,topview* t)
+void filter_attributes(char *prefix, topview * t)
 //void filter_attributes(char* prefix, attr_list* l)
 {
 
-       int ind=0;
-       int tmp;
+    int ind = 0;
+    int tmp;
+
+    attr_list *l = t->attributes;
+    attr_list *fl = t->filtered_attr_list;
+    int objKind = get_object_type();
+
+    if (fl)
+       free_attr_list(fl);
+    fl = attr_list_new(NULL, 0);
+    reset_attr_list_widgets(l);
+    create_filtered_list(prefix, l, fl);
+    for (ind; ind < fl->attr_count; ind++) {
+       gtk_label_set_text(l->fLabels[ind], fl->attributes[ind]->name);
+    }
 
-       attr_list* l=t->attributes;
-       attr_list* fl=t->filtered_attr_list;
-       int objKind=get_object_type();
+    /*a new attribute can be entered */
 
-       if (fl)
-               free_attr_list(fl);
-       fl=attr_list_new(NULL,0);
-       reset_attr_list_widgets(l);
-       create_filtered_list(prefix,l,fl);
-       for (ind;ind < fl->attr_count; ind ++)
-       {
-               gtk_label_set_text(l->fLabels[ind],fl->attributes[ind]->name);
-       }
+    gtk_widget_show(glade_xml_get_widget(xml, "txtValue"));
+    gtk_widget_show(glade_xml_get_widget(xml, "txtDefValue"));
 
-       /*a new attribute can be entered*/
+    gtk_entry_set_text((GtkEntry *)
+                      glade_xml_get_widget(xml, "txtDefValue"), "");
+    gtk_entry_set_text((GtkEntry *) glade_xml_get_widget(xml, "txtValue"),
+                      "");
+    gtk_widget_set_sensitive(glade_xml_get_widget(xml, "txtDefValue"), 1);
+    gtk_widget_show(glade_xml_get_widget(xml, "attrAddBtn"));
+    gtk_widget_hide(glade_xml_get_widget(xml, "attrApplyBtn"));
 
-       gtk_widget_show(glade_xml_get_widget(xml, "txtValue"));
-       gtk_widget_show(glade_xml_get_widget(xml, "txtDefValue"));
 
-       gtk_entry_set_text((GtkEntry*)glade_xml_get_widget(xml, "txtDefValue"),"");
-       gtk_entry_set_text((GtkEntry*)glade_xml_get_widget(xml, "txtValue"),"");
-       gtk_widget_set_sensitive(glade_xml_get_widget(xml, "txtDefValue"),1);
-       gtk_widget_show(glade_xml_get_widget(xml, "attrAddBtn"));
+    if (strlen(prefix) == 0) {
+       gtk_widget_hide(glade_xml_get_widget(xml, "attrAddBtn"));
        gtk_widget_hide(glade_xml_get_widget(xml, "attrApplyBtn"));
+       gtk_widget_hide(glade_xml_get_widget(xml, "attrAddBtn"));
+       gtk_widget_hide(glade_xml_get_widget(xml, "txtValue"));
+       gtk_widget_hide(glade_xml_get_widget(xml, "txtDefValue"));
+    }
 
 
-       if(strlen(prefix)==0)
-       {
-               gtk_widget_hide(glade_xml_get_widget(xml, "attrAddBtn"));
-               gtk_widget_hide(glade_xml_get_widget(xml, "attrApplyBtn"));
-               gtk_widget_hide(glade_xml_get_widget(xml, "attrAddBtn"));
-               gtk_widget_hide(glade_xml_get_widget(xml, "txtValue"));
-               gtk_widget_hide(glade_xml_get_widget(xml, "txtDefValue"));
-       }
-       
-
-       for (ind=0;ind < fl->attr_count;ind++)
-       {
-               if( STRCASECMP(prefix,fl->attributes[ind]->name)==0)/*an existing attribute*/
-               {
-       
-                       if(get_object_type()==AGRAPH)
-                               gtk_entry_set_text((GtkEntry*)glade_xml_get_widget(xml, "txtDefValue"),fl->attributes[0]->defValG);
-                       if(get_object_type()==AGNODE)
-                               gtk_entry_set_text((GtkEntry*)glade_xml_get_widget(xml, "txtDefValue"),fl->attributes[0]->defValN);
-                       if(get_object_type()==AGEDGE)
-                               gtk_entry_set_text((GtkEntry*)glade_xml_get_widget(xml, "txtDefValue"),fl->attributes[0]->defValE);
-                       gtk_entry_set_text((GtkEntry*)glade_xml_get_widget(xml, "txtValue"),agget(view->g[view->activeGraph],prefix));
-                       gtk_widget_set_sensitive(glade_xml_get_widget(xml, "txtDefValue"),0);
-                       gtk_widget_hide(glade_xml_get_widget(xml, "attrAddBtn"));
-                       gtk_widget_show(glade_xml_get_widget(xml, "attrApplyBtn"));
-
-                       break;
+    for (ind = 0; ind < fl->attr_count; ind++) {
+       if (STRCASECMP(prefix, fl->attributes[ind]->name) == 0) {       /*an existing attribute */
+
+           if (get_object_type() == AGRAPH)
+               gtk_entry_set_text((GtkEntry *)
+                                  glade_xml_get_widget(xml,
+                                                       "txtDefValue"),
+                                  fl->attributes[0]->defValG);
+           if (get_object_type() == AGNODE)
+               gtk_entry_set_text((GtkEntry *)
+                                  glade_xml_get_widget(xml,
+                                                       "txtDefValue"),
+                                  fl->attributes[0]->defValN);
+           if (get_object_type() == AGEDGE)
+               gtk_entry_set_text((GtkEntry *)
+                                  glade_xml_get_widget(xml,
+                                                       "txtDefValue"),
+                                  fl->attributes[0]->defValE);
+           gtk_entry_set_text((GtkEntry *)
+                              glade_xml_get_widget(xml, "txtValue"),
+                              agget(view->g[view->activeGraph], prefix));
+           gtk_widget_set_sensitive(glade_xml_get_widget
+                                    (xml, "txtDefValue"), 0);
+           gtk_widget_hide(glade_xml_get_widget(xml, "attrAddBtn"));
+           gtk_widget_show(glade_xml_get_widget(xml, "attrApplyBtn"));
+
+           break;
 
-               }
        }
+    }
 
-       tmp=(((objKind==AGNODE) &&(sel_node))             ||                    ((objKind==AGEDGE) &&(sel_edge))                        ||                      ((objKind==AGRAPH) &&(sel_graph)));
-               gtk_widget_set_sensitive(glade_xml_get_widget(xml, "txtValue"),tmp);
+    tmp = (((objKind == AGNODE) && (sel_node))
+          || ((objKind == AGEDGE) && (sel_edge)) || ((objKind == AGRAPH)
+                                                     && (sel_graph)));
+    gtk_widget_set_sensitive(glade_xml_get_widget(xml, "txtValue"), tmp);
 }
+
 /*asttribute text changed call back*/
 
 _BB void on_txtAttr_changed(GtkWidget * widget, gpointer user_data)
 {
-//     printf ("attr text has been changed to %s \n",gtk_entry_get_text((GtkEntry*)widget));
-       filter_attributes((char*)gtk_entry_get_text((GtkEntry*)widget),view->Topview);
+//      printf ("attr text has been changed to %s \n",gtk_entry_get_text((GtkEntry*)widget));
+    filter_attributes((char *) gtk_entry_get_text((GtkEntry *) widget),
+                     view->Topview);
 }
 
-_BB void on_attrApplyBtn_clicked (GtkWidget * widget, gpointer user_data)
+_BB void on_attrApplyBtn_clicked(GtkWidget * widget, gpointer user_data)
 {
-       int ind=0;
-       int cnt=0;
-       char* attr_name;
-       char* value;
-       int prog;
-       topview* t;
-       topview_node* n;
-       topview_edge* e;
-       Agraph_t* g;
-       /*values to be applied to selected objects*/
-       attr_name=(char*)gtk_entry_get_text((GtkEntry*)glade_xml_get_widget(xml, "txtAttr"));
-       value=(char*)gtk_entry_get_text((GtkEntry*)glade_xml_get_widget(xml, "txtValue"));
-       prog=gtk_toggle_button_get_active((GtkToggleButton*)glade_xml_get_widget(xml, "attrProg"));
-       g=view->g[view->activeGraph];
-       t=view->Topview;
-       /*nodes*/
-       for (ind;ind < view->Topview->Nodecount; ind ++)
-       {
-               n=&t->Nodes[ind];
-               if (n->data.Selected)
-               {
-                       cnt++;
-                       if (cnt==1)
-                               agattr(g, AGNODE, attr_name, "");
-                               agset(n->Node,attr_name,value);
-               }
+    int ind = 0;
+    int cnt = 0;
+    char *attr_name;
+    char *value;
+    int prog;
+    topview *t;
+    topview_node *n;
+    topview_edge *e;
+    Agraph_t *g;
+    /*values to be applied to selected objects */
+    attr_name =
+       (char *) gtk_entry_get_text((GtkEntry *)
+                                   glade_xml_get_widget(xml, "txtAttr"));
+    value =
+       (char *) gtk_entry_get_text((GtkEntry *)
+                                   glade_xml_get_widget(xml, "txtValue"));
+    prog =
+       gtk_toggle_button_get_active((GtkToggleButton *)
+                                    glade_xml_get_widget(xml,
+                                                         "attrProg"));
+    g = view->g[view->activeGraph];
+    t = view->Topview;
+    /*nodes */
+    for (ind; ind < view->Topview->Nodecount; ind++) {
+       n = &t->Nodes[ind];
+       if (n->data.Selected) {
+           cnt++;
+           if (cnt == 1)
+               agattr(g, AGNODE, attr_name, "");
+           agset(n->Node, attr_name, value);
        }
-       /*edges*/
-       for (ind;ind < view->Topview->Edgecount; ind ++)
-       {
-               e=&t->Edges[ind];
-               if (e->data.Selected)
-               {
-                       cnt++;
-                       if (cnt==1)
-                               agattr(g, AGEDGE, attr_name, "");
-                               agset(e->Edge,attr_name,value);
-               }
+    }
+    /*edges */
+    for (ind; ind < view->Topview->Edgecount; ind++) {
+       e = &t->Edges[ind];
+       if (e->data.Selected) {
+           cnt++;
+           if (cnt == 1)
+               agattr(g, AGEDGE, attr_name, "");
+           agset(e->Edge, attr_name, value);
        }
+    }
 }
-_BB on_attrRB0_clicked (GtkWidget * widget, gpointer user_data)
+_BB on_attrRB0_clicked(GtkWidget * widget, gpointer user_data)
 {
-       filter_attributes((char*)
-               gtk_entry_get_text((GtkEntry*)glade_xml_get_widget(xml, "txtAttr")),view->Topview);
+    filter_attributes((char *)
+                     gtk_entry_get_text((GtkEntry *)
+                                        glade_xml_get_widget(xml,
+                                                             "txtAttr")),
+                     view->Topview);
 
 }
-_BB void on_attrProg_toggled (GtkWidget * widget, gpointer user_data)
+_BB void on_attrProg_toggled(GtkWidget * widget, gpointer user_data)
 {
-       printf ("%s \n",agget (view->Topview->Nodes[5].Node,"testattr"));
+    printf("%s \n", agget(view->Topview->Nodes[5].Node, "testattr"));
 
 }
 
-_BB void attr_label_motion(GtkWidget * widget,GdkEventMotion * event, gpointer data)
+_BB void attr_label_motion(GtkWidget * widget, GdkEventMotion * event,
+                          gpointer data)
 {
     float x = (float) event->x;
     float y = (float) event->y;
-//     printf ("%f %f \n",x,y);
+//      printf ("%f %f \n",x,y);
 }
-_BB void on_attrAddBtn_clicked (GtkWidget * widget, gpointer user_data)
+_BB void on_attrAddBtn_clicked(GtkWidget * widget, gpointer user_data)
 {
-       int ind=0;
-       int cnt=0;
-       char* attr_name;
-       char* value;
-       char* defValue;
-       static int objKind;
-
-
-       int prog;
-       topview* t;
-       topview_node* n;
-       topview_edge* e;
-       Agraph_t* g;
-       attr_t* attr;
-       objKind=get_object_type();
-
-
-       /*values to be applied to selected objects*/
-       attr_name=(char*)gtk_entry_get_text((GtkEntry*)glade_xml_get_widget(xml, "txtAttr"));
-       value=(char*)gtk_entry_get_text((GtkEntry*)glade_xml_get_widget(xml, "txtValue"));
-       defValue=(char*)gtk_entry_get_text((GtkEntry*)glade_xml_get_widget(xml, "txtDefValue"));
-       prog=gtk_toggle_button_get_active((GtkToggleButton*)glade_xml_get_widget(xml, "attrProg"));
-       g=view->g[view->activeGraph];
-       t=view->Topview;
-       attr=
-       /*try to find first*/
-       attr=binarySearch(t->attributes,attr_name);
-       if(!attr)
-       {
-               attr=new_attr();
-               attr->index=0;
-               attr->name=safestrdup(attr_name);
-               attr->type=attr_alpha;
-               attr->value=safestrdup("");
-               attr->widget=NULL;
-               attr_list_add(t->attributes,attr);
-       }
-       attr->propagate=0;
+    int ind = 0;
+    int cnt = 0;
+    char *attr_name;
+    char *value;
+    char *defValue;
+    static int objKind;
 
-       if (objKind==AGRAPH)
-       {
-               agattr(g, AGRAPH, attr_name,defValue);
-               attr->defValG=safestrdup(defValue);
-               attr->objType[0]=1;
-       }
 
-       /*nodes*/
-       if (objKind==AGNODE)
-       {
-               for (ind;ind < view->Topview->Nodecount; ind ++)
-               {
-                       n=&t->Nodes[ind];
-                       if (n->data.Selected)
-                       {
-                               cnt++;
-                               if (cnt==1)
-                               {
-                                       agattr(g, AGNODE, attr_name,defValue);
-                                       break;
-                               }
-       
-                       }
-               }
-               attr->defValN=safestrdup(defValue);
-               attr->objType[1]=1;
+    int prog;
+    topview *t;
+    topview_node *n;
+    topview_edge *e;
+    Agraph_t *g;
+    attr_t *attr;
+    objKind = get_object_type();
+
+
+    /*values to be applied to selected objects */
+    attr_name =
+       (char *) gtk_entry_get_text((GtkEntry *)
+                                   glade_xml_get_widget(xml, "txtAttr"));
+    value =
+       (char *) gtk_entry_get_text((GtkEntry *)
+                                   glade_xml_get_widget(xml, "txtValue"));
+    defValue =
+       (char *) gtk_entry_get_text((GtkEntry *)
+                                   glade_xml_get_widget(xml,
+                                                        "txtDefValue"));
+    prog =
+       gtk_toggle_button_get_active((GtkToggleButton *)
+                                    glade_xml_get_widget(xml,
+                                                         "attrProg"));
+    g = view->g[view->activeGraph];
+    t = view->Topview;
+    attr =
+       /*try to find first */
+       attr = binarySearch(t->attributes, attr_name);
+    if (!attr) {
+       attr = new_attr();
+       attr->index = 0;
+       attr->name = safestrdup(attr_name);
+       attr->type = attr_alpha;
+       attr->value = safestrdup("");
+       attr->widget = NULL;
+       attr_list_add(t->attributes, attr);
+    }
+    attr->propagate = 0;
 
+    if (objKind == AGRAPH) {
+       agattr(g, AGRAPH, attr_name, defValue);
+       attr->defValG = safestrdup(defValue);
+       attr->objType[0] = 1;
+    }
 
+    /*nodes */
+    if (objKind == AGNODE) {
+       for (ind; ind < view->Topview->Nodecount; ind++) {
+           n = &t->Nodes[ind];
+           if (n->data.Selected) {
+               cnt++;
+               if (cnt == 1) {
+                   agattr(g, AGNODE, attr_name, defValue);
+                   break;
+               }
 
+           }
        }
-       if (objKind==AGEDGE)
-       {
-       
-               cnt=0;
-               /*edges*/
-               for (ind;ind < view->Topview->Edgecount; ind ++)
-               {
-                       e=&t->Edges[ind];
-                       if (e->data.Selected)
-                       {
-                               cnt++;
-                               if (cnt==1)
-                               {
-                                       agattr(g, AGEDGE, attr_name,defValue);
-                                       break;
-                               }
-                       }
-               }
-               attr->defValE=safestrdup(defValue);
-               attr->objType[2]=1;
+       attr->defValN = safestrdup(defValue);
+       attr->objType[1] = 1;
+
+
 
+    }
+    if (objKind == AGEDGE) {
+
+       cnt = 0;
+       /*edges */
+       for (ind; ind < view->Topview->Edgecount; ind++) {
+           e = &t->Edges[ind];
+           if (e->data.Selected) {
+               cnt++;
+               if (cnt == 1) {
+                   agattr(g, AGEDGE, attr_name, defValue);
+                   break;
+               }
+           }
        }
-       filter_attributes(attr_name,view->Topview);
+       attr->defValE = safestrdup(defValue);
+       attr->objType[2] = 1;
+
+    }
+    filter_attributes(attr_name, view->Topview);
 
 
 }
 
-attr_list* load_attr_list(Agraph_t* g)
+attr_list *load_attr_list(Agraph_t * g)
 {
-       attr_t* attr;
-       attr_list* l;
-       FILE *file;
-       Agsym_t* sym;   /*cgraph atttribute*/
+    attr_t *attr;
+    attr_list *l;
+    FILE *file;
+    Agsym_t *sym;              /*cgraph atttribute */
     char line[BUFSIZ];
-       char* smyrna_attrs = smyrnaPath ("attrs.txt");
-       char* a;
-       
-       g=view->g[view->activeGraph];
-       file = fopen(smyrna_attrs, "r");
+    char *smyrna_attrs = smyrnaPath("attrs.txt");
+    char *a;
 
-       l=attr_list_new(NULL,1);
+    g = view->g[view->activeGraph];
+    file = fopen(smyrna_attrs, "r");
 
-    if (file != NULL) 
-       {
-               int i=0;
-               while (fgets(line, BUFSIZ, file) != NULL) 
-               {
-                       int idx=0;
-                       attr=new_attr();
-                       a=strtok(line,",");
-                       attr->index=i;
-                       attr->type=get_attr_data_type(a[0]);
-                       while (a=strtok(NULL,","))
-                       {
-                                       /*C,(0)color, (1)black, (2)EDGE Or NODE Or CLUSTER, (3)ALL_ENGINES*/
-
-                               switch (idx)
-                               {
-                                       case 0: /**/
-                                               attr->name=safestrdup(a);
-                                               break;
-                                       case 1: /**/
-                                               attr->defValG=safestrdup(a);
-                                               attr->defValN=safestrdup(a);
-                                               attr->defValE=safestrdup(a);
-                                               break;
-                                       case 2: /**/
-                                               set_attr_object_type(a,attr->objType);
-                                               break;
-                               }
-                               idx ++;
-                       }
-                       i++;
-                       attr_list_add(l,attr);
+    l = attr_list_new(NULL, 1);
 
+    if (file != NULL) {
+       int i = 0;
+       while (fgets(line, BUFSIZ, file) != NULL) {
+           int idx = 0;
+           attr = new_attr();
+           a = strtok(line, ",");
+           attr->index = i;
+           attr->type = get_attr_data_type(a[0]);
+           while (a = strtok(NULL, ",")) {
+               /*C,(0)color, (1)black, (2)EDGE Or NODE Or CLUSTER, (3)ALL_ENGINES */
+
+               switch (idx) {
+               case 0:
+                   /**/ attr->name = safestrdup(a);
+                   break;
+               case 1:
+                   /**/ attr->defValG = safestrdup(a);
+                   attr->defValN = safestrdup(a);
+                   attr->defValE = safestrdup(a);
+                   break;
+               case 2:
+                   /**/ set_attr_object_type(a, attr->objType);
+                   break;
                }
+               idx++;
+           }
+           i++;
+           attr_list_add(l, attr);
+
        }
-       sym=NULL;
-    while ((sym = agnxtattr(g,AGRAPH, sym)))
-       {
-               if(!binarySearch( l, sym->name))
-               {
-                       attr=new_attr_with_ref(sym);
-                       attr_list_add(l,attr);
+    }
+    sym = NULL;
+    while ((sym = agnxtattr(g, AGRAPH, sym))) {
+       if (!binarySearch(l, sym->name)) {
+           attr = new_attr_with_ref(sym);
+           attr_list_add(l, attr);
 
-               }
        }
-       sym=NULL;
-       while ((sym = agnxtattr(g,AGNODE, sym)))
-       {
-               if(!binarySearch(l, sym->name))
-               {
-                       attr=new_attr_with_ref(sym);
-                       attr_list_add(l,attr);
+    }
+    sym = NULL;
+    while ((sym = agnxtattr(g, AGNODE, sym))) {
+       if (!binarySearch(l, sym->name)) {
+           attr = new_attr_with_ref(sym);
+           attr_list_add(l, attr);
 
-               }
        }
-       sym=NULL;
-       while ((sym = agnxtattr(g,AGEDGE, sym)))
-       {
-               if(!binarySearch(l, sym->name))
-               {
-                       attr=new_attr_with_ref(sym);
-                       attr_list_add(l,attr);
-               }
+    }
+    sym = NULL;
+    while ((sym = agnxtattr(g, AGEDGE, sym))) {
+       if (!binarySearch(l, sym->name)) {
+           attr = new_attr_with_ref(sym);
+           attr_list_add(l, attr);
        }
+    }
 
-       print_attr_list(l);
-       return l;
+    print_attr_list(l);
+    return l;
 }
 
-/**/
-static void set_header_text()
+ /**/ static void set_header_text()
 {
-       int nodeCnt;
-       int edgeCnt;
-       static char buf[512];
-       int ind=0;
+    int nodeCnt;
+    int edgeCnt;
+    static char buf[512];
+    int ind = 0;
 
-       topview* t;
-       topview_node* n;
-       topview_edge* e;
-       
+    topview *t;
+    topview_node *n;
+    topview_edge *e;
 
-       
-       nodeCnt=0;
-       edgeCnt=0;
-       t=view->Topview;
 
 
-       for (ind;ind < view->Topview->Nodecount; ind ++)
-       {
-               n=&t->Nodes[ind];
-               if (n->data.Selected)
-               {
-                       nodeCnt++;
-               }
+    nodeCnt = 0;
+    edgeCnt = 0;
+    t = view->Topview;
+
+
+    for (ind; ind < view->Topview->Nodecount; ind++) {
+       n = &t->Nodes[ind];
+       if (n->data.Selected) {
+           nodeCnt++;
        }
-       for (ind;ind < view->Topview->Edgecount; ind ++)
-       {
-               e=&t->Edges[ind];
-               if (e->data.Selected)
-               {
-                       edgeCnt++;
-               }
+    }
+    for (ind; ind < view->Topview->Edgecount; ind++) {
+       e = &t->Edges[ind];
+       if (e->data.Selected) {
+           edgeCnt++;
        }
-               sel_node=nodeCnt;
-               sel_edge=edgeCnt;
-               sel_graph=1;
-       
-       sprintf(buf,"%d Nodes and %d edges selected",nodeCnt,edgeCnt);
-       gtk_label_set_text((GtkLabel*)glade_xml_get_widget(xml, "label124"),buf);
-       gtk_entry_set_text((GtkEntry*)glade_xml_get_widget(xml, "txtAttr"),"");
+    }
+    sel_node = nodeCnt;
+    sel_edge = edgeCnt;
+    sel_graph = 1;
+
+    sprintf(buf, "%d Nodes and %d edges selected", nodeCnt, edgeCnt);
+    gtk_label_set_text((GtkLabel *) glade_xml_get_widget(xml, "label124"),
+                      buf);
+    gtk_entry_set_text((GtkEntry *) glade_xml_get_widget(xml, "txtAttr"),
+                      "");
 
 
 }
 
-void showAttrsWidget(topview* t)
+void showAttrsWidget(topview * t)
 {
     gtk_widget_hide(glade_xml_get_widget(xml, "dlgSettings"));
     gtk_widget_show(glade_xml_get_widget(xml, "dlgSettings"));
-       gtk_notebook_set_current_page (
-               (GtkNotebook*)glade_xml_get_widget(xml, "notebook3"),ATTR_NOTEBOOK_IDX);
-       set_header_text();
-       filter_attributes("",view->Topview);
+    gtk_notebook_set_current_page((GtkNotebook *)
+                                 glade_xml_get_widget(xml, "notebook3"),
+                                 ATTR_NOTEBOOK_IDX);
+    set_header_text();
+    filter_attributes("", view->Topview);
 
 
 }
@@ -913,7 +924,7 @@ void load_graph_properties(Agraph_t * graph)
                       GD_GraphFileName(graph));
     gtk_combo_box_set_active((GtkComboBox *)
                             glade_xml_get_widget(xml, "cbLayout"),
-                           GD_Engine(graph));
+                            GD_Engine(graph));
     gtk_toggle_button_set_active((GtkToggleButton *)
                                 glade_xml_get_widget(xml, "chkVisible"),
                                 GD_AlwaysShow(graph));
@@ -931,18 +942,19 @@ int update_graph_properties(Agraph_t * graph)     //updates graph from gui
     int respond = 0;
     int id = 0;
     //check the graph name  should not be duplicated graph names
-    for (id = 0; id < view->graphCount; id++) 
-       {
-               if (graph != view->g[id]) 
-               {
-                       if (STRCASECMP(gtk_entry_get_text ((GtkEntry *)glade_xml_get_widget(xml, "entryGraphName")),
-                GD_GraphName(view->g[id])) ==
-                               0) {
-                                       Dlg = (GtkMessageDialog *) gtk_message_dialog_new(NULL,
-                                                         GTK_DIALOG_MODAL,
-                                                                 GTK_MESSAGE_WARNING,
-                                                                 GTK_BUTTONS_OK,
-                                                                 "There is another graph with this name!");
+    for (id = 0; id < view->graphCount; id++) {
+       if (graph != view->g[id]) {
+           if (STRCASECMP
+               (gtk_entry_get_text
+                ((GtkEntry *)
+                 glade_xml_get_widget(xml, "entryGraphName")),
+                GD_GraphName(view->g[id])) == 0) {
+               Dlg =
+                   (GtkMessageDialog *) gtk_message_dialog_new(NULL,
+                                                               GTK_DIALOG_MODAL,
+                                                               GTK_MESSAGE_WARNING,
+                                                               GTK_BUTTONS_OK,
+                                                               "There is another graph with this name!");
                respond = gtk_dialog_run((GtkDialog *) Dlg);
                gtk_object_destroy((GtkObject *) Dlg);
                return 0;
@@ -959,11 +971,10 @@ int update_graph_properties(Agraph_t * graph)     //updates graph from gui
         GD_GraphFileName(graph)) != 0) {
 
 
-       if ((file =
-            fopen(gtk_entry_get_text
-                  ((GtkEntry *)
-                   glade_xml_get_widget(xml, "entryGraphFileName")),
-                  "r"))) {
+       if ((file = fopen(gtk_entry_get_text((GtkEntry *)
+                                            glade_xml_get_widget(xml,
+                                                                 "entryGraphFileName")),
+                         "r"))) {
            fclose(file);
            Dlg = (GtkMessageDialog *) gtk_message_dialog_new(NULL,
                                                              GTK_DIALOG_MODAL,
@@ -977,11 +988,10 @@ int update_graph_properties(Agraph_t * graph)     //updates graph from gui
                return 0;
        }
        //now check if filename is legal, try to open it to write
-       if ((file =
-            fopen(gtk_entry_get_text
-                  ((GtkEntry *)
-                   glade_xml_get_widget(xml, "entryGraphFileName")),
-                  "w")))
+       if ((file = fopen(gtk_entry_get_text((GtkEntry *)
+                                            glade_xml_get_widget(xml,
+                                                                 "entryGraphFileName")),
+                         "w")))
            fclose(file);
        else {
            Dlg = (GtkMessageDialog *) gtk_message_dialog_new(NULL,
@@ -999,35 +1009,33 @@ int update_graph_properties(Agraph_t * graph)    //updates graph from gui
 
     }
 
-
     //if it comes so far graph deserves new values
 
-    GD_GraphName(graph) =
-       (char *) gtk_entry_get_text((GtkEntry *)
-                                   glade_xml_get_widget(xml,
-                                                        "entryGraphName"));
-    GD_GraphFileName(graph) =
-       (char *) gtk_entry_get_text((GtkEntry *)
-                                   glade_xml_get_widget(xml,
-                                                        "entryGraphFileName"));
-
-    GD_AlwaysShow(graph) =
-       gtk_toggle_button_get_active((GtkToggleButton *)
-                                    glade_xml_get_widget(xml,
-                                                         "chkVisible"));
-    GD_Locked(graph) =
-       gtk_toggle_button_get_active((GtkToggleButton *)
-                                    glade_xml_get_widget(xml,
-                                                         "chkLocked"));
-    GD_TopView(graph) =
-       gtk_toggle_button_get_active((GtkToggleButton *)
-                                    glade_xml_get_widget(xml,
-                                                         "chkTopView"));
+    GD_GraphName(graph) = (char *) gtk_entry_get_text((GtkEntry *)
+                                                     glade_xml_get_widget
+                                                     (xml,
+                                                      "entryGraphName"));
+    GD_GraphFileName(graph) = (char *) gtk_entry_get_text((GtkEntry *)
+                                                         glade_xml_get_widget
+                                                         (xml,
+                                                          "entryGraphFileName"));
+
+    GD_AlwaysShow(graph) = gtk_toggle_button_get_active((GtkToggleButton *)
+                                                       glade_xml_get_widget
+                                                       (xml,
+                                                        "chkVisible"));
+    GD_Locked(graph) = gtk_toggle_button_get_active((GtkToggleButton *)
+                                                   glade_xml_get_widget
+                                                   (xml, "chkLocked"));
+    GD_TopView(graph) = gtk_toggle_button_get_active((GtkToggleButton *)
+                                                    glade_xml_get_widget
+                                                    (xml, "chkTopView"));
 
 
     //check if the engine has been changed, if so do new layout
     if (GD_Engine(graph) != gtk_combo_box_get_active((GtkComboBox *)
-                                glade_xml_get_widget(xml, "cbLayout"))) {
+                                                    glade_xml_get_widget
+                                                    (xml, "cbLayout"))) {
        Dlg =
            (GtkMessageDialog *) gtk_message_dialog_new(NULL,
                                                        GTK_DIALOG_MODAL,
@@ -1036,10 +1044,10 @@ int update_graph_properties(Agraph_t * graph)   //updates graph from gui
                                                        "You have changed the layout of the graph,this will change the graph layout\n all your position changes will be lost\n Are you sure?");
        respond = gtk_dialog_run((GtkDialog *) Dlg);
        if (respond == GTK_RESPONSE_YES)
-           do_graph_layout(graph,
-                           gtk_combo_box_get_active((GtkComboBox *)
-                                                    glade_xml_get_widget
-                                                    (xml, "cbLayout")),
+           do_graph_layout(graph, gtk_combo_box_get_active((GtkComboBox *)
+                                                           glade_xml_get_widget
+                                                           (xml,
+                                                            "cbLayout")),
                            0);
        gtk_object_destroy((GtkObject *) Dlg);
     }
@@ -1073,194 +1081,245 @@ int load_object_properties(gve_element typeIndex, Agraph_t * g)       //load  from obj
     //according to object type (typeIndex) set the reference object
     switch (typeIndex)         //typeindex 0 means new object
     {
-               case GVE_CLUSTER:                       //graph  sub graph (cluster)
-                       obj = GD_selectedGraphs(g)[0];
+    case GVE_CLUSTER:          //graph  sub graph (cluster)
+       obj = GD_selectedGraphs(g)[0];
+       break;
+    case GVE_NODE:             //Node
+       obj = GD_selectedNodes(g)[0];
+       break;
+    case GVE_EDGE:             //Edge
+       obj = GD_selectedEdges(g)[0];
+       break;
+    default:
+       break;
+    }
+    for (widgetcounter = 0; widgetcounter < MAXIMUM_WIDGET_COUNT;
+        widgetcounter++) {
+       //create the labels and widget here
+       attr[widgetcounter].ComboValuesCount = 0;
+       attr[widgetcounter].ComboValues = '\0';
+
+       if (!AttrWidgets[widgetcounter]) {
+           AttrLabels[widgetcounter] =
+               gtk_label_new(attr[widgetcounter].Name);
+           switch (attr[widgetcounter].Type) {
+           case 'F':           //float
+               AttrWidgets[widgetcounter] =
+                   gtk_spin_button_new_with_range(0, 100, 0.001);
+               g_signal_connect((gpointer) AttrWidgets[widgetcounter],
+                                "value-changed",
+                                G_CALLBACK(attr_widgets_modifiedSlot),
+                                (gpointer) widgetcounter);
+
                break;
-               case GVE_NODE:                  //Node
-                       obj = GD_selectedNodes(g)[0];
+           case 'C':           //color box
+               AttrWidgets[widgetcounter] = gtk_color_button_new();
+               gtk_widget_set_size_request(AttrWidgets[widgetcounter], 50,
+                                           23);
+               g_signal_connect((gpointer) AttrWidgets[widgetcounter],
+                                "color-set",
+                                G_CALLBACK(attr_widgets_modifiedSlot),
+                                (gpointer) widgetcounter);
+
                break;
-               case GVE_EDGE:                  //Edge
-                       obj = GD_selectedEdges(g)[0];
+           default:            //alphanumreric         GTK Entry
+               AttrWidgets[widgetcounter] = gtk_entry_new();
+               gtk_widget_set_size_request(AttrWidgets[widgetcounter],
+                                           130, 23);
+               g_signal_connect((gpointer) AttrWidgets[widgetcounter],
+                                "changed",
+                                G_CALLBACK(attr_widgets_modifiedSlot),
+                                (gpointer) widgetcounter);
                break;
-               default :
+           }
+           attr[widgetcounter].attrWidget = AttrWidgets[widgetcounter];
+       }
+       //locate widget on the GtkLayout* layout
+       if (attr[widgetcounter].ApplyTo[typeIndex] == 1) {
+           gtk_layout_put(layout, AttrWidgets[widgetcounter], X, Y);
+           gtk_layout_put(layout, AttrLabels[widgetcounter], X - 80, Y);
+           gtk_widget_show(AttrWidgets[widgetcounter]);
+           gtk_widget_show(AttrLabels[widgetcounter]);
+           Y = Y + Yinc;
+           switch (attr[widgetcounter].Type) {
+           case 'F':
+               if (agget(obj, attr[widgetcounter].Name))
+                   gtk_spin_button_set_value((GtkSpinButton *)
+                                             AttrWidgets[widgetcounter],
+                                             atof(agget
+                                                  (obj,
+                                                   attr[widgetcounter].
+                                                   Name)));
+               else
+                   gtk_spin_button_set_value((GtkSpinButton *)
+                                             AttrWidgets[widgetcounter],
+                                             atof(attr[widgetcounter].
+                                                  Default));
                break;
-    }
-    for (widgetcounter = 0; widgetcounter < MAXIMUM_WIDGET_COUNT;
-        widgetcounter++)
-       {
-       //create the labels and widget here
-               attr[widgetcounter].ComboValuesCount = 0;
-               attr[widgetcounter].ComboValues = '\0';
-
-               if (!AttrWidgets[widgetcounter]) 
-               {
-                       AttrLabels[widgetcounter] =
-                       gtk_label_new(attr[widgetcounter].Name);
-                       switch (attr[widgetcounter].Type) 
-                       {
-                               case 'F':               //float
-                                       AttrWidgets[widgetcounter] =
-                                       gtk_spin_button_new_with_range(0, 100, 0.001);
-                                       g_signal_connect((gpointer) AttrWidgets[widgetcounter],"value-changed", G_CALLBACK(attr_widgets_modifiedSlot),(gpointer) widgetcounter);
-
-                               break;
-                               case 'C':               //color box
-                                       AttrWidgets[widgetcounter] = gtk_color_button_new();
-                                       gtk_widget_set_size_request(AttrWidgets[widgetcounter], 50, 23);
-                                       g_signal_connect((gpointer) AttrWidgets[widgetcounter],"color-set",G_CALLBACK(attr_widgets_modifiedSlot),(gpointer) widgetcounter);
-
-                               break;
-                               default:                //alphanumreric         GTK Entry
-                                       AttrWidgets[widgetcounter] = gtk_entry_new();
-                                       gtk_widget_set_size_request(AttrWidgets[widgetcounter],130, 23);
-                                       g_signal_connect((gpointer) AttrWidgets[widgetcounter], "changed", G_CALLBACK(attr_widgets_modifiedSlot),(gpointer) widgetcounter);
-                               break;
-                   }
-                   attr[widgetcounter].attrWidget = AttrWidgets[widgetcounter];
-               }
-               //locate widget on the GtkLayout* layout
-               if (attr[widgetcounter].ApplyTo[typeIndex] == 1) 
-               {
-                       gtk_layout_put(layout, AttrWidgets[widgetcounter], X, Y);
-                       gtk_layout_put(layout, AttrLabels[widgetcounter], X - 80, Y);
-                       gtk_widget_show(AttrWidgets[widgetcounter]);
-                       gtk_widget_show(AttrLabels[widgetcounter]);
-                       Y = Y + Yinc;
-                       switch (attr[widgetcounter].Type) 
-                       {
-                               case 'F':
-                                       if (agget(obj, attr[widgetcounter].Name))
-                                               gtk_spin_button_set_value((GtkSpinButton *)     AttrWidgets[widgetcounter],atof(agget(obj,attr[widgetcounter].Name)));
-                                       else
-                                           gtk_spin_button_set_value((GtkSpinButton *)AttrWidgets[widgetcounter],atof(attr[widgetcounter].Default));
-                               break;
-                               case 'C':
-                                       if (agget(obj, attr[widgetcounter].Name))
-                                               setGdkColor(&color,     agget(obj, attr[widgetcounter].Name));
-                                       else
-                                               setGdkColor(&color, attr[widgetcounter].Default);
-
-                                       gtk_color_button_set_color((GtkColorButton *)AttrWidgets[widgetcounter],&color);
-                               break;
-                               default:
-                                       if (agget(obj, attr[widgetcounter].Name))
-                                               gtk_entry_set_text((GtkEntry *)AttrWidgets[widgetcounter],agget(obj,attr[widgetcounter].Name));
-                                       else
-                                               gtk_entry_set_text((GtkEntry *)AttrWidgets[widgetcounter],attr[widgetcounter].Default);
-                       }
-                       gtk_widget_show(AttrWidgets[widgetcounter]);
-                       gtk_widget_show(AttrLabels[widgetcounter]);
-               }
-               else 
-               {
-                       gtk_widget_hide(AttrWidgets[widgetcounter]);
-                       gtk_widget_hide(AttrLabels[widgetcounter]);
-               }
-               if (Y > widget_per_page * Yinc) 
-               {
-                       X = 320;
-                       Y = OriginalY;
-               }
-               attr_widgets_modified[widgetcounter] = 0;       //set to unmodified
+           case 'C':
+               if (agget(obj, attr[widgetcounter].Name))
+                   setGdkColor(&color,
+                               agget(obj, attr[widgetcounter].Name));
+               else
+                   setGdkColor(&color, attr[widgetcounter].Default);
+
+               gtk_color_button_set_color((GtkColorButton *)
+                                          AttrWidgets[widgetcounter],
+                                          &color);
+               break;
+           default:
+               if (agget(obj, attr[widgetcounter].Name))
+                   gtk_entry_set_text((GtkEntry *)
+                                      AttrWidgets[widgetcounter],
+                                      agget(obj,
+                                            attr[widgetcounter].Name));
+               else
+                   gtk_entry_set_text((GtkEntry *)
+                                      AttrWidgets[widgetcounter],
+                                      attr[widgetcounter].Default);
+           }
+           gtk_widget_show(AttrWidgets[widgetcounter]);
+           gtk_widget_show(AttrLabels[widgetcounter]);
+       } else {
+           gtk_widget_hide(AttrWidgets[widgetcounter]);
+           gtk_widget_hide(AttrLabels[widgetcounter]);
        }
+       if (Y > widget_per_page * Yinc) {
+           X = 320;
+           Y = OriginalY;
+       }
+       attr_widgets_modified[widgetcounter] = 0;       //set to unmodified
+    }
 
 
     //first part, common attributes
     sprintf(buf, "%i", OD_ID(obj));
-    gtk_entry_set_text((GtkEntry *)glade_xml_get_widget(xml, "objEntryName"),OD_ObjName(obj));
-       gtk_entry_set_text((GtkEntry *)glade_xml_get_widget(xml, "objEntryLabel"),agnameof(obj));
-    gtk_toggle_button_set_active((GtkToggleButton *)glade_xml_get_widget(xml,"frmObjectchkVisible"),OD_Visible(obj));
-    gtk_toggle_button_set_active((GtkToggleButton *)glade_xml_get_widget(xml,"frmObjectchkLocked"),OD_Locked(obj));
-       gtk_toggle_button_set_active((GtkToggleButton *)glade_xml_get_widget(xml,"frmObjectchkHighlighted"),OD_Highlighted(obj));
+    gtk_entry_set_text((GtkEntry *)
+                      glade_xml_get_widget(xml, "objEntryName"),
+                      OD_ObjName(obj));
+    gtk_entry_set_text((GtkEntry *)
+                      glade_xml_get_widget(xml, "objEntryLabel"),
+                      agnameof(obj));
+    gtk_toggle_button_set_active((GtkToggleButton *)
+                                glade_xml_get_widget(xml,
+                                                     "frmObjectchkVisible"),
+                                OD_Visible(obj));
+    gtk_toggle_button_set_active((GtkToggleButton *)
+                                glade_xml_get_widget(xml,
+                                                     "frmObjectchkLocked"),
+                                OD_Locked(obj));
+    gtk_toggle_button_set_active((GtkToggleButton *)
+                                glade_xml_get_widget(xml,
+                                                     "frmObjectchkHighlighted"),
+                                OD_Highlighted(obj));
     //get the position info // show only one item is selected
     if (((GD_selectedNodesCount(g) == 1) && (typeIndex == GVE_NODE))
        || ((GD_selectedEdgesCount(g) == 1) && (typeIndex == GVE_EDGE))
-       || ((GD_selectedGraphsCount(g) == 1) && (typeIndex == GVE_EDGE))) 
-       {
-               sprintf(line, "%s", agget(obj, "pos"));
-               a = (float) atof(strtok(line, ","));
-               b = (float) atof(strtok(NULL, ","));
-               gtk_spin_button_set_value((GtkSpinButton *)glade_xml_get_widget(xml,"frmObjectPosX"),a);
-               gtk_spin_button_set_value((GtkSpinButton *)glade_xml_get_widget(xml,"frmObjectPosY"),b);
-               gtk_spin_button_set_value((GtkSpinButton *)glade_xml_get_widget(xml,"frmObjectPosZ"),0);
-               gtk_widget_show(glade_xml_get_widget(xml, "frmObjectPosX"));
-               gtk_widget_show(glade_xml_get_widget(xml, "frmObjectPosY"));
-               gtk_widget_show(glade_xml_get_widget(xml, "frmObjectPosZ"));
-               gtk_widget_show(glade_xml_get_widget(xml, "frmObjectlabel3"));
-               gtk_label_set_text((GtkLabel *)glade_xml_get_widget(xml, "frmObjectPosLabelX"),"X:");
-    }
-       else 
+       || ((GD_selectedGraphsCount(g) == 1) && (typeIndex == GVE_EDGE))) {
+       sprintf(line, "%s", agget(obj, "pos"));
+       a = (float) atof(strtok(line, ","));
+       b = (float) atof(strtok(NULL, ","));
+       gtk_spin_button_set_value((GtkSpinButton *)
+                                 glade_xml_get_widget(xml,
+                                                      "frmObjectPosX"),
+                                 a);
+       gtk_spin_button_set_value((GtkSpinButton *)
+                                 glade_xml_get_widget(xml,
+                                                      "frmObjectPosY"),
+                                 b);
+       gtk_spin_button_set_value((GtkSpinButton *)
+                                 glade_xml_get_widget(xml,
+                                                      "frmObjectPosZ"),
+                                 0);
+       gtk_widget_show(glade_xml_get_widget(xml, "frmObjectPosX"));
+       gtk_widget_show(glade_xml_get_widget(xml, "frmObjectPosY"));
+       gtk_widget_show(glade_xml_get_widget(xml, "frmObjectPosZ"));
+       gtk_widget_show(glade_xml_get_widget(xml, "frmObjectlabel3"));
+       gtk_label_set_text((GtkLabel *)
+                          glade_xml_get_widget(xml, "frmObjectPosLabelX"),
+                          "X:");
+    } else {
+       gtk_widget_hide(glade_xml_get_widget(xml, "frmObjectPosX"));
+       gtk_widget_hide(glade_xml_get_widget(xml, "frmObjectPosY"));
+       gtk_widget_hide(glade_xml_get_widget(xml, "frmObjectPosZ"));
+       gtk_widget_hide(glade_xml_get_widget(xml, "frmObjectlabel3"));
+       gtk_widget_hide(glade_xml_get_widget(xml, "frmObjectPosLabelY"));
+       gtk_widget_hide(glade_xml_get_widget(xml, "frmObjectPosLabelZ"));
+       switch (typeIndex)      //typeindex 0 means new object
        {
-               gtk_widget_hide(glade_xml_get_widget(xml, "frmObjectPosX"));
-               gtk_widget_hide(glade_xml_get_widget(xml, "frmObjectPosY"));
-               gtk_widget_hide(glade_xml_get_widget(xml, "frmObjectPosZ"));
-               gtk_widget_hide(glade_xml_get_widget(xml, "frmObjectlabel3"));
-               gtk_widget_hide(glade_xml_get_widget(xml, "frmObjectPosLabelY"));
-               gtk_widget_hide(glade_xml_get_widget(xml, "frmObjectPosLabelZ"));
-               switch (typeIndex)      //typeindex 0 means new object
-               {
-                       case GVE_CLUSTER:               //graph  sub graph (cluster)
-                               gtk_label_set_text((GtkLabel *)glade_xml_get_widget(xml,"frmObjectPosLabelX"),"Changes that you make will be applied to all selected clusters");
-                       break;
-                       case GVE_NODE:          //Node
-                               gtk_label_set_text((GtkLabel *)glade_xml_get_widget(xml,"frmObjectPosLabelX"),"Changes that you make will be applied to all selected nodes!");
-                   break;
-                       case GVE_EDGE:          //Edge
-                               gtk_label_set_text((GtkLabel *)glade_xml_get_widget(xml,"frmObjectPosLabelX"),"Changes that you make will be applied to all selected edges!");
-                   break;
-                       default :
-                               break;
-               }
+       case GVE_CLUSTER:       //graph  sub graph (cluster)
+           gtk_label_set_text((GtkLabel *)
+                              glade_xml_get_widget(xml,
+                                                   "frmObjectPosLabelX"),
+                              "Changes that you make will be applied to all selected clusters");
+           break;
+       case GVE_NODE:          //Node
+           gtk_label_set_text((GtkLabel *)
+                              glade_xml_get_widget(xml,
+                                                   "frmObjectPosLabelX"),
+                              "Changes that you make will be applied to all selected nodes!");
+           break;
+       case GVE_EDGE:          //Edge
+           gtk_label_set_text((GtkLabel *)
+                              glade_xml_get_widget(xml,
+                                                   "frmObjectPosLabelX"),
+                              "Changes that you make will be applied to all selected edges!");
+           break;
+       default:
+           break;
        }
+    }
     return 1;
 }
 void update_object_properties(int typeIndex, Agraph_t * g)     //updates objects from gui(node ,edge, cluster)
 {
     int ind = 0;
-    for (ind = 0; ind < widgetcounter; ind++) 
-       {
-               //if widget has been changed
-               if (attr_widgets_modified[ind] == 1)
-               {
-                       switch (typeIndex)      //typeindex 0 means new object
-                       {
-                               case GVE_CLUSTER:               //graph  sub graph (cluster)
-                                       change_selected_graph_attributes(g, attr[ind].Name,
-                                                        get_attribute_string_value_from_widget
-                                                        (&attr[ind]));
-                               break;
-                               case GVE_NODE:          //Node
-                                       change_selected_node_attributes(g, attr[ind].Name,
-                                                       get_attribute_string_value_from_widget
-                                                       (&attr[ind]));
-                               break;
-                               case GVE_EDGE:          //Edge
-                                       change_selected_edge_attributes(g, attr[ind].Name,
-                                                               get_attribute_string_value_from_widget
-                                                               (&attr[ind]));
-                               break;
-                       }
-               }
-
+    for (ind = 0; ind < widgetcounter; ind++) {
+       //if widget has been changed
+       if (attr_widgets_modified[ind] == 1) {
+           switch (typeIndex)  //typeindex 0 means new object
+           {
+           case GVE_CLUSTER:   //graph  sub graph (cluster)
+               change_selected_graph_attributes(g, attr[ind].Name,
+                                                get_attribute_string_value_from_widget
+                                                (&attr[ind]));
+               break;
+           case GVE_NODE:      //Node
+               change_selected_node_attributes(g, attr[ind].Name,
+                                               get_attribute_string_value_from_widget
+                                               (&attr[ind]));
+               break;
+           case GVE_EDGE:      //Edge
+               change_selected_edge_attributes(g, attr[ind].Name,
+                                               get_attribute_string_value_from_widget
+                                               (&attr[ind]));
+               break;
+           }
        }
+
+    }
 }
 char *get_attribute_string_value_from_widget(attribute * att)
 {
     GdkColor color;
-    switch (att->Type)
-       {
-           case 'F':
-                       sprintf(guibuffer, "%f",gtk_spin_button_get_value((GtkSpinButton *) att->attrWidget));
-                       return guibuffer;
-               break;
-               case 'C':
-                       gtk_color_button_get_color((GtkColorButton *) att->attrWidget,&color);
-                       sprintf(guibuffer, "#%x%x%x", color.red / 255, color.green / 255,color.blue / 255);
-                       return guibuffer;
-                       break;
-               default:
-                       strcpy(guibuffer,gtk_entry_get_text((GtkEntry *) att->attrWidget));
-                       return guibuffer;
+    switch (att->Type) {
+    case 'F':
+       sprintf(guibuffer, "%f",
+               gtk_spin_button_get_value((GtkSpinButton *) att->
+                                         attrWidget));
+       return guibuffer;
+       break;
+    case 'C':
+       gtk_color_button_get_color((GtkColorButton *) att->attrWidget,
+                                  &color);
+       sprintf(guibuffer, "#%x%x%x", color.red / 255, color.green / 255,
+               color.blue / 255);
+       return guibuffer;
+       break;
+    default:
+       strcpy(guibuffer,
+              gtk_entry_get_text((GtkEntry *) att->attrWidget));
+       return guibuffer;
     }
 }
 void change_selected_graph_attributes(Agraph_t * g, char *attrname,
@@ -1269,9 +1328,8 @@ void change_selected_graph_attributes(Agraph_t * g, char *attrname,
     int ind = 0;
     agattr(g, AGRAPH, attrname, "");
 
-    for (ind = 0; ind < GD_selectedGraphsCount(g); ind++) 
-       {
-               agset(GD_selectedGraphs(g)[ind], attrname, attrvalue);
+    for (ind = 0; ind < GD_selectedGraphsCount(g); ind++) {
+       agset(GD_selectedGraphs(g)[ind], attrname, attrvalue);
     }
 
 
@@ -1282,9 +1340,8 @@ void change_selected_node_attributes(Agraph_t * g, char *attrname,
     int ind = 0;
     agattr(g, AGNODE, attrname, "");
 
-    for (ind = 0; ind < GD_selectedNodesCount(g); ind++) 
-       {
-               agset(GD_selectedNodes(g)[ind], attrname, attrvalue);
+    for (ind = 0; ind < GD_selectedNodesCount(g); ind++) {
+       agset(GD_selectedNodes(g)[ind], attrname, attrvalue);
     }
 }
 void change_selected_edge_attributes(Agraph_t * g, char *attrname,
@@ -1293,9 +1350,8 @@ void change_selected_edge_attributes(Agraph_t * g, char *attrname,
     int ind = 0;
     agattr(g, AGEDGE, attrname, "");
 
-    for (ind = 0; ind < GD_selectedEdgesCount(g); ind++) 
-       {
-               agset(GD_selectedEdges(g)[ind], attrname, attrvalue);
+    for (ind = 0; ind < GD_selectedEdgesCount(g); ind++) {
+       agset(GD_selectedEdges(g)[ind], attrname, attrvalue);
 
     }
 }
@@ -1312,16 +1368,15 @@ void load_attributes()
     char *pch;
     int ind = 0;
     int attrcount = 0;
-    static charsmyrna_attrs;
+    static char *smyrna_attrs;
 
     if (!smyrna_attrs) {
 #if WIN32
        smyrna_attrs = SMYRNA_ATTRS;
 #else
-       smyrna_attrs = smyrnaPath ("attrs.txt");
+       smyrna_attrs = smyrnaPath("attrs.txt");
 #endif
     }
-
     //loads attributes from a text file
     file = fopen(smyrna_attrs, "r");
     if (file != NULL) {
@@ -1382,8 +1437,8 @@ void load_attributes()
                    break;
                default:
                    attr[attrcount].ComboValues =
-                       RALLOC(attr[attrcount].ComboValuesCount, 
-                               attr[attrcount].ComboValues, char*);
+                       RALLOC(attr[attrcount].ComboValuesCount,
+                              attr[attrcount].ComboValues, char *);
                    attr[attrcount].ComboValues[attr[attrcount].
                                                ComboValuesCount] =
                        safestrdup(ss);
@@ -1397,4 +1452,4 @@ void load_attributes()
     }
 }
 
-#endif
\ No newline at end of file
+#endif