~ubuntu-branches/ubuntu/raring/ncbi-tools6/raring

« back to all changes in this revision

Viewing changes to desktop/biosrc.c

  • Committer: Package Import Robot
  • Author(s): Aaron M. Ucko
  • Date: 2011-09-05 18:55:02 UTC
  • mfrom: (1.1.11 upstream)
  • Revision ID: package-import@ubuntu.com-20110905185502-iuvmoe65ytljhckn
Tags: 6.1.20110713-1
* New upstream release.
* debian/*.symbols: update accordingly.
* make/makeshlb.unx: link libcn3dOGL.so against -lm for sqrt.
* doc/man/*.1: update for new release.
* debian/rules:
  - (VIB): add asnmacro, as upstream takes care to publish binaries thereof.
  - Retire obsolete multiarch-unaware checks for libpthread.
  - Fully modernize Debhelper usage; in particular, transition to overrides.
* debian/compat: advance to 9 per rules modernization.
* debian/ncbi-tools-bin.install: add asnmacro.
* make/makenet.unx: link asnmacro only against libraries it directly needs.
* doc/man/asnmacro.1: give asnmacro a man page.
* doc/man/Psequin.1: list it in SEE ALSO.
* network/id1arch/idfetch.c: revert redundant change (from #295110).
* Convert to multiarch.
  - debian/rules: Install libraries (and ncbithr.o) to multiarch directories.
  - debian/lib*.install: match multiarch library paths.
  - debian/control:
    + Build-Depends: debhelper (>= 8.1.3~), implying a recent dpkg-dev.
    + Set Multi-Arch: as appropriate across the board, and specify
      Pre-Depends: ${misc:Pre-Depends} for runtime libraries.
* debian/*.lintian-overrides: drop leading slashes for Lintian 2.5.x.
* debian/control: Standards-Version: 3.9.2 (already compliant).

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
*
30
30
* Version Creation Date:   1/22/95
31
31
*
32
 
* $Revision: 6.96 $
 
32
* $Revision: 6.103 $
33
33
*
34
34
* File Description: 
35
35
*
143
143
 
144
144
  DialoG          subsrc_val_dlg;
145
145
  DialoG          orgmod_val_dlg;
 
146
  ButtoN          pcr_primer_btn;
 
147
  GrouP           pcr_primer_grp;
 
148
  DialoG          pcr_primer_dlg;
146
149
 
147
150
  CharPtr         origTaxName;
148
151
  Boolean         stripOldName;
1853
1856
    PointerToDialog (gbp->mod, NULL);
1854
1857
    PointerToDialog (gbp->subsrc_val_dlg, NULL);
1855
1858
    PointerToDialog (gbp->orgmod_val_dlg, NULL);
 
1859
    PointerToDialog (gbp->pcr_primer_dlg, NULL);
1856
1860
    
1857
1861
    if (biop != NULL) {
1858
1862
      vn.choice = SrcLocFromGenome (biop->genome);
1902
1906
      }
1903
1907
 
1904
1908
      PointerToDialog (gbp->subsrc_val_dlg, biop->subtype);
 
1909
      if (biop->pcr_primers != NULL) {
 
1910
        SetStatus (gbp->pcr_primer_btn, TRUE);
 
1911
        PointerToDialog (gbp->pcr_primer_dlg, biop->pcr_primers);
 
1912
        Show (gbp->pcr_primer_grp);
 
1913
      }
1905
1914
    }
1906
1915
    if (orp != NULL) {
1907
1916
      if (! TextHasNoText (gbp->taxName)) {
2188
2197
      }
2189
2198
 
2190
2199
      biop->subtype = DialogToPointer (gbp->subsrc_val_dlg);
 
2200
      if (GetStatus (gbp->pcr_primer_btn)) {
 
2201
        biop->pcr_primers = DialogToPointer (gbp->pcr_primer_dlg);
 
2202
      }
2191
2203
 
2192
2204
      RemoveTextFromTextFreeSubSourceModifiers (biop, NULL);     
2193
2205
 
3086
3098
  "Source", "Organism", "GenBank", "Unstructured", NULL
3087
3099
};
3088
3100
 
 
3101
typedef enum {
 
3102
  eModTabSource = 0,
 
3103
  eModTabOrganism = 1,
 
3104
  eModTabGenBank = 2,
 
3105
  eModTabUnstructured = 3
 
3106
} EModTab;
 
3107
 
3089
3108
static CharPtr miscTabs1 [] = {
3090
3109
  "Cross-Refs", NULL
3091
3110
};
3180
3199
  return eap;
3181
3200
}
3182
3201
 
 
3202
 
 
3203
Uint2 pcr_primer_dlg_types [] = {
 
3204
  TAGLIST_TEXT, TAGLIST_POPUP, TAGLIST_TEXT, TAGLIST_TEXT
 
3205
};
 
3206
 
 
3207
Uint2 pcr_primer_dlg_widths [] = {
 
3208
  3, 4, 10, 20
 
3209
};
 
3210
 
 
3211
static ENUM_ALIST(pcr_primer_dlg_alist)
 
3212
  {" ",    0},
 
3213
  {"Fwd",  1},
 
3214
  {"Rev",  2},
 
3215
END_ENUM_ALIST
 
3216
 
 
3217
static EnumFieldAssocPtr pcr_primer_dlg_popups [] = {
 
3218
  NULL, pcr_primer_dlg_alist, NULL, NULL 
 
3219
};
 
3220
 
 
3221
 
 
3222
static void PCRReactionSetPtrToPCRPrimerDialog (DialoG d, Pointer data)
 
3223
 
 
3224
{
 
3225
  ValNodePtr      head;
 
3226
  Int2            j;
 
3227
  CharPtr         str;
 
3228
  CharPtr         fmt = "%d\t2\t%s\t%s\n";
 
3229
  TagListPtr      tlp;
 
3230
  ValNodePtr      vnp;
 
3231
  PCRReactionSetPtr ps;
 
3232
  PCRPrimerPtr      pp;
 
3233
  Int4              set_num = 1;
 
3234
 
 
3235
  tlp = (TagListPtr) GetObjectExtra (d);
 
3236
  if (tlp == NULL) {
 
3237
    return;
 
3238
  }
 
3239
  ps = (PCRReactionSetPtr) data;
 
3240
  head = NULL;
 
3241
  if (ps == NULL) {
 
3242
    str = (CharPtr) MemNew (sizeof (Char) * StringLen (fmt));
 
3243
    sprintf (str, "%d\t1\t\t\n", set_num);
 
3244
    ValNodeAddPointer (&head, 0, str);
 
3245
    str = (CharPtr) MemNew (sizeof (Char) * StringLen (fmt));
 
3246
    sprintf (str, "%d\t2\t\t\n", set_num);
 
3247
    ValNodeAddPointer (&head, 0, str);
 
3248
  } else {
 
3249
    while (ps != NULL) {      
 
3250
      if (ps->forward == NULL) {
 
3251
        str = (CharPtr) MemNew (sizeof (Char) * (StringLen (fmt) + 15));
 
3252
        sprintf (str, "%d\t1\t\t\n", set_num);
 
3253
        ValNodeAddPointer (&head, 0, str);
 
3254
      } else {
 
3255
        pp = ps->forward;
 
3256
        while (pp != NULL) {
 
3257
          str = (CharPtr) MemNew (sizeof (Char) * (StringLen (fmt) + 15 + StringLen (pp->name) + StringLen (pp->seq)));
 
3258
          sprintf (str, "%d\t1\t%s\t%s\n", 
 
3259
                   set_num,
 
3260
                   pp->name == NULL ? "" : pp->name,
 
3261
                   pp->seq == NULL ? "" : pp->seq);
 
3262
          ValNodeAddPointer (&head, 0, str);
 
3263
          pp = pp->next;
 
3264
        }
 
3265
      }
 
3266
      if (ps->reverse == NULL) {
 
3267
        str = (CharPtr) MemNew (sizeof (Char) * (StringLen (fmt) + 15));
 
3268
        sprintf (str, "%d\t2\t\t\n", set_num);
 
3269
        ValNodeAddPointer (&head, 0, str);
 
3270
      } else {
 
3271
        pp = ps->reverse;
 
3272
        while (pp != NULL) {
 
3273
          str = (CharPtr) MemNew (sizeof (Char) * (StringLen (fmt) + 15 + StringLen (pp->name) + StringLen (pp->seq)));
 
3274
          sprintf (str, "%d\t2\t%s\t%s\n", 
 
3275
                   set_num,
 
3276
                   pp->name == NULL ? "" : pp->name,
 
3277
                   pp->seq == NULL ? "" : pp->seq);
 
3278
          ValNodeAddPointer (&head, 0, str);
 
3279
          pp = pp->next;
 
3280
        }
 
3281
      }
 
3282
      ps = ps->next;
 
3283
      set_num++;
 
3284
    }
 
3285
  }
 
3286
  SendMessageToDialog (tlp->dialog, VIB_MSG_RESET);
 
3287
  tlp->vnp = head;
 
3288
  SendMessageToDialog (tlp->dialog, VIB_MSG_REDRAW);
 
3289
  for (j = 0, vnp = tlp->vnp; vnp != NULL; j++, vnp = vnp->next) {
 
3290
  }
 
3291
  tlp->max = MAX ((Int2) 0, (Int2) (j - tlp->rows + 1));
 
3292
  CorrectBarMax (tlp->bar, tlp->max);
 
3293
  CorrectBarPage (tlp->bar, tlp->rows - 1, tlp->rows - 1);
 
3294
}
 
3295
 
 
3296
 
 
3297
static PCRPrimerPtr PCRPrimerFromRow (CharPtr row)
 
3298
{
 
3299
  CharPtr p_name, p_seq;
 
3300
  PCRPrimerPtr pp = NULL;
 
3301
 
 
3302
  p_name = ExtractTagListColumn (row, 2);
 
3303
  p_seq = ExtractTagListColumn (row, 3);
 
3304
 
 
3305
  if (StringHasNoText (p_name) && StringHasNoText (p_seq)) {
 
3306
    p_name = MemFree (p_name);
 
3307
    p_seq = MemFree (p_seq);
 
3308
  } else {
 
3309
    pp = PCRPrimerNew ();
 
3310
    pp->name = p_name;
 
3311
    pp->seq = p_seq;
 
3312
  }
 
3313
  return pp;
 
3314
}
 
3315
 
 
3316
 
 
3317
static void AddPrimerToSet (PCRReactionSetPtr PNTR p_set, Int4 set_num, int dir, PCRPrimerPtr pp)
 
3318
{
 
3319
  PCRReactionSetPtr prev = NULL;
 
3320
  PCRReactionSetPtr ps;
 
3321
  PCRPrimerPtr      last;
 
3322
  Int4              num = 1;
 
3323
 
 
3324
  if (p_set == NULL || pp == NULL) {
 
3325
    return;
 
3326
  }
 
3327
  ps = *p_set;
 
3328
  while (num < set_num) {
 
3329
    if (ps == NULL) {
 
3330
      ps = PCRReactionSetNew ();
 
3331
      if (prev == NULL) {
 
3332
        *p_set = ps;
 
3333
      } else {
 
3334
        prev->next = ps;
 
3335
      }
 
3336
    }
 
3337
    prev = ps;
 
3338
    num++;
 
3339
    ps = ps->next;
 
3340
  }
 
3341
  if (ps == NULL) {
 
3342
    ps = PCRReactionSetNew ();
 
3343
    if (prev == NULL) {
 
3344
      *p_set = ps;
 
3345
    } else {
 
3346
      prev->next = ps;
 
3347
    }
 
3348
  }
 
3349
  if (dir == 2) {
 
3350
    /* add to reverse */
 
