3203
Uint2 pcr_primer_dlg_types [] = {
3204
TAGLIST_TEXT, TAGLIST_POPUP, TAGLIST_TEXT, TAGLIST_TEXT
3207
Uint2 pcr_primer_dlg_widths [] = {
3211
static ENUM_ALIST(pcr_primer_dlg_alist)
3217
static EnumFieldAssocPtr pcr_primer_dlg_popups [] = {
3218
NULL, pcr_primer_dlg_alist, NULL, NULL
3222
static void PCRReactionSetPtrToPCRPrimerDialog (DialoG d, Pointer data)
3228
CharPtr fmt = "%d\t2\t%s\t%s\n";
3231
PCRReactionSetPtr ps;
3235
tlp = (TagListPtr) GetObjectExtra (d);
3239
ps = (PCRReactionSetPtr) data;
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);
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);
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",
3260
pp->name == NULL ? "" : pp->name,
3261
pp->seq == NULL ? "" : pp->seq);
3262
ValNodeAddPointer (&head, 0, str);
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);
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",
3276
pp->name == NULL ? "" : pp->name,
3277
pp->seq == NULL ? "" : pp->seq);
3278
ValNodeAddPointer (&head, 0, str);
3286
SendMessageToDialog (tlp->dialog, VIB_MSG_RESET);
3288
SendMessageToDialog (tlp->dialog, VIB_MSG_REDRAW);
3289
for (j = 0, vnp = tlp->vnp; vnp != NULL; j++, vnp = vnp->next) {
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);
3297
static PCRPrimerPtr PCRPrimerFromRow (CharPtr row)
3299
CharPtr p_name, p_seq;
3300
PCRPrimerPtr pp = NULL;
3302
p_name = ExtractTagListColumn (row, 2);
3303
p_seq = ExtractTagListColumn (row, 3);
3305
if (StringHasNoText (p_name) && StringHasNoText (p_seq)) {
3306
p_name = MemFree (p_name);
3307
p_seq = MemFree (p_seq);
3309
pp = PCRPrimerNew ();
3317
static void AddPrimerToSet (PCRReactionSetPtr PNTR p_set, Int4 set_num, int dir, PCRPrimerPtr pp)
3319
PCRReactionSetPtr prev = NULL;
3320
PCRReactionSetPtr ps;
3324
if (p_set == NULL || pp == NULL) {
3328
while (num < set_num) {
3330
ps = PCRReactionSetNew ();
3342
ps = PCRReactionSetNew ();
3350
/* add to reverse */
3351
if (ps->reverse == NULL) {
3355
while (last->next != NULL) {
3361
/* add to forward */
3362
if (ps->forward == NULL) {
3366
while (last->next != NULL) {
3374
static Pointer PCRPrimerDialogToPCRReactionSetPtr (DialoG d)
3382
PCRReactionSetPtr ps_list = NULL;
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) {
3396
/* get name and sequence */
3397
pp = PCRPrimerFromRow (str);
3400
tmp = ExtractTagListColumn (str, 1);
3401
if (tmp == NULL || sscanf (tmp, "%d", &val) != 1 || val != 2) {
3406
AddPrimerToSet (&ps_list, set_num, val, pp);
3410
/* TODO - before returning, need to delete any empty sets */
3411
return (Pointer) ps_list;
3415
static GrouP MakePCRPrimerGroup (GrouP g, GenBioPagePtr gbp)
3418
PrompT p1, p2, p3, p4;
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');
3432
gbp->pcr_primer_dlg = CreateTagListDialogEx3 (grp, 4, 4, 2,
3433
pcr_primer_dlg_types, pcr_primer_dlg_widths, pcr_primer_dlg_popups,
3435
PCRReactionSetPtrToPCRPrimerDialog,
3436
PCRPrimerDialogToPCRReactionSetPtr,
3437
NULL, NULL, FALSE, TRUE);
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);
3449
static void ShowPCRPrimers (ButtoN b)
3453
gbp = (GenBioPagePtr) GetObjectExtra (b);
3457
if (GetStatus (b)) {
3458
Show (gbp->pcr_primer_grp);
3460
Hide (gbp->pcr_primer_grp);
3183
3465
static void CleanupBioSourceDialog (GraphiC g, VoidPtr data)
3413
3695
k = HiddenGroup (pages [1], 0, 0, NULL);
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);
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]);
3422
gbp->modGrp [1] = HiddenGroup (k, -1, 0, NULL);
3423
SetGroupSpacing (gbp->modGrp [1], 10, 10);
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);
3710
AlignObjects (ALIGN_CENTER, (HANDLE) gbp->subsrc_val_dlg, (HANDLE) gbp->pcr_primer_btn, (HANDLE) gbp->pcr_primer_grp, NULL);
3712
gbp->modGrp [eModTabOrganism] = HiddenGroup (k, -1, 0, NULL);
3713
SetGroupSpacing (gbp->modGrp [eModTabOrganism], 10, 10);
3715
g = HiddenGroup (gbp->modGrp [eModTabOrganism], -1, 0, NULL);
3426
3716
SetGroupSpacing (g, 3, 10);
3428
3718
gbp->orgmod_val_dlg = CreateOrgModDialog (g, gbp->orgmod_alists[0], gbp->taxName);
3430
Hide (gbp->modGrp [1]);
3432
gbp->modGrp [2] = HiddenGroup (k, -1, 0, NULL);
3433
SetGroupSpacing (gbp->modGrp [2], 10, 10);
3435
g = HiddenGroup (gbp->modGrp [2], 2, 0, NULL);
3720
Hide (gbp->modGrp [eModTabOrganism]);
3722
gbp->modGrp [eModTabGenBank] = HiddenGroup (k, -1, 0, NULL);
3723
SetGroupSpacing (gbp->modGrp [eModTabGenBank], 10, 10);
3725
g = HiddenGroup (gbp->modGrp [eModTabGenBank], 2, 0, NULL);
3436
3726
SetGroupSpacing (g, 3, 10);
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');
3445
Hide (gbp->modGrp [2]);
3735
Hide (gbp->modGrp [eModTabGenBank]);
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);
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);
3456
Hide (gbp->modGrp [3]);
3746
Hide (gbp->modGrp [eModTabUnstructured]);
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);
3464
3754
Hide (pages [1]);