e67c8441cdab3ec2adee1240ea738e7b72503e74 kent Mon Mar 18 21:39:22 2013 -0700 Making extended case and coloring options dialog check boxes and radio buttons sticky. fixes #10325 diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c index dbbe8ea..4c1bae5 100644 --- src/hg/hgc/hgc.c +++ src/hg/hgc/hgc.c @@ -4246,67 +4246,62 @@ } boolean forestHasUnderstandableTrack(char *db, struct trackDb *tdb) // TRUE if any leaf is usable in getting DNA. { return (rFindUnderstandableTrack(db, tdb) != NULL); } void doGetDnaExtended1() /* Do extended case/color get DNA options. */ { struct trackDb *tdbList = hTrackDb(database), *tdb; struct trackDb *ctdbList = tdbForCustomTracks(); struct trackDb *utdbList = tdbForUserPsl(); -boolean isRc = cartUsualBoolean(cart, "hgc.dna.rc", FALSE); boolean revComp = cartUsualBoolean(cart, "hgSeq.revComp", FALSE); boolean maskRep = cartUsualBoolean(cart, "hgSeq.maskRepeats", FALSE); int padding5 = cartUsualInt(cart, "hgSeq.padding5", 0); int padding3 = cartUsualInt(cart, "hgSeq.padding3", 0); +int lineWidth = cartUsualInt(cart, "lineWidth", 60); char *casing = cartUsualString(cart, "hgSeq.casing", ""); char *repMasking = cartUsualString(cart, "hgSeq.repMasking", ""); boolean caseUpper= FALSE; char *pos = NULL; ctdbList = slCat(ctdbList, tdbList); tdbList = slCat(utdbList, ctdbList); cartWebStart(cart, database, "Extended DNA Case/Color"); if (NULL != (pos = stripCommas(cartOptionalString(cart, "getDnaPos")))) hgParseChromRange(database, pos, &seqName, &winStart, &winEnd); if (winEnd - winStart > 1000000) { printf("Please zoom in to 1 million bases or less to color the DNA"); return; } printf("<H1>Extended DNA Case/Color Options</H1>\n"); puts( "Use this page to highlight features in genomic DNA text. " "DNA covered by a particular track can be highlighted by " "case, underline, bold, italic, or color. See below for " "details about color, and for examples. <B>Tracks in " ""hide" display mode are not shown in the grid below.</B> <P>"); -if (cgiBooleanDefined("hgSeq.revComp")) - { - isRc = revComp; - /* don't set revComp in cart -- it shouldn't be a default. */ - } if (cgiBooleanDefined("hgSeq.maskRepeats")) cartSetBoolean(cart, "hgSeq.maskRepeats", maskRep); if (*repMasking != 0) cartSetString(cart, "hgSeq.repMasking", repMasking); if (maskRep) { struct trackDb *rtdb; char *visString = cartOptionalString(cart, "rmsk"); for (rtdb = tdbList; rtdb != NULL; rtdb=rtdb->next) { if (startsWith(rtdb->table, "rmsk")) break; } printf("<P> <B>Note:</B> repeat masking style from previous page will <B>not</B> apply to this page.\n"); if ((rtdb != NULL) && @@ -4321,38 +4316,38 @@ caseUpper = TRUE; if (*casing != 0) cartSetString(cart, "hgSeq.casing", casing); printf("<FORM ACTION=\"%s\" METHOD=\"POST\">\n\n", hgcName()); cartSaveSession(cart); cgiMakeHiddenVar("g", "htcGetDna3"); if (NULL != (pos = stripCommas(cartOptionalString(cart, "getDnaPos")))) { hgParseChromRange(database, pos, &seqName, &winStart, &winEnd); } puts("Position "); savePosInTextBox(seqName, winStart+1 - (revComp ? padding3 : padding5), winEnd + (revComp ? padding5 : padding3)); printf(" Reverse complement "); -cgiMakeCheckBox("hgc.dna.rc", isRc); +cgiMakeCheckBox("hgSeq.revComp", revComp); printf("<BR>\n"); printf("Letters per line "); -cgiMakeIntVar("lineWidth", 60, 3); +cgiMakeIntVar("lineWidth", lineWidth, 3); printf(" Default case: "); -cgiMakeRadioButton("case", "upper", caseUpper); +cgiMakeRadioButton("hgSeq.casing", "upper", caseUpper); printf(" Upper "); -cgiMakeRadioButton("case", "lower", !caseUpper); +cgiMakeRadioButton("hgSeq.casing", "lower", !caseUpper); printf(" Lower "); cgiMakeButton("Submit", "submit"); printf("<BR>\n"); printf("<TABLE BORDER=1>\n"); printf("<TR><TD>Track<BR>Name</TD><TD>Toggle<BR>Case</TD><TD>Under-<BR>line</TD><TD>Bold</TD><TD>Italic</TD><TD>Red</TD><TD>Green</TD><TD>Blue</TD></TR>\n"); for (tdb = tdbList; tdb != NULL; tdb = tdb->next) { char *table = tdb->table; char *track = tdb->track; if ( sameString(USER_PSL_TRACK_NAME, table) || lookupCt(track) != NULL || ( tdbVisLimitedByAncestors(cart,tdb,TRUE,TRUE) != tvHide && forestHasUnderstandableTrack(database, tdb) ) ) { char *visString = cartUsualString(cart, track, hStringFromTv(tdb->visibility)); @@ -4863,32 +4858,32 @@ s = fb->start - winStart; e = fb->end - winStart; if (isRc) reverseIntRange(&s, &e, winSize); bitSetRange(bits, s, e - s); } } } void doGetDna3() /* Fetch DNA in extended color format */ { struct dnaSeq *seq; struct cfm *cfm; int i; -boolean isRc = cgiBoolean("hgc.dna.rc"); -boolean defaultUpper = sameString(cartString(cart, "case"), "upper"); +boolean isRc = cartUsualBoolean(cart, "hgSeq.revComp", FALSE); +boolean defaultUpper = sameString(cartString(cart, "hgSeq.casing"), "upper"); int winSize; int lineWidth = cartInt(cart, "lineWidth"); struct rgbColor *colors; struct trackDb *tdbList = hTrackDb(database), *tdb; struct trackDb *ctdbList = tdbForCustomTracks(); struct trackDb *utdbList = tdbForUserPsl(); char *pos = NULL; Bits *uBits; /* Underline bits. */ Bits *iBits; /* Italic bits. */ Bits *bBits; /* Bold bits. */ if (NULL != (pos = stripCommas(cartOptionalString(cart, "getDnaPos")))) hgParseChromRange(database, pos, &seqName, &winStart, &winEnd); winSize = winEnd - winStart; @@ -25245,27 +25240,27 @@ * This is used to show alignments by hashing the organism associated with the * track to the database name where the chromInfo is stored. For example, the * mousBlat track in the human browser would hash to the mm2 database. */ { orgDbHash = hashNew(8); } void cartDoMiddle(struct cart *theCart) /* Save cart and do main middle handler. */ { initOrgDbHash(); cart = theCart; doMiddle(); } -char *excludeVars[] = {"hgSeq.revComp", "bool.hcg.dna.rc", "Submit", "submit", "g", "i", "aliTable", "addp", "pred", NULL}; +char *excludeVars[] = {"Submit", "submit", "g", "i", "aliTable", "addp", "pred", NULL}; int main(int argc, char *argv[]) { long enteredMainTime = clock1000(); pushCarefulMemHandler(LIMIT_2or6GB); cgiSpoof(&argc,argv); setUdcCacheDir(); cartEmptyShell(cartDoMiddle, hUserCookie(), excludeVars, NULL); cgiExitTime("hgc", enteredMainTime); return 0; }