void renderMenu(struct Menu *mnu) { // Only render 15 elems max so we make a sub array of printable entries struct MenuEntry* entries[15] = {0}; // find first node to print struct ListNode* firstNode = mnu->menuEntries->rootNode; struct ListNode* node = NULL; int offset = 0, cpt; // to detect current pos if( mnu->currentPos >= mnu->_maxEntries ) { int toRemove = mnu->_maxEntries - 1; firstNode = lstGetElement(mnu->menuEntries, mnu->currentPos - toRemove); offset = mnu->currentPos - toRemove; } node = firstNode; // collect node entries to print cpt = 0; while( node != NULL && cpt < mnu->_maxEntries) { entries[cpt] = (struct MenuEntry*) node->data; node = node->next; ++cpt; } // Print texts uiClear(BODY); uiClear(FOOTER); uiPrintLine(FOOTER, PA_NONE, "-"); uiPrint(FOOTER,PA_NONE, "ARROW: Deplacer | ENTER: Valider | F1: aide | ESC: Quitter\n"); uiPrintLine(FOOTER, PA_NONE, "-"); uiPrint(BODY, PA_NONE, mnu->description); for(cpt = 0; cpt < mnu->_maxEntries; ++cpt) { struct MenuEntry* entry = entries[cpt]; if( entry != NULL ) { int printAttribs = mnu->printAttribs; if( cpt + offset == mnu->currentPos ) printAttribs |= PA_RCOLOR; if( mnu->margin != 0 ) uiMoveCursor(BODY, mnu->margin); uiPrint(BODY,printAttribs, entry->text); uiPrint(BODY,PA_NONE, "\n"); } } }
void uiPrintLine(Uint8 zone, Uint8 printAttribs, char* lnChar) { char line[MAX_WIDTH + 1] = {0}; int cpt; for(cpt = 0; cpt < MAX_WIDTH; ++cpt) strcat(line, lnChar); uiPrint(zone, printAttribs, line); }
void uiPause( char *msg) { uiClear(FOOTER); uiPrintLine(FOOTER, PA_NONE, "-"); uiPrint(FOOTER, PA_NONE, msg); uiPrintLine(FOOTER, PA_NONE, "-"); raw(); wgetch(gFooterWin); uiClear(FOOTER); }
void printLists() { const int nbLists = 6; struct List* lists[6] = {gAbsences, gAppointments, gConsultations, gDoctors, gPatients, gRooms}; char* labels[6] = {"Liste des absences\n", "Liste des rdv\n", "Liste des consultations\n", "Liste des docteurs\n", "Liste des patients\n", "Liste des salles\n"}; int cpt; for(cpt = 0; cpt < nbLists; ++cpt) { uiPrint(HEADER, PA_CENTER, labels[cpt]); uiPrint(HEADER, PA_CENTER, "============================\n"); lstPrint(lists[cpt]); uiPause("Tapez ENTER pour voir la liste suivante...\n"); uiClear(ALL); } }
void redrawCheatMenu() { cheatsPerPage = uiGetHeight() - 2; int numCheats = cheatEngine->getNumCheats(); int numPages = (numCheats - 1) / cheatsPerPage + 1; int page = cheatMenuSelection / cheatsPerPage; uiClear(); uiPrint(" Cheat Menu "); uiPrint("%d/%d\n\n", page + 1, numPages); for(int i = page * cheatsPerPage; i < numCheats && i < (page + 1) * cheatsPerPage; i++) { if(cheatMenuSelection == i) { uiSetLineHighlighted(true); } uiPrint("%s", cheatEngine->cheats[i].name); for(unsigned int j = 0; j < 25 - strlen(cheatEngine->cheats[i].name); j++) { uiPrint(" "); } if(cheatEngine->isCheatEnabled(i)) { if(cheatMenuSelection == i) { uiSetTextColor(TEXT_COLOR_YELLOW); uiPrint("* "); uiSetTextColor(TEXT_COLOR_GREEN); uiPrint("On"); uiSetTextColor(TEXT_COLOR_YELLOW); uiPrint(" *"); uiSetTextColor(TEXT_COLOR_NONE); } else { uiSetTextColor(TEXT_COLOR_GREEN); uiPrint(" On "); uiSetTextColor(TEXT_COLOR_NONE); } } else { if(cheatMenuSelection == i) { uiSetTextColor(TEXT_COLOR_YELLOW); uiPrint("* "); uiSetTextColor(TEXT_COLOR_RED); uiPrint("Off"); uiSetTextColor(TEXT_COLOR_YELLOW); uiPrint(" *"); uiSetTextColor(TEXT_COLOR_NONE); } else { uiSetTextColor(TEXT_COLOR_RED); uiPrint(" Off "); uiSetTextColor(TEXT_COLOR_NONE); } } uiPrint("\n"); uiSetLineHighlighted(false); } uiFlush(); }
void printPatient(void *data) { struct Patient* p = (struct Patient*) data; uiPrint(BODY, PA_CENTER, "{ %05d, %s, %s, %s }", p->id, p->name, p->surname, p->tel); }