440d84ee43c6a5f8a22bfe7886681db4ee7cc202
braney
  Thu Aug 28 16:55:27 2014 -0700
adding more support for bigGenePred in hgc and hgTables.
diff --git src/hg/hgc/bigBedClick.c src/hg/hgc/bigBedClick.c
index 8509b59..c55e384 100644
--- src/hg/hgc/bigBedClick.c
+++ src/hg/hgc/bigBedClick.c
@@ -1,29 +1,51 @@
 /* Handle details pages for wiggle tracks. */
 
 /* Copyright (C) 2013 The Regents of the University of California 
  * See README in this or parent directory for licensing information. */
 
 #include "common.h"
 #include "wiggle.h"
 #include "cart.h"
 #include "hgc.h"
 #include "hCommon.h"
 #include "hgColors.h"
 #include "bigBed.h"
 #include "hui.h"
 
+static void bigGenePredLinks(char *track, char *item)
+/* output links to genePred driven sequence dumps */
+{
+printf("<H3>Links to sequence:</H3>\n");
+printf("<UL>\n");
+puts("<LI>\n");
+hgcAnchorSomewhere("htcTranslatedPredMRna", item, "translate", seqName);
+printf("Translated Protein</A> from genomic DNA\n");
+puts("</LI>\n");
+
+puts("<LI>\n");
+hgcAnchorSomewhere("htcGeneMrna", item, track, seqName);
+printf("Predicted mRNA</A> \n");
+puts("</LI>\n");
+
+puts("<LI>\n");
+hgcAnchorSomewhere("htcGeneInGenome", item, track, seqName);
+printf("Genomic Sequence</A> from assembly\n");
+puts("</LI>\n");
+printf("</UL>\n");
+}
+
 static void bigBedClick(char *fileName, struct trackDb *tdb,
                      char *item, int start, int end, int bedSize)
 /* Handle click in generic bigBed track. */
 {
 boolean showUrl = FALSE;
 char *chrom = cartString(cart, "c");
 
 /* Open BigWig file and get interval list. */
 struct bbiFile *bbi = bigBedFileOpen(fileName);
 struct lm *lm = lmInit(0);
 int ivStart = start, ivEnd = end;
 if (start == end)
     {
     // item is an insertion; expand the search range from 0 bases to 2 so we catch it:
     ivStart = max(0, start-1);
@@ -97,30 +119,32 @@
 	int restBedFields = bedSize - 3;
 	if (restCount > restBedFields)
 	    {
             if (0 == extraFieldsPrint(tdb,NULL,restFields + restBedFields,restCount - restBedFields))
                 {
                 int i;
                 char label[20];
                 safef(label, sizeof(label), "nonBedFieldsLabel");
                 printf("<B>%s&nbsp;</B>",
                        trackDbSettingOrDefault(tdb, label, "Non-BED fields:"));
                 for (i = restBedFields;  i < restCount;  i++)
                     printf("%s%s", (i > 0 ? "\t" : ""), restFields[i]);
                 printf("<BR>\n");
                 }
 	    }
+	if (sameString(tdb->type, "bigGenePred"))
+	    bigGenePredLinks(tdb->track, item);
 	}
     if (isCustomTrack(tdb->track))
 	{
 	time_t timep = bbiUpdateTime(bbi);
 	printBbiUpdateTime(&timep);
 	}
 
     }
 
 if (!found)
     {
     printf("No item %s starting at %d\n", emptyForNull(item), start);
     }
 
 lmCleanup(&lm);