377
378
code = Seq_code_iupacna;
379
380
code = Seq_code_ncbieaa;
380
spp = SeqPortNewByLoc (sfp->location, code);
381
bsp = GetBioseqGivenSeqLoc (sfp->location, ompcp->input_entityID);
382
if (sfp->data.choice == SEQFEAT_CDREGION && (! is_na)) {
385
spp = SeqPortNewByLoc (slp, code);
386
bsp = GetBioseqGivenSeqLoc (slp, ompcp->input_entityID);
382
387
if (spp != NULL && bsp != NULL) {
383
388
while (FastaSeqLine(spp, buf, 70, is_na))
384
389
FastaFileFunc(bsp, FASTA_SEQLINE, buf, sizeof (buf), (Pointer)fp);
405
410
return VSMGenericFastaSave((OMProcControlPtr)data, TRUE);
413
typedef struct selectedsave
418
} SelectedSaveData, PNTR SelectedSavePtr;
420
NLM_EXTERN void AsnPrintNewLine PROTO((AsnIoPtr aip));
421
static Boolean SaveOneSelectedItem (GatherObjectPtr gop)
428
if (gop == NULL || gop->dataptr == NULL) return TRUE;
429
ssp = (SelectedSavePtr) gop->userdata;
430
if (ssp == NULL || ssp->aip == NULL || ssp->ssp == NULL) return TRUE;
434
&& (sel->entityID != gop->entityID
435
|| sel->itemtype != gop->itemtype
436
|| sel->itemID != gop->itemID))
441
if (sel == NULL) return TRUE;
443
omtp = ObjMgrTypeFind(ssp->omp, sel->itemtype, NULL, NULL);
446
ErrPostEx(SEV_ERROR,0,0,"Can't locate type record for [%d]", (int)sel->itemtype);
450
(*(omtp->asnwrite))(gop->dataptr, ssp->aip, NULL);
451
AsnPrintNewLine (ssp->aip);
452
AsnIoFlush (ssp->aip);
409
458
static Int2 LIBCALLBACK VSMGenericAsnSave (OMProcControlPtr ompcp, CharPtr mode )
411
460
Char filename[255];
461
SelStructPtr ssp, sel;
465
ValNodePtr entity_list = NULL, vnp;
466
SelectedSaveData ssd;
422
if (ompcp->input_choicetype)
424
the_type = ompcp->input_choicetype;
425
the_data = (Pointer)(ompcp->input_choice);
429
the_type = ompcp->input_itemtype;
430
the_data = ompcp->input_data;
433
omtp = ObjMgrTypeFind(omp, the_type, NULL, NULL);
436
ErrPostEx(SEV_ERROR,0,0,"Can't locate type record for [%d]", (int)the_type);
468
ssp = ObjMgrGetSelected();
437
471
return OM_MSG_RET_ERROR;
474
for (sel = ssp; sel != NULL; sel = sel->next)
476
for (vnp = entity_list;
477
vnp != NULL && vnp->data.intvalue != sel->entityID;
482
ValNodeAddInt (&entity_list, 0, sel->entityID);
486
ssd.omp = ObjMgrGet();
488
/* get file name to use */
440
489
filename[0] = '\0';
441
490
if (GetOutputFileName(filename, (size_t)254, NULL))
449
498
FileCreate (filename, "TEXT", "ttxt");
452
aip = AsnIoOpen(filename, mode);
453
(*(omtp->asnwrite))(the_data, aip, NULL);
502
ssd.aip = AsnIoOpen(filename, mode);
505
for (vnp = entity_list; vnp != NULL; vnp = vnp->next)
507
GatherObjectsInEntity (vnp->data.intvalue, 0, NULL, SaveOneSelectedItem, (Pointer) &ssd, NULL);
510
ValNodeFree (entity_list);
458
515
return OM_MSG_RET_DONE;
461
519
Int2 LIBCALLBACK VSMGenericTextAsnSave ( Pointer data )
463
521
return VSMGenericAsnSave((OMProcControlPtr)data, "w");