3351
    if (ps->reverse == NULL) {
 
3352
      ps->reverse = pp;
 
3353
    } else {
 
3354
      last = ps->reverse;
 
3355
      while (last->next != NULL) {
 
3356
        last = last->next;
 
3357
      }
 
3358
      last->next = pp;
 
3359
    }
 
3360
  } else {
 
3361
    /* add to forward */
 
3362
    if (ps->forward == NULL) {
 
3363
      ps->forward = pp;
 
3364
    } else {
 
3365
      last = ps->forward;
 
3366
      while (last->next != NULL) {
 
3367
        last = last->next;
 
3368
      }
 
3369
      last->next = pp;
 
3370
    }
 
3371
  }
 
3372
}
 
3373
 
 
3374
static Pointer PCRPrimerDialogToPCRReactionSetPtr (DialoG d)
 
3375
 
 
3376
{
 
3377
  CharPtr       str;
 
3378
  TagListPtr    tlp;
 
3379
  CharPtr       tmp;
 
3380
  int           val;
 
3381
  ValNodePtr    vnp;
 
3382
  PCRReactionSetPtr ps_list = NULL;
 
3383
  PCRPrimerPtr      pp;
 
3384
  Int4              set_num = 1;
 
3385
 
 
3386
  tlp = (TagListPtr) GetObjectExtra (d);
 
3387
  if (tlp != NULL && tlp->vnp != NULL) {
 
3388
    for (vnp = tlp->vnp; vnp != NULL; vnp = vnp->next) {
 
3389
      /* get set number */
 
3390
      str = (CharPtr) vnp->data.ptrvalue;
 
3391
      tmp = ExtractTagListColumn (str, 0);
 
3392
      if (tmp != NULL && sscanf (tmp, "%d", &val) == 1 && val != 0) {
 
3393
        set_num = val;
 
3394
      }
 
3395
      MemFree (tmp);
 
3396
      /* get name and sequence */
 
3397
      pp = PCRPrimerFromRow (str);
 
3398
      if (pp != NULL) {        
 
3399
        /* get direction */
 
3400
        tmp = ExtractTagListColumn (str, 1);
 
3401
        if (tmp == NULL || sscanf (tmp, "%d", &val) != 1 || val != 2) {
 
3402
          val = 1;
 
3403
        }
 
3404
 
 
3405
        /* add to set */
 
3406
        AddPrimerToSet (&ps_list, set_num, val, pp);
 
3407
      }
 
3408
    }
 
3409
  }
 
3410
  /* TODO - before returning, need to delete any empty sets */
 
3411
  return (Pointer) ps_list;
 
3412
}
 
