Add mouse vertical scrolling.
[familia.git] / src / storage / storage.c
index 8b00a716308ffc9eceae0c1d8f1b88b785b904de..c54e6a0026a8e0c2feee5d41208e93ca74de1085 100644 (file)
@@ -35,7 +35,7 @@ struct familia_storage * familia_storage_new()
        storage->families = NULL;
        storage->families_no = 0;
 
-       _familia_storage_positions_init();
+/*     _familia_storage_positions_init();*/
 
        return storage;
 }
@@ -64,7 +64,7 @@ void familia_storage_free(struct familia_storage * storage)
                storage->families_no = 0;
        }
 
-       _familia_storage_positions_free();
+/*     _familia_storage_positions_free();*/
 }
 
 void familia_storage_add_individual(struct familia_storage * storage, struct familia_individual * individual)
@@ -76,6 +76,7 @@ void familia_storage_add_individual(struct familia_storage * storage, struct fam
                tmp = realloc(storage->individuals, size * sizeof(struct familia_individual *));
                
                if (tmp) {
+                       individual->id = storage->individuals_no;
                        storage->individuals = tmp;
                        storage->individuals[storage->individuals_no] = individual;
                        storage->individuals_no++;
@@ -142,6 +143,7 @@ void familia_storage_add_family(struct familia_storage * storage, struct familia
                tmp = realloc(storage->families, size * sizeof(struct familia_family *));
                
                if (tmp) {
+                       family->id = storage->families_no;
                        storage->families = tmp;
                        storage->families[storage->families_no] = family;
                        storage->families_no++;
@@ -201,60 +203,74 @@ void familia_storage_remove_family_by_id(struct familia_storage * storage, unsig
 
 void familia_storage_dump_all()
 {
-       int i;
+       unsigned int i;
        struct familia_storage * storage = NULL;
        struct familia_family * family = NULL;
        struct familia_individual * individual = NULL;
+       struct familia_individual * i1 = NULL;
+       struct familia_individual * i2 = NULL;
        
        storage = familia_storage_get_current();
        
        for (i = 0; i < storage->individuals_no; i++) {
+               struct familia_family * f = NULL;
+
                individual = storage->individuals[i];
+
                printf("Individual (%d)\n", individual->id);
                printf("\t First name: %s\n", individual->first_name);
                printf("\t Last name: %s\n", individual->last_name);
+
                if (individual->families_no > 0) {
-                       int j;
-                       struct familia_family * f = NULL;
-                       struct familia_individual * i1 = NULL;
-                       struct familia_individual * i2 = NULL;
+                       unsigned int j;
 
                        printf("\t Families:\n");
                        for (j = 0; j < individual->families_no; j++) {
                                f = individual->families[j];
-                               i1 = familia_family_get_individual(f, Individual1);
-                               i2 = familia_family_get_individual(f, Individual2);
+                               i1 = familia_family_get_parent(f, Individual1);
+                               i2 = familia_family_get_parent(f, Individual2);
                                
-                               printf("\t > %s&%s\n", familia_individual_get_first_name(i1), familia_individual_get_first_name(i2));
+                               printf("\t > %s&%s\n",
+                                       i1 ? familia_individual_get_first_name(i1) : "NULL",
+                                       i2 ? familia_individual_get_first_name(i2) : "NULL");
                        }
-                       printf("\t Parents:\n");
-                       f = familia_individual_get_parents(individual);
-                       i1 = familia_family_get_individual(f, Individual1);
-                       i2 = familia_family_get_individual(f, Individual2);
-                       
-                       printf("\t > %s&%s\n", familia_individual_get_first_name(i1), familia_individual_get_first_name(i2));
+               }
+
+               printf("\t Parents:\n");
+               f = NULL;
+               f = familia_individual_get_parents(individual);
+
+               if (f) {
+                       i1 = familia_family_get_parent(f, Individual1);
+                       i2 = familia_family_get_parent(f, Individual2);
+               
+                       printf("\t > %s&%s\n",
+                               i1 ? familia_individual_get_first_name(i1) : "NULL",
+                               i2 ? familia_individual_get_first_name(i2) : "NULL");
+               }
+               else {
+                       printf("\t (none)\n");
                }
        }
 
 
        for (i = 0; i < storage->families_no; i++) {
-               int j;
-               struct familia_individual * i1 = NULL;
-               struct familia_individual * i2 = NULL;
+               unsigned int j;
 
                family = storage->families[i];
 
                printf("Family (%d)\n", family->id);
-               i1 = familia_family_get_individual(family, Individual1);
-               i2 = familia_family_get_individual(family, Individual2);
-               printf("\t First parent: %s\n", familia_individual_get_first_name(i1));
-               printf("\t Second parent: %s\n", familia_individual_get_first_name(i2));
+               i1 = familia_family_get_parent(family, Individual1);
+               printf("\t First parent: %s\n", i1 ? familia_individual_get_first_name(i1) : "NULL");
+
+               i2 = familia_family_get_parent(family, Individual2);
+               printf("\t Second parent: %s\n", i2 ? familia_individual_get_first_name(i2) : "NULL");
 
                printf("\t Children:\n");
                if (family->children_no > 0) {
                        for (j = 0; j < family->children_no; j++) {
                                i1 = family->children[j];
-                               printf("\t > %s\n", familia_individual_get_first_name(i1));
+                               printf("\t > %s\n", i1 ? familia_individual_get_first_name(i1) : "NULL");
                        }
                }
        }