~ubuntu-branches/debian/experimental/ncbi-tools6/experimental

« back to all changes in this revision

Viewing changes to vibrant/vibforms.c

  • Committer: Bazaar Package Importer
  • Author(s): Aaron M. Ucko
  • Date: 2008-07-14 19:43:15 UTC
  • mfrom: (2.1.12 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080714194315-ed44u9ek7txva2rz
Tags: 6.1.20080302-3
tools/readdb.c: enable madvise()-based code on all glibc (hence all
Debian) systems, not just Linux.  (Closes: #490437.)

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.23 $
 
32
* $Revision: 6.27 $
33
33
*
34
34
* File Description: 
35
35
*
40
40
*
41
41
*
42
42
* $Log: vibforms.c,v $
 
43
* Revision 6.27  2007/07/17 13:09:33  bollin
 
44
* If deleting a row from a TagList, and the row is the last visible row and the
 
45
* offscreen row is empty, remove the last offscreen row and adjust the scrollbar.
 
46
*
 
47
* Revision 6.26  2007/06/28 15:57:14  bollin
 
48
* Added buttons to delete interval row from location editor.
 
49
*
 
50
* Revision 6.25  2007/06/12 14:21:32  bollin
 
51
* Made JustSaveStringFromText extern - do not strip spaces.
 
52
*
 
53
* Revision 6.24  2007/02/01 16:31:11  bollin
 
54
* Use Int4 instead of Int2 in EnumAssoc functions to allow larger lists.
 
55
*
43
56
* Revision 6.23  2006/05/09 19:12:19  kans
44
57
* CreateTagListDialogExEx protects against row or col being > maximum allowed
45
58
*
298
311
/* enum field <-> popup list UI */
299
312
Boolean InitEnumPopup (PopuP lst, EnumFieldAssocPtr al, UIEnumPtr pdef) 
300
313
{
301
 
  Int2 i, ii;
 
314
  Int4 i, ii;
302
315
  EnumFieldAssocPtr efap;
303
316
  CharPtr PNTR titles;
304
317
  if (al == NULL) {
339
352
 
340
353
Boolean GetEnumPopup (PopuP lst, EnumFieldAssocPtr al, UIEnumPtr pval)
341
354
{
342
 
  Int2 i; Int2 is = GetValue (lst);
 
355
  Int4 i; Int4 is = GetValue (lst);
343
356
  for (i = 1; al->name != NULL; i++, al++)
344
357
     if (i == is) { *pval = al->value; return TRUE; }
345
358
  return FALSE;
347
360
 
348
361
static void SetEnumPopupEx (PopuP lst, EnumFieldAssocPtr al, UIEnum val, Boolean zeroOkay) 
349
362
{
350
 
  Int2 i;
 
363
  Int4 i;
351
364
  for (i = 1; al->name != NULL; i++, al++)
352
365
     if (al->value == val) { SafeSetValue (lst, i); return; }
353
366
  if (zeroOkay && val == 0) return;
362
375
 
363
376
CharPtr GetEnumPopupByName (PopuP lst, EnumFieldAssocPtr al)
364
377
{
365
 
  Int2 i; Int2 is = GetValue (lst);
 
378
  Int4 i; Int4 is = GetValue (lst);
366
379
  for (i = 1; al->name != NULL; i++, al++)
367
380
     if (i == is) { return StringSaveNoNull (al->name); }
368
381
  return NULL;
371
384
static void SetEnumPopupByNameEx (PopuP lst, EnumFieldAssocPtr al, CharPtr name, Boolean zeroOkay)
372
385
 
373
386
{
374
 
  Int2 i;
 
387
  Int4 i;
375
388
  for (i = 1; al->name != NULL; i++, al++)
376
389
     if (StringICmp (al->name, name) == 0) { SafeSetValue (lst, i); return; }
377
390
  if (zeroOkay && StringHasNoText (name)) return;
460
473
EnumFieldAssocPtr FreeEnumFieldAlist (EnumFieldAssocPtr alist)
461
474
 
462
475
{
463
 
  Int2  j;
 
476
  Int4  j;
464
477
 
465
478
  if (alist != NULL) {
466
479
    for (j = 0; alist [j].name != NULL; j++) {
621
634
{
622
635
  AlistDialogPtr     adp;
623
636
  EnumFieldAssocPtr  ap;
624
 
  Int2               i;
625
 
  Int2               len;
 
637
  Int4               i;
 
638
  Int4               len;
626
639
  LisT               p;
627
640
 
628
641
  if (prnt == NULL || al == NULL) return NULL;
1803
1816
  }
1804
1817
}
1805
1818
 
1806
 
static CharPtr JustSaveStringFromText (TexT t)
 
1819
extern Nlm_CharPtr Nlm_JustSaveStringFromText (Nlm_TexT t)
1807
1820
 
1808
1821
{
1809
1822
  size_t   len;
2086
2099
  }
2087
2100
}
2088
2101
 
 
2102
 
 
2103
static Boolean RowHasValue (TagListPtr tlp, Int4 row)
 
2104
{
 
2105
  Int4    j;
 
2106
  UIEnum  num;
 
2107
  Boolean has_value = FALSE;
 
2108
 
 
2109
  if (tlp == NULL || row < 0 || row > tlp->rows - 1) {
 
2110
    return FALSE;
 
2111
  }
 
2112
 
 
2113
  for (j = 0; j < tlp->cols; j++) {
 
2114
    switch (tlp->types [j]) {
 
2115
      case TAGLIST_TEXT :
 
2116
      /*case TAGLIST_PROMPT :*/
 
2117
        if ( !TextHasNoText((TexT)GetTagListControl(tlp, row, j)) )
 
2118
          has_value = TRUE;
 
2119
        break;
 
2120
      case TAGLIST_POPUP :
 
2121
      case TAGLIST_LIST :
 
2122
        if (tlp->alists != NULL &&
 
2123
            GetEnumPopup ((PopuP)GetTagListControl (tlp, row - 1, j),
 
2124
                          tlp->alists [j], &num) &&
 
2125
            (Int2) num > 0) {
 
2126
          has_value = TRUE;
 
2127
        }
 
2128
        break;
 
2129
      default :
 
2130
        break;
 
2131
    }
 
2132
  }
 
2133
  return has_value;
 
2134
}
 
2135
 
 
2136
 
 
2137
static void ShortenTagListScrollBar (TagListPtr tlp)
 
2138
{
 
2139
  Int2    max, val;
 
2140
  ValNodePtr vnp, prev = NULL;
 
2141
 
 
2142
  if (tlp == NULL || tlp->noExtend || tlp->rows < 2) return;
 
2143
 
 
2144
  max = GetBarMax (tlp->bar);
 
2145
  if (max == 0) return;
 
2146
 
 
2147
  val = GetValue (tlp->bar);
 
2148
 
 
2149
  if (val == tlp->max - 1 && !RowHasValue(tlp, tlp->rows - 1)) {
 
2150
    (tlp->max)--;
 
2151
    CorrectBarMax (tlp->bar, tlp->max);
 
2152
    CorrectBarPage (tlp->bar, tlp->rows - 1, tlp->rows - 1);
 
2153
    CorrectBarMax (tlp->left_bar, tlp->max);
 
2154
    CorrectBarPage (tlp->left_bar, tlp->rows - 1, tlp->rows - 1);
 
2155
 
 
2156
    vnp = tlp->vnp;
 
2157
    while (vnp->next != NULL) {
 
2158
      prev = vnp;
 
2159
      vnp = vnp->next;
 
2160
    }
 
2161
    if (prev != NULL) {
 
2162
      prev->next = ValNodeFreeData (prev->next);
 
2163
    }
 
2164
  }
 
2165
}
 
2166
 
 
2167
 
 
2168
static void ClearTagListRow (ButtoN b)
 
2169
{
 
2170
  TagListPtr  tlp;
 
2171
  Int2        i, j;
 
2172
 
 
2173
  tlp = (TagListPtr) GetObjectExtra (b);
 
2174
  if (tlp != NULL) {
 
2175
    if (tlp->ask_before_clear)
 
2176
    {
 
2177
      if (ANS_CANCEL == Message (MSG_OKC, "Are you sure you want to clear the row?"))
 
2178
      {
 
2179
        return;
 
2180
      }
 
2181
      tlp->ask_before_clear = FALSE;
 
2182
    }
 
2183
    for (i = 0; i < tlp->rows; i++) {
 
2184
      if (b == tlp->clear_btns[i])
 
2185
      {
 
2186
        for (j = 0; j < tlp->cols; j++) {
 
2187
          switch (tlp->types[j])
 
2188
          {
 
2189
            case TAGLIST_PROMPT:
 
2190
              /* do nothing */
 
2191
              break;
 
2192
            case TAGLIST_POPUP:
 
2193
              SetValue (GetTagListControl (tlp, i, j), 1);
 
2194
              PopupTagProc (GetTagListControl (tlp, i, j));
 
2195
              break;
 
2196
            case TAGLIST_LIST:
 
2197
              SetValue (GetTagListControl (tlp, i, j), 1);
 
2198
              ListTagProc (GetTagListControl (tlp, i, j));
 
2199
              break;
 
2200
            case TAGLIST_TEXT:
 
2201
              SetTitle (GetTagListControl (tlp, i, j), "");
 
2202
              TextTagProc (GetTagListControl (tlp, i, j));
 
2203
              break;
 
2204
          }
 
2205
        }
 
2206
        /* fix scroll bar max if we have just deleted the last row */
 
2207
        if (i == tlp->rows - 1 && !tlp->noExtend) {
 
2208
          ShortenTagListScrollBar (tlp);
 
2209
        }
 
2210
        break;
 
2211
      }
 
2212
    }
 
2213
  }
 
2214
}
 
2215
 
2089
2216
extern DialoG CreateTagListDialogEx (GrouP h, Uint2 rows, Uint2 cols,
2090
2217
                                     Int2 spacing, Uint2Ptr types,
2091
2218
                                     Uint2Ptr textWidths, EnumFieldAssocPtr PNTR alists,
2092
2219
                                     Boolean useBar, Boolean noExtend,
2093
2220
                                     ToDialogFunc tofunc, FromDialogFunc fromfunc);
2094
2221
 
2095
 
extern DialoG CreateTagListDialogExEx (GrouP h, Uint2 rows, Uint2 cols,
 
2222
extern DialoG CreateTagListDialogEx3 (GrouP h, Uint2 rows, Uint2 cols,
2096
2223
                                       Int2 spacing, Uint2Ptr types,
2097
2224
                                       Uint2Ptr textWidths, Nlm_EnumFieldAssocPtr PNTR alists,
2098
2225
                                       Boolean useBar, Boolean noExtend,
2099
2226
                                       Nlm_ToDialogFunc tofunc, Nlm_FromDialogFunc fromfunc,
2100
2227
                                       TaglistCallback PNTR callbacks, Pointer callback_data,
2101
 
                                       Boolean useLeftBar)
 
2228
                                       Boolean useLeftBar, Boolean useClearBtns)
2102
2229
 
2103
2230
{
2104
2231
  EnumFieldAssocPtr  al;
2111
2238
  LisT               lst;
2112
2239
  GrouP              p;
2113
2240
  GrouP              s;
 
2241
  GrouP              clr;
2114
2242
  TagListPtr         tlp;
2115
2243
  Int2               wid;
2116
2244
 
2161
2289
    }
2162
2290
 
2163
2291
    col = (Int2) cols;
 
2292
    if (useClearBtns)
 
2293
    {
 
2294
      col++;
 
2295
    }
 
2296
    tlp->ask_before_clear = TRUE;
2164
2297
    g = HiddenGroup (s, -col, 0, NULL);
2165
2298
    SetGroupSpacing (g, spacing, spacing);
2166
2299
    for (i = 0; i < tlp->rows; i++) {
 
2300
      if (useClearBtns)
 
2301
      {
 
2302
        clr = HiddenGroup (g, 2, 0, NULL);
 
2303
        tlp->clear_btns[i] = PushButton (clr, "X", ClearTagListRow);
 
2304
        SetObjectExtra (tlp->clear_btns[i], tlp, NULL);
 
2305
        StaticPrompt (clr, "", 5, MAX (dialogTextHeight, popupMenuHeight), systemFont, 'l');
 
2306
      }
2167
2307
      for (j = 0; j < tlp->cols; j++) {
2168
2308
        switch (types [j]) {
2169
2309
          case TAGLIST_TEXT :
2250
2390
  return (DialoG) p;
2251
2391
}
2252
2392
 
 
2393
extern DialoG CreateTagListDialogExEx (GrouP h, Uint2 rows, Uint2 cols,
 
2394
                                       Int2 spacing, Uint2Ptr types,
 
2395
                                       Uint2Ptr textWidths, Nlm_EnumFieldAssocPtr PNTR alists,
 
2396
                                       Boolean useBar, Boolean noExtend,
 
2397
                                       Nlm_ToDialogFunc tofunc, Nlm_FromDialogFunc fromfunc,
 
2398
                                       TaglistCallback PNTR callbacks, Pointer callback_data,
 
2399
                                       Boolean useLeftBar)
 
2400
{
 
2401
  return CreateTagListDialogEx3 (h, rows, cols, spacing, types, textWidths, alists,
 
2402
                                    useBar, noExtend, tofunc, fromfunc,
 
2403
                                    callbacks, callback_data, useLeftBar, FALSE);
 
2404
}
 
2405
 
 
2406
 
2253
2407
extern DialoG CreateTagListDialogEx (GrouP h, Uint2 rows, Uint2 cols,
2254
2408
                                     Int2 spacing, Uint2Ptr types,
2255
2409
                                     Uint2Ptr textWidths, EnumFieldAssocPtr PNTR alists,