Add mouse vertical scrolling.
[familia.git] / src / storage / storage.c
index 272e6af264ce7ca41d34393a1f4b9ac6cc79e005..c54e6a0026a8e0c2feee5d41208e93ca74de1085 100644 (file)
@@ -1,3 +1,4 @@
+#include <stdio.h>
 #include <stdlib.h>
 
 #include "storage.h"
@@ -34,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;
 }
@@ -63,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)
@@ -75,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++;
@@ -141,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++;
@@ -198,3 +201,77 @@ void familia_storage_remove_family_by_id(struct familia_storage * storage, unsig
        }
 }
 
+void familia_storage_dump_all()
+{
+       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) {
+                       unsigned int j;
+
+                       printf("\t Families:\n");
+                       for (j = 0; j < individual->families_no; j++) {
+                               f = individual->families[j];
+                               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");
+                       }
+               }
+
+               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++) {
+               unsigned int j;
+
+               family = storage->families[i];
+
+               printf("Family (%d)\n", family->id);
+               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", i1 ? familia_individual_get_first_name(i1) : "NULL");
+                       }
+               }
+       }
+}