~ubuntu-branches/ubuntu/saucy/ncbi-tools6/saucy-proposed

« back to all changes in this revision

Viewing changes to desktop/pubdesc.c

  • Committer: Bazaar Package Importer
  • Author(s): Aaron M. Ucko
  • Date: 2009-08-11 22:03:47 UTC
  • mfrom: (1.4.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 10.
  • Revision ID: james.westby@ubuntu.com-20090811220347-g4b6lzdvphvvbpiu
* New upstream release.
* debian/libncbi6.symbols: update accordingly.
* debian/control: clean up obsolete or redundant relationship declarations.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
*
30
30
* Version Creation Date:   7/28/95
31
31
*
32
 
* $Revision: 6.69 $
 
32
* $Revision: 6.71 $
33
33
*
34
34
* File Description:
35
35
*
179
179
 
180
180
  TexT          pmid, muid, serial;
181
181
 
 
182
  DialoG        foldertabs;
 
183
 
182
184
  PubEquivLookupProc  lookupArticle;
183
185
  LookupJournalProc   lookupJournal;
184
186
} PubdescPage, PNTR PubdescPagePtr;
552
554
    {
553
555
      vnp->choice = 1;
554
556
      vnp->data.ptrvalue = SaveStringFromTextAndStripNewlines (ppp->xa_info);
 
557
      if (vnp->data.ptrvalue == NULL) {
 
558
        vnp->data.ptrvalue = StringSave ("?");
 
559
      }
555
560
    }
556
561
    vnp = ValNodeNew (vnphead);
557
562
    if (vnp != NULL)
2167
2172
  StdCleanupExtraProc (g, data);
2168
2173
}
2169
2174
 
 
2175
 
 
2176
static void PubdescDialogMessage (DialoG d, Int2 mssg)
 
2177
 
 
2178
{
 
2179
  PubdescPagePtr ppp;
 
2180
 
 
2181
  ppp = (PubdescPagePtr) GetObjectExtra (d);
 
2182
  if (ppp != NULL) {
 
2183
    switch (mssg) {
 
2184
      case NUM_VIB_MSG + 1 :
 
2185
        if (ppp->pub_choice == PUB_SUB || (ppp->pub_choice != PUB_BOOK && ppp->pub_choice != PUB_PROC))
 
2186
        {
 
2187
          ChangeAuthPage (ppp, 1, GetValue (ppp->foldertabs));
 
2188
        } else {
 
2189
          ChangeEditPage (ppp, 1, GetValue (ppp->foldertabs));
 
2190
        }
 
2191
        SetValue (ppp->foldertabs, 1);
 
2192
        break;
 
2193
      default :
 
2194
        break;
 
2195
    }
 
2196
  }
 
2197
}
 
2198
 
 
2199
 