3413
 
 
3414
 
 
3415
static GrouP MakePCRPrimerGroup (GrouP g, GenBioPagePtr gbp)
 
3416
{
 
3417
  GrouP      grp, q;
 
3418
  PrompT     p1, p2, p3, p4;
 
3419
  TagListPtr tlp;
 
3420
 
 
3421
  if (gbp == NULL) {
 
3422
    return NULL;
 
3423
  }
 
3424
  grp = HiddenGroup (g, -1, 0, NULL);
 
3425
  SetGroupSpacing (grp, 3, 10);
 
3426
  q = HiddenGroup (grp, 4, 0, NULL);
 
3427
  p1 = StaticPrompt (q, "Set", 0, 0, programFont, 'c');
 
3428
  p2 = StaticPrompt (q, "Dir", 4 * stdCharWidth, 0, programFont, 'c');
 
3429
  p3 = StaticPrompt (q, "Name", pcr_primer_dlg_widths[2] * stdCharWidth, 0, programFont, 'c');
 
3430
  p4 = StaticPrompt (q, "Sequence", pcr_primer_dlg_widths[3] * stdCharWidth, 0, programFont, 'c');
 
3431
 
 
3432
  gbp->pcr_primer_dlg = CreateTagListDialogEx3 (grp, 4, 4, 2,
 
3433
                                      pcr_primer_dlg_types, pcr_primer_dlg_widths, pcr_primer_dlg_popups,
 
3434
                                      TRUE, FALSE, 
 
3435
                                      PCRReactionSetPtrToPCRPrimerDialog, 
 
3436
                                      PCRPrimerDialogToPCRReactionSetPtr,
 
3437
                                      NULL, NULL, FALSE, TRUE);
 
3438
 
 
3439
  tlp = (TagListPtr) GetObjectExtra (gbp->pcr_primer_dlg);
 
3440
  AlignObjects (ALIGN_JUSTIFY, (HANDLE) tlp->control [0], (HANDLE) p1, NULL);
 
3441
  AlignObjects (ALIGN_JUSTIFY, (HANDLE) tlp->control [1], (HANDLE) p2, NULL);
 
3442
  AlignObjects (ALIGN_JUSTIFY, (HANDLE) tlp->control [2], (HANDLE) p3, NULL);
 
3443
  AlignObjects (ALIGN_JUSTIFY, (HANDLE) tlp->control [3], (HANDLE) p4, NULL);
 
3444
 
 
3445
  return grp;
 
3446
}
 
