da2e00021362a366f2f3b17b238305ca7981c7d2 tdreszer Thu Dec 15 12:44:34 2011 -0800 Some older composites have packable children which are seen in rightClick as unpackable. The mixed case that gives rise to this should not be allowed now, but we can support it for those older composites. The rule is, if any single subtrack is packable, then the whole tree is. diff --git src/hg/hgTracks/config.c src/hg/hgTracks/config.c index ad45869..4ac5bdc 100644 --- src/hg/hgTracks/config.c +++ src/hg/hgTracks/config.c @@ -1,579 +1,579 @@ /* config - put up track and display configuration page. */ #include "common.h" #include "dystring.h" #include "cheapcgi.h" #include "htmshell.h" #include "hdb.h" #include "hCommon.h" #include "cart.h" #include "web.h" #include "customTrack.h" #include "hgTracks.h" #include "hgConfig.h" #include "jsHelper.h" #include "imageV2.h" #include "search.h" #include "hubConnect.h" #define DOWNLOADS_ONLY_TRACKS_INCLUDED #ifdef DOWNLOADS_ONLY_TRACKS_INCLUDED #include "fileUi.h" #endif///def DOWNLOADS_ONLY_TRACKS_INCLUDED static void textSizeDropDown() /* Create drop down for font size. */ { static char *sizes[] = {"6", "8", "10", "12", "14", "18", "24", "34"}; hDropList(textSizeVar, sizes, ArraySize(sizes), tl.textSize); } #ifdef PRIORITY_CHANGES_IN_CONFIG_UI static void printGroupListHtml(char *groupCgiName, struct group *groupList, char *defaultGroup) /* Make an HTML select input listing the groups. */ { char *groups[128]; char *labels[128]; char *defaultLabel = NULL; int numGroups = 0; struct group *group = NULL; for (group = groupList; group != NULL; group = group->next) { groups[numGroups] = group->name; labels[numGroups] = group->name; if (sameWord(defaultGroup, groups[numGroups])) defaultLabel = groups[numGroups]; numGroups++; if (numGroups >= ArraySize(groups)) internalErr(); } cgiMakeDropListFull(groupCgiName, labels, groups, numGroups, defaultLabel, NULL); } #endif///def PRIORITY_CHANGES_IN_CONFIG_UI static void trackConfig(struct track *trackList, struct group *groupList, char *groupTarget, int changeVis) /* Put up track configurations. If groupTarget is * NULL then set visibility for tracks in all groups. Otherwise, * just set it for the given group. If vis is -2, then visibility is * unchanged. If -1 then set visibility to default, otherwise it should * be tvHide, tvDense, etc. */ { #ifdef PRIORITY_CHANGES_IN_CONFIG_UI char pname[512]; char gname[512]; #endif///def PRIORITY_CHANGES_IN_CONFIG_UI struct group *group; boolean showedRuler = FALSE; setRulerMode(); changeTrackVis(groupList, groupTarget, changeVis); /* Set up ruler mode according to changeVis. */ #ifdef BOB_DOESNT_LIKE if (changeVis != -2) { if (groupTarget == NULL || (groupList != NULL && sameString(groupTarget, groupList->name))) { if (changeVis == -1) rulerMode = tvFull; else rulerMode = changeVis; } } #endif /* BOB_DOESNT_LIKE */ jsInit(); cgiMakeHiddenVar(configGroupTarget, "none"); for (group = groupList; group != NULL; group = group->next) { struct trackRef *tr; if (group->trackList == NULL) continue; /* check if group section should be displayed */ char *otherState; char *indicator; char *indicatorImg; boolean isOpen = !isCollapsedGroup(group); collapseGroupGoodies(isOpen, FALSE, &indicatorImg, &indicator, &otherState); hPrintf("
"); hPrintf(" | \n"); #ifdef PRIORITY_CHANGES_IN_CONFIG_UI if (withPriorityOverride) { hPrintf("\n"); safef(pname, sizeof(pname), "%s.priority",group->name); hDoubleVar(pname, (double)group->priority, 4); hPrintf(" | \n"); if (isOpen) hPrintf("%s | ", wrapWhiteFont("Group")); hPrintf("\n"); } #endif///def PRIORITY_CHANGES_IN_CONFIG_UI hPrintf("|||
---|---|---|---|---|---|
"); hPrintf("", hgTrackUiName(), cartSessionVarName(), cartSessionId(cart), chromName, RULER_TRACK_NAME); hPrintf("%s", RULER_TRACK_LABEL); hPrintf(" | "); hPrintf(""); hTvDropDownClass("ruler", rulerMode, FALSE, rulerMode ? "normalText" : "hiddenText"); hPrintf(" | "); hPrintf(""); hPrintf("Chromosome position in bases. (Clicks here zoom in 3x)"); hPrintf(" | "); #ifdef PRIORITY_CHANGES_IN_CONFIG_UI if (withPriorityOverride) { hPrintf(""); hPrintf(" | "); hPrintf(""); hPrintf(" | "); } #endif///def PRIORITY_CHANGES_IN_CONFIG_UI hPrintf("|
"); if (tdbIsSuperTrackChild(tdb)) /* indent members of a supertrack */ hPrintf(" "); // Print an icon before the title when one is defined hPrintPennantIcon(tdb); if (track->hasUi) hPrintf("", tdb->parent ? "Part of super track: " : "Configure ", tdb->parent ? tdb->parent->shortLabel : tdb->shortLabel, hgTrackUiName(),cartSessionVarName(), cartSessionId(cart), track->track); hPrintf(" %s", tdb->shortLabel); if (tdbIsSuper(tdb)) hPrintf("..."); if (track->hasUi) hPrintf(""); hPrintf(" | "); hPrintf(""); if (tdbIsSuperTrackChild(tdb)) /* indent members of a supertrack */ hPrintf(" "); /* If track is not on this chrom print an informational message for the user. */ #ifdef DOWNLOADS_ONLY_TRACKS_INCLUDED if (tdbIsDownloadsOnly(tdb)) hPrintf("Downloads", // No vis display for downloadsOnly hgFileUiName(),cartSessionVarName(), cartSessionId(cart), tdb->track); else #endif///def DOWNLOADS_ONLY_TRACKS_INCLUDED if (hTrackOnChrom(track->tdb, chromName)) { if (tdbIsSuper(track->tdb)) { /* supertrack dropdown is hide/show */ superTrackDropDown(cart, track->tdb, 1); } else { /* check for option of limiting visibility to one mode */ hTvDropDownClassVisOnly(track->track, track->visibility, - track->canPack, (track->visibility == tvHide) ? + rTdbTreeCanPack(track->tdb), (track->visibility == tvHide) ? "hiddenText" : "normalText", trackDbSetting(track->tdb, "onlyVisibility")); } } else hPrintf("[No data-%s]", chromName); hPrintf(" | "); hPrintf(""); hPrintf("%s", tdb->longLabel); hPrintf(" | "); #ifdef PRIORITY_CHANGES_IN_CONFIG_UI if (withPriorityOverride) { hPrintf(""); #ifdef DOWNLOADS_ONLY_TRACKS_INCLUDED if (tdbIsDownloadsOnly(tdb)) hPrintf("  | \n "); else #endif///def DOWNLOADS_ONLY_TRACKS_INCLUDED { safef(pname, sizeof(pname), "%s.priority",track->track); hDoubleVar(pname, (double)track->priority, 4); hPrintf(" | "); hPrintf("\n"); /* suppress group pull-down for supertrack members */ if (tdbIsSuperTrackChild(track->tdb)) hPrintf(" "); else { safef(gname, sizeof(gname), "%s.group",track->track); printGroupListHtml(gname, groupList, track->groupName); } } hPrintf(" | "); } #endif///def PRIORITY_CHANGES_IN_CONFIG_UI hPrintf("