8c908f948b09826c6cb4452ee5b282aca41be85e galt Tue Dec 8 21:52:59 2015 -0800 Multi-region (exonMostly). This work allows people to look at virtual chromosomes from a list of regions and then navigate and perform all of the usual functions on it. diff --git src/hg/hgTracks/config.c src/hg/hgTracks/config.c index 87d05ea..0d989cc 100644 --- src/hg/hgTracks/config.c +++ src/hg/hgTracks/config.c @@ -324,36 +324,39 @@ for (track = *pTrackList; track != NULL; track = track->next) { struct trackRef *tr; AllocVar(tr); tr->track = track; slAddHead(&track->group->trackList, tr); } /* Straighten things out, clean up, and go home. */ for (group = *pGroupList;group != NULL; group = group->next) slReverse(&group->trackList); } return count; } -void configPageSetTrackVis(int vis) -/* Do config page after setting track visibility. If vis is -2, then visibility - * is unchanged. If -1 then set visibility to default, otherwise it should - * be tvHide, tvDense, etc. */ + +void configInitTrackList( + int vis, + char **pGroupTarget, + struct track **pTrackList, + struct track **pIdeoTrack, + struct group **pGroupList +) { -struct dyString *title = dyStringNew(0); char *groupTarget = NULL; struct track *trackList = NULL; struct track *ideoTrack = NULL; struct group *groupList = NULL; withPriorityOverride = cartUsualBoolean(cart, configPriorityOverride, FALSE); /* Get track list and group them. */ ctList = customTracksParseCart(database, cart, &browserLines, &ctFileName); trackList = getTrackList(&groupList, vis); if (trackHash == NULL) trackHash = makeGlobalTrackHash(trackList); // Subtrack settings must be removed when composite/view settings are updated parentChildCartCleanup(trackList,cart,oldVars); @@ -362,30 +365,51 @@ /* The ideogram for some reason is considered a track. * We don't really want to process it as one though, so * we see if it's there, and if necessary remove it. */ ideoTrack = chromIdeoTrack(trackList); if (ideoTrack != NULL) removeTrackFromGroup(ideoTrack); /* Fetch group to change on if any from CGI, * and remove var so it doesn't get used again. */ groupTarget = cloneString(cartUsualString(cart, configGroupTarget, "")); cartRemove(cart, configGroupTarget); if (sameString(groupTarget, "none")) freez(&groupTarget); +*pGroupTarget = groupTarget; +*pTrackList = trackList; +*pIdeoTrack = ideoTrack; +*pGroupList = groupList; + +} + +void configPageSetTrackVis(int vis) +/* Do config page after setting track visibility. If vis is -2, then visibility + * is unchanged. If -1 then set visibility to default, otherwise it should + * be tvHide, tvDense, etc. */ +{ +char *groupTarget; +struct track *trackList; +struct track *ideoTrack; +struct group *groupList; + +configInitTrackList(vis, &groupTarget, &trackList, &ideoTrack, &groupList); + +struct dyString *title = dyStringNew(0); + dyStringPrintf(title, "Configure Image"); hPrintf("