3447
 
 
3448
 
 
3449
static void ShowPCRPrimers (ButtoN b)
 
3450
{
 
3451
  GenBioPagePtr  gbp;
 
3452
 
 
3453
  gbp = (GenBioPagePtr) GetObjectExtra (b);
 
3454
  if (gbp == NULL) {
 
3455
    return;
 
3456
  }
 
3457
  if (GetStatus (b)) {
 
3458
    Show (gbp->pcr_primer_grp);
 
3459
  } else {
 
3460
    Hide (gbp->pcr_primer_grp);
 
3461
  }
 
3462
}
 
3463
 
 
3464
 
3183
3465
static void CleanupBioSourceDialog (GraphiC g, VoidPtr data)
3184
3466
 
3185
3467
{
3412
3694
    }
3413
3695
    k = HiddenGroup (pages [1], 0, 0, NULL);
3414
3696
 
3415
 
    gbp->modGrp [0] = HiddenGroup (k, -1, 0, NULL);
3416
 
    SetGroupSpacing (gbp->modGrp [0], 10, 10);
 
3697
    gbp->modGrp [eModTabSource ] = HiddenGroup (k, -1, 0, NULL);
 
3698
    SetGroupSpacing (gbp->modGrp [eModTabSource ], 10, 10);
3417
3699
 
