src/hg/lib/chainCart.c 1.2

1.2 2009/03/12 00:05:45 hiram
Fixup chain and net trackUi so they will work in multi-views
Index: src/hg/lib/chainCart.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/chainCart.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -b -B -U 1000000 -r1.1 -r1.2
--- src/hg/lib/chainCart.c	19 Jul 2004 22:45:54 -0000	1.1
+++ src/hg/lib/chainCart.c	12 Mar 2009 00:05:45 -0000	1.2
@@ -1,67 +1,64 @@
 /*	chainCart.c - take care of parsing and combining values from the
  *	chain trackDb optional settings and the same values that may be
  *	in the cart.
  */
 #include "common.h"
 #include "jksql.h"
 #include "trackDb.h"
 #include "cart.h"
 #include "dystring.h"
 #include "hui.h"
 #include "chainCart.h"
 
 static char const rcsid[] = "$Id$";
 
-extern struct cart *cart;      /* defined in hgTracks.c or hgTrackUi */
-
+enum chainColorEnum chainFetchColorOption(struct cart *cart,
+    struct trackDb *tdb, char **optString)
 /******	ColorOption - Chrom colors by default **************************/
-enum chainColorEnum chainFetchColorOption(struct trackDb *tdb,
-	char **optString)
 {
 char *Default = chainColorEnumToString(chainColorChromColors);
-char option[MAX_OPT_STRLEN]; /* .color  */
 char *chainColor = NULL;
 enum chainColorEnum ret;
 
-snprintf( option, sizeof(option), "%s.%s", tdb->tableName, OPT_CHROM_COLORS );
-chainColor = cloneString(cartOptionalString(cart, option));
+chainColor = cloneString(cartOptionalStringClosestToHome(cart, tdb, FALSE,
+	 OPT_CHROM_COLORS));
 
 /*	If chainColor is a string, it came from the cart, otherwise
  *	see if it is specified in the trackDb option, finally
  *	return the default.
  */
 if (!chainColor)
     {
     char * tdbDefault = 
-	trackDbSettingOrDefault(tdb, OPT_CHROM_COLORS, Default);
+	trackDbSettingClosestToHomeOrDefault(tdb, OPT_CHROM_COLORS, Default);
 
     freeMem(chainColor);
     if (differentWord(Default,tdbDefault))
 	chainColor = cloneString(tdbDefault);
     else
 	{
 	struct hashEl *hel;
 	/*	no chainColor from trackDb, maybe it is in tdb->settings
 	 *	(custom tracks keep settings here)
 	 */
 	chainColor = cloneString(Default);
 	if ((tdb->settings != (char *)NULL) &&
 	    (tdb->settingsHash != (struct hash *)NULL))
 	    {
 	    if ((hel =hashLookup(tdb->settingsHash, OPT_CHROM_COLORS)) !=NULL)
 		if (differentWord(Default,(char *)hel->val))
 		    {
 		    freeMem(chainColor);
 		    chainColor = cloneString((char *)hel->val);
 		    }
 	    }
 	}
     }
 
 if (optString)
     *optString = cloneString(chainColor);
 
 ret = chainColorStringToEnum(chainColor);
 freeMem(chainColor);
 return(ret);
 }	/*	enum chainColorEnum chainFetchColorOption()	*/