1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
#include <seqscrl.h>
extern SeqScrollDataPtr SeqScrollDataNew (Int4 scrnum)
{
SeqScrollDataPtr ssdp;
Int4 i;
if ((ssdp = (SeqScrollDataPtr) MemNew (sizeof (SeqScrollData))) != NULL)
{
ssdp->br = NULL;
ssdp->pc = NULL;
ssdp->curval = 0;
ssdp->minval = 0;
ssdp->maxval = 100;
ssdp->bsp = NULL;
ssdp->gvp = NULL;
ssdp->scr = (FloatHiPtr) MemNew (sizeof (FloatHi) * scrnum);
ssdp->res = (CharPtr) MemNew (sizeof (Char) * scrnum);
ssdp->filtertype = 0;
ssdp->next = NULL;
for (i = 0; i < scrnum; i++)
{
ssdp->scr[i] = 0.0;
ssdp->res[i] = ' ';
}
}
return ssdp;
}
/* all pointers to structures are handled by others */
extern SeqScrollDataPtr SeqScrollDataFree (SeqScrollDataPtr ssdp)
{
SeqScrollDataPtr snext;
while (ssdp != NULL)
{
snext = ssdp->next;
ssdp->next = NULL;
ssdp->br = NULL;
ssdp->pc = NULL;
ssdp->bsp = NULL;
ssdp->gvp = NULL;
ssdp->scr = (FloatHiPtr) MemFree (ssdp->scr);
ssdp->res = (CharPtr) MemFree (ssdp->res);
(SeqScrollDataPtr) MemFree (ssdp);
ssdp = snext;
}
return ssdp;
}
static void ScrollBarScrollProc (BaR b, GraphiC g, Int2 new, Int2 old)
{
SeqScrollDataPtr ssdp;
Int2 curval;
Char buf[8];
ssdp = (SeqScrollDataPtr) GetObjectExtra (b);
if (ssdp == NULL || ssdp->pc == NULL)
return;
curval = (Int2) (((ssdp->maxval-ssdp->minval) - new) + ssdp->minval);
sprintf (buf, "%3d", curval);
SetTitle (ssdp->pc, buf);
ssdp->curval = curval;
return;
}
static void ScrollTextScrollProc (TexT t)
{
SeqScrollDataPtr ssdp;
Int2 curval;
Char buf[8];
ssdp = (SeqScrollDataPtr) GetObjectExtra (t);
if (ssdp == NULL || ssdp->pc == NULL || ssdp->br == NULL)
return;
GetTitle (ssdp->pc, buf, sizeof (buf));
StrToInt (buf, &curval);
if (curval > ssdp->maxval)
curval = ssdp->maxval;
if (curval < ssdp->minval)
curval = ssdp->minval;
/*
sprintf (buf, "%3d", curval);
SetTitle (ssdp->pc, buf);
*/
CorrectBarValue (ssdp->br, (ssdp->maxval-ssdp->minval)
-(curval-ssdp->minval));
ssdp->curval = curval;
return;
}
extern void TextScrollWindowNew (SeqScrollDataPtr ssdp, GrouP g)
{
Char buf[8];
ssdp->pc = DialogText (g, "", 2, ScrollTextScrollProc);
SetObjectExtra (ssdp->pc, ssdp, NULL);
ssdp->br = ScrollBar (g, 0, 2, ScrollBarScrollProc);
SetObjectExtra (ssdp->br, ssdp, NULL);
CorrectBarMax (ssdp->br, ssdp->maxval-ssdp->minval);
CorrectBarValue (ssdp->br, (ssdp->maxval-ssdp->minval)
-(ssdp->curval-ssdp->minval));
sprintf (buf, "%3d", ssdp->curval);
SetTitle (ssdp->pc, buf);
return;
}
extern void AddScrollControl (SeqScrollDataPtr PNTR ssdp, GrouP g,
Int2 cur, Int2 min, Int2 max,
Int4 score_number)
{
SeqScrollDataPtr ssdpcur, ssdpnext;
if ((ssdpnext = SeqScrollDataNew (score_number)) == NULL)
return;
ssdpnext->curval = cur;
ssdpnext->minval = min;
ssdpnext->maxval = max;
TextScrollWindowNew (ssdpnext, g);
if (*ssdp == NULL)
{
*ssdp = ssdpnext;
}
else
{
ssdpcur = *ssdp;
while (ssdpcur->next != NULL)
ssdpcur = ssdpcur->next;
ssdpcur->next = ssdpnext;
}
return;
}
|