3418
 
    g = HiddenGroup (gbp->modGrp [0], -1, 0, NULL);
 
3700
    g = HiddenGroup (gbp->modGrp [eModTabSource ], -1, 0, NULL);
3419
3701
    SetGroupSpacing (g, 3, 10);
3420
3702
    gbp->subsrc_val_dlg = CreateSubSourceDialog (g, gbp->subsource_alists[0]);
3421
3703
 
3422
 
    gbp->modGrp [1] = HiddenGroup (k, -1, 0, NULL);
3423
 
    SetGroupSpacing (gbp->modGrp [1], 10, 10);
3424
 
 
3425
 
    g = HiddenGroup (gbp->modGrp [1], -1, 0, NULL);
 
3704
    gbp->pcr_primer_btn = CheckBox (g, "PCR primers", ShowPCRPrimers);
 
3705
    SetObjectExtra (gbp->pcr_primer_btn, gbp, NULL);
 
3706
    gbp->pcr_primer_grp = MakePCRPrimerGroup (g, gbp);
 
3707
    SetGroupSpacing (gbp->pcr_primer_grp, 3, 10);
 
3708
    Hide (gbp->pcr_primer_grp);
 
3709
 
 
3710
    AlignObjects (ALIGN_CENTER, (HANDLE) gbp->subsrc_val_dlg, (HANDLE) gbp->pcr_primer_btn, (HANDLE) gbp->pcr_primer_grp, NULL);
 
3711
 
 
3712
    gbp->modGrp [eModTabOrganism] = HiddenGroup (k, -1, 0, NULL);
 
