src/hg/lib/trackDbCustom.c 1.86
1.86 2010/05/07 05:03:55 kent
Code to get container multiWig to go.
Index: src/hg/lib/trackDbCustom.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/trackDbCustom.c,v
retrieving revision 1.85
retrieving revision 1.86
diff -b -B -U 4 -r1.85 -r1.86
--- src/hg/lib/trackDbCustom.c 30 Apr 2010 00:23:50 -0000 1.85
+++ src/hg/lib/trackDbCustom.c 7 May 2010 05:03:55 -0000 1.86
@@ -37,19 +37,21 @@
void parseColor(char *text, unsigned char *r, unsigned char *g, unsigned char *b)
/* Turn comma-separated string of three numbers into three
* color components. */
{
+char dupe[64];
+safecpy(dupe, sizeof(dupe), text);
char *words[4];
int wordCount;
-wordCount = chopString(text, ", \t", words, ArraySize(words));
+wordCount = chopString(dupe, ", \t", words, ArraySize(words));
if (wordCount != 3)
errAbort("Expecting 3 comma separated values in %s.", text);
*r = atoi(words[0]);
*g = atoi(words[1]);
*b = atoi(words[2]);
}
-static unsigned char parseVisibility(char *value, struct lineFile *lf)
+static unsigned char parseVisibility(char *value)
/* Parse a visibility value */
{
if (sameString(value, "hide") || sameString(value, "0"))
return tvHide;
@@ -61,10 +63,9 @@
return tvPack;
else if (sameString(value, "squish") || sameString(value, "4"))
return tvSquish;
else
- errAbort("Unknown visibility %s line %d of %s",
- value, lf->lineIx, lf->fileName);
+ errAbort("Unknown visibility %s ", value);
return tvHide; /* never reached */
}
static void parseTrackLine(struct trackDb *bt, char *value,
@@ -89,56 +90,58 @@
/* Add info from a variable/value pair to browser table. */
{
if (sameString(var, "track"))
parseTrackLine(bt, value, lf);
-else if (sameString(var, "shortLabel") || sameString(var, "name"))
- bt->shortLabel = cloneString(value);
-else if (sameString(var, "longLabel") || sameString(var, "description"))
- bt->longLabel = cloneString(value);
-else if (sameString(var, "priority"))
- bt->priority = atof(value);
-else if (sameWord(var, "url"))
- bt->url = cloneString(value);
-else if (sameString(var, "visibility"))
- {
- bt->visibility = parseVisibility(value, lf);
- }
-else if (sameWord(var, "color"))
- {
- parseColor(value, &bt->colorR, &bt->colorG, &bt->colorB);
- }
-else if (sameWord(var, "altColor"))
- {
- parseColor(value, &bt->altColorR, &bt->altColorG, &bt->altColorB);
- }
-else if (sameWord(var, "type"))
- {
- bt->type = cloneString(value);
- }
-else if (sameWord(var, "spectrum") || sameWord(var, "useScore"))
- {
- bt->useScore = TRUE;
- }
-else if (sameWord(var, "canPack"))
- {
- bt->canPack = !(sameString(value, "0") || sameString(value, "off"));
- }
-else if (sameWord(var, "chromosomes"))
- sqlStringDynamicArray(value, &bt->restrictList, &bt->restrictCount);
-else if (sameWord(var, "private"))
- bt->private = TRUE;
-else if (sameWord(var, "group"))
- {
- bt->grp = cloneString(value);
- }
if (bt->settingsHash == NULL)
bt->settingsHash = hashNew(7);
hashAdd(bt->settingsHash, var, cloneString(value));
if (bt->overrides != NULL)
hashAdd(bt->overrides, var, NULL);
}
+void trackDbFieldsFromSettings(struct trackDb *bt)
+/* Update trackDb fields from settings hash */
+{
+char *shortLabel = trackDbSetting(bt, "shortLabel");
+if (shortLabel != NULL)
+ bt->shortLabel = cloneString(shortLabel);
+char *longLabel = trackDbSetting(bt, "longLabel");
+if (longLabel != NULL)
+ bt->longLabel = cloneString(longLabel);
+char *priority = trackDbSetting(bt, "priority");
+if (priority != NULL)
+ bt->priority = atof(priority);
+char *url = trackDbSetting(bt, "url");
+if (url != NULL)
+ bt->url = cloneString(url);
+char *visibility = trackDbSetting(bt, "visibility");
+if (visibility != NULL)
+ bt->visibility = parseVisibility(visibility);
+char *color = trackDbSetting(bt, "color");
+if (color != NULL)
+ parseColor(color, &bt->colorR, &bt->colorG, &bt->colorB);
+char *altColor = trackDbSetting(bt, "altColor");
+if (altColor != NULL)
+ parseColor(altColor, &bt->altColorR, &bt->altColorG, &bt->altColorB);
+char *type = trackDbSetting(bt, "type");
+if (type != NULL)
+ bt->type = cloneString(type);
+if (trackDbSetting(bt, "spectrum") != NULL || trackDbSetting(bt, "useScore") != NULL)
+ bt->useScore = TRUE;
+char *canPack = trackDbSetting(bt, "canPack");
+if (canPack != NULL)
+ bt->canPack = !(sameString(canPack, "0") || sameString(canPack, "off"));
+char *chromosomes = trackDbSetting(bt, "chromosomes");
+if (chromosomes != NULL)
+ sqlStringDynamicArray(chromosomes, &bt->restrictList, &bt->restrictCount);
+if (trackDbSetting(bt, "private") != NULL)
+ bt->private = TRUE;
+char *grp = trackDbSetting(bt, "group");
+if (grp != NULL)
+ bt->grp = cloneString(grp);
+}
+
static void replaceStr(char **varPtr, char *val)
/** replace string in varPtr with val */
{
freeMem(*varPtr);
@@ -291,9 +294,11 @@
struct lineFile *lf = lineFileOpen(raFile, TRUE);
char *line, *word;
struct trackDb *btList = NULL, *bt;
boolean done = FALSE;
+#ifdef UNUSED
struct hash *compositeHash = hashNew(8);
+#endif /* UNUSED */
char *incFile;
for (;;)
{
@@ -344,17 +349,20 @@
line = trimSpaces(line);
trackDbUpdateOldTag(&word, &line);
trackDbAddInfo(bt, word, line, lf);
}
+#ifdef UNUSED
if (trackDbLocalSetting(bt, "compositeTrack") != NULL)
hashAdd(compositeHash, bt->tableName, bt);
+#endif /* UNUSED */
}
lineFileClose(&lf);
slReverse(&btList);
return btList;
}
+#ifdef UNUSED
void trackDbOverrideVisbility(struct hash *tdHash, char *visibilityRa,
boolean hideFirst)
/* Override visbility settings using a ra file. If hideFirst, set all
* visibilities to hide before applying visibilityRa. */
@@ -381,14 +389,15 @@
if ((trackName != NULL) && (visibility != NULL))
{
struct trackDb *td = hashFindVal(tdHash, trackName);
if (td != NULL)
- td->visibility = parseVisibility(visibility, lf);
+ td->visibility = parseVisibility(visibility);
}
hashFree(&raRecord);
}
lineFileClose(&lf);
}
+#endif /* UNUSED */
#ifdef OLD
void trackDbOverridePriority(struct hash *tdHash, char *priorityRa)
/* Override priority settings using a ra file. */
@@ -701,9 +710,8 @@
else if (startsWith("bam", type))
cType = cfgBam;
// TODO: Only these are configurable so far
-// uglyAbort("cfgTypeFromTdb 3 tdb=%s type=%s", tdb->tableName,type);
if(cType == cfgNone && warnIfNecessary)
{
if(!startsWith("bed ", type) && !startsWith("bigBed", type)
&& subgroupFind(tdb,"view",NULL))