void RemoveNoteCurrPos(struct Tracker_Windows *window){ struct WBlocks *wblock = window->wblock; struct WTracks *wtrack = wblock->wtrack; struct Tracks *track = wtrack->track; struct LocalZooms *realline = wblock->reallines[wblock->curr_realline]; int curr_realline = wblock->curr_realline; const Trs &trs = TRS_get(wblock, wtrack, curr_realline); ADD_UNDO(Notes_CurrPos(window)); if (trs.size()==0) { InsertStop(window,wblock,wtrack,&realline->l.p); maybe_scroll_down(window); return; } const TrackRealline2 &tr2 = trs[0]; if (tr2.pitch != NULL) { DeletePitch(track, tr2.note, tr2.pitch); if (trs.size()==1) maybe_scroll_down(window); return; } if (tr2.is_end_pitch) { struct Pitches *pitch = (struct Pitches*)ListLast3(&tr2.note->pitches->l); if (pitch!=NULL) tr2.note->pitch_end = pitch->note; else tr2.note->pitch_end = 0; return; } if (tr2.note != NULL) { PLAYER_lock();{ ListRemoveElement3(&track->notes,&tr2.note->l); LengthenNotesTo(wblock->block,track,&realline->l.p); }PLAYER_unlock(); SetNotePolyphonyAttributes(wtrack->track); ValidateCursorPos(window); if (trs.size()==1) maybe_scroll_down(window); return; } const struct Stops *stop = tr2.stop; PLAYER_lock();{ ListRemoveElement3(&track->stops, &stop->l); LengthenNotesTo(wblock->block,track,&realline->l.p); }PLAYER_unlock(); if (trs.size()==1) maybe_scroll_down(window); }
int main(int argc, char *argv[]){ if (argc < 2){ puts("Usage: rp [FILE]"); return -1; } char *filename = argv[1]; // createLists(filename); char buffer[128]; FILE *buschart = fopen(filename, "r"); Stop Stops=NULL; Edge Edges =NULL; char newstartname[128], newstopname[128]; printf("Loading database: %s\n",filename); while(!(feof(buschart))){ readline(buffer, 128, buschart); if(strcmp(buffer,"")!=0){ Stop newStop=malloc(sizeof(struct stop)); Edge newEdge=malloc(sizeof(struct edge)); char *copy = malloc(strlen(buffer)+1); char *loc; //line strcpy(copy,buffer); strtok (buffer,","); char *line = malloc(strlen(buffer)+1); strcpy(line,buffer); loc = strchr(copy,','); strcpy(copy,loc+2); newEdge->line=malloc(strlen(buffer)+1); strcpy(newEdge->line,line); //start strcpy(buffer,copy); strtok (buffer,","); char *start = malloc(strlen(buffer)+1); strcpy(start,buffer); loc = strchr(copy,','); strcpy(copy,loc+2); newStop->name = malloc(strlen(buffer)+1); newEdge->start = malloc(strlen(buffer)+1); strcpy(newstartname, start); newEdge->start->name=newstartname; //stop strcpy(buffer,copy); strtok (buffer,","); char *stop = malloc(strlen(buffer)+1); strcpy(stop,buffer); loc = strchr(copy,','); strcpy(copy,loc+2); strcpy(newStop->name, buffer); newEdge->stop = malloc(strlen(buffer)+1); strcpy(newstopname, stop); newEdge->stop->name=newstopname; //time char *time = malloc(strlen(buffer)+1); strcpy(time,copy); newEdge->time=malloc(strlen(buffer)+1); strcpy(newEdge->time,time); strcpy(buffer,""); newEdge->next=NULL; newEdge->start->route=NULL; newEdge->start->next=NULL; newEdge->stop->route=NULL; newEdge->stop->next=NULL; newStop->next=NULL; newStop->route=NULL; InsertStop(&Stops, &newStop); InsertEdge(&Edges, &newEdge); } } puts("Database loaded!\n-----------"); int choice = -1; while(choice != 0){ puts("1. Print Stations"); puts("2. Get shortest route\n"); puts("---Travel---"); puts("3. Arrival time "); puts("4. Depature time"); puts("-----------"); puts("0. Exit MENU\n"); puts("Please choose an option!\n"); printf("? "); scanf("%d", &choice); while(getchar() != '\n'); // Clear stdin switch(choice){ case 1: printStops(Stops); break; case 2: puts("TO BE IMPLEMENTED\n"); break; case 3: puts("TO BE IMPLEMENTED\n"); break; case 4: puts("TO BE IMPLEMENTED\n"); break; case 0: puts("BYE!\n"); break; default: puts("Invalid option, please try again!\n"); break; } } return 0; }