7bc24686024ec14d351ab208b5179ab251d7c463
tdreszer
  Fri Oct 14 16:34:15 2011 -0700
Major work on bedFilt, psl and wigMaf to make them properly composite ready.
diff --git src/hg/hgc/mafClick.c src/hg/hgc/mafClick.c
index 39337d4..dd94108 100644
--- src/hg/hgc/mafClick.c
+++ src/hg/hgc/mafClick.c
@@ -654,57 +654,63 @@
             conservationStatsLink(tdb,
                         "Conservation score statistics",
                                 consWiggles->table);
             }
         else if (wigCount > 1)
             {
             /* multiple wiggles. List all that have been turned on with
              * checkboxes */
 
             /* Scan for cart variables -- do any exist, are any turned on ? */
             boolean wigSet = FALSE;
             boolean wigOn = FALSE;
             for (consWig = consWiggles; consWig != NULL;
                         consWig = consWig->next)
                 {
-                char *wigVar = wigMafWiggleVar(tdb, consWig);
-                if (cartVarExists(cart, wigVar))
+                char *wigVar = wigMafWiggleVar(tdb->track, consWig);
+                char *wigVarSuffix = wigVar + strlen (tdb->track) + 1;
+                if (cartVarExistsAnyLevel(cart, tdb, FALSE, wigVarSuffix))
                     {
                     wigSet = TRUE;
-                    if (cartBoolean(cart, wigVar))
+                    if (cartBooleanClosestToHome(cart, tdb, FALSE, wigVarSuffix))
                         wigOn = TRUE;
                     }
                 }
             /* If there are no cart vars, turn on the first (default) wig */
             if (!wigSet)
                 {
-                cartSetBoolean(cart, wigMafWiggleVar(tdb, consWiggles), TRUE);
+                char *prefix = tdb->track; // use when setting things to the cart
+                if (tdbIsContainerChild(tdb))
+                    prefix = tdbGetContainer(tdb)->track;
+
+                cartSetBoolean(cart, wigMafWiggleVar(prefix, consWiggles), TRUE);
                 wigOn = TRUE;
                 }
             if (wigOn)
                 {
                 boolean first = TRUE;
                 for (consWig = consWiggles; consWig != NULL;
                             consWig = consWig->next)
                     {
                     if (first)
                         {
                         printf("Conservation score statistics:");
                         first = FALSE;
                         }
-                    if (cartUsualBoolean(cart, wigMafWiggleVar(tdb, consWig),
-                                            FALSE))
+                    char *wigVar = wigMafWiggleVar(tdb->track, consWig);
+                    char *wigVarSuffix = wigVar + strlen (tdb->track) + 1;
+                    if (cartUsualBooleanClosestToHome(cart, tdb, FALSE, wigVarSuffix,FALSE))
                         {
                         printf("  ");
                         subChar(consWig->uiLabel, '_', ' ');
                         conservationStatsLink(tdb,
                             consWig->uiLabel, consWig->table);
                         }
                     }
                 }
             }
         puts("</P>\n");
 
         /* no alignment to display when in visibilities where only wiggle is shown */
         char *vis = cartOptionalString(cart, tdb->track);
         if (vis)
             {
@@ -1202,32 +1208,33 @@
 	char *showVarVal = cartUsualString(cart, showVarName, "all");
 	boolean onlyDiff = sameWord(showVarVal, "diff");
         /* add links for conservation score statistics */
         boolean first = TRUE;
         consWiggles = wigMafWiggles(database, tdb);
         for (consWig = consWiggles; consWig != NULL;
                 consWig = consWig->next)
             {
             if (first)
                 printf("\n<P>");
             if (sameString(consWig->leftLabel, DEFAULT_CONS_LABEL))
                 conservationStatsLink(tdb,
                         "Conservation score statistics", consWig->table);
             else
                 {
-                if (!cartCgiUsualBoolean(cart,
-                    wigMafWiggleVar(tdb, consWig), FALSE))
+                char *wigVar = wigMafWiggleVar(tdb->track, consWig);
+                char *wigVarSuffix = wigVar + strlen (tdb->track) + 1;
+                if (!cartUsualBooleanClosestToHome(cart, tdb, FALSE, wigVarSuffix,FALSE))
                         continue;
                 if (first)
                     {
                     printf("\n<P>Conservation score statistics:");
                     first = FALSE;
                     }
                 printf("&nbsp;&nbsp;");
                 subChar(consWig->uiLabel, '_', ' ');
                 conservationStatsLink(tdb,
                     consWig->uiLabel, consWig->table);
                 }
 	    }
         puts("</P>\n");
 
 #ifdef REVERSESTRAND