#include #include #include "tree.h" #include "help.h" using std::cin; using std::cout; int main() { setlocale(LC_ALL, "en_US.UTF-8"); /* Init ncurses */ initscr(); /* Start curses mode */ curs_set(0); /* Hide cursor */ noecho(); cbreak(); /* get input instantly */ keypad(stdscr, true); start_color(); use_default_colors(); /* init_pair(5, COLOR_BLACK, COLOR_BLACK); */ /* bkgd(COLOR_PAIR(5)); */ init_pair(COLOR_MALE, COLOR_BLUE, -1); /* -1 means use default */ init_pair(COLOR_FEMALE, COLOR_RED, -1); init_pair(COLOR_SELECTED, COLOR_YELLOW, -1); wnoutrefresh(stdscr); /* if not present the first real refresh is missed */ Tree test1("Dechkovi"); //addTree Dechkovi addTree Karamanovi load 0 load 1 (to work with these example trees) Tree test2("Karamanovi"); test1.addPerson("Rumen", true, Nobody, Nobody, {1968, 8, 9}); test1.addPerson("Nadejda", false, Nobody, Nobody, {1972, 12, 15}); test1.addRelation(0, Spouse, 1); test1.addPerson("Venelin", true, 0, 1, {1998, 6, 9}); test1.addPerson("Vasil", true, 0, 1, {2001, 1, 16}); /* test1.addRelation(2, Brother, 3); */ /* test1.addPerson("Maria-Veronika", 2009, 9, 3, 1, 0, 1); */ /* test1.addRelation(2, Brother, 4); */ /* test1.addRelation(3, Brother, 4); */ test2.addPerson("Vasil Dimitrov", true, Nobody, Nobody, {1941, 5, 18}); test2.addPerson("Maria", false); test2.addRelation(0, Spouse, 1); test2.addPerson("Dimitar", true, 0, 1); test2.addPerson("Nadejda", false, 0, 1, {1972, 12, 15}); /* test2.addRelation(2, Brother, 3); */ test2.addPerson("Branimira", false); test2.addRelation(2, Spouse, 4); test2.addPerson("Ioan", true, 2, 4); test2.addPerson("Rumiana", false, 2, 4); /* test2.addRelation(5, Brother, 6); */ test1.display(); test2.display(); (test2 + test1).display(); /* test2 += test1; */ /* test2.display(); */ /* test1.display(); */ /* test1.saveTree(); */ /* test2.saveTree(); */ Tree firstTree("firstTree"); firstTree.addPerson("Адам", true, Nobody, Nobody, {0, 1, 6}); firstTree.addPerson("Ева", false, Nobody, Nobody, {0, 1, 6}); firstTree.addRelation(0, Spouse, 1); firstTree.addPerson("Кайн", true, 0, 1); firstTree.addPerson("Авел", true, 0, 1); firstTree.addRelation(2, Sibling, 3); firstTree.addPerson("Сит", true, 0, 1, 230); firstTree.addRelation(2, Sibling, 4); firstTree.addPerson("Енос", true, 4, Nobody, 435); firstTree.addPerson("Каинан", true, 5 , Nobody, 605); firstTree.addPerson("Малелеил", true, 6, Nobody, 605); firstTree.addPerson("Енох", true, 3 , Nobody); firstTree.addPerson("Гаидад", true, 8 , Nobody); firstTree.addPerson("Малелеил", true, 9, Nobody); /* firstTree.print(); */ firstTree.display(); /* firstTree.saveTree(); */ /* firstTree.printRel(3); */ firstTree.printOldestAncestors(3); /* ====================================================== */ /* std::vector trees; */ /* bool quit = false; */ /* char input[128]; */ /* short i; //Number of the entered command */ /* const short numCom = 24; */ /* const char* const commandList[] = */ /* { */ /* "quit", //0 */ /* "rename", //1 */ /* "load", //2 */ /* "save", //3 */ /* "addPerson", //4 */ /* "addPersonWP", //5 Adds a person and connects him to his parents, by their number */ /* "addRelation", //6 Adds a relation between two people input by name */ /* "addRelationID", //7 -||- by number */ /* "findID", //8 */ /* "equate", //9 Enter the number of two trees, the second becomes equal to the first */ /* "combine", //10 */ /* "subtract", //11 */ /* "removePerson", //12 */ /* "removePersonID", //13 */ /* "removeRelation", //14 */ /* "removeRelationID", //15 */ /* "addTree", //16 */ /* "prtRelatives", //17 */ /* "prtMember", //18 */ /* "prtAncestors", //19 */ /* "chooseTree", //20 */ /* "prtCommonAncestor", //21 */ /* "prtOldestAncestors",//22 */ /* "prtTree" //23 */ /* }; */ /* unsigned curTree = 0, //Currently selected tree ID */ /* id, secondId; // Person IDs */ /* Tree* newTree; */ /* char name[128], secondName[128]; */ /* U8 day, month; //TODO add h m */ /* U16 year; */ /* bool sex; */ /* unsigned father, mother; // IDs */ /* do */ /* { */ /* clear(); */ /* printw("Enter a command\n"); */ /* refresh(); */ /* // getmaxyx(stdscr,row,col); /\* get the number of rows and columns *\/ */ /* std::cin >> input; */ /* for (i = 0; i < numCom; ++i) */ /* { */ /* if (strComp(input, commandList[i])) */ /* break; */ /* } */ /* switch (i) */ /* { */ /* default: */ /* std::cout << "Unknown command, try again\n\n"; */ /* break; */ /* case 0: //quit */ /* quit = 1; */ /* break; */ /* case 1: //rename */ /* std::cout << "Enter new name\n\n"; */ /* std::cin >> name; */ /* trees[curTree].rename(name); */ /* break; */ /* case 2: //load */ /* cin >> input; */ /* trees.push(Tree(input)); */ /* if (!trees[trees.gNum() - 1].loadTree()) */ /* std::cout << "File doesnt exist or is empty.\n\n"; */ /* break; */ /* case 3: //save */ /* trees[curTree].saveTree(); */ /* break; */ /* case 4: //addPerson */ /* std::cin >> name >> day >> month >> year >> sex; */ /* trees[curTree].addPerson(name, sex, Nobody, Nobody, EventTime(year, month, day)); */ /* break; */ /* case 5: //addPersonWP */ /* std::cin >> name >> day >> month >> year >> sex >> father >> mother; */ /* trees[curTree].addPerson(name, sex, father, mother, EventTime(year, month, day)); */ /* break; */ /* case 6: //addRelation */ /* std::cin >> name >> input >> secondName; */ /* while (!strToRel(input)) */ /* { */ /* std::cout << "Invalid Relation, try again!\n"; */ /* std::cin >> input; */ /* } */ /* if(!trees[curTree].addRelation(name, strToRel(input), secondName)) */ /* std::cout << "Failure! One or both of the relatives don't exist.\n\n"; */ /* break; */ /* case 7: //addRelationID */ /* std::cin >> id >> input >> secondId; */ /* while (!strToRel(input)) */ /* { */ /* std::cout << "Invalid Relation, try again!\n"; */ /* std::cin >> input; */ /* } */ /* if(trees[curTree].addRelation(id, strToRel(input), secondId)) */ /* std::cout << "Failure! One or both of the relatives don't exist.\n\n"; */ /* break; */ /* case 8: //findID */ /* std::cin >> name; */ /* id = trees[curTree].findId(name); */ /* if (id == Nobody) */ /* std::cout << "No such person in tree " << curTree <<"\n\n"; */ /* else */ /* std::cout << id << "\n\n"; */ /* break; */ /* case 9: //equate */ /* std::cin >> id >> secondId; */ /* trees[id] = trees[secondId]; */ /* break; */ /* case 10: //combine */ /* std::cin >> id >> secondId; */ /* trees[id] += trees[secondId]; */ /* break; */ /* case 11: //subtract */ /* std::cin >> id >> secondId; */ /* trees[id] -= trees[secondId]; */ /* break; */ /* case 12: //removePerson */ /* std::cin >> name; */ /* if (trees[curTree].findId(name) != Nobody) */ /* trees[curTree].removePerson(name); */ /* else */ /* std::cout << "No such member!\n\n"; */ /* break; */ /* case 13: //removePersonID */ /* std::cin >> id; */ /* if (trees[curTree].gNumP() > id) */ /* trees[curTree].removePerson(id); */ /* else */ /* std::cout << "No such member!\n\n"; */ /* break; */ /* case 14: //removeRelation */ /* std::cin >> name >> secondName; */ /* if (trees[curTree].gNumP() > trees[curTree].findId(name) && trees[curTree].gNumP() > trees[curTree].findId(secondName)) */ /* trees[curTree].removeRelation(name, secondName); */ /* else */ /* std::cout << "No such member!\n\n"; */ /* break; */ /* case 15: //removeRelationID */ /* std::cin >> id >> secondId; */ /* if (trees[curTree].gNumP() > id && trees[curTree].gNumP() > secondId) */ /* trees[curTree].removeRelation(id, secondId); */ /* else */ /* std::cout << "No such member\n\n"; */ /* break; */ /* case 16: //addTree */ /* std::cin >> name; */ /* newTree = new Tree(name); */ /* trees.push(*newTree); */ /* delete newTree; */ /* break; */ /* case 17: //printRelatives */ /* std::cin >> id; */ /* if (id < trees[curTree].gNumP()) */ /* trees[curTree].printRel(id); */ /* else */ /* std::cout << "No such member\n\n"; */ /* break; */ /* case 18: //printMember */ /* std::cin >> id; */ /* if (id < trees[curTree].gNumP()) */ /* trees[curTree].printMember(id); */ /* else */ /* std::cout << "No such member\n\n"; */ /* break; */ /* case 19: //printAncestors */ /* std::cin >> id; */ /* /\*if (id < trees[curTree].gNumP()) */ /* trees[curTree].printAncestors(id); */ /* else */ /* std::cout << "No such member\n\n";*\/ */ /* break; */ /* case 20: //chooseTree */ /* std::cout << "Enter tree ID\n\n"; */ /* std::cin >> id; */ /* if (id < trees.gNum()) */ /* curTree = id; */ /* else */ /* std::cout << "No such tree\n\n"; */ /* break; */ /* case 21: //prtCommonAncestor */ /* std::cin >> id >> secondId; */ /* if (id < trees[curTree].gNumP() || secondId < trees[curTree].gNumP()) */ /* trees[curTree].printMember(trees[curTree].findCommonAncestor(id, secondId)); */ /* else */ /* std::cout << "No such member\n\n"; */ /* break; */ /* case 22: //prtOldestAncestors */ /* std::cin >> id; */ /* if (id < trees[curTree].gNumP()) */ /* trees[curTree].printOldestAncestors(id); */ /* else */ /* std::cout << "No such member\n\n"; */ /* break; */ /* case 23: */ /* trees[curTree].print(); */ /* break; */ /* } */ /* } while (!quit); */ endwin(); /* stop ncursers */ return 0; }