2170
2200
static DialoG CreatePubdescDialog (GrouP h, CharPtr title, GrouP PNTR pages,
2171
2201
                        Uint1 reftype,
2172
2202
                        Uint1 pub_status, Int2 pub_choice,
2181
2211
  GrouP                 g11, g12, g13, g14, g15;
2182
2212
  GrouP                 g16, g17, g18, g19, g20, g21, g22, g23;
2183
2213
  ButtoN                lkp;
2184
 
  GrouP                 m, m1, m2, m3, m4, m5, m6, m7, m8, m9;
 
2214
  GrouP                 m, m2, m3, m4, m5, m6, m7, m8, m9;
2185
2215
  GrouP                 n1, n2, n3, n4;
2186
2216
  GrouP                 p, q, z;
2187
2217
  PrompT                p2, p3, p4, p5, p6;
2207
2237
    ppp->todialog = PubdescPtrToPubdescPage;
2208
2238
    ppp->fromdialog = PubdescPageToPubdescPtr;
2209
2239
    ppp->testdialog = TestPubdescDialog;
 
2240
    ppp->dialogmessage = PubdescDialogMessage;
2210
2241
 
2211
2242
/* copy a bunch of flags and defaults got from the init form */
2212
2243
    ppp->reftype = reftype;
2293
2324
    SetGroupSpacing (g1, 10, 10);
2294
2325
    if (ppp->pub_choice == PUB_SUB)
2295
2326
    {
2296
 
      m1 = (GrouP) CreateFolderTabs (g1, CitSubAuthTabs, 0, 0, 0,
 
2327
      ppp->foldertabs = CreateFolderTabs (g1, CitSubAuthTabs, 0, 0, 0,
2297
2328
                         PROGRAM_FOLDER_TAB,
2298
2329
                         ChangeAuthPage, (Pointer) ppp);
2299
2330
    }
2300
2331
    else if (ppp->pub_choice != PUB_BOOK && ppp->pub_choice != PUB_PROC)
2301
2332
    {
2302
 
      m1 = (GrouP) CreateFolderTabs (g1, AuthTabs, 0, 0, 0,
 
2333
      ppp->foldertabs = CreateFolderTabs (g1, AuthTabs, 0, 0, 0,
2303
2334
                         PROGRAM_FOLDER_TAB,
2304
2335
                         ChangeAuthPage, (Pointer) ppp);
2305
2336
    }
2306
2337
    else
2307
2338
    {
2308
 
      m1 = (GrouP) CreateFolderTabs (g1, AuthTabs, 0, 0, 0,
 
2339
      ppp->foldertabs = CreateFolderTabs (g1, AuthTabs, 0, 0, 0,
2309
2340
                         PROGRAM_FOLDER_TAB,
2310
2341
                         ChangeEditPage, (Pointer) ppp);
2311
2342
    }
2350
2381
                                                &(ppp->EditGroup[2]));
2351
2382
    }
2352
2383
 
2353
 
    AlignObjects (ALIGN_CENTER, (HANDLE) m1, (HANDLE) m2, (HANDLE) m3,
 
2384
    AlignObjects (ALIGN_CENTER, (HANDLE) ppp->foldertabs, (HANDLE) m2, (HANDLE) m3,
2354
2385
                  NULL);
2355
2386
 
2356
2387
    Hide (pages[thispage]);
2966
2997
      case VIB_MSG_DELETE :
2967
2998
        StdDeleteTextProc (NULL);
2968
2999
        break;
 
3000
      case NUM_VIB_MSG + 1 :
 
3001
        /* show affiliation tab */
 
3002
        ChangePubdescPage (pfp, 1, GetValue (pfp->foldertabs));
 
3003
        SetValue (pfp->foldertabs, 1);
 
3004
        SendMessageToDialog (pfp->data, NUM_VIB_MSG + 1);
 
3005
        break;
2969
3006
      default :
2970
3007
        if (pfp->appmessage != NULL) {
2971
3008
          pfp->appmessage (f, mssg);
3143
3180
      case VIB_MSG_DELETE :
3144
3181
        StdDeleteTextProc (NULL);
3145
3182
        break;
 
3183
      case NUM_VIB_MSG + 1 :
 
3184
        /* show affiliation tab */
 
3185
        ChangePubdescPage (pfp, 1, GetValue (pfp->foldertabs));
 
3186
        SetValue (pfp->foldertabs, 1);
 
3187
        SendMessageToDialog (pfp->data, NUM_VIB_MSG + 1);
 
3188
        break;
3146
3189
      default :
3147
3190
        if (pfp->appmessage != NULL) {
3148
3191
          pfp->appmessage (f, mssg);
3649
3692
  ArrowCursor ();
3650
3693
}
3651
3694
 
 
3695
 
 
3696
extern WindoW EditCitFeatDirectly (SeqFeatPtr sfp)
 
3697
{
 
3698
  WindoW w = NULL;
 
3699
  PubdescPtr pdp;
 
3700
  PubdescFormPtr        pfp;
 
3701
  SeqEntryPtr sep;
 
3702
  OMUserDataPtr  omudp;
 
3703
  Uint2          procid;
 
3704
 
 
3705
  if (sfp == NULL || sfp->data.choice != SEQFEAT_PUB) {
 
3706
    return NULL;
 
3707
  }
 
3708
 
 
3709
  procid = GetProcIdForItemEditor (sfp->idx.entityID, sfp->idx.itemID, OBJ_SEQFEAT, FEATDEF_PUB);
 
3710
 
 
3711
  omudp = ItemAlreadyHasEditor (sfp->idx.entityID, sfp->idx.itemID,
 
3712
                                OBJ_SEQFEAT, procid);
 
3713
 
 
3714
  if (omudp == NULL) {
 
3715
    sep = GetTopSeqEntryForEntityID (sfp->idx.entityID);
 
3716
 
 
3717
    pdp = sfp->data.value.ptrvalue;
 
3718
 
 
3719
    w = (WindoW) CreatePubdescFeatForm (-50, -33, "Citation Information",
 
3720
                                        pdp->reftype, 1, 0,
 
3721
                                        FALSE, FALSE,
 
3722
                                        sfp, sep, PubdescFeatFormActnProc,
 
3723
                                        NULL);
 
3724
 
 
3725
    pfp = GetObjectExtra (w);
 
3726
    if (pfp != NULL)
 
3727
    {
 
3728
 
 
3729
      pfp->input_entityID = sfp->idx.entityID;
 
3730
      pfp->input_itemID = sfp->idx.itemID;
 
3731
      pfp->input_itemtype = OBJ_SEQFEAT;
 
3732
      pfp->this_itemtype = OBJ_SEQFEAT;
 
3733
      pfp->this_subtype = FEATDEF_PUB;
 
3734
      pfp->procid = procid;
 
3735
      pfp->proctype = OMPROC_EDIT;
 
3736
      pfp->userkey = OMGetNextUserKey ();
 
3737
      omudp = ObjMgrAddUserData (pfp->input_entityID, pfp->procid,
 
3738
                                  OMPROC_EDIT, pfp->userkey);
 
3739
      if (omudp != NULL) {
 
3740
        omudp->userdata.ptrvalue = (Pointer) pfp;
 
3741
        omudp->messagefunc = StdVibrantEditorMsgFunc;
 
3742
      }
 
3743
 
 
3744
      SendMessageToForm (pfp->form, VIB_MSG_INIT);
 
3745
      PointerToForm (pfp->form, sfp);
 
3746
      SendMessageToForm (pfp->form, NUM_VIB_MSG + 1);
 
3747
    }
 
3748
  } else {
 
3749
    pfp = omudp->userdata.ptrvalue;
 
3750
    if (pfp != NULL) {
 
3751
      SendMessageToForm (pfp->form, NUM_VIB_MSG + 1);
 
3752
      w = (WindoW) pfp->form;
 
3753
    }
 
3754
  }
 
3755
  return w;
 
3756
}
 
3757
 
 
3758
 
 
3759
extern WindoW EditCitDescDirectly (SeqDescPtr sdp)
 
3760
{
 
3761
  WindoW w = NULL;
 
3762
  PubdescPtr pdp;
 
3763
  PubdescFormPtr        pfp;
 
3764
  SeqEntryPtr sep;
 
3765
  OMUserDataPtr omudp;
 
3766
  Uint2         procid;
 
3767
  ObjValNodePtr ovp;
 
3768
 
 
3769
  if (sdp == NULL || sdp->choice != Seq_descr_pub || !sdp->extended) {
 
3770
    return NULL;
 
3771
  }
 
3772
  ovp = (ObjValNodePtr) sdp;
 
3773
 
 
3774
  procid = GetProcIdForItemEditor (ovp->idx.entityID, ovp->idx.itemID, OBJ_SEQDESC, Seq_descr_pub);
 
3775
 
 
3776
  omudp = ItemAlreadyHasEditor (ovp->idx.entityID, ovp->idx.itemID,
 
3777
                                OBJ_SEQDESC, procid);
 
3778
 
 
3779
  if (omudp == NULL) {
 
3780
    sep = GetTopSeqEntryForEntityID (ovp->idx.entityID);
 
3781
 
 
3782
    pdp = sdp->data.ptrvalue;
 
3783
 
 
3784
    w = (WindoW) CreatePubdescDescForm (-50, -33, "Citation Information",
 
3785
                                        pdp->reftype, 1, 9,
 
3786
                                        FALSE, FALSE,
 
3787
                                        sdp, sep, PubdescDescFormActnProc,
 
3788
                                        NULL);
 
3789
 
 
3790
 
 
3791
    pfp = GetObjectExtra (w);
 
3792
    if (pfp != NULL)
 
3793
    {
 
3794
 
 
3795
      pfp->input_entityID = ovp->idx.entityID;
 
3796
      pfp->input_itemID = ovp->idx.itemID;
 
3797
      pfp->input_itemtype = OBJ_SEQDESC;
 
3798
      pfp->this_itemtype = OBJ_SEQDESC;
 
3799
      pfp->this_subtype = Seq_descr_pub;
 
3800
      pfp->procid = procid;
 
3801
      pfp->proctype = OMPROC_EDIT;
 
3802
      pfp->userkey = OMGetNextUserKey ();
 
3803
      omudp = ObjMgrAddUserData (pfp->input_entityID, pfp->procid,
 
3804
                                  OMPROC_EDIT, pfp->userkey);
 
3805
      if (omudp != NULL) {
 
3806
        omudp->userdata.ptrvalue = (Pointer) pfp;
 
3807
        omudp->messagefunc = StdVibrantEditorMsgFunc;
 
3808
      }
 
3809
 
 
3810
      SendMessageToForm (pfp->form, VIB_MSG_INIT);
 
3811
      PointerToDialog (pfp->data, (Pointer) sdp->data.ptrvalue);
 
3812
      SendMessageToForm (pfp->form, NUM_VIB_MSG + 1);
 
3813
    }
 
3814
  } else {
 
3815
    pfp = omudp->userdata.ptrvalue;
 
3816
    if (pfp != NULL) {
 
3817
      SendMessageToForm (pfp->form, NUM_VIB_MSG + 1);
 
3818
      w = (WindoW) pfp->form;
 
3819
    }
 
3820
  }
 
3821
  return w;
 
3822
}
 
3823
 
 
3824
 
3652
3825
static void ChangePubStat (GrouP g)
3653
3826
{
3654
3827
  Int2                  pubstat;