3713
    SetGroupSpacing (gbp->modGrp [eModTabOrganism], 10, 10);
 
3714
 
 
3715
    g = HiddenGroup (gbp->modGrp [eModTabOrganism], -1, 0, NULL);
3426
3716
    SetGroupSpacing (g, 3, 10);
3427
3717
 
3428
3718
    gbp->orgmod_val_dlg = CreateOrgModDialog (g, gbp->orgmod_alists[0], gbp->taxName);
3429
3719
 
3430
 
    Hide (gbp->modGrp [1]);
3431
 
 
3432
 
    gbp->modGrp [2] = HiddenGroup (k, -1, 0, NULL);
3433
 
    SetGroupSpacing (gbp->modGrp [2], 10, 10);
3434
 
 
3435
 
    g = HiddenGroup (gbp->modGrp [2], 2, 0, NULL);
 
3720
    Hide (gbp->modGrp [eModTabOrganism]);
 
3721
 
 
3722
    gbp->modGrp [eModTabGenBank] = HiddenGroup (k, -1, 0, NULL);
 
3723
    SetGroupSpacing (gbp->modGrp [eModTabGenBank], 10, 10);
 
3724
 
 
3725
    g = HiddenGroup (gbp->modGrp [eModTabGenBank], 2, 0, NULL);
3436
3726
    SetGroupSpacing (g, 3, 10);
3437
3727
 
3438
3728
    StaticPrompt (g, "Assigned Acronym", 0, stdLineHeight, programFont, 'l');
3442
3732
    StaticPrompt (g, "Assigned Synonym", 0, stdLineHeight, programFont, 'l');
3443
3733
    gbp->gbsyn = StaticPrompt (g, "", 15 * stdCharWidth, stdLineHeight, systemFont, 'l');
3444
3734
 
3445
 
    Hide (gbp->modGrp [2]);
 
3735
    Hide (gbp->modGrp [eModTabGenBank]);
3446
3736
 
3447
 
    gbp->modGrp [3] = HiddenGroup (k, -1, 0, NULL);
3448
 
    SetGroupSpacing (gbp->modGrp [3], 10, 10);
 
3737
    gbp->modGrp [eModTabUnstructured] = HiddenGroup (k, -1, 0, NULL);
 
3738
    SetGroupSpacing (gbp->modGrp [eModTabUnstructured], 10, 10);
3449
3739
 
3450
3740
    if (showUnstructMods) {
3451
 
      f3 = HiddenGroup (gbp->modGrp [3], 0, 2, NULL);
 
3741
      f3 = HiddenGroup (gbp->modGrp [eModTabUnstructured], 0, 2, NULL);
3452
3742
      StaticPrompt (f3, "Unstructured Modifiers", 0, 0, programFont, 'c');
3453
3743
      gbp->mod = CreateVisibleStringDialog (f3, 3, -1, 15);
3454
3744
    }
3455
3745
 
3456
 
    Hide (gbp->modGrp [3]);
 
3746
    Hide (gbp->modGrp [eModTabUnstructured]);
3457
3747
 
3458
3748
    AlignObjects (ALIGN_CENTER, (HANDLE) tbs,
3459
 
                  (HANDLE) gbp->modGrp [0],
3460
 
                  (HANDLE) gbp->modGrp [1],
3461
 
                  (HANDLE) gbp->modGrp [2],
3462
 
                  (HANDLE) gbp->modGrp [3], NULL);
 
3749
                  (HANDLE) gbp->modGrp [eModTabSource],
 
3750
                  (HANDLE) gbp->modGrp [eModTabOrganism],
 
3751
                  (HANDLE) gbp->modGrp [eModTabGenBank],
 
3752
                  (HANDLE) gbp->modGrp [eModTabUnstructured], NULL);
3463
3753
 
3464
3754
    Hide (pages [1]);
3465
3755
 
4476
4766
}
4477
4767
 
4478
4768
 
 
4769