Example #1
0
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);
}
Example #2
0
File: rp.c Project: nogna/ioopm
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;
}