diff options
author | Aaron M. Ucko <ucko@debian.org> | 2009-03-16 20:49:28 +0000 |
---|---|---|
committer | Aaron M. Ucko <ucko@debian.org> | 2009-03-16 20:49:28 +0000 |
commit | e8f3513c621e07a1d0890d3dab064a122ef9533e (patch) | |
tree | c73627d1c752e77b6ff61687abfafa17dcb8c7ca /desktop | |
parent | ba8e66ff7c7810a0d5f2dbf3814e3a92f14bf2fe (diff) |
[svn-upgrade] Integrating new upstream version, ncbi-tools6 (6.1.20090301)
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/aacomp.c | 1 | ||||
-rw-r--r-- | desktop/biosrc.c | 1369 | ||||
-rw-r--r-- | desktop/dlgutil1.c | 16 | ||||
-rw-r--r-- | desktop/dlgutil2.c | 33 | ||||
-rw-r--r-- | desktop/dlogutil.h | 4 | ||||
-rw-r--r-- | desktop/import.c | 120 | ||||
-rw-r--r-- | desktop/import.h | 4 | ||||
-rwxr-xr-x | desktop/macrodlg.c | 1434 | ||||
-rwxr-xr-x | desktop/macrodlg.h | 5 | ||||
-rw-r--r-- | desktop/salfiles.c | 4 | ||||
-rw-r--r-- | desktop/salpanel.c | 5 |
11 files changed, 2598 insertions, 397 deletions
diff --git a/desktop/aacomp.c b/desktop/aacomp.c index 59baeec0..2aace79d 100644 --- a/desktop/aacomp.c +++ b/desktop/aacomp.c @@ -198,3 +198,4 @@ extern FloatHiPtr AAComposition (SeqPortPtr spp, fptr = AAC (spp, start, end, numval, window, scr, res); return fptr; } + diff --git a/desktop/biosrc.c b/desktop/biosrc.c index 4c001278..e3850e3c 100644 --- a/desktop/biosrc.c +++ b/desktop/biosrc.c @@ -29,7 +29,7 @@ * * Version Creation Date: 1/22/95 * -* $Revision: 6.90 $ +* $Revision: 6.93 $ * * File Description: * @@ -161,6 +161,843 @@ typedef struct genbioform { LookupTaxonomyProc lookupTaxonomy; } GenBioForm, PNTR GenBioFormPtr; +#ifndef WIN16 +static CharPtr taxlistMemStrs [] = { + "15\n", + "Acanthamoeba castellanii\t\t1\t4\tINV\t5755\n", + "Acanthoscurria gomesiana\t\t1\t5\tINV\t115339\n", + "Acetabularia acetabulum\t\t6\t1\tPLN\t35845\n", + "Acipenser sinensis\tChinese sturgeon\t1\t2\tVRT\t61970\n", + "Acipenser transmontanus\twhite sturgeon\t1\t2\tVRT\t7904\n", + "Acorus americanus\t\t1\t1\tPLN\t263995\n", + "Acropora millepora\t\t1\t4\tINV\t45264\n", + "Acropora palmata\t\t1\t4\tINV\t6131\n", + "Acyrthosiphon pisum\tpea aphid\t1\t5\tINV\t7029\n", + "Adiantum capillus-veneris\t\t1\t1\tPLN\t13818\n", + "Aedes aegypti\tyellow fever mosquito\t1\t5\tINV\t7159\n", + "Aegilops speltoides\t\t1\t1\tPLN\t4573\n", + "Aegilops tauschii\t\t1\t1\tPLN\t37682\n", + "Agrostis capillaris\t\t1\t1\tPLN\t204232\n", + "Agrostis stolonifera\t\t1\t1\tPLN\t63632\n", + "Ajellomyces capsulatus\t\t1\t4\tPLN\t5037\n", + "Ajellomyces capsulatus NAm1\t\t1\t4\tPLN\t339724\n", + "Alexandrium tamarense\t\t1\t4\tPLN\t2926\n", + "Alligator mississippiensis\tAmerican alligator\t1\t2\tVRT\t8496\n", + "Allium cepa\tonion\t1\t1\tPLN\t4679\n", + "Allomyces macrogynus\t\t1\t4\tPLN\t28583\n", + "Alternaria brassicicola\t\t1\t4\tPLN\t29001\n", + "Amblyomma americanum\tlone star tick\t1\t5\tINV\t6943\n", + "Amblyomma variegatum\t\t1\t5\tINV\t34610\n", + "Amborella trichopoda\t\t1\t1\tPLN\t13333\n", + "Ambystoma mexicanum\taxolotl\t1\t2\tVRT\t8296\n", + "Ambystoma ordinarium\tPuerto Hondo stream salamander\t1\t2\tVRT\t288796\n", + "Ambystoma tigrinum tigrinum\tEastern tiger salamander\t1\t2\tVRT\t43116\n", + "Amoebidium parasiticum\t\t1\t4\tINV\t4881\n", + "Amorphotheca resinae\tcreosote fungus\t1\t4\tPLN\t5101\n", + "Amphidinium carterae\t\t1\t4\tPLN\t2961\n", + "Ananas comosus\tpineapple\t1\t1\tPLN\t4615\n", + "Anas platyrhynchos\t\t1\t2\tVRT\t8839\n", + "Ancylostoma caninum\tdog hookworm\t1\t5\tINV\t29170\n", + "Ancylostoma ceylanicum\t\t1\t5\tINV\t53326\n", + "Anolis carolinensis\tgreen anole\t1\t2\tVRT\t28377\n", + "Anolis sagrei\tbrown anole\t1\t2\tVRT\t38937\n", + "Anopheles albimanus\t\t1\t5\tINV\t7167\n", + "Anopheles funestus\tAfrican malaria mosquito\t1\t5\tINV\t62324\n", + "Anopheles gambiae\tAfrican malaria mosquito\t1\t5\tINV\t7165\n", + "Anopheles gambiae str. PEST\t\t1\t5\tINV\t180454\n", + "Antheraea mylitta\t\t1\t5\tINV\t34739\n", + "Antirrhinum majus\tsnapdragon\t1\t1\tPLN\t4151\n", + "Antonospora locustae\t\t1\t1\tINV\t278021\n", + "Antrodia cinnamomea\t\t1\t4\tPLN\t279009\n", + "Aphanomyces cochlioides\t\t1\t1\tPLN\t112091\n", + "Aphis gossypii\tcotton aphid\t1\t5\tINV\t80765\n", + "Apis mellifera\thoney bee\t1\t5\tINV\t7460\n", + "Aplysia californica\tCalifornia sea hare\t1\t5\tINV\t6500\n", + "Aquilegia formosa\t\t1\t1\tPLN\t223430\n", + "Arabidopsis lyrata subsp. petraea\t\t1\t1\tPLN\t59691\n", + "Arabidopsis thaliana\tthale cress\t1\t1\tPLN\t3702\n", + "Arachis batizocoi\t\t1\t1\tPLN\t108210\n", + "Arachis duranensis\t\t1\t1\tPLN\t130453\n", + "Arachis hypogaea\tpeanut\t1\t1\tPLN\t3818\n", + "Arachis stenosperma\t\t1\t1\tPLN\t217475\n", + "Argas monolakensis\t\t1\t5\tINV\t34602\n", + "Argopecten irradians\t\t1\t5\tINV\t31199\n", + "Ascaris suum\tpig roundworm\t1\t5\tINV\t6253\n", + "Ascosphaera apis USDA-ARSEF 7405\t\t1\t4\tPLN\t392613\n", + "Ashbya gossypii ATCC 10895\t\t1\t3\tPLN\t284811\n", + "Asparagus officinalis\tgarden asparagus\t1\t1\tPLN\t4686\n", + "Aspergillus clavatus NRRL 1\t\t1\t4\tPLN\t344612\n", + "Aspergillus flavus\t\t1\t4\tPLN\t5059\n", + "Aspergillus flavus NRRL3357\t\t1\t4\tPLN\t332952\n", + "Aspergillus fumigatus Af293\t\t1\t4\tPLN\t330879\n", + "Aspergillus nidulans FGSC A4\t\t1\t4\tPLN\t227321\n", + "Aspergillus niger\t\t1\t4\tPLN\t5061\n", + "Aspergillus niger CBS 513.88\t\t1\t4\tPLN\t425011\n", + "Aspergillus oryzae\t\t1\t4\tPLN\t5062\n", + "Aspergillus terreus NIH2624\t\t1\t4\tPLN\t341663\n", + "Astatotilapia burtoni\t\t1\t2\tVRT\t8153\n", + "Aureobasidium pullulans\t\t1\t4\tPLN\t5580\n", + "Avena sativa\toat\t1\t1\tPLN\t4498\n", + "Babesia bovis\t\t1\t4\tINV\t5865\n", + "Bacillus cereus\t\t11\t0\tBCT\t1396\n", + "Bacillus clausii\t\t11\t0\tBCT\t79880\n", + "Bacillus licheniformis\t\t11\t0\tBCT\t1402\n", + "Bacillus subtilis\t\t11\t0\tBCT\t1423\n", + "Bemisia tabaci\t\t1\t5\tINV\t7038\n", + "Beta vulgaris\t\t1\t1\tPLN\t161934\n", + "Betula pendula\tEuropean white birch\t1\t1\tPLN\t3505\n", + "Bicyclus anynana\tsquinting bush brown\t1\t5\tINV\t110368\n", + "Bigelowiella natans\t\t1\t1\tINV\t227086\n", + "Biomphalaria glabrata\t\t1\t5\tINV\t6526\n", + "Blastocladiella emersonii\t\t1\t4\tPLN\t4808\n", + "Blastocystis hominis\t\t1\t1\tPLN\t12968\n", + "Blumeria graminis f. sp. hordei\t\t1\t4\tPLN\t62688\n", + "Boechera stricta\t\t1\t1\tPLN\t72658\n", + "Bombyx mori\tdomestic silkworm\t1\t5\tINV\t7091\n", + "Borrelia burgdorferi\tLyme disease spirochete\t11\t0\tBCT\t139\n", + "Bos indicus\t\t1\t2\tMAM\t9915\n", + "Bos taurus\tcattle\t1\t2\tMAM\t9913\n", + "Botryotinia fuckeliana\t\t1\t4\tPLN\t40559\n", + "Botryotinia fuckeliana B05.10\t\t1\t4\tPLN\t332648\n", + "Brachionus plicatilis\t\t1\t5\tINV\t10195\n", + "Brachypodium distachyon\t\t1\t1\tPLN\t15368\n", + "Bradyrhizobium japonicum\t\t11\t0\tBCT\t375\n", + "Branchiostoma floridae\tFlorida lancelet\t1\t5\tINV\t7739\n", + "Brassica carinata\t\t1\t1\tPLN\t52824\n", + "Brassica napus\trape\t1\t1\tPLN\t3708\n", + "Brassica oleracea\t\t1\t1\tPLN\t3712\n", + "Brassica oleracea var. alboglabra\tChinese kale\t1\t1\tPLN\t3714\n", + "Brassica oleracea var. italica\tasparagus broccoli\t1\t1\tPLN\t36774\n", + "Brassica rapa\t\t1\t1\tPLN\t3711\n", + "Brassica rapa subsp. pekinensis\t\t1\t1\tPLN\t51351\n", + "Brucella abortus\t\t11\t0\tBCT\t235\n", + "Brugia malayi\t\t1\t5\tINV\t6279\n", + "Bruguiera gymnorhiza\t\t1\t1\tPLN\t39984\n", + "Bubalus bubalis\twater buffalo\t1\t2\tMAM\t89462\n", + "Burkholderia pseudomallei 112\t\t11\t0\tBCT\t441154\n", + "Burkholderia pseudomallei 14\t\t11\t0\tBCT\t441160\n", + "Burkholderia pseudomallei 381\t\t11\t0\tBCT\t441157\n", + "Burkholderia pseudomallei 7894\t\t11\t0\tBCT\t441156\n", + "Burkholderia pseudomallei 9\t\t11\t0\tBCT\t441158\n", + "Burkholderia pseudomallei 91\t\t11\t0\tBCT\t441159\n", + "Burkholderia pseudomallei B7210\t\t11\t0\tBCT\t441155\n", + "Burkholderia pseudomallei DM98\t\t11\t0\tBCT\t441161\n", + "Bursaphelenchus mucronatus\t\t1\t5\tINV\t6325\n", + "Bursaphelenchus xylophilus\t\t1\t5\tINV\t6326\n", + "Caenorhabditis brenneri\t\t1\t5\tINV\t135651\n", + "Caenorhabditis briggsae\t\t1\t5\tINV\t6238\n", + "Caenorhabditis briggsae AF16\t\t1\t5\tINV\t473542\n", + "Caenorhabditis elegans\t\t1\t5\tINV\t6239\n", + "Caenorhabditis remanei\t\t1\t5\tINV\t31234\n", + "Calanus finmarchicus\t\t1\t5\tINV\t6837\n", + "Callinectes sapidus\tblue crab\t1\t5\tINV\t6763\n", + "Callithrix jacchus\twhite-tufted-ear marmoset\t1\t2\tPRI\t9483\n", + "Callorhinchus milii\telephantfish\t1\t2\tVRT\t7868\n", + "Camellia sinensis\t\t1\t1\tPLN\t4442\n", + "Candida albicans\t\t12\t4\tPLN\t5476\n", + "Candida albicans SC5314\t\t12\t4\tPLN\t237561\n", + "Candida glabrata\t\t1\t3\tPLN\t5478\n", + "Candida glabrata CBS 138\t\t1\t3\tPLN\t284593\n", + "Candida parapsilosis\t\t12\t4\tPLN\t5480\n", + "Candida tropicalis\t\t12\t3\tPLN\t5482\n", + "candidate division TM7 single-cell isolate TM7a\t\t11\t0\tBCT\t447454\n", + "Canis latrans\tcoyote\t1\t2\tMAM\t9614\n", + "Canis lupus\tgray wolf\t1\t2\tMAM\t9612\n", + "Canis lupus familiaris\tdog\t1\t2\tMAM\t9615\n", + "Cannabis sativa\themp\t1\t1\tPLN\t3483\n", + "Capra hircus\tgoat\t1\t2\tMAM\t9925\n", + "Capsaspora owczarzaki\t\t1\t1\tINV\t192875\n", + "Capsicum annuum\t\t1\t1\tPLN\t4072\n", + "Carcinus maenas\tgreen crab\t1\t5\tINV\t6759\n", + "Carica papaya\tpapaya\t1\t1\tPLN\t3649\n", + "Carthamus tinctorius\tsafflower\t1\t1\tPLN\t4222\n", + "Catharanthus roseus\tMadagascar periwinkle\t1\t1\tPLN\t4058\n", + "Cavia porcellus\tdomestic guinea pig\t1\t2\tROD\t10141\n", + "Celuca pugilator\tAtlantic sand fiddler crab\t1\t5\tINV\t6772\n", + "Cenchrus ciliaris\t\t1\t1\tPLN\t35872\n", + "Centaurea maculosa\t\t1\t1\tPLN\t215693\n", + "Centaurea solstitialis\t\t1\t1\tPLN\t347529\n", + "Ceratodon purpureus\t\t1\t1\tPLN\t3225\n", + "Ceratopteris richardii\t\t1\t1\tPLN\t49495\n", + "Cercomonas longicauda\t\t1\t1\tINV\t100933\n", + "Chaetomium cupreum\t\t1\t4\tPLN\t155874\n", + "Chaetomium globosum CBS 148.51\t\t1\t4\tPLN\t306901\n", + "Chamaecyparis obtusa\t\t1\t1\tPLN\t13415\n", + "Chironomus tentans\t\t1\t5\tINV\t7153\n", + "Chlamydia trachomatis\t\t11\t0\tBCT\t813\n", + "Chlamydomonas incerta\t\t1\t1\tPLN\t51695\n", + "Chlamydomonas reinhardtii\t\t1\t1\tPLN\t3055\n", + "Chlamys farreri\t\t1\t5\tINV\t202578\n", + "Chlorocebus aethiops\tAfrican green monkey\t1\t2\tPRI\t9534\n", + "Chondrus crispus\tcarragheen\t1\t4\tPLN\t2769\n", + "Chrysemys picta\t\t1\t2\tVRT\t8479\n", + "Cicer arietinum\tchickpea\t1\t1\tPLN\t3827\n", + "Cichorium endivia\t\t1\t1\tPLN\t114280\n", + "Cichorium intybus\tchicory\t1\t1\tPLN\t13427\n", + "Ciona intestinalis\t\t1\t13\tINV\t7719\n", + "Ciona savignyi\t\t1\t13\tINV\t51511\n", + "Citrus aurantium\t\t1\t1\tPLN\t43166\n", + "Citrus clementina\t\t1\t1\tPLN\t85681\n", + "Citrus reshni\t\t1\t1\tPLN\t171252\n", + "Citrus reticulata\t\t1\t1\tPLN\t85571\n", + "Citrus sinensis\t\t1\t1\tPLN\t2711\n", + "Citrus unshiu\t\t1\t1\tPLN\t55188\n", + "Cleome hassleriana\t\t1\t1\tPLN\t28532\n", + "Clonorchis sinensis\t\t1\t9\tINV\t79923\n", + "Closterium peracerosum-strigosum-littorale complex\t\t1\t1\tPLN\t34146\n", + "Coccidioides immitis H538.4\t\t1\t4\tPLN\t396776\n", + "Coccidioides immitis RMSCC 3703\t\t1\t4\tPLN\t454286\n", + "Coccidioides immitis RS\t\t1\t4\tPLN\t246410\n", + "Coccidioides posadasii\t\t1\t4\tPLN\t199306\n", + "Coccidioides posadasii str. Silveira\t\t1\t4\tPLN\t443226\n", + "Coffea arabica\tcoffee\t1\t1\tPLN\t13443\n", + "Coffea canephora\t\t1\t1\tPLN\t49390\n", + "Coprinopsis cinerea\t\t1\t4\tPLN\t5346\n", + "Cordyceps bassiana\t\t1\t4\tPLN\t176275\n", + "Coregonus clupeaformis\tlake whitefish\t1\t2\tVRT\t59861\n", + "Corynascus heterothallicus\t\t1\t4\tPLN\t78579\n", + "Corynebacterium glutamicum\t\t11\t0\tBCT\t1718\n", + "Crassostrea gigas\tPacific oyster\t1\t5\tINV\t29159\n", + "Crassostrea virginica\teastern oyster\t1\t5\tINV\t6565\n", + "Cricetulus griseus\tChinese hamster\t1\t2\tROD\t10029\n", + "Crocus sativus\t\t1\t1\tPLN\t82528\n", + "Cryphonectria parasitica\t\t1\t4\tPLN\t5116\n", + "Cryptococcus laurentii\t\t1\t4\tPLN\t5418\n", + "Cryptococcus neoformans var. neoformans\t\t1\t4\tPLN\t40410\n", + "Cryptococcus neoformans var. neoformans B-3501A\t\t1\t4\tPLN\t283643\n", + "Cryptococcus neoformans var. neoformans JEC21\t\t1\t4\tPLN\t214684\n", + "Cryptomeria japonica\tJapanese cedar\t1\t1\tPLN\t3369\n", + "Cryptosporidium hominis TU502\t\t1\t4\tINV\t353151\n", + "Cryptosporidium parvum\t\t1\t4\tINV\t5807\n", + "Cryptosporidium parvum Iowa II\t\t1\t4\tINV\t353152\n", + "Ctenocephalides felis\tcat flea\t1\t5\tINV\t7515\n", + "Cucumis melo\tmuskmelon\t1\t1\tPLN\t3656\n", + "Cucumis melo subsp. agrestis\t\t1\t1\tPLN\t217619\n", + "Cucumis melo subsp. melo\t\t1\t1\tPLN\t412675\n", + "Cucumis sativus\tcucumber\t1\t1\tPLN\t3659\n", + "Culex pipiens quinquefasciatus\tsouthern house mosquito\t1\t5\tINV\t7176\n", + "Culicoides sonorensis\t\t1\t5\tINV\t179676\n", + "Cunninghamella elegans\t\t1\t4\tPLN\t4853\n", + "Curcuma longa\t\t1\t1\tPLN\t136217\n", + "Cyamopsis tetragonoloba\tguar\t1\t1\tPLN\t3832\n", + "Cyanidioschyzon merolae strain 10D\t\t1\t1\tPLN\t280699\n", + "Cyanophora paradoxa\t\t1\t1\tPLN\t2762\n", + "Cycas rumphii\t\t1\t1\tPLN\t58031\n", + "Cynodon dactylon\tBermuda grass\t1\t1\tPLN\t28909\n", + "Cyprinus carpio\tcommon carp\t1\t2\tVRT\t7962\n", + "Danio rerio\tzebrafish\t1\t2\tVRT\t7955\n", + "Daphnia magna\t\t1\t5\tINV\t35525\n", + "Dasypus novemcinctus\tnine-banded armadillo\t1\t2\tMAM\t9361\n", + "Debaryomyces hansenii CBS767\t\t1\t3\tPLN\t284592\n", + "Debaryomyces hansenii var. hansenii\t\t1\t3\tPLN\t58641\n", + "Deinagkistrodon acutus\t\t1\t2\tVRT\t36307\n", + "Dekkera bruxellensis\t\t1\t4\tPLN\t5007\n", + "Diabrotica virgifera virgifera\twestern corn rootworm\t1\t5\tINV\t50390\n", + "Diaphorina citri\tAsian citrus psyllid\t1\t5\tINV\t121845\n", + "Diaprepes abbreviatus\tDiaprepes root weevil\t1\t5\tINV\t13040\n", + "Dicentrarchus labrax\tEuropean sea bass\t1\t2\tVRT\t13489\n", + "Dictyocaulus viviparus\tbovine lungworm\t1\t5\tINV\t29172\n", + "Dictyostelium discoideum\t\t1\t1\tINV\t44689\n", + "Dictyostelium discoideum AX4\t\t1\t1\tINV\t352472\n", + "Diplonema papillatum\t\t1\t4\tINV\t91374\n", + "Dirofilaria immitis\tdog heartworm nematode\t1\t5\tINV\t6287\n", + "Drosophila ananassae\t\t1\t5\tINV\t7217\n", + "Drosophila auraria\t\t1\t5\tINV\t47315\n", + "Drosophila erecta\t\t1\t5\tINV\t7220\n", + "Drosophila grimshawi\t\t1\t5\tINV\t7222\n", + "Drosophila melanogaster\tfruit fly\t1\t5\tINV\t7227\n", + "Drosophila mojavensis\t\t1\t5\tINV\t7230\n", + "Drosophila persimilis\t\t1\t5\tINV\t7234\n", + "Drosophila pseudoobscura\t\t1\t5\tINV\t7237\n", + "Drosophila sechellia\t\t1\t5\tINV\t7238\n", + "Drosophila simulans\t\t1\t5\tINV\t7240\n", + "Drosophila virilis\t\t1\t5\tINV\t7244\n", + "Drosophila willistoni\t\t1\t5\tINV\t7260\n", + "Drosophila yakuba\t\t1\t5\tINV\t7245\n", + "Dugesia japonica\t\t1\t9\tINV\t6161\n", + "Dugesia ryukyuensis\t\t1\t9\tINV\t79738\n", + "Dunaliella salina\t\t1\t1\tPLN\t3046\n", + "Echinococcus granulosus\t\t1\t9\tINV\t6210\n", + "Echinops telfairi\tsmall Madagascar hedgehog\t1\t2\tMAM\t9371\n", + "Eimeria tenella\t\t1\t4\tINV\t5802\n", + "Eisenia fetida\tcommon brandling worm\t1\t5\tINV\t6396\n", + "Elaeis guineensis\tAfrican oil palm\t1\t1\tPLN\t51953\n", + "Elaeis oleifera\t\t1\t1\tPLN\t80265\n", + "Emericella nidulans\t\t1\t4\tPLN\t162425\n", + "Emiliania huxleyi\t\t1\t4\tPLN\t2903\n", + "Endoriftia persephone 'Hot96_1+Hot96_2'\t\t11\t0\tBCT\t394104\n", + "Entamoeba dispar\t\t1\t1\tINV\t46681\n", + "Entamoeba dispar SAW760\t\t1\t1\tINV\t370354\n", + "Entamoeba histolytica\t\t1\t1\tINV\t5759\n", + "Entamoeba histolytica HM-1:IMSS\t\t1\t1\tINV\t294381\n", + "Entamoeba invadens\t\t1\t1\tINV\t33085\n", + "Entamoeba invadens IP1\t\t1\t1\tINV\t370355\n", + "Entamoeba moshkovskii FIC\t\t1\t1\tINV\t434306\n", + "Entamoeba terrapinae\t\t1\t1\tINV\t110771\n", + "Epiphyas postvittana\t\t1\t5\tINV\t65032\n", + "Eptatretus burgeri\tinshore hagfish\t1\t2\tVRT\t7764\n", + "Equus caballus\thorse\t1\t2\tMAM\t9796\n", + "Eragrostis tef\t\t1\t1\tPLN\t110835\n", + "Erinaceus europaeus\twestern European hedgehog\t1\t2\tMAM\t9365\n", + "Escherichia coli\t\t11\t0\tBCT\t562\n", + "Eschscholzia californica\tCalifornia poppy\t1\t1\tPLN\t3467\n", + "Esox lucius\tnorthern pike\t1\t2\tVRT\t8010\n", + "Eubalaena glacialis\tNorth Atlantic right whale\t1\t2\tMAM\t27606\n", + "Eucalyptus camaldulensis\tMurray red gum\t1\t1\tPLN\t34316\n", + "Eucalyptus globulus subsp. bicostata\t\t1\t1\tPLN\t71272\n", + "Eucalyptus grandis\t\t1\t1\tPLN\t71139\n", + "Eucalyptus gunnii\tcider tree\t1\t1\tPLN\t3933\n", + "Euglena gracilis\t\t1\t4\tPLN\t3039\n", + "Euglena longa\t\t1\t4\tPLN\t3037\n", + "Euphorbia esula\tleafy spurge\t1\t1\tPLN\t3993\n", + "Euphorbia tirucalli\t\t1\t1\tPLN\t142860\n", + "Euprymna scolopes\t\t1\t5\tINV\t6613\n", + "Felis catus\tdomestic cat\t1\t2\tMAM\t9685\n", + "Fenneropenaeus chinensis\t\t1\t5\tINV\t139456\n", + "Festuca arundinacea\t\t1\t1\tPLN\t4606\n", + "Folsomia candida\t\t1\t5\tINV\t158441\n", + "fossil metagenome\t\t11\t2\tENV\t444079\n", + "Fragaria vesca\t\t1\t1\tPLN\t57918\n", + "Fragaria vesca subsp. vesca\t\t1\t1\tPLN\t101020\n", + "Fragilariopsis cylindrus\t\t1\t1\tPLN\t186039\n", + "Fundulus heteroclitus\tkillifish\t1\t2\tVRT\t8078\n", + "Fusarium oxysporum f. sp. cucumerinum\t\t1\t4\tPLN\t5508\n", + "Fusarium oxysporum f. sp. melonis\t\t1\t4\tPLN\t61369\n", + "Fusarium solani\t\t1\t4\tPLN\t169388\n", + "Fusarium sporotrichioides\t\t1\t4\tPLN\t5514\n", + "Fusarium virguliforme\t\t1\t4\tPLN\t232082\n", + "Gadus morhua\tAtlantic cod\t1\t2\tVRT\t8049\n", + "Gallus gallus\tchicken\t1\t2\tVRT\t9031\n", + "Gammarus pulex\t\t1\t5\tINV\t52641\n", + "Gasterosteus aculeatus\tthree-spined stickleback\t1\t2\tVRT\t69293\n", + "GB virus C\t\t1\t0\tVRL\t54290\n", + "Gekko japonicus\t\t1\t2\tVRT\t146911\n", + "Gene trapping vector VICTR75\t\t11\t0\tSYN\t447634\n", + "Gene trapping vector VICTR76\t\t11\t0\tSYN\t447635\n", + "Geomyces pannorum\t\t1\t4\tPLN\t79858\n", + "Gerbera hybrid cv. 'Terra Regina'\t\t1\t1\tPLN\t226891\n", + "Giardia intestinalis\t\t1\t0\tINV\t5741\n", + "Giardia lamblia ATCC 50803\t\t1\t0\tINV\t184922\n", + "Gibberella moniliformis\t\t1\t4\tPLN\t117187\n", + "Gibberella zeae\t\t1\t4\tPLN\t5518\n", + "Gibberella zeae PH-1\t\t1\t4\tPLN\t229533\n", + "Gillichthys mirabilis\tlong-jawed mudsucker\t1\t2\tVRT\t8222\n", + "Ginkgo biloba\tmaidenhair tree\t1\t1\tPLN\t3311\n", + "Glaucocystis nostochinearum\t\t1\t1\tPLN\t38271\n", + "Globodera pallida\t\t1\t5\tINV\t36090\n", + "Globodera rostochiensis\t\t1\t5\tINV\t31243\n", + "Gloeophyllum trabeum\t\t1\t4\tPLN\t104355\n", + "Glomus intraradices\t\t1\t4\tPLN\t4876\n", + "Glossina morsitans morsitans\t\t1\t5\tINV\t37546\n", + "Glycine max\tsoybean\t1\t1\tPLN\t3847\n", + "Glycine soja\t\t1\t1\tPLN\t3848\n", + "Glycyphagus domesticus\t\t1\t5\tINV\t105145\n", + "Gnetum gnemon\t\t1\t1\tPLN\t3382\n", + "Gobiocypris rarus\t\t1\t2\tVRT\t143606\n", + "Gorilla gorilla\tgorilla\t1\t2\tPRI\t9593\n", + "Gossypium arboreum\t\t1\t1\tPLN\t29729\n", + "Gossypium exiguum\t\t1\t1\tPLN\t47626\n", + "Gossypium herbaceum\t\t1\t1\tPLN\t34274\n", + "Gossypium hirsutum\tupland cotton\t1\t1\tPLN\t3635\n", + "Gossypium raimondii\t\t1\t1\tPLN\t29730\n", + "Gracilaria changii\t\t1\t4\tPLN\t172969\n", + "Graphocephala atropunctata\t\t1\t5\tINV\t36148\n", + "Grosmannia clavigera\t\t1\t4\tPLN\t226899\n", + "Gryllus bimaculatus\ttwo-spotted cricket\t1\t5\tINV\t6999\n", + "Guillardia theta\t\t1\t1\tPLN\t55529\n", + "Haemonchus contortus\t\t1\t5\tINV\t6289\n", + "Haemophilus influenzae\t\t11\t0\tBCT\t727\n", + "Halocynthia roretzi\t\t1\t13\tINV\t7729\n", + "Hartmannella vermiformis\t\t1\t1\tINV\t5778\n", + "Hebeloma cylindrosporum\t\t1\t4\tPLN\t76867\n", + "Hedyotis centranthoides\t\t1\t1\tPLN\t219666\n", + "Hedyotis terminalis\t\t1\t1\tPLN\t219667\n", + "Helianthus annuus\tcommon sunflower\t1\t1\tPLN\t4232\n", + "Helianthus argophyllus\t\t1\t1\tPLN\t73275\n", + "Helianthus ciliaris\t\t1\t1\tPLN\t73280\n", + "Helianthus exilis\t\t1\t1\tPLN\t400408\n", + "Helianthus paradoxus\t\t1\t1\tPLN\t73304\n", + "Helianthus petiolaris\t\t1\t1\tPLN\t4234\n", + "Helianthus tuberosus\t\t1\t1\tPLN\t4233\n", + "Helicobacter pylori\t\t11\t0\tBCT\t210\n", + "Heliconius erato\tcrimson-patched longwing\t1\t5\tINV\t33431\n", + "Heliconius melpomene\t\t1\t5\tINV\t34740\n", + "Hemicentrotus pulcherrimus\t\t1\t9\tINV\t7650\n", + "Hepatitis A virus\t\t1\t0\tVRL\t12092\n", + "Hepatitis B virus\t\t1\t0\tVRL\t10407\n", + "Hepatitis C virus\t\t1\t0\tVRL\t11103\n", + "Hepatitis C virus subtype 1a\t\t1\t0\tVRL\t31646\n", + "Hepatitis C virus subtype 1b\t\t1\t0\tVRL\t31647\n", + "Heterocapsa triquetra\t\t1\t4\tPLN\t66468\n", + "Heterodera glycines\t\t1\t5\tINV\t51029\n", + "Heterodera schachtii\t\t1\t5\tINV\t97005\n", + "Heterorhabditis bacteriophora\t\t1\t5\tINV\t37862\n", + "Hevea brasiliensis\t\t1\t1\tPLN\t3981\n", + "Hippoglossus hippoglossus\tAtlantic halibut\t1\t2\tVRT\t8267\n", + "Histiona aroides\t\t1\t1\tINV\t392300\n", + "Holothuria glaberrima\t\t1\t9\tINV\t31192\n", + "Homalodisca coagulata\tglassy-winged sharpshooter\t1\t5\tINV\t197043\n", + "Homarus americanus\tAmerican lobster\t1\t5\tINV\t6706\n", + "Homo sapiens\thuman\t1\t2\tPRI\t9606\n", + "Hordeum vulgare\t\t1\t1\tPLN\t4513\n", + "Hordeum vulgare subsp. spontaneum\t\t1\t1\tPLN\t77009\n", + "Hordeum vulgare subsp. vulgare\tdomesticated barley\t1\t1\tPLN\t112509\n", + "Human herpesvirus 5\tHuman cytomegalovirus\t1\t0\tVRL\t10359\n", + "Human immunodeficiency virus 1\t\t1\t0\tVRL\t11676\n", + "Human immunodeficiency virus 2\t\t1\t0\tVRL\t11709\n", + "Human metapneumovirus\t\t1\t0\tVRL\t162145\n", + "Human T-lymphotropic virus 1\t\t1\t0\tVRL\t11908\n", + "Humulus lupulus\tEuropean hop\t1\t1\tPLN\t3486\n", + "Hydra magnipapillata\t\t1\t4\tINV\t6085\n", + "Hydra vulgaris\t\t1\t4\tINV\t6087\n", + "Hydractinia echinata\t\t1\t4\tINV\t35630\n", + "Hyperamoeba dachnaya\t\t1\t1\tINV\t181200\n", + "Hypocrea jecorina\t\t1\t4\tPLN\t51453\n", + "Hypocrea lixii\t\t1\t4\tPLN\t5544\n", + "Hypocrea virens\t\t1\t4\tPLN\t29875\n", + "Hypsibius dujardini\t\t1\t5\tINV\t232323\n", + "Ichthyophthirius multifiliis\t\t6\t4\tINV\t5932\n", + "Ictalurus furcatus\tblue catfish\t1\t2\tVRT\t66913\n", + "Ictalurus punctatus\tchannel catfish\t1\t2\tVRT\t7998\n", + "Idiosepius paradoxus\t\t1\t5\tINV\t294707\n", + "Ipomoea batatas\tsweet potato\t1\t1\tPLN\t4120\n", + "Ipomoea nil\tJapanese morning glory\t1\t1\tPLN\t35883\n", + "Isochrysis galbana\t\t1\t1\tPLN\t37099\n", + "Ixodes scapularis\tblack-legged tick\t1\t5\tINV\t6945\n", + "Jakoba bahamiensis\t\t1\t1\tINV\t221721\n", + "Jakoba libera\t\t1\t1\tINV\t143017\n", + "Juglans regia\tEnglish walnut\t1\t1\tPLN\t51240\n", + "Karenia brevis\t\t1\t4\tPLN\t156230\n", + "Karlodinium micrum\t\t1\t4\tPLN\t342587\n", + "Kazachstania exigua\t\t1\t3\tPLN\t34358\n", + "Kazachstania unispora\t\t1\t3\tPLN\t27294\n", + "Kluyveromyces lactis\t\t1\t4\tPLN\t28985\n", + "Kluyveromyces lactis NRRL Y-1140\t\t1\t4\tPLN\t284590\n", + "Kluyveromyces marxianus\t\t1\t3\tPLN\t4911\n", + "Kluyveromyces thermotolerans\t\t1\t3\tPLN\t4916\n", + "Laccaria bicolor\t\t1\t4\tPLN\t29883\n", + "Lachancea kluyveri\t\t1\t3\tPLN\t4934\n", + "Lactuca perennis\t\t1\t1\tPLN\t43195\n", + "Lactuca saligna\t\t1\t1\tPLN\t75948\n", + "Lactuca sativa\t\t1\t1\tPLN\t4236\n", + "Lactuca serriola\t\t1\t1\tPLN\t75943\n", + "Lactuca virosa\t\t1\t1\tPLN\t75947\n", + "Lama pacos\talpaca\t1\t2\tMAM\t30538\n", + "Laminaria digitata\t\t1\t1\tPLN\t80365\n", + "Laupala kohalensis\t\t1\t5\tINV\t109027\n", + "Lawsonia intracellularis\t\t11\t0\tBCT\t29546\n", + "Leishmania braziliensis\t\t1\t4\tINV\t5660\n", + "Leishmania donovani chagasi\t\t1\t4\tINV\t44271\n", + "Leishmania infantum JPCM5\t\t1\t4\tINV\t435258\n", + "Leishmania major\t\t1\t4\tINV\t5664\n", + "Leishmania major strain Friedlin\t\t1\t4\tINV\t347515\n", + "Lentinula edodes\tshiitake mushroom\t1\t4\tPLN\t5353\n", + "Lepeophtheirus salmonis\tsalmon louse\t1\t5\tINV\t72036\n", + "Leptinotarsa decemlineata\tColorado potato beetle\t1\t5\tINV\t7539\n", + "Leucoraja erinacea\tlittle skate\t1\t2\tVRT\t7782\n", + "Leucosporidium scottii\t\t1\t4\tPLN\t5278\n", + "Limnanthes alba subsp. versicolor\t\t1\t1\tPLN\t377281\n", + "Limonium bicolor\t\t1\t1\tPLN\t293754\n", + "Lingulodinium polyedrum\t\t1\t4\tPLN\t160621\n", + "Linum usitatissimum\tflax\t1\t1\tPLN\t4006\n", + "Liriodendron tulipifera\t\t1\t1\tPLN\t3415\n", + "Listeria monocytogenes\t\t11\t0\tBCT\t1639\n", + "Listeria monocytogenes FSL F2-515\t\t11\t0\tBCT\t393116\n", + "Listeria monocytogenes FSL J1-208\t\t11\t0\tBCT\t393119\n", + "Lithognathus mormyrus\t\t1\t2\tVRT\t50591\n", + "Litomosoides sigmodontis\t\t1\t5\tINV\t42156\n", + "Litopenaeus vannamei\tPacific white shrimp\t1\t5\tINV\t6689\n", + "Locusta migratoria\tmigratory locust\t1\t5\tINV\t7004\n", + "Lodderomyces elongisporus NRRL YB-4239\t\t1\t3\tPLN\t379508\n", + "Lolium multiflorum\tItalian ryegrass\t1\t1\tPLN\t4521\n", + "Lolium temulentum\t\t1\t1\tPLN\t34176\n", + "Lotus japonicus\t\t1\t1\tPLN\t34305\n", + "Loxodonta africana\tAfrican savanna elephant\t1\t2\tMAM\t9785\n", + "Lumbricus rubellus\thumus earthworm\t1\t5\tINV\t35632\n", + "Lupinus albus\twhite lupine\t1\t1\tPLN\t3870\n", + "Lutzomyia longipalpis\t\t1\t5\tINV\t7200\n", + "Lycoris longituba\t\t1\t1\tPLN\t272140\n", + "Lysiphlebus testaceipes\t\t1\t5\tINV\t77504\n", + "Macaca fascicularis\tcrab-eating macaque\t1\t2\tPRI\t9541\n", + "Macaca mulatta\trhesus monkey\t1\t2\tPRI\t9544\n", + "Macaca nemestrina\tpig-tailed macaque\t1\t2\tPRI\t9545\n", + "Maconellicoccus hirsutus\thibiscus mealybug\t1\t5\tINV\t177089\n", + "Macropus eugenii\ttammar wallaby\t1\t2\tMAM\t9315\n", + "Macrostomum lignano\t\t1\t9\tINV\t282301\n", + "Magnaporthe grisea\t\t1\t4\tPLN\t148305\n", + "Magnaporthe grisea 70-15\t\t1\t4\tPLN\t242507\n", + "Magnetospirillum magnetotacticum MS-1\t\t11\t0\tBCT\t272627\n", + "Malawimonas californiana\t\t1\t1\tINV\t221722\n", + "Malawimonas jakobiformis\t\t1\t1\tINV\t136089\n", + "Manduca sexta\ttobacco hornworm\t1\t5\tINV\t7130\n", + "Manihot esculenta\tcassava\t1\t1\tPLN\t3983\n", + "Marchantia polymorpha\tliverwort\t1\t1\tPLN\t3197\n", + "marine metagenome\t\t11\t2\tENV\t408172\n", + "Marsupenaeus japonicus\t\t1\t5\tINV\t27405\n", + "Mastigamoeba balamuthi\t\t1\t1\tINV\t108607\n", + "Measles virus\t\t1\t0\tVRL\t11234\n", + "Medicago sativa\t\t1\t1\tPLN\t3879\n", + "Medicago truncatula\tbarrel medic\t1\t1\tPLN\t3880\n", + "Meleagris gallopavo\tturkey\t1\t2\tVRT\t9103\n", + "Meloidogyne arenaria\t\t1\t5\tINV\t6304\n", + "Meloidogyne chitwoodi\t\t1\t5\tINV\t59747\n", + "Meloidogyne hapla\t\t1\t5\tINV\t6305\n", + "Meloidogyne incognita\tsouthern root-knot nematode\t1\t5\tINV\t6306\n", + "Meloidogyne javanica\troot-knot nematode\t1\t5\tINV\t6303\n", + "Meloidogyne paranaensis\t\t1\t5\tINV\t189293\n", + "Mesembryanthemum crystallinum\tcommon iceplant\t1\t1\tPLN\t3544\n", + "Mesocricetus auratus\tgolden hamster\t1\t2\tROD\t10036\n", + "Mesostigma viride\t\t1\t1\tPLN\t41882\n", + "metagenome sequence\t\t11\t2\tENV\t256318\n", + "Metarhizium anisopliae\t\t1\t4\tPLN\t5530\n", + "Microbotryum violaceum\t\t1\t4\tPLN\t5272\n", + "Microcebus murinus\tgray mouse lemur\t1\t2\tPRI\t30608\n", + "Mimulus guttatus\tspotted monkey flower\t1\t1\tPLN\t4155\n", + "Mimulus lewisii\t\t1\t1\tPLN\t69919\n", + "Misgurnus anguillicaudatus\toriental weatherfish\t1\t2\tVRT\t75329\n", + "Molgula tectiformis\t\t1\t13\tINV\t30286\n", + "Monacrosporium haptotylum\t\t1\t4\tPLN\t74495\n", + "Monodelphis domestica\tgray short-tailed opossum\t1\t2\tMAM\t13616\n", + "Monosiga ovata\t\t1\t1\tINV\t81526\n", + "mouse gut metagenome\t\t11\t2\tENV\t410661\n", + "Mus musculus\thouse mouse\t1\t2\tROD\t10090\n", + "Mus musculus domesticus\twestern European house mouse\t1\t2\tROD\t10092\n", + "Mus musculus molossinus\tJapanese wild mouse\t1\t2\tROD\t57486\n", + "Musa acuminata\tdessert banana\t1\t1\tPLN\t4641\n", + "Mycobacterium tuberculosis\t\t11\t0\tBCT\t1773\n", + "Mycosphaerella graminicola\t\t1\t4\tPLN\t54734\n", + "Myotis lucifugus\tlittle brown bat\t1\t2\tMAM\t59463\n", + "Mytilus californianus\tCalifornia mussel\t1\t5\tINV\t6549\n", + "Mytilus galloprovincialis\tMediterranean mussel\t1\t5\tINV\t29158\n", + "Myzus persicae\tgreen peach aphid\t1\t5\tINV\t13164\n", + "Nakaseomyces delphensis\t\t1\t3\tPLN\t51657\n", + "Nasonia giraulti\t\t1\t5\tINV\t7426\n", + "Nasonia vitripennis\tjewel wasp\t1\t5\tINV\t7425\n", + "Necator americanus\t\t1\t5\tINV\t51031\n", + "Neisseria gonorrhoeae\t\t11\t0\tBCT\t485\n", + "Neisseria meningitidis\t\t11\t0\tBCT\t487\n", + "Nelumbo nucifera\t\t1\t1\tPLN\t4432\n", + "Nematostella vectensis\tstarlet sea anemone\t1\t4\tINV\t45351\n", + "Neosartorya fischeri NRRL 181\t\t1\t4\tPLN\t331117\n", + "Neospora caninum\t\t1\t4\tINV\t29176\n", + "Neovison vison\t\t1\t2\tMAM\t452646\n", + "Neurospora crassa\t\t1\t4\tPLN\t5141\n", + "Neurospora crassa OR74A\t\t1\t4\tPLN\t367110\n", + "Newcastle disease virus\t\t1\t0\tVRL\t11176\n", + "Nicotiana benthamiana\t\t1\t1\tPLN\t4100\n", + "Nicotiana sylvestris\twood tobacco\t1\t1\tPLN\t4096\n", + "Nicotiana tabacum\tcommon tobacco\t1\t1\tPLN\t4097\n", + "Nippostrongylus brasiliensis\t\t1\t5\tINV\t27835\n", + "Nuphar advena\t\t1\t1\tPLN\t77108\n", + "Ochotona princeps\tAmerican pika\t1\t2\tMAM\t9978\n", + "Ocimum basilicum\tsweet basil\t1\t1\tPLN\t39350\n", + "Onchocerca volvulus\t\t1\t5\tINV\t6282\n", + "Oncometopia nigricans\t\t1\t5\tINV\t266772\n", + "Oncorhynchus mykiss\trainbow trout\t1\t2\tVRT\t8022\n", + "Oncorhynchus nerka\tsockeye salmon\t1\t2\tVRT\t8023\n", + "Oncorhynchus tshawytscha\tChinook salmon\t1\t2\tVRT\t74940\n", + "Ophiostoma piliferum\t\t1\t4\tPLN\t38032\n", + "Opisthorchis viverrini\t\t1\t9\tINV\t6198\n", + "Oreochromis niloticus\tNile tilapia\t1\t2\tVRT\t8128\n", + "Ornithorhynchus anatinus\tplatypus\t1\t2\tMAM\t9258\n", + "Oryctolagus cuniculus\trabbit\t1\t2\tMAM\t9986\n", + "Oryza alta\t\t1\t1\tPLN\t52545\n", + "Oryza australiensis\t\t1\t1\tPLN\t4532\n", + "Oryza brachyantha\t\t1\t1\tPLN\t4533\n", + "Oryza coarctata\t\t1\t1\tPLN\t77588\n", + "Oryza glaberrima\tAfrican rice\t1\t1\tPLN\t4538\n", + "Oryza granulata\t\t1\t1\tPLN\t110450\n", + "Oryza minuta\t\t1\t1\tPLN\t63629\n", + "Oryza nivara\t\t1\t1\tPLN\t4536\n", + "Oryza officinalis\t\t1\t1\tPLN\t4535\n", + "Oryza punctata\t\t1\t1\tPLN\t4537\n", + "Oryza ridleyi\t\t1\t1\tPLN\t83308\n", + "Oryza rufipogon\t\t1\t1\tPLN\t4529\n", + "Oryza sativa\trice\t1\t1\tPLN\t4530\n", + "Oryza sativa Indica Group\t\t1\t1\tPLN\t39946\n", + "Oryza sativa Japonica Group\t\t1\t1\tPLN\t39947\n", + "Oryzias latipes\tJapanese medaka\t1\t2\tVRT\t8090\n", + "Oscarella carmela\t\t1\t4\tINV\t386100\n", + "Osmerus mordax\trainbow smelt\t1\t2\tVRT\t8014\n", + "Ostertagia ostertagi\t\t1\t5\tINV\t6317\n", + "Ostreococcus lucimarinus CCE9901\t\t1\t1\tPLN\t436017\n", + "Otolemur garnettii\tsmall-eared galago\t1\t2\tPRI\t30611\n", + "Ovis aries\tsheep\t1\t2\tMAM\t9940\n", + "Pan paniscus\tpygmy chimpanzee\t1\t2\tPRI\t9597\n", + "Pan troglodytes\tchimpanzee\t1\t2\tPRI\t9598\n", + "Pan troglodytes troglodytes\t\t1\t2\tPRI\t37011\n", + "Pan troglodytes verus\t\t1\t2\tPRI\t37012\n", + "Panax ginseng\t\t1\t1\tPLN\t4054\n", + "Panicum virgatum\tswitchgrass\t1\t1\tPLN\t38727\n", + "Paracentrotus lividus\tcommon urchin\t1\t9\tINV\t7656\n", + "Paracoccidioides brasiliensis\t\t1\t4\tPLN\t121759\n", + "Paralabidochromis chilotes\t\t1\t2\tVRT\t77306\n", + "Paralichthys olivaceus\tbastard halibut\t1\t2\tVRT\t8255\n", + "Paramecium tetraurelia\t\t6\t4\tINV\t5888\n", + "Parastrongyloides trichosuri\t\t1\t5\tINV\t131310\n", + "Pasteuria penetrans\t\t11\t0\tBCT\t86005\n", + "Patiria pectinifera\t\t1\t9\tINV\t7594\n", + "Pavlova lutheri\t\t1\t1\tPLN\t2832\n", + "Paxillus involutus\t\t1\t4\tPLN\t71150\n", + "Pediculus humanus capitis\thuman head louse\t1\t5\tINV\t121226\n", + "Pediculus humanus corporis\thuman body louse\t1\t5\tINV\t121224\n", + "Penaeus monodon\tblack tiger shrimp\t1\t5\tINV\t6687\n", + "Penicillium marneffei\t\t1\t4\tPLN\t37727\n", + "Pennisetum glaucum\t\t1\t1\tPLN\t4543\n", + "Perkinsus marinus ATCC 50983\t\t1\t4\tINV\t423536\n", + "Peromyscus maniculatus bairdii\tprairie deer mouse\t1\t2\tROD\t230844\n", + "Persea americana\tavocado\t1\t1\tPLN\t3435\n", + "Petromyzon marinus\tsea lamprey\t1\t2\tVRT\t7757\n", + "Phaeodactylum tricornutum\t\t1\t1\tPLN\t2850\n", + "Phaeosphaeria nodorum SN15\t\t1\t4\tPLN\t321614\n", + "Phakopsora pachyrhizi\t\t1\t4\tPLN\t170000\n", + "Phalaenopsis equestris\t\t1\t1\tPLN\t78828\n", + "Phalaenopsis violacea\t\t1\t1\tPLN\t86509\n", + "Phanerochaete chrysosporium\t\t1\t4\tPLN\t5306\n", + "Phaseolus coccineus\t\t1\t1\tPLN\t3886\n", + "Phaseolus vulgaris\t\t1\t1\tPLN\t3885\n", + "Phlebotomus papatasi\t\t1\t5\tINV\t29031\n", + "Photorhabdus luminescens\t\t11\t0\tBCT\t29488\n", + "Physarum polycephalum\tslime mold\t1\t1\tINV\t5791\n", + "Physcomitrella patens\t\t1\t1\tPLN\t3218\n", + "Physcomitrella patens subsp. patens\t\t1\t1\tPLN\t145481\n", + "Phytophthora brassicae\t\t1\t1\tPLN\t187813\n", + "Phytophthora infestans\tpotato late blight agent\t1\t1\tPLN\t4787\n", + "Phytophthora infestans T30-4\t\t1\t1\tPLN\t403677\n", + "Phytophthora parasitica\t\t1\t1\tPLN\t4792\n", + "Phytophthora ramorum\tSudden oak death agent\t1\t1\tPLN\t164328\n", + "Phytophthora sojae\t\t1\t1\tPLN\t67593\n", + "Picea abies\tNorway spruce\t1\t1\tPLN\t3329\n", + "Picea glauca\twhite spruce\t1\t1\tPLN\t3330\n", + "Picea sitchensis\tSitka spruce\t1\t1\tPLN\t3332\n", + "Pichia angusta\t\t1\t3\tPLN\t4905\n", + "Pichia farinosa\t\t1\t3\tPLN\t4920\n", + "Pichia guilliermondii ATCC 6260\t\t1\t3\tPLN\t294746\n", + "Pichia stipitis CBS 6054\t\t12\t3\tPLN\t322104\n", + "Pimephales promelas\t\t1\t2\tVRT\t90988\n", + "Pinus pinaster\t\t1\t1\tPLN\t71647\n", + "Pinus taeda\tloblolly pine\t1\t1\tPLN\t3352\n", + "Pisum sativum\tpea\t1\t1\tPLN\t3888\n", + "Plasmodium berghei\t\t1\t4\tINV\t5821\n", + "Plasmodium berghei strain ANKA\t\t1\t4\tINV\t5823\n", + "Plasmodium chabaudi\t\t1\t4\tINV\t5825\n", + "Plasmodium chabaudi chabaudi\t\t1\t4\tINV\t31271\n", + "Plasmodium falciparum\tmalaria parasite P. falciparum\t1\t4\tINV\t5833\n", + "Plasmodium falciparum 3D7\t\t1\t4\tINV\t36329\n", + "Plasmodium falciparum Dd2\t\t1\t4\tINV\t57267\n", + "Plasmodium falciparum HB3\t\t1\t4\tINV\t137071\n", + "Plasmodium vivax\tmalaria parasite P. vivax\t1\t4\tINV\t5855\n", + "Plasmodium yoelii\t\t1\t4\tINV\t5861\n", + "Plasmodium yoelii yoelii\t\t1\t4\tINV\t73239\n", + "Plasmodium yoelii yoelii str. 17XNL\t\t1\t4\tINV\t352914\n", + "Platichthys flesus\tEuropean flounder\t1\t2\tVRT\t8260\n", + "Plodia interpunctella\tIndianmeal moth\t1\t5\tINV\t58824\n", + "Pneumocystis carinii\t\t1\t4\tPLN\t4754\n", + "Podocoryne carnea\t\t1\t4\tINV\t6096\n", + "Poecilia reticulata\tguppy\t1\t2\tVRT\t8081\n", + "Polygonatum sibiricum\t\t1\t1\tPLN\t261423\n", + "Polysphondylium pallidum\t\t1\t1\tINV\t13642\n", + "Polytomella parva\t\t1\t1\tPLN\t51329\n", + "Poncirus trifoliata\t\t1\t1\tPLN\t37690\n", + "Pongo pygmaeus\torangutan\t1\t2\tPRI\t9600\n", + "Populus deltoides\t\t1\t1\tPLN\t3696\n", + "Populus euphratica\t\t1\t1\tPLN\t75702\n", + "Populus nigra\t\t1\t1\tPLN\t3691\n", + "Populus tremula\t\t1\t1\tPLN\t113636\n", + "Populus tremuloides\tquaking aspen\t1\t1\tPLN\t3693\n", + "Populus trichocarpa\t\t1\t1\tPLN\t3694\n", + "Porcine respiratory and reproductive syndrome virus\t\t1\t0\tVRL\t28344\n", + "Porphyra haitanensis\t\t1\t4\tPLN\t76159\n", + "Porphyra yezoensis\t\t1\t4\tPLN\t2788\n", + "Pratylenchus vulnus\t\t1\t5\tINV\t45931\n", + "Pristionchus pacificus\t\t1\t5\tINV\t54126\n", + "Prototheca wickerhamii\t\t1\t1\tPLN\t3111\n", + "Prunus armeniaca\tapricot\t1\t1\tPLN\t36596\n", + "Prunus dulcis\talmond\t1\t1\tPLN\t3755\n", + "Prunus persica\tpeach\t1\t1\tPLN\t3760\n", + "Prymnesium parvum\t\t1\t1\tPLN\t97485\n", + "Pseudomonas aeruginosa\t\t11\t0\tBCT\t287\n", + "Pseudotsuga menziesii\tDouglas-fir\t1\t1\tPLN\t3357\n", + "Pseudotsuga menziesii var. menziesii\t\t1\t1\tPLN\t278161\n", + "Psychroflexus torquis ATCC 700755\t\t11\t0\tBCT\t313595\n", + "Puccinellia tenuiflora\t\t1\t1\tPLN\t240906\n", + "Puccinia graminis f. sp. tritici CRL 75-36-700-3\t\t1\t4\tPLN\t418459\n", + "Puccinia triticina\t\t1\t4\tPLN\t208348\n", + "Pythium ultimum DAOM BR144\t\t1\t1\tPLN\t431595\n", + "Rabies virus\t\t1\t0\tVRL\t11292\n", + "Raphanus raphanistrum subsp. landra\t\t1\t1\tPLN\t328428\n", + "Raphanus raphanistrum subsp. maritimus\t\t1\t1\tPLN\t457179\n", + "Raphanus raphanistrum subsp. raphanistrum\t\t1\t1\tPLN\t109997\n", + "Raphanus sativus\tradish\t1\t1\tPLN\t3726\n", + "Raphanus sativus var. oleiformis\t\t1\t1\tPLN\t463157\n", + "Rattus norvegicus\tNorway rat\t1\t2\tROD\t10116\n", + "Reclinomonas americana\t\t1\t1\tINV\t48483\n", + "Rhipicephalus appendiculatus\t\t1\t5\tINV\t34631\n", + "Rhipicephalus microplus\tsouthern cattle tick\t1\t5\tINV\t6941\n", + "Rhizopus oryzae\t\t1\t1\tPLN\t64495\n", + "Rhodnius prolixus\t\t1\t5\tINV\t13249\n", + "Rhynchosciara americana\t\t1\t5\tINV\t7186\n", + "Ricinus communis\tcastor bean\t1\t1\tPLN\t3988\n", + "Robinia pseudoacacia\t\t1\t1\tPLN\t35938\n", + "Rosa hybrid cultivar\t\t1\t1\tPLN\t128735\n", + "Rutilus rutilus\troach minnow\t1\t2\tVRT\t48668\n", + "Saccharomyces castellii\t\t1\t3\tPLN\t27288\n", + "Saccharomyces cerevisiae\tbaker's yeast\t1\t3\tPLN\t4932\n", + "Saccharomyces mikatae IFO 1815\t\t1\t3\tPLN\t226126\n", + "Saccharomyces pastorianus\t\t1\t3\tPLN\t27292\n", + "Saccharomyces servazzii\t\t1\t3\tPLN\t27293\n", + "Saccharomyces uvarum\t\t1\t3\tPLN\t230603\n", + "Saccharum hybrid cultivar\t\t1\t1\tPLN\t128810\n", + "Saccharum officinarum\t\t1\t1\tPLN\t4547\n", + "Saccoglossus kowalevskii\t\t1\t9\tINV\t10224\n", + "Saitoella complicata\t\t1\t4\tPLN\t5606\n", + "Salmo salar\tAtlantic salmon\t1\t2\tVRT\t8030\n", + "Salvelinus fontinalis\tbrook trout\t1\t2\tVRT\t8038\n", + "Salvia miltiorrhiza\t\t1\t1\tPLN\t226208\n", + "Sarcocystis falcatula\t\t1\t4\tINV\t32593\n", + "Sarcocystis neurona\t\t1\t4\tINV\t42890\n", + "Saruma henryi\t\t1\t1\tPLN\t13258\n", + "Sawyeria marylandensis\t\t1\t1\tINV\t194530\n", + "Scenedesmus obliquus\t\t1\t22\tPLN\t3088\n", + "Schistosoma japonicum\t\t1\t9\tINV\t6182\n", + "Schistosoma mansoni\t\t1\t9\tINV\t6183\n", + "Schizosaccharomyces pombe\tfission yeast\t1\t4\tPLN\t4896\n", + "Schizosaccharomyces pombe 972h-\t\t1\t4\tPLN\t284812\n", + "Schmidtea mediterranea\t\t1\t9\tINV\t79327\n", + "Sclerotinia sclerotiorum\t\t1\t4\tPLN\t5180\n", + "Sclerotinia sclerotiorum 1980\t\t1\t4\tPLN\t325569\n", + "Sebastes rastrelliger\tgrass rockfish\t1\t2\tVRT\t72095\n", + "Secale cereale\trye\t1\t1\tPLN\t4550\n", + "Seculamonas ecuadoriensis\t\t1\t1\tINV\t221724\n", + "Selaginella lepidophylla\t\t1\t1\tPLN\t59777\n", + "Sesamum indicum\tsesame\t1\t1\tPLN\t4182\n", + "Simian immunodeficiency virus\t\t1\t0\tVRL\t11723\n", + "Solanum chacoense\tChaco potato\t1\t1\tPLN\t4108\n", + "Solanum habrochaites\t\t1\t1\tPLN\t62890\n", + "Solanum lycopersicum\t\t1\t1\tPLN\t4081\n", + "Solanum pennellii\t\t1\t1\tPLN\t28526\n", + "Solanum tuberosum\tpotato\t1\t1\tPLN\t4113\n", + "Solenopsis invicta\tred fire ant\t1\t5\tINV\t13686\n", + "Sorex araneus\tEuropean shrew\t1\t2\tMAM\t42254\n", + "Sorghum bicolor\tsorghum\t1\t1\tPLN\t4558\n", + "Sorghum propinquum\t\t1\t1\tPLN\t132711\n", + "Sparus aurata\tgilthead seabream\t1\t2\tVRT\t8175\n", + "Spermophilus lateralis\tgolden-mantled ground squirrel\t1\t2\tROD\t76772\n", + "Spermophilus tridecemlineatus\tthirteen-lined ground squirrel\t1\t2\tROD\t43179\n", + "Sphaeroforma arctica\t\t1\t1\tINV\t72019\n", + "Spironucleus barkhanus\t\t6\t0\tINV\t103874\n", + "Spizellomyces punctatus\t\t1\t16\tPLN\t109760\n", + "Spodoptera frugiperda\tfall armyworm\t1\t5\tINV\t7108\n", + "Squalus acanthias\tspiny dogfish\t1\t2\tVRT\t7797\n", + "Stachyamoeba lipophora\t\t1\t1\tINV\t463046\n", + "Staphylococcus aureus\t\t11\t0\tBCT\t1280\n", + "Staphylococcus epidermidis\t\t11\t0\tBCT\t1282\n", + "Sterkiella histriomuscorum\t\t6\t4\tINV\t94289\n", + "Stevia rebaudiana\t\t1\t1\tPLN\t55670\n", + "Streblomastix strix\t\t6\t1\tINV\t222440\n", + "Streptococcus agalactiae\t\t11\t0\tBCT\t1311\n", + "Streptococcus pneumoniae\t\t11\t0\tBCT\t1313\n", + "Streptococcus pyogenes\t\t11\t0\tBCT\t1314\n", + "Strongylocentrotus purpuratus\t\t1\t9\tINV\t7668\n", + "Strongyloides ratti\t\t1\t5\tINV\t34506\n", + "Strongyloides stercoralis\t\t1\t5\tINV\t6248\n", + "Suidasia medanensis\t\t1\t5\tINV\t223625\n", + "Sus scrofa\tpig\t1\t2\tMAM\t9823\n", + "Taenia solium\tpork tapeworm\t1\t9\tINV\t6204\n", + "Taeniopygia guttata\t\t1\t2\tVRT\t59729\n", + "Taiwania cryptomerioides\t\t1\t1\tPLN\t50187\n", + "Takifugu rubripes\ttorafugu\t1\t2\tVRT\t31033\n", + "Tamarix androssowii\t\t1\t1\tPLN\t189785\n", + "Tamarix hispida\t\t1\t1\tPLN\t189793\n", + "Taphrina deformans\tpeach leaf curl fungus\t1\t4\tPLN\t5011\n", + "Taraxacum kok-saghyz\t\t1\t1\tPLN\t333970\n", + "Taraxacum officinale\t\t1\t1\tPLN\t50225\n", + "Teladorsagia circumcincta\t\t1\t5\tINV\t45464\n", + "Tetrahymena thermophila\t\t6\t4\tINV\t5911\n", + "Tetrahymena thermophila SB210\t\t6\t4\tINV\t312017\n", + "Tetraodon nigroviridis\t\t1\t2\tVRT\t99883\n", + "Thalassiosira pseudonana CCMP1335\t\t1\t4\tPLN\t296543\n", + "Theileria annulata\t\t1\t4\tINV\t5874\n", + "Theileria annulata strain Ankara\t\t1\t4\tINV\t353154\n", + "Theileria parva\t\t1\t4\tINV\t5875\n", + "Theileria parva strain Muguga\t\t1\t4\tINV\t333668\n", + "Thellungiella halophila\t\t1\t1\tPLN\t98038\n", + "Thellungiella salsuginea\t\t1\t1\tPLN\t72664\n", + "Theobroma cacao\tcacao\t1\t1\tPLN\t3641\n", + "Thermomyces lanuginosus\t\t1\t4\tPLN\t5541\n", + "Thlaspi caerulescens\t\t1\t1\tPLN\t107243\n", + "Thunnus thynnus\tbluefin tuna\t1\t2\tVRT\t8237\n", + "Thymallus arcticus\tArctic grayling\t1\t2\tVRT\t70285\n", + "Torque teno virus\t\t1\t0\tVRL\t68887\n", + "Tortula ruralis\t\t1\t1\tPLN\t38588\n", + "Toxocara canis\t\t1\t5\tINV\t6265\n", + "Toxoplasma gondii\t\t1\t4\tINV\t5811\n", + "Toxoplasma gondii RH\t\t1\t4\tINV\t383379\n", + "Toxoptera citricida\tbrown citrus aphid\t1\t5\tINV\t223852\n", + "Trametes versicolor\t\t1\t4\tPLN\t5325\n", + "Tribolium castaneum\tred flour beetle\t1\t5\tINV\t7070\n", + "Trichinella spiralis\t\t1\t5\tINV\t6334\n", + "Trichoderma reesei QM6a\t\t1\t4\tPLN\t431241\n", + "Trichomonas vaginalis\t\t1\t0\tINV\t5722\n", + "Trichomonas vaginalis G3\t\t1\t0\tINV\t412133\n", + "Trichophyton rubrum\t\t1\t4\tPLN\t5551\n", + "Trichosurus vulpecula\tsilver-gray brushtail possum\t1\t2\tMAM\t9337\n", + "Trichuris muris\t\t1\t5\tINV\t70415\n", + "Trichuris vulpis\t\t1\t5\tINV\t219738\n", + "Trifolium pratense\t\t1\t1\tPLN\t57577\n", + "Trifolium repens\twhite clover\t1\t1\tPLN\t3899\n", + "Trimastix pyriformis\t\t1\t1\tINV\t342808\n", + "Triphysaria versicolor\t\t1\t1\tPLN\t64093\n", + "Triticum aestivum\tbread wheat\t1\t1\tPLN\t4565\n", + "Triticum monococcum\t\t1\t1\tPLN\t4568\n", + "Triticum turgidum subsp. durum\tdurum wheat\t1\t1\tPLN\t4567\n", + "Tritrichomonas foetus\t\t1\t0\tINV\t5724\n", + "Trypanosoma brucei\t\t1\t4\tINV\t5691\n", + "Trypanosoma brucei rhodesiense\t\t1\t4\tINV\t31286\n", + "Trypanosoma brucei TREU927\t\t1\t4\tINV\t185431\n", + "Trypanosoma cruzi\t\t1\t4\tINV\t5693\n", + "Trypanosoma cruzi strain CL Brener\t\t1\t4\tINV\t353153\n", + "Tuber borchii\twhitish truffle\t1\t4\tPLN\t42251\n", + "Tupaia belangeri\tnorthern tree shrew\t1\t2\tMAM\t37347\n", + "Tursiops truncatus\tbottlenosed dolphin\t1\t2\tMAM\t9739\n", + "uncultured archaeon\t\t11\t0\tENV\t115547\n", + "uncultured bacterium\t\t11\t0\tENV\t77133\n", + "uncultured eukaryote\t\t1\t1\tENV\t100272\n", + "uncultured fungus\t\t1\t4\tENV\t175245\n", + "uncultured marine virus\t\t1\t0\tENV\t186617\n", + "uncultured organism\t\t11\t2\tENV\t155900\n", + "uncultured prokaryote\t\t11\t0\tENV\t198431\n", + "Uromyces appendiculatus\t\t1\t4\tPLN\t5264\n", + "Ustilago maydis\t\t1\t4\tPLN\t5270\n", + "Ustilago maydis 521\t\t1\t4\tPLN\t237631\n", + "Vaccinium corymbosum\t\t1\t1\tPLN\t69266\n", + "Vanderwaltozyma polyspora DSM 70294\t\t1\t3\tPLN\t436907\n", + "Verticillium dahliae\t\t1\t4\tPLN\t27337\n", + "Vibrio parahaemolyticus AQ3810\t\t11\t0\tBCT\t419109\n", + "Vigna unguiculata\tcowpea\t1\t1\tPLN\t3917\n", + "Vitis hybrid cultivar\t\t1\t1\tPLN\t241073\n", + "Vitis shuttleworthii\t\t1\t1\tPLN\t246827\n", + "Vitis vinifera\t\t1\t1\tPLN\t29760\n", + "Welwitschia mirabilis\t\t1\t1\tPLN\t3377\n", + "Wuchereria bancrofti\t\t1\t5\tINV\t6293\n", + "Xenopus laevis\tAfrican clawed frog\t1\t2\tVRT\t8355\n", + "Xenopus tropicalis\twestern clawed frog\t1\t2\tVRT\t8364\n", + "Xiphinema index\t\t1\t5\tINV\t46003\n", + "Yarrowia lipolytica\t\t1\t3\tPLN\t4952\n", + "Yarrowia lipolytica CLIB122\t\t1\t3\tPLN\t284591\n", + "Zamia fischeri\t\t1\t1\tPLN\t34342\n", + "Zantedeschia aethiopica\t\t1\t1\tPLN\t69721\n", + "Zea mays\t\t1\t1\tPLN\t4577\n", + "Zea mays subsp. mays\tmaize\t1\t1\tPLN\t381124\n", + "Zea mays subsp. parviglumis\t\t1\t1\tPLN\t76912\n", + "Zingiber officinale\t\t1\t1\tPLN\t94328\n", + "Zinnia elegans\t\t1\t1\tPLN\t34245\n", + "Zostera marina\t\t1\t1\tPLN\t29655\n", + "Zygosaccharomyces rouxii\t\t1\t3\tPLN\t4956\n", + NULL +}; +#endif + extern Boolean LoadOrganismTable (void) { @@ -169,9 +1006,10 @@ extern Boolean LoadOrganismTable (void) Boolean failed; Char first [16]; Int2 idx; + CharPtr lst; Int8 len; Int2 num; - CharPtr ptr; + CharPtr ptr = NULL; Char str [PATH_MAX]; CharPtr tmp; Int2 version; @@ -188,9 +1026,9 @@ extern Boolean LoadOrganismTable (void) orgNum = 0; failed = TRUE; ProgramPath (str, sizeof (str)); - ptr = StringRChr (str, DIRDELIMCHR); - if (ptr != NULL) { - *ptr = '\0'; + tmp = StringRChr (str, DIRDELIMCHR); + if (tmp != NULL) { + *tmp = '\0'; FileBuildPath (str, NULL, "taxlist.txt"); len = FileLength (str); f = FileOpen (str, "r"); @@ -204,7 +1042,6 @@ extern Boolean LoadOrganismTable (void) if (f != NULL) { ptr = MemNew ((size_t) (len + 5)); if (ptr != NULL) { - orgTxtPtr = ptr; FileRead (ptr, (size_t) len, 1, f); #if (defined(OS_DOS) || defined (OS_NT)) p = ptr; @@ -229,51 +1066,77 @@ extern Boolean LoadOrganismTable (void) p++; } #endif - tmp = ptr; - ch = *tmp; - while (ch != '\0' && ch != '\n') { + } + FileClose (f); + } + } + if (ptr == NULL) { +#ifndef WIN16 + idx = 0; + len = 0; + tmp = taxlistMemStrs [idx]; + while (tmp != NULL) { + len += StringLen (tmp); + idx++; + tmp = taxlistMemStrs [idx]; + } + ptr = MemNew ((size_t) (len + 5)); + if (ptr != NULL) { + lst = ptr; + idx = 0; + tmp = taxlistMemStrs [idx]; + while (tmp != NULL) { + lst = StringMove (lst, tmp); + idx++; + tmp = taxlistMemStrs [idx]; + } + } +#endif + } + if (ptr != NULL) { + orgTxtPtr = ptr; + tmp = ptr; + ch = *tmp; + while (ch != '\0' && ch != '\n') { + tmp++; + ch = *tmp; + } + *tmp = '\0'; + StringNCpy_0 (first, ptr, sizeof (first) - 1); + *tmp = ch; + if (StrToInt (first, &version)) { + tmp++; + ptr = tmp; + } + num = 0; + tmp = ptr; + ch = *tmp; + while (ch != '\0') { + if (ch == '\n') { + num++; + } + tmp++; + ch = *tmp; + } + orgStrIdx = MemNew (sizeof (CharPtr) * (size_t) (num + 3)); + if (orgStrIdx != NULL) { + idx = 0; + tmp = ptr; + ch = *tmp; + orgStrIdx [idx] = tmp; + while (ch != '\0') { + if (ch == '\n') { + idx++; tmp++; ch = *tmp; - } - *tmp = '\0'; - StringNCpy_0 (first, ptr, sizeof (first) - 1); - *tmp = ch; - if (StrToInt (first, &version)) { - tmp++; - ptr = tmp; - } - num = 0; - tmp = ptr; - ch = *tmp; - while (ch != '\0') { - if (ch == '\n') { - num++; - } + orgStrIdx [idx] = tmp; + } else { tmp++; ch = *tmp; } - orgStrIdx = MemNew (sizeof (CharPtr) * (size_t) (num + 3)); - if (orgStrIdx != NULL) { - idx = 0; - tmp = ptr; - ch = *tmp; - orgStrIdx [idx] = tmp; - while (ch != '\0') { - if (ch == '\n') { - idx++; - tmp++; - ch = *tmp; - orgStrIdx [idx] = tmp; - } else { - tmp++; - ch = *tmp; - } - } - orgNum = num; - failed = FALSE; - } } - FileClose (f); + orgNum = num; + failed = FALSE; } } if (failed) { @@ -1729,7 +2592,7 @@ static void FixModifierTextMove (ButtoN b) fp->remove = FALSE; fp->move_to_text = TRUE; fp->do_all = FALSE; - fp->done = TRUE; + fp->done = TRUE; } static void FixModifierTextMoveAll (ButtoN b) @@ -1743,7 +2606,7 @@ static void FixModifierTextMoveAll (ButtoN b) fp->remove = FALSE; fp->move_to_text = TRUE; fp->do_all = TRUE; - fp->done = TRUE; + fp->done = TRUE; } static void FixModifierTextRemove (ButtoN b) @@ -1757,7 +2620,7 @@ static void FixModifierTextRemove (ButtoN b) fp->remove = TRUE; fp->move_to_text = FALSE; fp->do_all = FALSE; - fp->done = TRUE; + fp->done = TRUE; } static void FixModifierTextRemoveAll (ButtoN b) @@ -1771,7 +2634,7 @@ static void FixModifierTextRemoveAll (ButtoN b) fp->remove = TRUE; fp->move_to_text = FALSE; fp->do_all = TRUE; - fp->done = TRUE; + fp->done = TRUE; } extern ModTextFixPtr ModTextFixNew (void) @@ -1807,78 +2670,78 @@ GetModifierTextFix (ModTextFixPtr tfp, Uint1 subtype, CharPtr txt) if (tfp == NULL) return; switch (subtype) { - case SUBSRC_rearranged: - if (tfp->remove_all_rearranged) - { - tfp->remove_this = TRUE; - tfp->move_this = FALSE; - return; - } - else if (tfp->move_all_rearranged) - { - tfp->move_this = TRUE; - tfp->remove_this = FALSE; - return; - } - break; - case SUBSRC_transgenic: - if (tfp->remove_all_transgenic) - { - tfp->remove_this = TRUE; - tfp->move_this = FALSE; - return; - } - else if (tfp->move_all_transgenic) - { - tfp->move_this = TRUE; - tfp->remove_this = FALSE; - return; - } - break; - case SUBSRC_germline: - if (tfp->remove_all_germline) - { - tfp->remove_this = TRUE; - tfp->move_this = FALSE; - return; - } - else if (tfp->move_all_germline) - { - tfp->move_this = TRUE; - tfp->remove_this = FALSE; - return; - } - break; - case SUBSRC_environmental_sample: - if (tfp->remove_all_environmental) - { - tfp->remove_this = TRUE; - tfp->move_this = FALSE; - return; - } - else if (tfp->move_all_environmental) - { - tfp->move_this = TRUE; - tfp->remove_this = FALSE; - return; - } - break; - case SUBSRC_metagenomic: - if (tfp->remove_all_metagenomic) - { - tfp->remove_this = TRUE; - tfp->move_this = FALSE; - return; - } - else if (tfp->move_all_metagenomic) - { - tfp->move_this = TRUE; - tfp->remove_this = FALSE; - return; - } - break; - default: - break; + case SUBSRC_rearranged: + if (tfp->remove_all_rearranged) + { + tfp->remove_this = TRUE; + tfp->move_this = FALSE; + return; + } + else if (tfp->move_all_rearranged) + { + tfp->move_this = TRUE; + tfp->remove_this = FALSE; + return; + } + break; + case SUBSRC_transgenic: + if (tfp->remove_all_transgenic) + { + tfp->remove_this = TRUE; + tfp->move_this = FALSE; + return; + } + else if (tfp->move_all_transgenic) + { + tfp->move_this = TRUE; + tfp->remove_this = FALSE; + return; + } + break; + case SUBSRC_germline: + if (tfp->remove_all_germline) + { + tfp->remove_this = TRUE; + tfp->move_this = FALSE; + return; + } + else if (tfp->move_all_germline) + { + tfp->move_this = TRUE; + tfp->remove_this = FALSE; + return; + } + break; + case SUBSRC_environmental_sample: + if (tfp->remove_all_environmental) + { + tfp->remove_this = TRUE; + tfp->move_this = FALSE; + return; + } + else if (tfp->move_all_environmental) + { + tfp->move_this = TRUE; + tfp->remove_this = FALSE; + return; + } + break; + case SUBSRC_metagenomic: + if (tfp->remove_all_metagenomic) + { + tfp->remove_this = TRUE; + tfp->move_this = FALSE; + return; + } + else if (tfp->move_all_metagenomic) + { + tfp->move_this = TRUE; + tfp->remove_this = FALSE; + return; + } + break; + default: + break; } fd.w = ModalWindow(-20, -13, -10, -10, NULL); @@ -1889,21 +2752,21 @@ GetModifierTextFix (ModTextFixPtr tfp, Uint1 subtype, CharPtr txt) if (prompt_str == NULL) return; switch (subtype) { - case SUBSRC_rearranged: - sprintf (prompt_str, prompt_fmt, txt, "a rearranged"); - break; - case SUBSRC_germline: - sprintf (prompt_str, prompt_fmt, txt, "a germline"); - break; - case SUBSRC_transgenic: - sprintf (prompt_str, prompt_fmt, txt, "a transgenic"); - break; - case SUBSRC_environmental_sample: - sprintf (prompt_str, prompt_fmt, txt, "an environmental sample"); - break; - case SUBSRC_metagenomic: - sprintf (prompt_str, prompt_fmt, txt, "a metagenomic"); - break; + case SUBSRC_rearranged: + sprintf (prompt_str, prompt_fmt, txt, "a rearranged"); + break; + case SUBSRC_germline: + sprintf (prompt_str, prompt_fmt, txt, "a germline"); + break; + case SUBSRC_transgenic: + sprintf (prompt_str, prompt_fmt, txt, "a transgenic"); + break; + case SUBSRC_environmental_sample: + sprintf (prompt_str, prompt_fmt, txt, "an environmental sample"); + break; + case SUBSRC_metagenomic: + sprintf (prompt_str, prompt_fmt, txt, "a metagenomic"); + break; } t = HiddenGroup (g, 1, 0, NULL); @@ -1934,63 +2797,63 @@ GetModifierTextFix (ModTextFixPtr tfp, Uint1 subtype, CharPtr txt) if (fd.remove) { - tfp->remove_this = TRUE; - if (fd.do_all) - { - switch (subtype) - { - case SUBSRC_rearranged: - tfp->remove_all_rearranged = TRUE; - tfp->move_all_rearranged = FALSE; - break; - case SUBSRC_transgenic: - tfp->remove_all_transgenic = TRUE; - tfp->move_all_transgenic = FALSE; - break; - case SUBSRC_germline: - tfp->remove_all_germline = TRUE; - tfp->move_all_germline = FALSE; - break; - case SUBSRC_environmental_sample: - tfp->remove_all_environmental = TRUE; - tfp->move_all_environmental = FALSE; - break; - case SUBSRC_metagenomic: - tfp->remove_all_metagenomic = TRUE; - tfp->move_all_metagenomic = FALSE; - break; - } - } + tfp->remove_this = TRUE; + if (fd.do_all) + { + switch (subtype) + { + case SUBSRC_rearranged: + tfp->remove_all_rearranged = TRUE; + tfp->move_all_rearranged = FALSE; + break; + case SUBSRC_transgenic: + tfp->remove_all_transgenic = TRUE; + tfp->move_all_transgenic = FALSE; + break; + case SUBSRC_germline: + tfp->remove_all_germline = TRUE; + tfp->move_all_germline = FALSE; + break; + case SUBSRC_environmental_sample: + tfp->remove_all_environmental = TRUE; + tfp->move_all_environmental = FALSE; + break; + case SUBSRC_metagenomic: + tfp->remove_all_metagenomic = TRUE; + tfp->move_all_metagenomic = FALSE; + break; + } + } } else if (fd.move_to_text) { - tfp->move_this = TRUE; - if (fd.do_all) - { - switch (subtype) - { - case SUBSRC_rearranged: - tfp->remove_all_rearranged = FALSE; - tfp->move_all_rearranged = TRUE; - break; - case SUBSRC_transgenic: - tfp->remove_all_transgenic = FALSE; - tfp->move_all_transgenic = TRUE; - break; - case SUBSRC_germline: - tfp->remove_all_germline = FALSE; - tfp->move_all_germline = TRUE; - break; - case SUBSRC_environmental_sample: - tfp->remove_all_environmental = FALSE; - tfp->move_all_environmental = TRUE; - break; - case SUBSRC_metagenomic: - tfp->remove_all_metagenomic = FALSE; - tfp->move_all_metagenomic = TRUE; - break; - } - } + tfp->move_this = TRUE; + if (fd.do_all) + { + switch (subtype) + { + case SUBSRC_rearranged: + tfp->remove_all_rearranged = FALSE; + tfp->move_all_rearranged = TRUE; + break; + case SUBSRC_transgenic: + tfp->remove_all_transgenic = FALSE; + tfp->move_all_transgenic = TRUE; + break; + case SUBSRC_germline: + tfp->remove_all_germline = FALSE; + tfp->move_all_germline = TRUE; + break; + case SUBSRC_environmental_sample: + tfp->remove_all_environmental = FALSE; + tfp->move_all_environmental = TRUE; + break; + case SUBSRC_metagenomic: + tfp->remove_all_metagenomic = FALSE; + tfp->move_all_metagenomic = TRUE; + break; + } + } } } @@ -2011,76 +2874,76 @@ extern void RemoveTextFromTextFreeSubSourceModifiers (BioSourcePtr biop, Pointer } else { - tfp = (ModTextFixPtr) userdata; + tfp = (ModTextFixPtr) userdata; } for (ssp = biop->subtype; ssp != NULL; ssp = ssp->next) { - tfp->move_this = FALSE; - tfp->remove_this = FALSE; - if ((ssp->subtype == SUBSRC_germline - || ssp->subtype == SUBSRC_transgenic - || ssp->subtype == SUBSRC_rearranged - || ssp->subtype == SUBSRC_environmental_sample - || ssp->subtype == SUBSRC_metagenomic) - && ! StringHasNoText (ssp->name)) - { - GetModifierTextFix (tfp, ssp->subtype, ssp->name); - if (tfp->move_this) - { - /* if a note modifier is found, add this text to it, otherwise create a new - * note modifier to hold this text. - */ - if (note_ssp == NULL) - { - for (note_ssp = biop->subtype; note_ssp != NULL && note_ssp->subtype != 255; note_ssp = note_ssp->next) - { - } - } - if (note_ssp == NULL) - { - note_ssp = SubSourceNew (); - if (note_ssp != NULL) - { - note_ssp->subtype = 255; - note_ssp->name = ssp->name; - ssp->name = StringSave (""); - note_ssp->next = ssp->next; - ssp->next = note_ssp; - } - } - else if (StringHasNoText (note_ssp->name)) - { + tfp->move_this = FALSE; + tfp->remove_this = FALSE; + if ((ssp->subtype == SUBSRC_germline + || ssp->subtype == SUBSRC_transgenic + || ssp->subtype == SUBSRC_rearranged + || ssp->subtype == SUBSRC_environmental_sample + || ssp->subtype == SUBSRC_metagenomic) + && ! StringHasNoText (ssp->name)) + { + GetModifierTextFix (tfp, ssp->subtype, ssp->name); + if (tfp->move_this) + { + /* if a note modifier is found, add this text to it, otherwise create a new + * note modifier to hold this text. + */ + if (note_ssp == NULL) + { + for (note_ssp = biop->subtype; note_ssp != NULL && note_ssp->subtype != 255; note_ssp = note_ssp->next) + { + } + } + if (note_ssp == NULL) + { + note_ssp = SubSourceNew (); + if (note_ssp != NULL) + { + note_ssp->subtype = 255; + note_ssp->name = ssp->name; + ssp->name = StringSave (""); + note_ssp->next = ssp->next; + ssp->next = note_ssp; + } + } + else if (StringHasNoText (note_ssp->name)) + { note_ssp->name = MemFree (note_ssp->name); note_ssp->name = ssp->name; - ssp->name = StringSave (""); - } - else - { - len = StringLen (note_ssp->name) + StringLen (ssp->name) + 3; - new_note = (CharPtr) MemNew (len * sizeof (Char)); - if (new_note != NULL) - { - StringCpy (new_note, note_ssp->name); - StringCat (new_note, "; "); - StringCat (new_note, ssp->name); - note_ssp->name = MemFree (note_ssp->name); - note_ssp->name = new_note; - ssp->name = MemFree (ssp->name); - ssp->name = StringSave (""); - } - } - } - else if (tfp->remove_this) - { - ssp->name = MemFree (ssp->name); - ssp->name = StringSave (""); - } - } + ssp->name = StringSave (""); + } + else + { + len = StringLen (note_ssp->name) + StringLen (ssp->name) + 3; + new_note = (CharPtr) MemNew (len * sizeof (Char)); + if (new_note != NULL) + { + StringCpy (new_note, note_ssp->name); + StringCat (new_note, "; "); + StringCat (new_note, ssp->name); + note_ssp->name = MemFree (note_ssp->name); + note_ssp->name = new_note; + ssp->name = MemFree (ssp->name); + ssp->name = StringSave (""); + } + } + } + else if (tfp->remove_this) + { + ssp->name = MemFree (ssp->name); + ssp->name = StringSave (""); + } + } } if (userdata == NULL) { - MemFree (tfp); + MemFree (tfp); } } @@ -2172,6 +3035,7 @@ Uint2 subsource_types [] = { TAGLIST_POPUP, TAGLIST_TEXT }; +/* static CharPtr orgmod_extra_prompts [] = { "Additional", "Organism", "Information", NULL }; @@ -2179,6 +3043,7 @@ static CharPtr orgmod_extra_prompts [] = { static CharPtr subsource_extra_prompts [] = { "Additional", "Source", "Information", NULL }; +*/ static CharPtr orgTabs [] = { "Names", "Location", "Genetic Codes", "Lineage", NULL @@ -3429,7 +4294,7 @@ extern Int2 LIBCALLBACK BioSourceGenFunc (Pointer data) gfp->proctype = ompcp->proc->proctype; gfp->userkey = OMGetNextUserKey (); omudp = ObjMgrAddUserData (ompcp->input_entityID, ompcp->proc->procid, - OMPROC_EDIT, gfp->userkey); + OMPROC_EDIT, gfp->userkey); if (omudp != NULL) { omudp->userdata.ptrvalue = (Pointer) gfp; omudp->messagefunc = StdVibrantEditorMsgFunc; diff --git a/desktop/dlgutil1.c b/desktop/dlgutil1.c index 6282b598..721a19b5 100644 --- a/desktop/dlgutil1.c +++ b/desktop/dlgutil1.c @@ -29,7 +29,7 @@ * * Version Creation Date: 1/22/95 * -* $Revision: 6.139 $ +* $Revision: 6.141 $ * * File Description: * @@ -1499,7 +1499,7 @@ static void AddProtRefXref (SeqFeatPtr sfp, TexT protXrefName, TexT protXrefDesc } } -static Boolean IsPseudo (SeqFeatPtr sfp) +static Boolean FeatIsPseudo (SeqFeatPtr sfp) { Boolean pseudo = FALSE; GBQualPtr qual; @@ -1965,7 +1965,7 @@ extern Boolean FeatFormReplaceWithoutUpdateProc (ForM f) if (ffp->fidxref != NULL) { TextToFeatXref (ffp->fidxref, sfp); } - if (IsPseudo (sfp)) + if (FeatIsPseudo (sfp)) { RemoveProtXrefs (sfp); } @@ -5513,8 +5513,11 @@ ReadAlignedSeqLocList partial5, partial3, &(loc_list [loc_num]))) { - loc_list [loc_num] = ValNodeNew (NULL); - loc_list [loc_num]->choice = SEQLOC_NULL; + if (loc_list[loc_num] == NULL) + { + loc_list [loc_num] = ValNodeNew (NULL); + loc_list [loc_num]->choice = SEQLOC_NULL; + } } } else @@ -7399,7 +7402,6 @@ static DialoG LatLonDialog (GrouP h, TaglistCallback change_notify, Pointer chan static Boolean ParseLatLonOk (CharPtr str) { - Boolean rval = FALSE; CharPtr ns, ew, cp; if (StringHasNoText (str)) @@ -8809,7 +8811,7 @@ extern void FreeSqnTempFiles (void) /* This gets a list of the open views */ -NLM_EXTERN ValNodePtr GetBaseFormList () +NLM_EXTERN ValNodePtr GetBaseFormList (void) { Uint4 j; diff --git a/desktop/dlgutil2.c b/desktop/dlgutil2.c index 5380647e..1583a5b6 100644 --- a/desktop/dlgutil2.c +++ b/desktop/dlgutil2.c @@ -29,7 +29,7 @@ * * Version Creation Date: 1/22/95 * -* $Revision: 6.201 $ +* $Revision: 6.203 $ * * File Description: * @@ -4719,7 +4719,8 @@ typedef struct valnodeselection DIALOG_MESSAGE_BLOCK DialoG list_dlg; ValNodePtr choice_list; - + + Boolean is_multi; FreeValNodeProc free_vn_proc; CopyValNodeDataProc copy_vn_proc; MatchValNodeProc match_vn_proc; @@ -4747,7 +4748,11 @@ static void ValNodeSelectionListToDialog (DialoG d, Pointer userdata) for (vnp_list = item_list; vnp_list != NULL; vnp_list = vnp_list->next) { found = FALSE; - for (vnp_sel = dlg->choice_list, i = 1; + i = 1; + if (dlg->is_multi) { + i++; + } + for (vnp_sel = dlg->choice_list; vnp_sel != NULL && !found; vnp_sel = vnp_sel->next, i++) { @@ -4924,6 +4929,8 @@ extern DialoG ValNodeSelectionDialogExEx dlg->match_vn_proc = match_vn_proc; dlg->remap_vn_proc = remap_vn_proc; + dlg->is_multi = allow_multi; + for (vnp = choice_list; vnp != NULL; vnp = vnp->next) { ValNodeAddPointer (&choice_name_list, 0, (name_proc) (vnp)); @@ -8988,16 +8995,18 @@ static void ClickList (DoC d, PoinT pt) } else if (col == cip->level + 2) { - cip->expanded = !cip->expanded; - rsult = GetScrlParams4 (dlg->doc, &offset, &first_shown, NULL); - PopulateClickableList (dlg, dlg->list_list); - if (rsult) { - GetItemParams4 (dlg->doc, first_shown, &offset, NULL, NULL, NULL, NULL); - SetScrlParams4 (dlg->doc, offset); + if (cip->subcategories != NULL) { + cip->expanded = !cip->expanded; + rsult = GetScrlParams4 (dlg->doc, &offset, &first_shown, NULL); + PopulateClickableList (dlg, dlg->list_list); + if (rsult) { + GetItemParams4 (dlg->doc, first_shown, &offset, NULL, NULL, NULL, NULL); + SetScrlParams4 (dlg->doc, offset); + } + ObjectRect (dlg->doc, &r); + InsetRect (&r, -1, -1); + InvalRect (&r); } - ObjectRect (dlg->doc, &r); - InsetRect (&r, -1, -1); - InvalRect (&r); } else { dlg->text_select_item_anchor = item; dlg->text_select_row_anchor = row; diff --git a/desktop/dlogutil.h b/desktop/dlogutil.h index 1220a391..fe8336df 100644 --- a/desktop/dlogutil.h +++ b/desktop/dlogutil.h @@ -29,7 +29,7 @@ * * Version Creation Date: 1/22/95 * -* $Revision: 6.101 $ +* $Revision: 6.102 $ * * File Description: * @@ -765,7 +765,7 @@ extern Boolean FixSpecialCharactersForStringsInList (ValNodePtr find_list, CharP NLM_EXTERN Boolean FixSpecialCharactersForObject (Uint2 datatype, Pointer objdata, CharPtr msg, Boolean force_fix, BoolPtr changed); /* for functions that act on all open records */ -NLM_EXTERN ValNodePtr GetBaseFormList (); +NLM_EXTERN ValNodePtr GetBaseFormList (void); NLM_EXTERN ValNodePtr GetViewedSeqEntryList (void); NLM_EXTERN SeqEntryPtr RestoreFromFile (CharPtr path); NLM_EXTERN Uint2 RestoreEntityIDFromFile (CharPtr path, Uint2 entityID); diff --git a/desktop/import.c b/desktop/import.c index f51a33d9..e8776a8a 100644 --- a/desktop/import.c +++ b/desktop/import.c @@ -29,7 +29,7 @@ * * Version Creation Date: 6/18/95 * -* $Revision: 6.70 $ +* $Revision: 6.71 $ * * File Description: * @@ -3505,7 +3505,7 @@ typedef struct visstrpage { typedef struct visstrform { DESCRIPTOR_FORM_BLOCK - Uint2 subtype; + Uint1 subtype; } VisStrForm, PNTR VisStrFormPtr; static void CharPtrToVisStrPage (DialoG d, Pointer data) @@ -3647,8 +3647,91 @@ static void VisStrFormMessage (ForM f, Int2 mssg) } } + +static CharPtr citInCommentMsg = +"This comment looks like it has citation references in [#] form.\n\ +You should put comments about references in the REMARK section by\n\ +double clicking on the reference and launching its editor.\n\ +Continue saving this comment?"; + + +typedef struct replacevisstr { + Uint1 subtype; + CharPtr deleteThis; + CharPtr replaceWith; +} ReplaceVisStrData, PNTR ReplaceVisStrPtr; + +static void ReplaceAllCallback (SeqDescrPtr sdp, Pointer data) + +{ + ReplaceVisStrPtr rp; + + if ((rp = (ReplaceVisStrPtr) data) == NULL || sdp == NULL || sdp->choice != rp->subtype) { + return; + } + + if (StringCmp (sdp->data.ptrvalue, rp->deleteThis) == 0) { + sdp->data.ptrvalue = MemFree (sdp->data.ptrvalue); + sdp->data.ptrvalue = StringSave (rp->replaceWith); + } +} + + +static void ReplaceAllVisibleStringsButtonProc (ButtoN b) +{ + VisStrFormPtr vfp; + Boolean suspicious = FALSE; + SeqEntryPtr sep; + ReplaceVisStrData rd; + SeqDescrPtr sdp_orig; + SeqMgrDescContext context; + + vfp = (VisStrFormPtr) GetObjectExtra (b); + if (vfp == NULL) { + return; + } + + rd.subtype = vfp->subtype; + rd.replaceWith = DialogToPointer (vfp->data); + if (rd.replaceWith == NULL || StringHasNoText (rd.replaceWith)) { + Message (MSG_ERROR, "Must supply text!"); + rd.replaceWith = MemFree (rd.replaceWith); + return; + } + + sdp_orig = SeqMgrGetDesiredDescriptor (vfp->input_entityID, NULL, vfp->input_itemID, 0, NULL, &context); + if (sdp_orig == NULL || sdp_orig->choice != vfp->subtype) { + Message (MSG_ERROR, "Unable to find original descriptor!"); + Remove (vfp->form); + rd.replaceWith = MemFree (rd.replaceWith); + return; + } + rd.deleteThis = StringSave (sdp_orig->data.ptrvalue); + + if (vfp->subtype == Seq_descr_comment) { + suspicious = SerialNumberInString (rd.replaceWith); + } + if (suspicious) { + if (Message (MSG_OKC, "%s", citInCommentMsg) == ANS_CANCEL) { + rd.deleteThis = MemFree (rd.deleteThis); + rd.replaceWith = MemFree (rd.replaceWith); + return; + } + } + + sep = GetTopSeqEntryForEntityID (vfp->input_entityID); + VisitDescriptorsInSep (sep, &rd, ReplaceAllCallback); + + GetRidOfEmptyFeatsDescStrings (vfp->input_entityID, NULL); + ObjMgrSetDirtyFlag (vfp->input_entityID, TRUE); + ObjMgrSendMsg (OM_MSG_UPDATE, vfp->input_entityID, + vfp->input_itemID, vfp->input_itemtype); + Remove (vfp->form); +} + + extern ForM CreateVisStrForm (Int2 left, Int2 top, CharPtr title, - Uint2 subtype, FormActnFunc actproc) + Uint2 subtype, FormActnFunc actproc, SeqDescrPtr sdp) { ButtoN b; @@ -3666,7 +3749,7 @@ extern ForM CreateVisStrForm (Int2 left, Int2 top, CharPtr title, vfp->form = (ForM) w; vfp->actproc = actproc; vfp->formmessage = VisStrFormMessage; - vfp->subtype = subtype; + vfp->subtype = (Uint1)subtype; #ifndef WIN_MAC CreateStdEditorFormMenus (w); @@ -3681,9 +3764,18 @@ extern ForM CreateVisStrForm (Int2 left, Int2 top, CharPtr title, g = HiddenGroup (w, -1, 0, NULL); vfp->data = CreateVisStrDialog (g, NULL, subtype); - c = HiddenGroup (w, 2, 0, NULL); - b = PushButton (c, "Accept", StdAcceptFormButtonProc); - SetObjectExtra (b, vfp, NULL); + c = HiddenGroup (w, 3, 0, NULL); + + if (sdp == NULL) { + b = PushButton (c, "Accept", StdAcceptFormButtonProc); + SetObjectExtra (b, vfp, NULL); + } else { + b = PushButton (c, "Replace All", ReplaceAllVisibleStringsButtonProc); + SetObjectExtra (b, vfp, NULL); + b = PushButton (c, "Replace This", StdAcceptFormButtonProc); + SetObjectExtra (b, vfp, NULL); + } + PushButton (c, "Cancel", StdCancelButtonProc); AlignObjects (ALIGN_CENTER, (HANDLE) g, (HANDLE) c, NULL); RealizeWindow (w); @@ -3691,12 +3783,6 @@ extern ForM CreateVisStrForm (Int2 left, Int2 top, CharPtr title, return (ForM) w; } -static CharPtr citInCommentMsg = -"This comment looks like it has citation references in [#] form.\n\ -You should put comments about references in the REMARK section by\n\ -double clicking on the reference and launching its editor.\n\ -Continue saving this comment?"; - static void VisStrDescFormActnProc (ForM f) { @@ -3798,16 +3884,16 @@ extern Int2 LIBCALLBACK VisStrGenFunc (Pointer data) } if (subtype == Seq_descr_title) { w = (WindoW) CreateVisStrForm (-50, -33, "Title", - subtype, VisStrDescFormActnProc); + subtype, VisStrDescFormActnProc, sdp); } else if (subtype == Seq_descr_comment) { w = (WindoW) CreateVisStrForm (-50, -33, "Comment", - subtype, VisStrDescFormActnProc); + subtype, VisStrDescFormActnProc, sdp); } else if (subtype == Seq_descr_name) { w = (WindoW) CreateVisStrForm (-50, -33, "Name", - subtype, VisStrDescFormActnProc); + subtype, VisStrDescFormActnProc, sdp); } else if (subtype == Seq_descr_region) { w = (WindoW) CreateVisStrForm (-50, -33, "Region", - subtype, VisStrDescFormActnProc); + subtype, VisStrDescFormActnProc, sdp); } else { return OM_MSG_RET_ERROR; } diff --git a/desktop/import.h b/desktop/import.h index e656352f..f61fe11a 100644 --- a/desktop/import.h +++ b/desktop/import.h @@ -29,7 +29,7 @@ * * Version Creation Date: 6/18/95 * -* $Revision: 6.7 $ +* $Revision: 6.8 $ * * File Description: * @@ -111,7 +111,7 @@ extern Int2 LIBCALLBACK GenBankGenFunc (Pointer data); #define REGISTER_NAME_EDIT ObjMgrProcLoad(OMPROC_EDIT,"Edit Name","Name",OBJ_SEQDESC,Seq_descr_name,OBJ_SEQDESC,Seq_descr_name,NULL,VisStrGenFunc,PROC_PRIORITY_DEFAULT) extern ForM CreateVisStrForm (Int2 left, Int2 top, CharPtr title, - Uint2 subtype, FormActnFunc actproc); + Uint2 subtype, FormActnFunc actproc, SeqDescrPtr sdp); extern Int2 LIBCALLBACK VisStrGenFunc (Pointer data); diff --git a/desktop/macrodlg.c b/desktop/macrodlg.c index 4a6ca819..2c55a14f 100755 --- a/desktop/macrodlg.c +++ b/desktop/macrodlg.c @@ -29,7 +29,7 @@ * * Version Creation Date: 11/23/2007 * -* $Revision: 1.130 $ +* $Revision: 1.147 $ * * File Description: * @@ -559,6 +559,26 @@ static ConvertFeatureActionPtr BuildDefaultConvertFeatureAction(void) } +static RemoveDescriptorActionPtr BuildDefaultRemoveDescriptorAction(void) +{ + RemoveDescriptorActionPtr remove; + + remove = RemoveDescriptorActionNew(); + remove->type = Descriptor_type_all; + return remove; +} + + +static AutodefActionPtr BuildDefaultAutodefAction(void) +{ + AutodefActionPtr autodef; + + autodef = AutodefActionNew(); + autodef->clause_list_type = Autodef_list_type_complete_sequence; + return autodef; +} + + static ValNodePtr BuildDefaultNewMacroAction (void) { ValNodePtr vnp; @@ -2891,7 +2911,7 @@ static void CDSGeneProtPseudoConstraintToDialog (DialoG d, Pointer data) PointerToDialog (dlg->feat, NULL); SetValue (dlg->pseudo, 1); } else { - vn.choice = pseudo->feature; + vn.choice = (Uint1) pseudo->feature; vn.data.ptrvalue = NULL; vn.next = NULL; PointerToDialog (dlg->feat, &vn); @@ -3580,9 +3600,9 @@ static void SequenceQualPairToDialog (DialoG d, Pointer data) PointerToDialog (dlg->molecule_from_dlg, NULL); PointerToDialog (dlg->molecule_to_dlg, NULL); } else { - vn.choice = ((MolinfoMoleculePairPtr) m_fields->data.ptrvalue)->from; + vn.choice = (Uint1)((MolinfoMoleculePairPtr) m_fields->data.ptrvalue)->from; PointerToDialog (dlg->molecule_from_dlg, &vn); - vn.choice = ((MolinfoMoleculePairPtr) m_fields->data.ptrvalue)->to; + vn.choice = (Uint1)((MolinfoMoleculePairPtr) m_fields->data.ptrvalue)->to; PointerToDialog (dlg->molecule_to_dlg, &vn); } break; @@ -3592,9 +3612,9 @@ static void SequenceQualPairToDialog (DialoG d, Pointer data) PointerToDialog (dlg->technique_from_dlg, NULL); PointerToDialog (dlg->technique_to_dlg, NULL); } else { - vn.choice = ((MolinfoTechniquePairPtr) m_fields->data.ptrvalue)->from; + vn.choice = (Uint1)((MolinfoTechniquePairPtr) m_fields->data.ptrvalue)->from; PointerToDialog (dlg->technique_from_dlg, &vn); - vn.choice = ((MolinfoTechniquePairPtr) m_fields->data.ptrvalue)->to; + vn.choice = (Uint1)((MolinfoTechniquePairPtr) m_fields->data.ptrvalue)->to; PointerToDialog (dlg->technique_to_dlg, &vn); } break; @@ -3604,9 +3624,9 @@ static void SequenceQualPairToDialog (DialoG d, Pointer data) PointerToDialog (dlg->completedness_from_dlg, NULL); PointerToDialog (dlg->completedness_to_dlg, NULL); } else { - vn.choice = ((MolinfoCompletednessPairPtr) m_fields->data.ptrvalue)->from; + vn.choice = (Uint1)((MolinfoCompletednessPairPtr) m_fields->data.ptrvalue)->from; PointerToDialog (dlg->completedness_from_dlg, &vn); - vn.choice = ((MolinfoCompletednessPairPtr) m_fields->data.ptrvalue)->to; + vn.choice = (Uint1)((MolinfoCompletednessPairPtr) m_fields->data.ptrvalue)->to; PointerToDialog (dlg->completedness_to_dlg, &vn); } break; @@ -3616,9 +3636,9 @@ static void SequenceQualPairToDialog (DialoG d, Pointer data) PointerToDialog (dlg->mol_class_from_dlg, NULL); PointerToDialog (dlg->mol_class_to_dlg, NULL); } else { - vn.choice = ((MolinfoMolClassPairPtr) m_fields->data.ptrvalue)->from; + vn.choice = (Uint1)((MolinfoMolClassPairPtr) m_fields->data.ptrvalue)->from; PointerToDialog (dlg->mol_class_from_dlg, &vn); - vn.choice = ((MolinfoMolClassPairPtr) m_fields->data.ptrvalue)->to; + vn.choice = (Uint1)((MolinfoMolClassPairPtr) m_fields->data.ptrvalue)->to; PointerToDialog (dlg->mol_class_to_dlg, &vn); } break; @@ -3628,9 +3648,9 @@ static void SequenceQualPairToDialog (DialoG d, Pointer data) PointerToDialog (dlg->topology_from_dlg, NULL); PointerToDialog (dlg->topology_to_dlg, NULL); } else { - vn.choice = ((MolinfoTopologyPairPtr) m_fields->data.ptrvalue)->from; + vn.choice = (Uint1)((MolinfoTopologyPairPtr) m_fields->data.ptrvalue)->from; PointerToDialog (dlg->topology_from_dlg, &vn); - vn.choice = ((MolinfoTopologyPairPtr) m_fields->data.ptrvalue)->to; + vn.choice = (Uint1)((MolinfoTopologyPairPtr) m_fields->data.ptrvalue)->to; PointerToDialog (dlg->topology_to_dlg, &vn); } break; @@ -3640,9 +3660,9 @@ static void SequenceQualPairToDialog (DialoG d, Pointer data) PointerToDialog (dlg->strand_from_dlg, NULL); PointerToDialog (dlg->strand_to_dlg, NULL); } else { - vn.choice = ((MolinfoStrandPairPtr) m_fields->data.ptrvalue)->from; + vn.choice = (Uint1)((MolinfoStrandPairPtr) m_fields->data.ptrvalue)->from; PointerToDialog (dlg->strand_from_dlg, &vn); - vn.choice = ((MolinfoStrandPairPtr) m_fields->data.ptrvalue)->to; + vn.choice = (Uint1)((MolinfoStrandPairPtr) m_fields->data.ptrvalue)->to; PointerToDialog (dlg->strand_to_dlg, &vn); } break; @@ -4425,7 +4445,7 @@ static void PublicationConstraintToDialog (DialoG d, Pointer data) PointerToDialog (dlg->field_type, NULL); PointerToDialog (dlg->string_constraint, NULL); } else { - vn.choice = constraint->field->field; + vn.choice = (Uint1)constraint->field->field; vn.data.ptrvalue = NULL; vn.next = NULL; PointerToDialog (dlg->field_type, &vn); @@ -4613,7 +4633,7 @@ static void SequenceConstraintToDialog (DialoG d, Pointer data) PointerToDialog (dlg->feature_type, NULL); } else { SetStatus (dlg->feat_present, TRUE); - vn.choice = constraint->feature; + vn.choice = (Uint1)constraint->feature; vn.data.ptrvalue = NULL; vn.next = NULL; PointerToDialog (dlg->feature_type, &vn); @@ -6360,7 +6380,7 @@ static void DataToFeatureFieldConstraintDlg (DialoG d, Pointer data) PointerToDialog (dlg->feature_type, NULL); PointerToDialog (dlg->feature_field, NULL); } else { - vn.choice = ff->type; + vn.choice = (Uint1)ff->type; vn.data.ptrvalue = NULL; vn.next = NULL; PointerToDialog (dlg->feature_type, &vn); @@ -7214,7 +7234,6 @@ static ValNodePtr TestRnaFeatureTypeDialog (DialoG d) { RnaFeatureTypeDlgPtr dlg; ValNodePtr vnp, err_list = NULL; - CharPtr c; dlg = (RnaFeatureTypeDlgPtr) GetObjectExtra (d); if (dlg == NULL) return NULL; @@ -7222,12 +7241,6 @@ static ValNodePtr TestRnaFeatureTypeDialog (DialoG d) vnp = DialogToPointer (dlg->rna_type_dlg); if (vnp == NULL) { ValNodeAddPointer (&err_list, 0, "no type"); - } else if (vnp->choice == RnaFeatType_ncRNA) { - c = DialogToPointer (dlg->ncrna_class_dlg); - if (StringHasNoText (c)) { - ValNodeAddPointer (&err_list, 0, "no class"); - } - c = MemFree (c); } vnp = ValNodeFree (vnp); return err_list; @@ -7300,7 +7313,7 @@ static void RnaQualToDialog (DialoG d, Pointer data) PointerToDialog (dlg->field_dlg, NULL); } else { PointerToDialog (dlg->rnafeat_dlg, q->type); - vn.choice = q->field; + vn.choice = (Uint1)q->field; vn.data.ptrvalue = NULL; vn.next = NULL; PointerToDialog (dlg->field_dlg, &vn); @@ -7608,7 +7621,7 @@ static void FieldTypeToDialog (DialoG d, Pointer data) PointerToDialog (dlg->feature_type, NULL); PointerToDialog (dlg->feature_field, NULL); } else { - vn.choice = ffp->type; + vn.choice = (Uint1)ffp->type; vn.data.ptrvalue = NULL; vn.next = NULL; PointerToDialog (dlg->feature_type, &vn); @@ -7865,7 +7878,7 @@ static void FieldPairTypeToDialog (DialoG d, Pointer data) PointerToDialog (dlg->feature_field_from, NULL); PointerToDialog (dlg->feature_field_to, NULL); } else { - vn.choice = ffp->type; + vn.choice = (Uint1)ffp->type; vn.data.ptrvalue = NULL; vn.next = NULL; PointerToDialog (dlg->feature_type, &vn); @@ -7904,11 +7917,11 @@ static void FieldPairTypeToDialog (DialoG d, Pointer data) PointerToDialog (dlg->rna_field_to, NULL); } else { PointerToDialog (dlg->rna_feat_dlg, rna_quals->type); - vn.choice = rna_quals->field_from; + vn.choice = (Uint1)rna_quals->field_from; vn.data.ptrvalue = NULL; vn.next = NULL; PointerToDialog (dlg->rna_field_from, &vn); - vn.choice = rna_quals->field_to; + vn.choice = (Uint1)rna_quals->field_to; PointerToDialog (dlg->rna_field_to, &vn); } dlg->field_type = FieldPairType_rna_field; @@ -9617,6 +9630,9 @@ typedef struct applyfeatureactiondlg { /* for import features */ DialoG quals; + /* for source features */ + DialoG src_quals; + /* for all */ TexT gene_locus; TexT gene_description; @@ -9811,6 +9827,7 @@ static void ApplyFeatureActionToDialog (DialoG d, Pointer data) LocationIntervalPtr lint; CharPtr txt; ValNode vn; + BioSourcePtr biop; dlg = (ApplyFeatureActionDlgPtr) GetObjectExtra (d); if (dlg == NULL) { @@ -9845,6 +9862,9 @@ static void ApplyFeatureActionToDialog (DialoG d, Pointer data) /* for import features */ PointerToDialog (dlg->quals, NULL); + + /* for source features */ + PointerToDialog (dlg->src_quals, NULL); /* for all */ SafeSetTitle (dlg->gene_locus, ""); @@ -9912,6 +9932,11 @@ static void ApplyFeatureActionToDialog (DialoG d, Pointer data) SafeSetTitle (dlg->protein_name, FindFeatQualValue (action->fields, Feat_qual_legal_product)); SafeSetTitle (dlg->protein_description, FindFeatQualValue (action->fields, Feat_qual_legal_description)); + /* for source feature */ + biop = BioSourceFromSourceQualVals (action->src_fields); + PointerToDialog (dlg->src_quals, biop); + biop = BioSourceFree (biop); + /* for RNA */ PointerToDialog (dlg->ncrna_class, FindFeatQualValue (action->fields, Feat_qual_legal_ncRNA_class)); SafeSetTitle (dlg->rna_name, FindFeatQualValue (action->fields, Feat_qual_legal_product)); @@ -9939,6 +9964,7 @@ static Pointer DialogToApplyFeatureAction (DialoG d) Int4 frame; GBQualPtr gbq; ValNodePtr vnp; + BioSourcePtr biop; dlg = (ApplyFeatureActionDlgPtr) GetObjectExtra (d); if (dlg == NULL) { @@ -10041,6 +10067,13 @@ static Pointer DialogToApplyFeatureAction (DialoG d) txt = MemFree (txt); } + /* for source features */ + if (dlg->src_quals != NULL) { + biop = DialogToPointer (dlg->src_quals); + action->src_fields = SourceQualValsFromBioSourcePtr (biop); + biop = BioSourceFree (biop); + } + /* for import features */ if (dlg->quals != NULL) { gbq = DialogToPointer (dlg->quals); @@ -10150,6 +10183,7 @@ ApplyFeatureActionDialog ButtoN comment_btn; ValNodePtr feature_type_list = NULL; SeqFeatPtr sfp; + BioSourcePtr biop; dlg = (ApplyFeatureActionDlgPtr) MemNew (sizeof (ApplyFeatureActionDlgData)); p = HiddenGroup (h, -1, 0, NULL); @@ -10248,7 +10282,13 @@ ApplyFeatureActionDialog PopupItem (dlg->reading_frame, "3"); PopupItem (dlg->reading_frame, "Best"); SetValue (dlg->reading_frame, 4); - } + } else if (action != NULL && action->type == Feature_type_source) { + dlg->src_quals = BioSourceDialog (p); + biop = BioSourceFromSourceQualVals (action->src_fields); + PointerToDialog (dlg->src_quals, biop); + biop = BioSourceFree (biop); + } + r = HiddenGroup (p, 2, 0, NULL); if (action != NULL && action->type == Feature_type_cds) { @@ -10273,7 +10313,7 @@ ApplyFeatureActionDialog StaticPrompt (r, "ncRNA Class", 0, dialogTextHeight, programFont, 'l'); dlg->ncrna_class = CreatencRNAClassDialog (r, FALSE, NULL, NULL); } - } else if (action != NULL && action->type != Feature_type_gene) { + } else if (action != NULL && action->type != Feature_type_gene && action->type != Feature_type_source) { StaticPrompt (r, "Qualifiers", 0, dialogTextHeight, programFont, 'l'); sfp = CreateFeatureWithImportFeatureQuals (action); dlg->quals = NewCreateImportFields (r, GetFeatureNameFromFeatureType (action->type), sfp, FALSE); @@ -10295,14 +10335,42 @@ ApplyFeatureActionDialog SetObjectExtra (comment_btn, dlg, NULL); } - AlignObjects (ALIGN_CENTER, (HANDLE) dlg->feature_type_dlg, - (HANDLE) parts_group, - (HANDLE) g, - (HANDLE) dlg->strand_group, - (HANDLE) indexer_only_group, - (HANDLE) r, - (HANDLE) (frame_grp != NULL ? frame_grp : comment_btns_grp), - NULL); + if (frame_grp != NULL) { + AlignObjects (ALIGN_CENTER, (HANDLE) dlg->feature_type_dlg, + (HANDLE) parts_group, + (HANDLE) g, + (HANDLE) dlg->strand_group, + (HANDLE) indexer_only_group, + (HANDLE) r, + (HANDLE) frame_grp, + NULL); + } else if (comment_btns_grp != NULL) { + AlignObjects (ALIGN_CENTER, (HANDLE) dlg->feature_type_dlg, + (HANDLE) parts_group, + (HANDLE) g, + (HANDLE) dlg->strand_group, + (HANDLE) indexer_only_group, + (HANDLE) r, + (HANDLE) comment_btns_grp, + NULL); + } else if (dlg->src_quals != NULL) { + AlignObjects (ALIGN_CENTER, (HANDLE) dlg->feature_type_dlg, + (HANDLE) parts_group, + (HANDLE) g, + (HANDLE) dlg->strand_group, + (HANDLE) indexer_only_group, + (HANDLE) r, + (HANDLE) dlg->src_quals, + NULL); + } else { + AlignObjects (ALIGN_CENTER, (HANDLE) dlg->feature_type_dlg, + (HANDLE) parts_group, + (HANDLE) g, + (HANDLE) dlg->strand_group, + (HANDLE) indexer_only_group, + (HANDLE) r, + NULL); + } return (DialoG) p; } @@ -10331,7 +10399,7 @@ static void RemoveFeatureActionToDialog (DialoG d, Pointer data) PointerToDialog (dlg->feature_type_dlg, NULL); PointerToDialog (dlg->constraint_dlg, NULL); } else { - vn.choice = action->type; + vn.choice = (Uint1)action->type; vn.data.ptrvalue = NULL; vn.next = NULL; PointerToDialog (dlg->feature_type_dlg, &vn); @@ -10594,9 +10662,9 @@ static void ConvertFeatureActionToDialog (DialoG d, Pointer data) } else { vn.next = NULL; vn.data.ptrvalue = NULL; - vn.choice = action->type_from; + vn.choice = (Uint1)action->type_from; PointerToDialog (dlg->feature_type_from_dlg, &vn); - vn.choice = action->type_to; + vn.choice = (Uint1)action->type_to; PointerToDialog (dlg->feature_type_to_dlg, &vn); /* set source options */ if (action->src_options != NULL && action->src_options->choice == ConvertFeatureSrcOptions_cds) { @@ -10829,6 +10897,289 @@ static DialoG ConvertFeatureActionDialog } +static DialoG DescriptorTypeDialog (GrouP h, Nlm_ChangeNotifyProc change_notify, Pointer change_userdata) +{ + ValNodePtr desc_list = NULL; + + AddAllDescriptorsToChoiceList (&desc_list); + return ValNodeSelectionDialog (h, desc_list, TALL_SELECTION_LIST, ValNodeStringName, + ValNodeSimpleDataFree, ValNodeStringCopy, + ValNodeChoiceMatch, "descriptor type", + change_notify, change_userdata, FALSE); +} + + +typedef struct removedescriptoractiondlg { + DIALOG_MESSAGE_BLOCK + DialoG descriptor_type_dlg; + + DialoG constraint_dlg; + Nlm_ChangeNotifyProc change_notify; + Pointer change_userdata; +} RemoveDescriptorActionDlgData, PNTR RemoveDescriptorActionDlgPtr; + + +static void RemoveDescriptorActionToDialog (DialoG d, Pointer data) +{ + RemoveDescriptorActionDlgPtr dlg; + RemoveDescriptorActionPtr action; + ValNode vn; + + dlg = (RemoveDescriptorActionDlgPtr) GetObjectExtra (d); + if (dlg == NULL) { + return; + } + + vn.data.ptrvalue = NULL; + vn.next = NULL; + + action = (RemoveDescriptorActionPtr) data; + if (action == NULL) { + vn.choice = Descriptor_type_all; + PointerToDialog (dlg->descriptor_type_dlg, &vn); + PointerToDialog (dlg->constraint_dlg, NULL); + } else { + vn.choice = (Uint1)action->type; + PointerToDialog (dlg->descriptor_type_dlg, &vn); + PointerToDialog (dlg->constraint_dlg, action->constraint); + } +} + + +static Pointer DialogToRemoveDescriptorAction (DialoG d) +{ + RemoveDescriptorActionDlgPtr dlg; + RemoveDescriptorActionPtr action; + ValNodePtr vnp; + + dlg = (RemoveDescriptorActionDlgPtr) GetObjectExtra (d); + if (dlg == NULL) { + return NULL; + } + + action = RemoveDescriptorActionNew(); + + vnp = DialogToPointer (dlg->descriptor_type_dlg); + if (vnp == NULL) { + action->type = Descriptor_type_all; + } else { + action->type = vnp->choice; + } + vnp = ValNodeFree (vnp); + action->constraint = DialogToPointer (dlg->constraint_dlg); + return action; +} + + +static ValNodePtr TestRemoveDescriptorActionDialog (DialoG d) +{ + RemoveDescriptorActionDlgPtr dlg; + + dlg = (RemoveDescriptorActionDlgPtr) GetObjectExtra (d); + if (dlg == NULL) { + return NULL; + } + + return TestDialog (dlg->descriptor_type_dlg); +} + + +static DialoG RemoveDescriptorActionDialog +(GrouP h, + Boolean indexer_version, + Nlm_ChangeNotifyProc change_notify, + Pointer change_userdata) +{ + RemoveDescriptorActionDlgPtr dlg; + GrouP p; + + dlg = (RemoveDescriptorActionDlgPtr) MemNew (sizeof (RemoveDescriptorActionDlgData)); + p = HiddenGroup (h, -1, 0, NULL); + SetGroupSpacing (p, 10, 10); + SetObjectExtra (p, dlg, StdCleanupExtraProc); + + dlg->dialog = (DialoG) p; + dlg->todialog = RemoveDescriptorActionToDialog; + dlg->fromdialog = DialogToRemoveDescriptorAction; + dlg->dialogmessage = NULL; + dlg->testdialog = TestRemoveDescriptorActionDialog; + dlg->change_notify = change_notify; + dlg->change_userdata = change_userdata; + + dlg->descriptor_type_dlg = DescriptorTypeDialog (p, change_notify, change_userdata); + + dlg->constraint_dlg = ConstraintSetDialog (p, change_notify, change_userdata); + + AlignObjects (ALIGN_CENTER, (HANDLE) dlg->descriptor_type_dlg, (HANDLE) dlg->constraint_dlg, NULL); + + return (DialoG) p; +} + + +typedef struct autodefactiondlg { + DIALOG_MESSAGE_BLOCK + DialoG modifiers_dlg; + PopuP clause_list_type_popup; + + Nlm_ChangeNotifyProc change_notify; + Pointer change_userdata; +} AutodefActionDlgData, PNTR AutodefActionDlgPtr; + + +static void AutodefActionToDialog(DialoG d, Pointer data) +{ + AutodefActionDlgPtr dlg; + AutodefActionPtr action; + ValNodePtr list = NULL, vnp; + + dlg = (AutodefActionDlgPtr) GetObjectExtra (d); + if (dlg == NULL) { + return; + } + action = (AutodefActionPtr) data; + if (action == NULL) { + PointerToDialog (dlg->modifiers_dlg, NULL); + SetValue (dlg->clause_list_type_popup, 2); + } else { + /* populate modifiers */ + for (vnp = action->modifiers; vnp != NULL; vnp = vnp->next) { + ValNodeAddPointer (&list, 0, GetSourceQualName (vnp->data.intvalue)); + } + PointerToDialog (dlg->modifiers_dlg, list); + + /* populate clause list type */ + switch (action->clause_list_type) { + case Autodef_list_type_feature_list: + SetValue (dlg->clause_list_type_popup, 1); + break; + case Autodef_list_type_complete_sequence: + SetValue (dlg->clause_list_type_popup, 2); + break; + case Autodef_list_type_complete_genome: + SetValue (dlg->clause_list_type_popup, 3); + break; + default: + SetValue (dlg->clause_list_type_popup, 2); + break; + } + } +} + + +static Pointer DialogToAutodefAction (DialoG d) +{ + AutodefActionDlgPtr dlg; + AutodefActionPtr action = NULL; + Int2 v; + ValNodePtr list, vnp; + + dlg = (AutodefActionDlgPtr) GetObjectExtra (d); + if (dlg == NULL) { + return NULL; + } + + action = AutodefActionNew(); + v = GetValue (dlg->clause_list_type_popup); + switch (v) { + case 1: + action->clause_list_type = Autodef_list_type_feature_list; + break; + case 2: + action->clause_list_type = Autodef_list_type_complete_sequence; + break; + case 3: + action->clause_list_type = Autodef_list_type_complete_genome; + break; + default: + action->clause_list_type = Autodef_list_type_feature_list; + break; + } + + list = DialogToPointer (dlg->modifiers_dlg); + for (vnp = list; vnp != NULL; vnp = vnp->next) { + ValNodeAddInt (&(action->modifiers), SourceQualChoice_textqual, GetSourceQualTypeByName (vnp->data.ptrvalue)); + } + list = ValNodeFree (list); + + return action; +} + + +static void ChangeAutodefPopup (PopuP p) +{ + AutodefActionDlgPtr dlg; + + dlg = (AutodefActionDlgPtr) GetObjectExtra (p); + if (dlg == NULL) { + return; + } + if (dlg->change_notify != NULL) { + (dlg->change_notify) (dlg->change_userdata); + } +} + + +static DialoG AutodefActionDialog +(GrouP h, + Boolean indexer_version, + Nlm_ChangeNotifyProc change_notify, + Pointer change_userdata) +{ + AutodefActionDlgPtr dlg; + GrouP p; + PrompT ppt1, ppt2; + ValNodePtr src_quals = NULL; + ValNode vn; + + dlg = (AutodefActionDlgPtr) MemNew (sizeof (AutodefActionDlgData)); + p = HiddenGroup (h, -1, 0, NULL); + SetGroupSpacing (p, 10, 10); + SetObjectExtra (p, dlg, StdCleanupExtraProc); + + dlg->dialog = (DialoG) p; + dlg->todialog = AutodefActionToDialog; + dlg->fromdialog = DialogToAutodefAction; + dlg->dialogmessage = NULL; + dlg->testdialog = NULL; + dlg->change_notify = change_notify; + dlg->change_userdata = change_userdata; + + ppt1 = StaticPrompt (p, "Modifiers", 0, dialogTextHeight, systemFont, 'l'); + + ValNodeAddPointer (&src_quals, 0, StringSave ("clone")); + ValNodeAddPointer (&src_quals, 0, StringSave ("cultivar")); + ValNodeAddPointer (&src_quals, 0, StringSave ("haplogroup")); + ValNodeAddPointer (&src_quals, 0, StringSave ("isolate")); + ValNodeAddPointer (&src_quals, 0, StringSave ("strain")); + ValNodeAddPointer (&src_quals, 0, StringSave ("specimen-voucher")); + + dlg->modifiers_dlg = ValNodeSelectionDialog (p, src_quals, SHORT_SELECTION_LIST, + ValNodeStringName, + ValNodeSimpleDataFree, + ValNodeStringCopy, + ValNodeStringMatch, + "source qual", + change_notify, change_userdata, TRUE); + vn.choice = 0; + vn.next = NULL; + vn.data.ptrvalue = "haplogroup"; + PointerToDialog (dlg->modifiers_dlg, &vn); + + ppt2 = StaticPrompt (p, "Features or Complete", 0, dialogTextHeight, systemFont, 'l'); + + dlg->clause_list_type_popup = PopupList (p, TRUE, ChangeAutodefPopup); + SetObjectExtra (dlg->clause_list_type_popup, dlg, NULL); + PopupItem (dlg->clause_list_type_popup, "List Features"); + PopupItem (dlg->clause_list_type_popup, "Complete Sequence"); + PopupItem (dlg->clause_list_type_popup, "Complete Genome"); + SetValue (dlg->clause_list_type_popup, 2); + + AlignObjects (ALIGN_CENTER, (HANDLE) ppt1, (HANDLE) dlg->modifiers_dlg, (HANDLE) ppt2, (HANDLE) dlg->clause_list_type_popup, NULL); + + return (DialoG) p; +} + + typedef struct editfeaturelocationactiondlg { DIALOG_MESSAGE_BLOCK DialoG feature_type_dlg; @@ -10921,7 +11272,7 @@ static void EditFeatureLocationActionToDialog (DialoG d, Pointer data) ResetFeatureLocationActionEditType (dlg); PointerToDialog (dlg->constraint_dlg, NULL); } else { - vn.choice = action->type; + vn.choice = (Uint1)action->type; vn.data.ptrvalue = NULL; vn.next = NULL; PointerToDialog (dlg->feature_type_dlg, &vn); @@ -11469,11 +11820,11 @@ static void ChangeParseSrcDialogPopup (PopuP p) val = GetValue (dlg->main_choice); switch (val) { - case 4: + case 5: Show (dlg->src_grp); Hide (dlg->structured_comment_field); break; - case 7: + case 8: Show (dlg->structured_comment_field); Hide (dlg->src_grp); break; @@ -11531,9 +11882,9 @@ static void ParseSrcToDialog (DialoG d, Pointer data) SetValue (dlg->main_choice, 3); break; case ParseSrc_org: - SetValue (dlg->main_choice, 4); org = (ParseSrcOrgPtr) src->data.ptrvalue; if (org == NULL) { + SetValue (dlg->main_choice, 5); SetValue (dlg->feat_or_desc, 1); PointerToDialog (dlg->src_qual_choice, NULL); } else { @@ -11552,34 +11903,38 @@ static void ParseSrcToDialog (DialoG d, Pointer data) break; } if (org->field == NULL) { - PointerToDialog (dlg->src_qual_choice, NULL); + PointerToDialog (dlg->src_qual_choice, NULL); + SetValue (dlg->main_choice, 5); } else if (org->field->choice == ParseSrcOrgChoice_taxname_after_binomial) { - vn.choice = 0; - vn.data.ptrvalue = kTaxnameAfterBinomialString; - vn.next = NULL; - PointerToDialog (dlg->src_qual_choice, &vn); + SetValue (dlg->main_choice, 9); } else if (org->field->choice == ParseSrcOrgChoice_source_qual) { vn.choice = 0; vn.data.ptrvalue = GetSourceQualName (org->field->data.intvalue); vn.next = NULL; PointerToDialog (dlg->src_qual_choice, &vn); + if (org->field->data.intvalue == Source_qual_taxname) { + SetValue (dlg->main_choice, 4); + } else { + SetValue (dlg->main_choice, 5); + } } else { PointerToDialog (dlg->src_qual_choice, NULL); + SetValue (dlg->main_choice, 5); } } break; case ParseSrc_comment: - SetValue (dlg->main_choice, 5); + SetValue (dlg->main_choice, 6); break; case ParseSrc_bankit_comment: - SetValue (dlg->main_choice, 6); + SetValue (dlg->main_choice, 7); break; case ParseSrc_structured_comment: - SetValue (dlg->main_choice, 7); + SetValue (dlg->main_choice, 8); SetTitle (dlg->structured_comment_field, src->data.ptrvalue); break; case ParseSrc_file_id: - SetValue (dlg->main_choice, 8); + SetValue (dlg->main_choice, 10); break; default: SetValue (dlg->main_choice, 0); @@ -11631,6 +11986,29 @@ static Pointer DialogToParseSrc (DialoG d) org->type = Object_type_constraint_any; break; } + org->field = ValNodeNew (NULL); + org->field->choice = ParseSrcOrgChoice_source_qual; + org->field->data.intvalue = Source_qual_taxname; + src = ValNodeNew (NULL); + src->choice = ParseSrc_org; + src->data.ptrvalue = org; + break; + case 5: + org = ParseSrcOrgNew (); + switch (GetValue (dlg->feat_or_desc)) { + case 1: + org->type = Object_type_constraint_any; + break; + case 2: + org->type = Object_type_constraint_feature; + break; + case 3: + org->type = Object_type_constraint_descriptor; + break; + default: + org->type = Object_type_constraint_any; + break; + } vnp = (ValNodePtr) DialogToPointer (dlg->src_qual_choice); if (vnp != NULL) { org->field = ValNodeNew (NULL); @@ -11646,20 +12024,42 @@ static Pointer DialogToParseSrc (DialoG d) src->choice = ParseSrc_org; src->data.ptrvalue = org; break; - case 5: + case 6: src = ValNodeNew (NULL); src->choice = ParseSrc_comment; break; - case 6: + case 7: src = ValNodeNew (NULL); src->choice = ParseSrc_bankit_comment; break; - case 7: + case 8: src = ValNodeNew (NULL); src->choice = ParseSrc_structured_comment; src->data.ptrvalue = SaveStringFromText (dlg->structured_comment_field); break; - case 8: + case 9: + org = ParseSrcOrgNew (); + switch (GetValue (dlg->feat_or_desc)) { + case 1: + org->type = Object_type_constraint_any; + break; + case 2: + org->type = Object_type_constraint_feature; + break; + case 3: + org->type = Object_type_constraint_descriptor; + break; + default: + org->type = Object_type_constraint_any; + break; + } + org->field = ValNodeNew (NULL); + org->field->choice = ParseSrcOrgChoice_taxname_after_binomial; + src = ValNodeNew (NULL); + src->choice = ParseSrc_org; + src->data.ptrvalue = org; + break; + case 10: src = ValNodeNew (NULL); src->choice = ParseSrc_file_id; break; @@ -11678,11 +12078,11 @@ static ValNodePtr TestParseSrcDialog (DialoG d) if (dlg == NULL) return NULL; val = GetValue (dlg->main_choice); - if (val < 1 || val > 8) { + if (val < 1 || val > 10) { ValNodeAddPointer (&err_list, 0, "main choice"); - } else if (val == 4) { + } else if (val == 5) { ValNodeLink (&err_list, TestDialog (dlg->src_qual_choice)); - } else if (val == 7 && TextHasNoText (dlg->structured_comment_field)) { + } else if (val == 8 && TextHasNoText (dlg->structured_comment_field)) { ValNodeAddPointer (&err_list, 0, "structured comment field"); } return err_list; @@ -11711,13 +12111,15 @@ static DialoG ParseSrcDialog (GrouP h, Nlm_ChangeNotifyProc change_notify, Point dlg->main_choice = PopupList (p, TRUE, ChangeParseSrcDialogPopup); SetObjectExtra (dlg->main_choice, dlg, NULL); - PopupItem (dlg->main_choice, "Defline"); - PopupItem (dlg->main_choice, "FlatFile"); + PopupItem (dlg->main_choice, "Definition Line"); + PopupItem (dlg->main_choice, "GenBank FlatFile"); PopupItem (dlg->main_choice, "Local ID"); + PopupItem (dlg->main_choice, "Organism Name"); PopupItem (dlg->main_choice, "Source Qualifier"); PopupItem (dlg->main_choice, "Comment"); PopupItem (dlg->main_choice, "BankIT Comment"); PopupItem (dlg->main_choice, "Structured Comment"); + PopupItem (dlg->main_choice, "Taxname after Binomial"); PopupItem (dlg->main_choice, "File ID"); SetValue (dlg->main_choice, 4); @@ -11744,6 +12146,7 @@ static DialoG ParseSrcDialog (GrouP h, Nlm_ChangeNotifyProc change_notify, Point RadioButton (dlg->feat_or_desc, "Features Only"); SetValue (dlg->feat_or_desc, 1); AlignObjects (ALIGN_CENTER, (HANDLE) dlg->src_qual_choice, (HANDLE) dlg->feat_or_desc, NULL); + Hide (dlg->src_grp); dlg->structured_comment_field = DialogText (g, "", 20, ChangeParseSrcDialogText); SetObjectExtra (dlg->structured_comment_field, dlg, NULL); @@ -11759,16 +12162,36 @@ typedef struct parsedstdlg { DIALOG_MESSAGE_BLOCK PopuP main_choice; GrouP src_grp; + PopuP biosrc_list; DialoG src_qual_choice; GrouP feat_or_desc; + PopuP gene_field; + DialoG rna_field; + PopuP protein_field; GrouP feature_field_grp; DialoG feature_type_choice; DialoG feature_field_choice; + DialoG feature_note; TexT dbxref_db; Nlm_ChangeNotifyProc change_notify; Pointer change_userdata; } ParseDstDlgData, PNTR ParseDstDlgPtr; +typedef enum { + eParseDstDialog_defline = 1, + eParseDstDialog_biosrc, + eParseDstDialog_srcqual, + eParseDstDialog_genefield, + eParseDstDialog_rnafield, + eParseDstDialog_cdscomment, + eParseDstDialog_proteinfield, + eParseDstDialog_featqual, + eParseDstDialog_featnote, + eParseDstDialog_commentdesc, + eParseDstDialog_dbxref +} EParseDstDialog; + +#define eParseDstDialog_last eParseDstDialog_dbxref static void ChangeParseDstDialogPopup (PopuP p) { @@ -11780,25 +12203,90 @@ static void ChangeParseDstDialogPopup (PopuP p) val = GetValue (dlg->main_choice); switch (val) { - case 2: + case eParseDstDialog_biosrc: Show (dlg->src_grp); + Show (dlg->biosrc_list); + Hide (dlg->src_qual_choice); Hide (dlg->feature_field_grp); Hide (dlg->dbxref_db); + Hide (dlg->rna_field); + Hide (dlg->gene_field); + Hide (dlg->protein_field); + Hide (dlg->feature_note); break; - case 3: + case eParseDstDialog_srcqual: + Show (dlg->src_grp); + Hide (dlg->biosrc_list); + Show (dlg->src_qual_choice); + Hide (dlg->feature_field_grp); + Hide (dlg->dbxref_db); + Hide (dlg->rna_field); + Hide (dlg->gene_field); + Hide (dlg->protein_field); + Hide (dlg->feature_note); + break; + case eParseDstDialog_genefield: + Show (dlg->gene_field); + Hide (dlg->src_grp); + Hide (dlg->feature_field_grp); + Hide (dlg->dbxref_db); + Hide (dlg->rna_field); + Hide (dlg->protein_field); + Hide (dlg->feature_note); + break; + case eParseDstDialog_rnafield: + Show (dlg->rna_field); + Hide (dlg->src_grp); + Hide (dlg->feature_field_grp); + Hide (dlg->dbxref_db); + Hide (dlg->gene_field); + Hide (dlg->protein_field); + Hide (dlg->feature_note); + break; + case eParseDstDialog_proteinfield: + Show (dlg->protein_field); + Hide (dlg->rna_field); + Hide (dlg->src_grp); + Hide (dlg->feature_field_grp); + Hide (dlg->dbxref_db); + Hide (dlg->gene_field); + Hide (dlg->feature_note); + break; + case eParseDstDialog_featqual: Hide (dlg->src_grp); Show (dlg->feature_field_grp); Hide (dlg->dbxref_db); + Hide (dlg->rna_field); + Hide (dlg->gene_field); + Hide (dlg->protein_field); + Hide (dlg->feature_note); break; - case 4: + case eParseDstDialog_featnote: + Show (dlg->feature_note); + Hide (dlg->src_grp); + Hide (dlg->feature_field_grp); + Hide (dlg->dbxref_db); + Hide (dlg->rna_field); + Hide (dlg->gene_field); + Hide (dlg->protein_field); + break; + case eParseDstDialog_dbxref: Hide (dlg->src_grp); Hide (dlg->feature_field_grp); Show (dlg->dbxref_db); + Hide (dlg->rna_field); + Hide (dlg->gene_field); + Hide (dlg->protein_field); + Hide (dlg->feature_note); break; default: Hide (dlg->src_grp); Hide (dlg->feature_field_grp); Hide (dlg->dbxref_db); + Hide (dlg->rna_field); + Hide (dlg->gene_field); + Hide (dlg->protein_field); + Hide (dlg->feature_note); break; } if (dlg->change_notify != NULL) { @@ -11833,16 +12321,16 @@ static void ParseDstToDialog (DialoG d, Pointer data) dst = (ValNodePtr) data; if (dst == NULL) { - SetValue (dlg->main_choice, 1); + SetValue (dlg->main_choice, eParseDstDialog_defline); } else { switch (dst->choice) { case ParseDest_defline: - SetValue (dlg->main_choice, 1); + SetValue (dlg->main_choice, eParseDstDialog_defline ); break; case ParseDest_org: - SetValue (dlg->main_choice, 2); org = (ParseDstOrgPtr) dst->data.ptrvalue; if (org == NULL) { + SetValue (dlg->main_choice, eParseDstDialog_srcqual); PointerToDialog (dlg->src_qual_choice, NULL); SetValue (dlg->feat_or_desc, 1); } else { @@ -11862,31 +12350,53 @@ static void ParseDstToDialog (DialoG d, Pointer data) } if (org->field == NULL) { PointerToDialog (dlg->src_qual_choice, NULL); + SetValue (dlg->main_choice, eParseDstDialog_srcqual); } else { - vn.choice = 0; - vn.data.ptrvalue = GetSourceQualName (org->field->data.intvalue); - vn.next = NULL; - PointerToDialog (dlg->src_qual_choice, &vn); + switch (org->field->data.intvalue) { + case Source_qual_taxname: + SetValue (dlg->biosrc_list, 1); + SetValue (dlg->main_choice, eParseDstDialog_biosrc); + break; + case Source_qual_lineage: + SetValue (dlg->biosrc_list, 2); + SetValue (dlg->main_choice, eParseDstDialog_biosrc); + break; + case Source_qual_division: + SetValue (dlg->biosrc_list, 3); + SetValue (dlg->main_choice, eParseDstDialog_biosrc); + break; + default: + vn.choice = 0; + vn.data.ptrvalue = GetSourceQualName (org->field->data.intvalue); + vn.next = NULL; + PointerToDialog (dlg->src_qual_choice, &vn); + SetValue (dlg->main_choice, eParseDstDialog_biosrc); + break; + } } } break; case ParseDest_featqual: - SetValue (dlg->main_choice, 3); + /* TODO - look for RNA fields, gene fields, cds comment, feature note? */ + SetValue (dlg->main_choice, eParseDstDialog_featqual); ffp = (FeatureFieldLegalPtr) dst->data.ptrvalue; if (ffp == NULL) { PointerToDialog (dlg->feature_type_choice, NULL); PointerToDialog (dlg->feature_field_choice, NULL); } else { - vn.choice = ffp->type; + vn.choice = (Uint1)ffp->type; vn.data.ptrvalue = NULL; vn.next = NULL; PointerToDialog (dlg->feature_type_choice, &vn); - vn.choice = ffp->field; + vn.choice = (Uint1)ffp->field; PointerToDialog (dlg->feature_field_choice, &vn); } break; + case ParseDest_comment_descriptor: + SetValue (dlg->main_choice, eParseDstDialog_commentdesc); + break; case ParseDest_dbxref: - SetValue (dlg->main_choice, 4); + SetValue (dlg->main_choice, eParseDstDialog_dbxref); SetTitle (dlg->dbxref_db, dst->data.ptrvalue); break; } @@ -11901,19 +12411,59 @@ static Pointer DialogToParseDst (DialoG d) ParseDstDlgPtr dlg; ParseDstOrgPtr org; FeatureFieldLegalPtr ffp; + FeatureFieldPtr ff; ValNodePtr dst = NULL, vnp; - Int2 val; + Int2 val, subval; + RnaQualPtr rq; dlg = (ParseDstDlgPtr) GetObjectExtra (d); if (dlg == NULL) return NULL; val = GetValue (dlg->main_choice); switch (val) { - case 1: + case eParseDstDialog_defline: dst = ValNodeNew (NULL); dst->choice = ParseDest_defline; break; - case 2: + case eParseDstDialog_biosrc: + org = ParseDstOrgNew (); + switch (GetValue (dlg->feat_or_desc)) { + case 1: + org->type = Object_type_constraint_any; + break; + case 2: + org->type = Object_type_constraint_feature; + break; + case 3: + org->type = Object_type_constraint_descriptor; + break; + default: + org->type = Object_type_constraint_any; + break; + } + subval = GetValue (dlg->biosrc_list); + switch (subval) { + case 1: + org->field = ValNodeNew (NULL); + org->field->choice = SourceQualChoice_textqual; + org->field->data.intvalue = Source_qual_taxname; + break; + case 2: + org->field = ValNodeNew (NULL); + org->field->choice = SourceQualChoice_textqual; + org->field->data.intvalue = Source_qual_lineage; + break; + case 3: + org->field = ValNodeNew (NULL); + org->field->choice = SourceQualChoice_textqual; + org->field->data.intvalue = Source_qual_division; + break; + } + dst = ValNodeNew (NULL); + dst->choice = ParseDest_org; + dst->data.ptrvalue = org; + break; + case eParseDstDialog_srcqual: org = ParseDstOrgNew (); switch (GetValue (dlg->feat_or_desc)) { case 1: @@ -11940,7 +12490,170 @@ static Pointer DialogToParseDst (DialoG d) dst->choice = ParseDest_org; dst->data.ptrvalue = org; break; - case 3: + case eParseDstDialog_genefield: + subval = GetValue (dlg->gene_field); + switch (subval) { + case 1: /* locus */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_gene; + ffp->field = Feat_qual_legal_gene; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case 2: /* description */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_gene; + ffp->field = Feat_qual_legal_gene_description; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case 3: /* comment */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_gene; + ffp->field = Feat_qual_legal_note; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case 4: /* allele */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_gene; + ffp->field = Feat_qual_legal_allele; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case 5: /* maploc */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_gene; + ffp->field = Feat_qual_legal_map; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case 6: /* locus tag */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_gene; + ffp->field = Feat_qual_legal_locus_tag; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case 7: /* synonym */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_gene; + ffp->field = Feat_qual_legal_synonym; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case 8: /* old locus tag */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_gene; + ffp->field = Feat_qual_legal_old_locus_tag; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + } + break; + case eParseDstDialog_rnafield: + /* get rna qual, translate to feature qual */ + rq = DialogToPointer (dlg->rna_field); + ff = FeatureFieldFromRnaQual (rq); + rq = RnaQualFree (rq); + if (ff != NULL) { + ffp = FeatureFieldLegalNew (); + ffp->type = ff->type; + if (ff->field != NULL) { + ffp->field = ff->field->data.intvalue; + } + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + } + ff = FeatureFieldFree (ff); + break; + case eParseDstDialog_cdscomment: + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_cds; + ffp->field = Feat_qual_legal_note; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case eParseDstDialog_proteinfield: + subval = GetValue (dlg->protein_field); + switch (subval) { + case 1: /* name */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_cds; + ffp->field = Feat_qual_legal_product; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case 2: /* description */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_prot; + ffp->field = Feat_qual_legal_description; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case 3: /* e.c. number */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_prot; + ffp->field = Feat_qual_legal_ec_number; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case 4: /* activity */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_prot; + ffp->field = Feat_qual_legal_activity; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case 5: /* comment */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_prot; + ffp->field = Feat_qual_legal_note; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case 6: /* mat-peptide name */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_mat_peptide_aa; + ffp->field = Feat_qual_legal_product; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case 7: /* mat-peptide description */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_mat_peptide_aa; + ffp->field = Feat_qual_legal_description; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case 8: /* mat-peptide comment */ + ffp = FeatureFieldLegalNew (); + ffp->type = Feature_type_mat_peptide_aa; + ffp->field = Feat_qual_legal_note; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + } + break; + case eParseDstDialog_featqual: ffp = FeatureFieldLegalNew (); vnp = (ValNodePtr) DialogToPointer (dlg->feature_type_choice); if (vnp != NULL) { @@ -11956,7 +12669,23 @@ static Pointer DialogToParseDst (DialoG d) dst->choice = ParseDest_featqual; dst->data.ptrvalue = ffp; break; - case 4: + case eParseDstDialog_featnote: + ffp = FeatureFieldLegalNew (); + vnp = (ValNodePtr) DialogToPointer (dlg->feature_note); + if (vnp != NULL) { + ffp->type = vnp->choice; + vnp = ValNodeFree (vnp); + } + ffp->field = Feat_qual_legal_note; + dst = ValNodeNew (NULL); + dst->choice = ParseDest_featqual; + dst->data.ptrvalue = ffp; + break; + case eParseDstDialog_commentdesc: + dst = ValNodeNew (NULL); + dst->choice = ParseDest_comment_descriptor; + break; + case eParseDstDialog_dbxref: dst = ValNodeNew (NULL); dst->choice = ParseDest_dbxref; dst->data.ptrvalue = SaveStringFromText (dlg->dbxref_db); @@ -11976,24 +12705,28 @@ static ValNodePtr TestParseDstDialog (DialoG d) if (dlg == NULL) return NULL; val = GetValue (dlg->main_choice); - if (val < 1 || val > 4) { + if (val < 1 || val > eParseDstDialog_last) { ValNodeAddPointer (&err_list, 0, "main choice"); - } else if (val == 2) { + } else if (val == eParseDstDialog_srcqual) { ValNodeLink (&err_list, TestDialog (dlg->src_qual_choice)); - } else if (val == 3) { + } else if (val == eParseDstDialog_rnafield) { + ValNodeLink (&err_list, TestDialog (dlg->rna_field)); + } else if (val == eParseDstDialog_featqual) { ValNodeLink (&err_list, TestDialog (dlg->feature_type_choice)); ValNodeLink (&err_list, TestDialog (dlg->feature_field_choice)); - } else if (val == 4 && TextHasNoText (dlg->dbxref_db)) { + } else if (val == eParseDstDialog_featnote) { + ValNodeLink (&err_list, TestDialog (dlg->feature_note)); + } else if (val == eParseDstDialog_dbxref && TextHasNoText (dlg->dbxref_db)) { ValNodeAddPointer (&err_list, 0, "dbxref db"); } return err_list; } - + static DialoG ParseDstDialog (GrouP h, Nlm_ChangeNotifyProc change_notify, Pointer change_userdata) { ParseDstDlgPtr dlg; - GrouP p, g; + GrouP p, g, g2; ValNodePtr qual_list; p = HiddenGroup (h, 2, 0, NULL); @@ -12011,22 +12744,37 @@ static DialoG ParseDstDialog (GrouP h, Nlm_ChangeNotifyProc change_notify, Point dlg->main_choice = PopupList (p, TRUE, ChangeParseDstDialogPopup); SetObjectExtra (dlg->main_choice, dlg, NULL); - PopupItem (dlg->main_choice, "Defline"); + PopupItem (dlg->main_choice, "Definition Line"); + PopupItem (dlg->main_choice, "Biosource"); PopupItem (dlg->main_choice, "Source Qualifier"); + PopupItem (dlg->main_choice, "Gene Field"); + PopupItem (dlg->main_choice, "RNA Field"); + PopupItem (dlg->main_choice, "CDS Comment"); + PopupItem (dlg->main_choice, "Protein Field"); PopupItem (dlg->main_choice, "Feature Qualifier"); + PopupItem (dlg->main_choice, "Feature Note"); + PopupItem (dlg->main_choice, "Comment Descriptor"); PopupItem (dlg->main_choice, "Dbxref"); SetValue (dlg->main_choice, 1); g = HiddenGroup (p, 0, 0, NULL); dlg->src_grp = HiddenGroup (g, -1, 0, NULL); + g2 = HiddenGroup (dlg->src_grp, 0, 0, NULL); qual_list = GetSourceQualList (FALSE); - dlg->src_qual_choice = ValNodeSelectionDialog (dlg->src_grp, qual_list, SHORT_SELECTION_LIST, + dlg->src_qual_choice = ValNodeSelectionDialog (g2, qual_list, SHORT_SELECTION_LIST, ValNodeStringName, ValNodeSimpleDataFree, ValNodeStringCopy, ValNodeStringMatch, "source qual", change_notify, change_userdata, FALSE); + dlg->biosrc_list = PopupList (g2, TRUE, ChangeParseDstDialogPopup); + SetObjectExtra (dlg->biosrc_list, dlg, NULL); + PopupItem (dlg->biosrc_list, "Organism Name"); + PopupItem (dlg->biosrc_list, "Lineage"); + PopupItem (dlg->biosrc_list, "Division"); + SetValue (dlg->biosrc_list, 1); + dlg->feat_or_desc = HiddenGroup (dlg->src_grp, 3, 0, NULL); RadioButton (dlg->feat_or_desc, "Descriptors and Features"); RadioButton (dlg->feat_or_desc, "Descriptors Only"); @@ -12035,11 +12783,43 @@ static DialoG ParseDstDialog (GrouP h, Nlm_ChangeNotifyProc change_notify, Point AlignObjects (ALIGN_CENTER, (HANDLE) dlg->src_qual_choice, (HANDLE) dlg->feat_or_desc, NULL); Hide (dlg->src_grp); + dlg->gene_field = PopupList (g, TRUE, ChangeParseDstDialogPopup); + SetObjectExtra (dlg->gene_field, dlg, NULL); + PopupItem (dlg->gene_field, "locus"); + PopupItem (dlg->gene_field, "description"); + PopupItem (dlg->gene_field, "comment"); + PopupItem (dlg->gene_field, "allele"); + PopupItem (dlg->gene_field, "maploc"); + PopupItem (dlg->gene_field, "locus_tag"); + PopupItem (dlg->gene_field, "synonym"); + PopupItem (dlg->gene_field, "old_locus_tag"); + SetValue (dlg->gene_field, 1); + Hide (dlg->gene_field); + + dlg->rna_field = RnaQualDialog (g, "RNA Type", change_notify, change_userdata); + Hide (dlg->rna_field); + + dlg->protein_field = PopupList (g, TRUE, ChangeParseDstDialogPopup); + SetObjectExtra (dlg->protein_field, dlg, NULL); + PopupItem (dlg->protein_field, "name"); + PopupItem (dlg->protein_field, "description"); + PopupItem (dlg->protein_field, "E.C. number"); + PopupItem (dlg->protein_field, "activity"); + PopupItem (dlg->protein_field, "comment"); + PopupItem (dlg->protein_field, "mat_peptide name"); + PopupItem (dlg->protein_field, "mat_peptide description"); + PopupItem (dlg->protein_field, "mat_peptide comment"); + SetValue (dlg->protein_field, 1); + Hide (dlg->protein_field); + dlg->feature_field_grp = HiddenGroup (g, 2, 0, NULL); dlg->feature_type_choice = FeatureTypeDialog (dlg->feature_field_grp, change_notify, change_userdata); dlg->feature_field_choice = LegalFeatQualChoiceDialog (dlg->feature_field_grp, change_notify, change_userdata); Hide (dlg->feature_field_grp); + dlg->feature_note = FeatureTypeDialog (g, change_notify, change_userdata); + Hide (dlg->feature_note); + dlg->dbxref_db = DialogText (g, "", 20, ChangeParseDstDialogText); SetObjectExtra (dlg->dbxref_db, dlg, NULL); Hide (dlg->dbxref_db); @@ -12165,9 +12945,10 @@ static ValNodePtr TestParseActionDialog (DialoG d) static DialoG -ParseActionDialog +ParseActionDialogEx (GrouP h, Boolean indexer_version, + Boolean use_existing_text, Nlm_ChangeNotifyProc change_notify, Pointer change_userdata) { @@ -12194,7 +12975,7 @@ ParseActionDialog dlg->src = ParseSrcDialog (g, change_notify, change_userdata); StaticPrompt (g, "And place in", 0, popupMenuHeight, programFont, 'r'); dlg->dst = ParseDstDialog (g, change_notify, change_userdata); - dlg->cap_change = NormalGroup (p, 3, 0, "Capitalization", programFont, NULL); + dlg->cap_change = NormalGroup (p, 4, 0, "Capitalization", programFont, NULL); SetGroupSpacing (dlg->cap_change, 10, 10); RadioButton (dlg->cap_change, "No change"); @@ -12205,20 +12986,32 @@ ParseActionDialog dlg->remove_from_parsed = CheckBox (p, "Remove from parsed field", NULL); - dlg->existing_text = ExistingTextDialog (p, change_notify, change_userdata); - + if (use_existing_text) { + dlg->existing_text = ExistingTextDialog (p, change_notify, change_userdata); + } AlignObjects (ALIGN_CENTER, (HANDLE) dlg->cap_change, (HANDLE) dlg->remove_from_parsed, - (HANDLE) dlg->existing_text, (HANDLE) dlg->text_portion, (HANDLE) g, + (HANDLE) dlg->existing_text, NULL); return (DialoG) p; } - + +static DialoG +ParseActionDialog +(GrouP h, + Boolean indexer_version, + Nlm_ChangeNotifyProc change_notify, + Pointer change_userdata) +{ + return ParseActionDialogEx (h, indexer_version, TRUE, change_notify, change_userdata); +} + + typedef struct editmacroaction { PopuP action_type; @@ -12320,6 +13113,14 @@ static void RunMacroInEditor (ButtoN b) action->choice = MacroActionChoice_convert_feature; action->data.ptrvalue = DialogToPointer (e->action_dlg); break; + case 13: + action->choice = MacroActionChoice_remove_descriptor; + action->data.ptrvalue = DialogToPointer (e->action_dlg); + break; + case 14: + action->choice = MacroActionChoice_autodef; + action->data.ptrvalue = DialogToPointer (e->action_dlg); + break; } sep_list = GetViewedSeqEntryList (); @@ -12461,6 +13262,8 @@ BuildEditMacroActionWindow EditFeatureLocationActionPtr edit_loc = NULL; ConvertFeatureActionPtr convert_feat = NULL; ParseActionPtr parse = NULL; + RemoveDescriptorActionPtr remove_desc = NULL; + AutodefActionPtr autodef = NULL; WindoW w; GrouP h, c; ButtoN b; @@ -12488,6 +13291,8 @@ BuildEditMacroActionWindow PopupItem (d->action_type, "Remove Feature"); PopupItem (d->action_type, "Edit Feature Location"); PopupItem (d->action_type, "Convert Feature"); + PopupItem (d->action_type, "Remove Descriptor"); + PopupItem (d->action_type, "Autodef"); if (d->action_copy == NULL) { SetValue (d->action_type, 1); @@ -12546,6 +13351,14 @@ BuildEditMacroActionWindow SetValue (d->action_type, 12); convert_feat = (ConvertFeatureActionPtr) d->action_copy->data.ptrvalue; break; + case MacroActionChoice_remove_descriptor: + SetValue (d->action_type, 13); + remove_desc = (RemoveDescriptorActionPtr) d->action_copy->data.ptrvalue; + break; + case MacroActionChoice_autodef: + SetValue (d->action_type, 14); + autodef = (AutodefActionPtr) d->action_copy->data.ptrvalue; + break; default: SetValue (d->action_type, 1); break; @@ -12586,6 +13399,13 @@ BuildEditMacroActionWindow d->action_dlg = ConvertFeatureActionDialog (h, d->indexer_version, EnableEditMacroActionAccept, d); PointerToDialog (d->action_dlg, convert_feat); break; + case 13: + d->action_dlg = RemoveDescriptorActionDialog (h, d->indexer_version, EnableEditMacroActionAccept, d); + PointerToDialog (d->action_dlg, remove_desc); + break; + case 14: + d->action_dlg = AutodefActionDialog (h, d->indexer_version, EnableEditMacroActionAccept, d); + break; } c = HiddenGroup (h, 4, 0, NULL); SetGroupSpacing (c, 10, 10); @@ -12688,6 +13508,14 @@ static Boolean EditMacroAction (ValNodePtr action, Boolean indexer_version) d.action_copy = ValNodeNew (NULL); d.action_copy->choice = MacroActionChoice_convert_feature; d.action_copy->data.ptrvalue = BuildDefaultConvertFeatureAction (); + } else if (action_type == 13) { + d.action_copy = ValNodeNew (NULL); + d.action_copy->choice = MacroActionChoice_remove_descriptor; + d.action_copy->data.ptrvalue = BuildDefaultRemoveDescriptorAction (); + } else if (action_type == 14) { + d.action_copy = ValNodeNew (NULL); + d.action_copy->choice = MacroActionChoice_autodef; + d.action_copy->data.ptrvalue = BuildDefaultAutodefAction (); } } @@ -12724,6 +13552,12 @@ static Boolean EditMacroAction (ValNodePtr action, Boolean indexer_version) case MacroActionChoice_convert_feature: action->data.ptrvalue = ConvertFeatureActionFree (action->data.ptrvalue); break; + case MacroActionChoice_remove_descriptor: + action->data.ptrvalue = RemoveDescriptorActionFree(action->data.ptrvalue); + break; + case MacroActionChoice_autodef: + action->data.ptrvalue = AutodefActionFree (action->data.ptrvalue); + break; } switch (GetValue (d.action_type)) { case 1: @@ -12756,6 +13590,14 @@ static Boolean EditMacroAction (ValNodePtr action, Boolean indexer_version) action->choice = MacroActionChoice_convert_feature; action->data.ptrvalue = DialogToPointer (d.action_dlg); break; + case 13: + action->choice = MacroActionChoice_remove_descriptor; + action->data.ptrvalue = DialogToPointer (d.action_dlg); + break; + case 14: + action->choice = MacroActionChoice_autodef; + action->data.ptrvalue = DialogToPointer (d.action_dlg); + break; } } Remove (w); @@ -12849,6 +13691,14 @@ static void AddMacroActions (MacroEditorFormPtr f, Int2 item) d.action_copy = ValNodeNew (NULL); d.action_copy->choice = MacroActionChoice_convert_feature; d.action_copy->data.ptrvalue = BuildDefaultConvertFeatureAction(); + } else if (action_type == 13) { + d.action_copy = ValNodeNew (NULL); + d.action_copy->choice = MacroActionChoice_remove_descriptor; + d.action_copy->data.ptrvalue = BuildDefaultRemoveDescriptorAction(); + } else if (action_type == 14) { + d.action_copy = ValNodeNew (NULL); + d.action_copy->choice = MacroActionChoice_autodef; + d.action_copy->data.ptrvalue = BuildDefaultAutodefAction(); } } @@ -12912,6 +13762,14 @@ static void AddMacroActions (MacroEditorFormPtr f, Int2 item) new_action->choice = MacroActionChoice_convert_feature; new_action->data.ptrvalue = DialogToPointer (d.action_dlg); break; + case 13: + new_action->choice = MacroActionChoice_remove_descriptor; + new_action->data.ptrvalue = DialogToPointer (d.action_dlg); + break; + case 14: + new_action->choice = MacroActionChoice_autodef; + new_action->data.ptrvalue = DialogToPointer (d.action_dlg); + break; } /* add action to macro list */ if (prev_action == NULL) { @@ -14795,6 +15653,10 @@ SingleMacroAction (Uint2 entityID, Boolean indexer_version) frm->no_callback = FALSE; ChangeSingleMacroActionPopup (frm->action_type); +#ifndef WIN_MAC + CreateStdEditorFormMenus (w); +#endif + return (ForM) w; } @@ -14817,6 +15679,199 @@ NLM_EXTERN void SingleAECRMacroAction (Uint2 entityID, Boolean indexer_version, } +typedef struct singleparseactionfrm { + FORM_MESSAGE_BLOCK + DialoG dlg; + ButtoN leave_dlg_up; + ButtoN accept_btn; +} SingleParseActionFrmData, PNTR SingleParseActionFrmPtr; + + +static void ChangeSingleParseAction (Pointer data) +{ + SingleParseActionFrmPtr frm; + ValNodePtr err_list; + + frm = (SingleParseActionFrmPtr) data; + if (frm == NULL) { + return; + } + + /* enable or disable accept button */ + err_list = TestDialog (frm->dlg); + if (err_list == NULL) { + Enable (frm->accept_btn); + } else { + Disable (frm->accept_btn); + } + err_list = ValNodeFree (err_list); +} + + +static void ClearSingleParseAction (ButtoN b) +{ + SingleParseActionFrmPtr frm; + + frm = (SingleParseActionFrmPtr) GetObjectExtra (b); + if (frm == NULL) { + return; + } + + PointerToDialog (frm->dlg, NULL); + ChangeSingleParseAction (frm); +} + + +static void ClearTextSingleParseAction (ButtoN b) +{ + SingleParseActionFrmPtr frm; + ParseActionPtr parse; + + frm = (SingleParseActionFrmPtr) GetObjectExtra (b); + if (frm == NULL) { + return; + } + + parse = DialogToPointer (frm->dlg); + + if (parse != NULL && parse->portion != NULL) { + parse->portion->left_text = MemFree (parse->portion->left_text); + parse->portion->right_text = MemFree (parse->portion->right_text); + PointerToDialog (frm->dlg, parse); + parse = ParseActionFree (parse); + ChangeSingleParseAction (frm); + } +} + + +static void ActionToSingleParseActionForm (ForM f, Pointer data) +{ + SingleParseActionFrmPtr frm; + ParseActionPtr parse; + + + frm = (SingleParseActionFrmPtr) GetObjectExtra (f); + if (frm == NULL) return; + + parse = (ParseActionPtr) data; + + PointerToDialog (frm->dlg, parse); + ChangeSingleParseAction (frm); +} + + +static Pointer FormToParseAction (ForM f) +{ + SingleParseActionFrmPtr frm; + ParseActionPtr parse; + + + frm = (SingleParseActionFrmPtr) GetObjectExtra (f); + if (frm == NULL) return NULL; + + parse = DialogToPointer (frm->dlg); + return parse; +} + + + +static void SingleParseAcceptButton (ButtoN b) +{ + SingleParseActionFrmPtr frm; + ParseActionPtr parse; + AECRSamplePtr sample; + SeqEntryPtr sep; + ValNodePtr vnp; + Int4 num_fields = 0, num_feat = 0; + + frm = (SingleParseActionFrmPtr) GetObjectExtra (b); + if (frm == NULL) { + return; + } + + sep = GetTopSeqEntryForEntityID (frm->input_entityID); + + parse = DialogToPointer (frm->dlg); + if (parse == NULL) { + return; + } + + /* check for existing text, then set value in parse*/ + sample = GetExistingTextForParseAction (parse, sep); + if (sample != NULL && sample->num_found > 0) { + parse->existing_text = TwoStepExistingText (sample->num_found, FALSE, FALSE); + } else { + parse->existing_text = ExistingTextOption_replace_old; + } + sample = AECRSampleFree (sample); + if (parse->existing_text == 0) { + parse = ParseActionFree (parse); + return; + } + + vnp = ValNodeNew (NULL); + vnp->choice = MacroActionChoice_parse; + vnp->data.ptrvalue = parse; + + ApplyMacroToSeqEntry (sep, vnp, &num_fields, &num_feat); + + vnp = MacroActionChoiceFree (vnp); + + ObjMgrSetDirtyFlag (frm->input_entityID, TRUE); + ObjMgrSendMsg (OM_MSG_UPDATE, frm->input_entityID, 0, 0); + if (!GetStatus (frm->leave_dlg_up)) { + Remove (frm->form); + } + Update (); +} + + +/* todo - later allow different starting setups */ +NLM_EXTERN ForM SingleParseAction (Uint2 entityID) +{ + WindoW w; + GrouP h, c, c1; + ButtoN b; + SingleParseActionFrmPtr frm; + + frm = (SingleParseActionFrmPtr) MemNew (sizeof (SingleParseActionFrmData)); + + w = FixedWindow(-20, -13, -10, -10, "Parse Text", StdCloseWindowProc); + SetObjectExtra (w, frm, NULL); + + frm->form = (ForM) w; + frm->input_entityID = entityID; + frm->toform = ActionToSingleParseActionForm; + frm->fromform = FormToParseAction; + + h = HiddenGroup (w, -1, 0, NULL); + SetGroupSpacing (h, 10, 10); + + frm->dlg = ParseActionDialogEx (h, FALSE, FALSE, ChangeSingleParseAction, frm); + + c1 = HiddenGroup (h, 3, 0, NULL); + b = PushButton (c1, "Clear", ClearSingleParseAction); + SetObjectExtra (b, frm, NULL); + b = PushButton (c1, "Clear Text", ClearTextSingleParseAction); + SetObjectExtra (b, frm, NULL); + frm->leave_dlg_up = CheckBox (c1, "Leave dialog up", NULL); + + + c = HiddenGroup (h, 4, 0, NULL); + SetGroupSpacing (c, 10, 10); + frm->accept_btn = PushButton (c, "Accept", SingleParseAcceptButton); + SetObjectExtra (frm->accept_btn, frm, NULL); + b = PushButton (c, "Cancel", StdCancelButtonProc); + + AlignObjects (ALIGN_CENTER, (HANDLE) frm->dlg, + (HANDLE) c1, + (HANDLE) c, + NULL); + + return (ForM) w; + +} + /* Functions for summarizing macro actions for display */ static CharPtr SummarizeExistingText (Uint2 existing_text) @@ -16058,6 +17113,98 @@ static CharPtr SummarizeRemoveFeatureAction (RemoveFeatureActionPtr a) } +static CharPtr SummarizeRemoveDescriptorAction (RemoveDescriptorActionPtr a) +{ + CharPtr label = NULL; + CharPtr constraint, str; + CharPtr fmt = "Remove %s"; + CharPtr constraint_fmt = "Remove %s descriptors %s"; + + if (a == NULL) { + str = StringSave ("No action"); + } else { + label = GetDescriptorNameFromDescriptorType (a->type); + constraint = SummarizeConstraintSet (a->constraint); + if (constraint == NULL) { + str = (CharPtr) MemNew (sizeof (Char) * (StringLen (fmt) + StringLen (label))); + sprintf (str, fmt, label); + } else { + str = (CharPtr) MemNew (sizeof (Char) * (StringLen (constraint_fmt) + StringLen (label) + StringLen (constraint))); + sprintf (str, constraint_fmt, label, constraint); + constraint = MemFree (constraint); + } + } + + return str; +} + + +static CharPtr SummarizeAutodefClauseListType (Uint2 clause_list_type) +{ + CharPtr str = "complete sequence"; + + switch (clause_list_type) { + case Autodef_list_type_feature_list: + str = "list fFeatures"; + break; + case Autodef_list_type_complete_sequence: + str = "complete sequence"; + break; + case Autodef_list_type_complete_genome: + str = "complete genome"; + break; + } + return str; +} + + +static CharPtr SummarizeAutodefAction (AutodefActionPtr autodef) +{ + CharPtr label = NULL, mod_name; + CharPtr str = NULL; + CharPtr fmt = "Autodef %s"; + CharPtr modifiers_fmt = " with modifier"; + Int4 len; + ValNodePtr mod_names = NULL, vnp; + + if (autodef == NULL) { + str = StringSave ("No action"); + } else { + label = SummarizeAutodefClauseListType (autodef->clause_list_type); + len = StringLen (fmt) + StringLen (label); + if (autodef->modifiers != NULL) { + len += StringLen (modifiers_fmt) + 2; + for (vnp = autodef->modifiers; vnp != NULL; vnp = vnp->next) { + mod_name = GetSourceQualName (vnp->data.intvalue); + len += StringLen (mod_name) + 3; + ValNodeAddPointer (&mod_names, 0, mod_name); + } + } + + str = (CharPtr) MemNew (sizeof (Char) * (len + 1)); + sprintf (str, fmt, label); + + if (autodef->modifiers != NULL) { + StringCat (str, modifiers_fmt); + if (autodef->modifiers->next != NULL) { + StringCat (str, "s"); + } + for (vnp = mod_names; vnp != NULL; vnp = vnp->next) { + StringCat (str, " "); + StringCat (str, vnp->data.ptrvalue); + if (vnp->next != NULL) { + StringCat (str, ","); + } + } + } + + mod_names = ValNodeFree (mod_names); + } + + return str; +} + + static CharPtr SummarizeConvertSourceOptions (ValNodePtr vnp) { ConvertFromCDSOptionsPtr options; @@ -16421,6 +17568,12 @@ static CharPtr SummarizeMacroAction (ValNodePtr vnp) case MacroActionChoice_convert_feature: str = SummarizeConvertFeatureAction (vnp->data.ptrvalue); break; + case MacroActionChoice_remove_descriptor: + str = SummarizeRemoveDescriptorAction (vnp->data.ptrvalue); + break; + case MacroActionChoice_autodef: + str = SummarizeAutodefAction (vnp->data.ptrvalue); + break; default: str = StringSave ("Invalid action"); break; @@ -16470,7 +17623,8 @@ typedef enum { eTabColumnConfig_Apply_CDSGeneProtField, eTabColumnConfig_Apply_FeatureField, eTabColumnConfig_Apply_PubField, - eTabColumnConfig_Apply_GenomeProjectId + eTabColumnConfig_Apply_GenomeProjectId, + eTabColumnConfig_Apply_CommentDescriptor } ETabColumnConfig; typedef enum { @@ -16667,6 +17821,10 @@ static Pointer TabColumnConfigDialogToChoice (DialoG d) f->field = ValNodeNew (NULL); f->field->choice = FieldType_misc; f->field->data.intvalue = Misc_field_genome_project_id; + } else if (val == eTabColumnConfig_Apply_CommentDescriptor) { + f->field = ValNodeNew (NULL); + f->field->choice = FieldType_misc; + f->field->data.intvalue = Misc_field_comment_descriptor; } if (dlg->erase_when_blank == NULL) { @@ -16780,6 +17938,7 @@ static void TabColumnActionChange (PopuP p) Hide (dlg->match_grp); break; case eTabColumnConfig_Apply_GenomeProjectId: + case eTabColumnConfig_Apply_CommentDescriptor: Show (dlg->qual_grp); Hide (dlg->src_qual); Hide (dlg->feature_field_grp); @@ -16875,7 +18034,7 @@ static void TabColumnConfigToDialog (DialoG d, Pointer data) PointerToDialog (dlg->feature_type, NULL); PointerToDialog (dlg->feature_field, NULL); } else { - vn.choice = ff->type; + vn.choice = (Uint1) ff->type; vn.data.ptrvalue = NULL; vn.next = NULL; PointerToDialog (dlg->feature_type, &vn); @@ -16899,6 +18058,8 @@ static void TabColumnConfigToDialog (DialoG d, Pointer data) PointerToDialog (dlg->pub_field, &vn); } else if (f->field->choice == FieldType_misc && f->field->data.intvalue == Misc_field_genome_project_id) { SetValue (dlg->column_action, eTabColumnConfig_Apply_GenomeProjectId); + } else if (f->field->choice == FieldType_misc && f->field->data.intvalue == Misc_field_comment_descriptor) { + SetValue (dlg->column_action, eTabColumnConfig_Apply_CommentDescriptor); } SafeSetStatus (dlg->change_mrna, f->match_mrna); @@ -17009,6 +18170,7 @@ NLM_EXTERN DialoG TabColumnConfigDialog PopupItem (dlg->column_action, "Apply to Feature Field"); PopupItem (dlg->column_action, "Apply to Publication Field"); PopupItem (dlg->column_action, "Apply to Genome Project ID"); + PopupItem (dlg->column_action, "Apply to Comment Descriptor"); SetValue (dlg->column_action, 1); k = HiddenGroup (p, 0, 0, NULL); @@ -17405,7 +18567,7 @@ NLM_EXTERN DialoG TabColumnConfigListDialog (GrouP h, ValNodePtr first_values, V dlg->change_userdata = change_userdata; - dlg->column_list_doc = DocumentPanel (p, stdCharWidth * 50, stdLineHeight * 12); + dlg->column_list_doc = DocumentPanel (p, stdCharWidth * 50, stdLineHeight * 8); SetObjectExtra (dlg->column_list_doc, dlg, NULL); SetDocProcs (dlg->column_list_doc, ClickColumnListDoc, NULL, NULL, NULL); SetDocShade (dlg->column_list_doc, NULL, NULL, ShowSelectedColumn, NULL); @@ -17449,6 +18611,78 @@ NLM_EXTERN DialoG TabColumnConfigListDialog (GrouP h, ValNodePtr first_values, V } +NLM_EXTERN void ChangeDataForTabColumnConfigListDialog (DialoG d, ValNodePtr first_values, ValNodePtr blank_list) +{ + TabColumnConfigListDlgPtr dlg; + TabColumnConfigPtr PNTR column_list; + Int4 num_columns, i; + ValNodePtr vnp_v, vnp_b; + + dlg = (TabColumnConfigListDlgPtr) GetObjectExtra (d); + if (dlg == NULL) { + return; + } + + num_columns = ValNodeLen (blank_list); + if (num_columns < dlg->num_columns) { + /* truncate existing list */ + for (i = num_columns; i < dlg->num_columns; i++) { + dlg->column_list[i] = TabColumnConfigFree (dlg->column_list[i]); + dlg->first_values[i] = MemFree (dlg->first_values[i]); + } + if (dlg->current_column >= num_columns) { + dlg->current_column = num_columns - 1; + } + + dlg->num_columns = num_columns; + } else if (num_columns > dlg->num_columns) { + /* need larger lists */ + for (i = 0; i < dlg->num_columns; i++) { + dlg->first_values[i] = MemFree (dlg->first_values[i]); + } + dlg->first_values = MemFree (dlg->first_values); + dlg->first_values = MemNew (sizeof (CharPtr) * num_columns); + + dlg->blank_list = MemFree (dlg->blank_list); + dlg->blank_list = (Int4Ptr) MemNew (sizeof (Int4) * num_columns); + + column_list = (TabColumnConfigPtr PNTR) MemNew (sizeof (TabColumnConfigPtr) * num_columns); + for (i = 0; i < dlg->num_columns; i++) { + column_list[i] = dlg->column_list[i]; + dlg->column_list[i] = NULL; + } + dlg->column_list = MemFree (dlg->column_list); + dlg->column_list = column_list; + + dlg->num_columns = num_columns; + } + + /* populate column list */ + vnp_v = first_values; + vnp_b = blank_list; + i = 0; + while (vnp_b != NULL) { + dlg->blank_list[i] = vnp_b->data.intvalue; + if (vnp_v == NULL || StringHasNoText (vnp_v->data.ptrvalue)) { + dlg->first_values[i] = StringSave ("First row value is blank"); + } else { + dlg->first_values[i] = StringSave (vnp_v->data.ptrvalue); + } + vnp_b = vnp_b->next; + if (vnp_v != NULL) { + vnp_v = vnp_v->next; + } + i++; + } + + PopulateTabConfigListColumnListDoc (d); + + PointerToDialog (dlg->edit_col_dlg, dlg->column_list[dlg->current_column]); + SetTabColumnConfigDialogTitle (dlg->edit_col_dlg, dlg->first_values[dlg->current_column], dlg->blank_list[dlg->current_column]); + +} + + typedef struct matchtypedlg { DIALOG_MESSAGE_BLOCK PopuP match_type; diff --git a/desktop/macrodlg.h b/desktop/macrodlg.h index 8818508c..49c1af08 100755 --- a/desktop/macrodlg.h +++ b/desktop/macrodlg.h @@ -29,7 +29,7 @@ * * Version Creation Date: 11/23/2007 * -* $Revision: 1.11 $ +* $Revision: 1.13 $ * * File Description: * @@ -55,6 +55,7 @@ NLM_EXTERN DialoG TabColumnConfigDialog Nlm_ChangeNotifyProc change_notify, Pointer change_userdata); NLM_EXTERN DialoG TabColumnConfigListDialog (GrouP h, ValNodePtr first_values, ValNodePtr blank_list, Nlm_ChangeNotifyProc change_notify, Pointer change_userdata); +NLM_EXTERN void ChangeDataForTabColumnConfigListDialog (DialoG d, ValNodePtr first_values, ValNodePtr blank_list); NLM_EXTERN DialoG MatchTypeDialog (GrouP g, Nlm_ChangeNotifyProc change_notify, Pointer change_userdata); NLM_EXTERN DialoG FeatureTypeDialog (GrouP h, Nlm_ChangeNotifyProc change_notify, Pointer change_userdata); @@ -65,4 +66,6 @@ NLM_EXTERN void SingleAECRMacroAction (Uint2 entityID, Boolean indexer_version, NLM_EXTERN Uint2 TwoStepExistingText (Int4 num_found, Boolean non_text, Boolean allow_multi); +NLM_EXTERN ForM SingleParseAction (Uint2 entityID); + #endif diff --git a/desktop/salfiles.c b/desktop/salfiles.c index cd239796..3c9755d8 100644 --- a/desktop/salfiles.c +++ b/desktop/salfiles.c @@ -29,7 +29,7 @@ * * Version Creation Date: 1/27/96 * -* $Revision: 6.101 $ +* $Revision: 6.102 $ * * File Description: * @@ -388,7 +388,7 @@ static SeqEntryPtr NewFastaRead (FILE *fp, Boolean is_na, Boolean parseSeqId, In if (segcount > segtotal) segtotal = segcount; sepnuc = FindNucSeqEntry (lastsep); - if (IS_Bioseq(sepnuc)) { + if (sepnuc != NULL && IS_Bioseq(sepnuc)) { segbsp=(BioseqPtr)sepnuc->data.ptrvalue; segsip=segbsp->id; if (segsip != NULL) { diff --git a/desktop/salpanel.c b/desktop/salpanel.c index 472fc76c..58a18e53 100644 --- a/desktop/salpanel.c +++ b/desktop/salpanel.c @@ -29,7 +29,7 @@ * * Version Creation Date: 1/27/96 * -* $Revision: 6.92 $ +* $Revision: 6.93 $ * * File Description: * @@ -6145,7 +6145,8 @@ static void DoApplyFeatureToAlignment (ButtoN b) if (sfp != NULL || (aafdp->feattype == ADD_IMP - && feature_details_data->featdef_choice == FEATDEF_GENE)) + && feature_details_data->featdef_choice == FEATDEF_GENE + && sep != NULL)) { if (! StringHasNoText (feature_details_data->geneName) || ! StringHasNoText (feature_details_data->geneDesc)) { |