37a331259beee4fa8ebe7aa7f4d5b9d765a14c7f
kent
  Thu Jan 6 15:45:34 2011 -0800
Starting to make hgHubConnect talk with hgTracks and hgTrackUi.  Right now the tracks appear on the track list, but are not displaying properly.
diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index 60a0982..a327fc4 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -28,30 +28,31 @@
 #include "hgTracks.h"
 #include "trashDir.h"
 #include "grp.h"
 #include "versionInfo.h"
 #include "web.h"
 #include "cds.h"
 #include "cutterTrack.h"
 #include "wikiTrack.h"
 #include "ctgPos.h"
 #include "bed.h"
 #include "bigBed.h"
 #include "bigWig.h"
 #include "bedCart.h"
 #include "customTrack.h"
 #include "trackHub.h"
+#include "hubConnect.h"
 #include "cytoBand.h"
 #include "ensFace.h"
 #include "liftOver.h"
 #include "pcrResult.h"
 #include "wikiLink.h"
 #include "jsHelper.h"
 #include "mafTrack.h"
 #include "hgConfig.h"
 #include "encode.h"
 #include "agpFrag.h"
 #include "imageV2.h"
 #include "suggest.h"
 #include "searchTracks.h"
 
 static char const rcsid[] = "$Id: doMiddle.c,v 1.1651 2010/06/11 17:53:06 larrym Exp $";
@@ -3313,84 +3314,68 @@
 	    {
 	    if (wordCount != 3)
 		errAbort("Expecting 3 words in pix line");
 	    trackLayoutSetPicWidth(&tl, words[2]);
 	    }
 	}
     }
 for (ct = ctList; ct != NULL; ct = ct->next)
     {
     hasCustomTracks = TRUE;
     tg = newCustomTrack(ct);
     slAddHead(pTrackList, tg);
     }
 }
 
-void addTracksFromTrackHub(char *hubName, char *hubUrl, struct track **pTrackList,
+static void addTracksFromTrackHub(int id, char *hubUrl, struct track **pTrackList,
 	struct trackHub **pHubList)
 /* Load up stuff from data hub and append to list. The hubUrl points to
  * a trackDb.ra format file.  */
 {
 /* Load trackDb.ra file and make it into proper trackDb tree */
-struct trackHub *hub = trackHubOpen(hubUrl);
+char hubName[8];
+safef(hubName, sizeof(hubName), "%d",id);
+struct trackHub *hub = trackHubOpen(hubUrl, hubName);
 if (hub != NULL)
     {
     struct trackHubGenome *hubGenome = trackHubFindGenome(hub, database);
-    hub->name = catTwoStrings("hub_", hubName);
     if (hubGenome != NULL)
 	{
-	struct trackDb *tdb, *tdbList = trackHubTracksForGenome(hub, hubGenome);
+	struct trackDb *tdbList = trackHubTracksForGenome(hub, hubGenome);
 	uglyf("Got %d tracks from %s@%s<BR>\n", slCount(tdbList), hubName, hubUrl);
 
-	trackDbAddTableField(tdbList);
-	trackHubAddNamePrefix(hubName, tdbList);
-	trackHubAddGroupName(hub->name, tdbList);
-	uglyf("added hub_%s_ prefix to track list<BR>\n", hubName);
-
-	for (tdb = tdbList; tdb != NULL; tdb = tdb->next)
-	    {
-	    trackDbFieldsFromSettings(tdb);
-	    trackDbPolish(tdb);
-	    }
-	uglyf("polished tracks<BR>\n");
-
 	trackDbLinkUpGenerations(tdbList);
 	uglyf("About to addTdbListToTrackList<BR>\n");
 	uglyOne = TRUE;
 	addTdbListToTrackList(tdbList, NULL, pTrackList);
 	if (tdbList != NULL)
 	    slAddHead(pHubList, hub);
 	}
 
     }
 }
 
 void loadTrackHubs(struct track **pTrackList, struct trackHub **pHubList)
 /* Load up stuff from data hubs and append to lists. */
 {
-char *trackHubs = cloneString(cartUsualString(cart, "trackHubs", NULL));
-uglyf("trackHubs=%s\n<BR>\n", trackHubs);
-if (trackHubs == NULL)
-    return;
-struct slPair *hubList = slPairFromString(trackHubs);
+struct hubConnectStatus *hub, *hubList =  hubConnectStatusFromCart(cart);
 uglyf("Got %d hubs<BR>\n", slCount(hubList));
-struct slPair *hub;
 for (hub = hubList; hub != NULL; hub = hub->next)
     {
-    addTracksFromTrackHub(hub->name, hub->val, pTrackList, pHubList);
+    addTracksFromTrackHub(hub->id, hub->hubUrl, pTrackList, pHubList);
     }
-slPairFreeValsAndList(&hubList);
+hubConnectStatusFreeList(&hubList);
 }
 
 boolean restrictionEnzymesOk()
 /* Check to see if it's OK to do restriction enzymes. */
 {
 return (hTableExists("hgFixed", "cutters") &&
     hTableExists("hgFixed", "rebaseRefs") &&
     hTableExists("hgFixed", "rebaseCompanies"));
 }
 
 void fr2ScaffoldEnsemblLink(char *archive)
 /* print out Ensembl link to appropriate scaffold there */
 {
 struct sqlConnection *conn = hAllocConn(database);
 struct sqlResult *sr = NULL;