#include <stdio.h>
#include <Menu.h>

#include "DrawView.h"
#include "QuelInfo.h"
#include "IconShape.h"
#include "Alert.h"
#include "dynload.h"

const int	path_id= 10010;

extern "C" void make_path_menu();

void make_path_menu(DrawView *dv, Menu *m, int i)
{
  switch (i) {
  case 0:
    fprintf(stderr, "Creating path menu\n");
    m->AppendItems("-", "Find Path", path_id, 0);
    break;

  case path_id:
    QueryShape	*qs;
    long	start_oid, end_oid;
    char	s[1000];

    dv->SetMessage("Select start of path");
    if (!(qs= dv->SelectShape()))
      return;
    start_oid= qs->GetOid();
    dv->SetMessage("Select end of path");
    if (!(qs= dv->SelectShape()))
      return;
    end_oid= qs->GetOid();
    dv->SetMessage("Computing path...");
    dv->HourOn();
    sprintf(s, "./findpath %ld %ld %s",
      start_oid, end_oid, GetDb());
    system(s);

    dv->HourOff();
    dv->SetMessage("Computed path");

    FILE *pathstat= fopen("pathstat_out", "r");
    if (pathstat) {
      fgets(s, 1000, pathstat);
      ShowAlert(eAlertMessage, s);
      fclose(pathstat);
    }

    dv->DoQueryRefresh();
    break;

  case -1:
    m->EnableItem(path_id);
    break;
  }
}
