AddFleetsList(struct List *list, char *s) 
{
  int ok=0;
  struct Node *np;

  np = (struct Node *)calloc(1,sizeof(struct Node));
  np->ln_Pri = 0;
  np->ln_Name = (APTR)calloc(1,30);
  strncpy(np->ln_Name, s, 30);
  AddTail(list, np);
}

DoFleetWin()
{
  struct IntuiMessage *im;
  short notDone = 1;
  struct List fleetlist;
  struct List infolist;
  char dummy[100];
  int i, aktfleet;
 
  NewList(&infolist);
  NewList(&fleetlist);

  for (i=0; i<50; i++)
  {
    sprintf(dummy, "%2d %s", i+1, fleet[i].name[0]=='\0' ? "-" : fleet[i].name);
    AddFleetsList(&fleetlist, dummy);
  }

  FleetsLeft=(StarLexWnd->Width-StrReqWidth)/2;
  FleetsTop=(StarLexWnd->Height-StrReqHeight)/2;

  OpenFleetsWindow();

  GT_SetGadgetAttrs(FleetsGadgets[GDX_FLEETS], FleetsWnd, NULL, GTLV_Labels, &fleetlist, TAG_END);
    
  while (notDone) {
    WaitPort(FleetsWnd->UserPort);
    while (im = GT_GetIMsg(FleetsWnd->UserPort)) {
      switch(im->Class) {
      case IDCMP_REFRESHWINDOW:
	GT_BeginRefresh(FleetsWnd);
	GT_EndRefresh(FleetsWnd, TRUE);
	break;
      case IDCMP_CLOSEWINDOW:
        notDone=0;
        break;
      case IDCMP_GADGETUP:
	switch(((struct Gadget *)im->IAddress)->GadgetID) 
          {
          case GD_FLEETS:
            aktfleet=im->Code;
            break;
          case GD_FLEETNAME:
            break;
          case GD_SHIPS:
            break;
          case GD_COMMENT:
            break;
          default:
            break;
          }
	break;
      default:
	break;
      }
      GT_ReplyIMsg(im);
    }
  }
  GT_SetGadgetAttrs(FleetsGadgets[GDX_FLEETS], FleetsWnd, NULL, GTLV_Labels, ~0, TAG_END);
  ClearList(&fleetlist);
  CloseFleetsWindow();
}
