06d7be056190c14b85e71bc12523f18ea6815b5e markd Mon Dec 7 00:50:29 2020 -0800 BLAT mmap index support merge with master diff --git src/hg/hgTracks/config.c src/hg/hgTracks/config.c index 644a53a..4d517c9 100644 --- src/hg/hgTracks/config.c +++ src/hg/hgTracks/config.c @@ -48,101 +48,153 @@ labels[i] = name; i++; } char* currentTheme = cartOptionalString(cart, "theme"); hDropList("theme", labels, i, currentTheme); slFreeList(themes); hPrintf(""); } char *freeTypeFontNames[] = { "AvantGarde-Book", "AvantGarde-Demi", "AvantGarde-BookOblique", "AvantGarde-DemiOblique", -"Bookman-Light", -"Bookman-Demi", -"Bookman-LightItalic", -"Bookman-DemiItalic", -"NewCenturySchlbk-Roman", -"NewCenturySchlbk-Bold", -"NewCenturySchlbk-Italic", -"NewCenturySchlbk-BoldItalic", "Helvetica", "Helvetica-Bold", "Helvetica-Oblique", "Helvetica-BoldOblique", "Helvetica-Narrow", "Helvetica-Narrow-Bold", "Helvetica-Narrow-Oblique", "Helvetica-Narrow-BoldOblique", "Times-Roman", "Times-Bold", "Times-Italic", "Times-BoldItalic", "Courier", "Courier-Bold", "Courier-Oblique", "Courier-BoldOblique", -"Palatino-Roman", -"Palatino-Bold", -"Palatino-Italic", -"Palatino-BoldItalic", "ZapfChancery-MediumItalic", }; char *freeTypeFontFiles[] = { "a010013l.pfb", "a010015l.pfb", "a010033l.pfb", "a010035l.pfb", -"b018012l.pfb", -"b018015l.pfb", -"b018032l.pfb", -"b018035l.pfb", -"c059013l.pfb", -"c059016l.pfb", -"c059033l.pfb", -"c059036l.pfb", "n019003l.pfb", "n019004l.pfb", "n019023l.pfb", "n019024l.pfb", "n019043l.pfb", "n019044l.pfb", "n019063l.pfb", "n019064l.pfb", "n021003l.pfb", "n021004l.pfb", "n021023l.pfb", "n021024l.pfb", "n022003l.pfb", "n022004l.pfb", "n022023l.pfb", "n022024l.pfb", -"p052003l.pfb", -"p052004l.pfb", -"p052023l.pfb", -"p052024l.pfb", "z003034l.pfb", }; +char *emptyStyles[] = { +"Normal" +}; + static void textFontDropDown() /* Create drop down for font size. */ { -hDropList(textFontVar, freeTypeFontNames, ArraySize(freeTypeFontNames), tl.textFont); +/* get current values for font and style */ +char *currentFontName = cloneString(tl.textFont); +char *currentStyle = strchr(currentFontName, '-'); +if (currentStyle) + *currentStyle++ = 0; +else + currentStyle = "Normal"; + +char *faceNames[sizeof(freeTypeFontNames)]; +int ii; +int numFonts = 0; +struct dyString *dy = dyStringNew(1024); +dyStringPrintf(dy, " fontStyles = [];\n"); + +int numStyle = 0; +char *lastName = NULL; + +faceNames[numFonts++] = "Bitmap"; +dyStringPrintf(dy, " fontStyles['Bitmap'] = ['Normal'];"); + +for (ii=0; ii < ArraySize(freeTypeFontNames); ii++) + { + char *fontName = cloneString(freeTypeFontNames[ii]); + char *style = strchr(fontName, '-'); + + if (style) + *style++ = 0; + + if ((lastName == NULL) || differentString(lastName, fontName)) + { + faceNames[numFonts] = fontName; + if (lastName != NULL) + dyStringPrintf(dy, " ];\n"); + + dyStringPrintf(dy, " fontStyles['%s'] = [", fontName); + numStyle = 0; + numFonts++; + } + + if (style == NULL) + style = cloneString("Normal"); + if (numStyle) + dyStringPrintf(dy, ","); + dyStringPrintf(dy, "'%s'", style); + numStyle++; + + lastName = fontName; + } + dyStringPrintf(dy, " ];\n"); + +dyStringPrintf(dy, "$(\"[name='%s']\").change(function()\n", textFontVar); +dyStringPrintf(dy, "{\n"); +dyStringPrintf(dy, " $(\"[name='textStyle']\").empty();"); +dyStringPrintf(dy, " val= $(this).find(':selected').val(); \n"); +dyStringPrintf(dy, " if (fontStyles[val].length == 1) {\n"); +dyStringPrintf(dy, " $(\"[id='textStyleDrop']\").hide();$(\"[id='textStyleName']\").hide();\n"); +dyStringPrintf(dy, " $(\"[name='textStyle']\").val('Normal');\n"); +dyStringPrintf(dy, " } else {\n"); +dyStringPrintf(dy, " $(\"[id='textStyleDrop']\").show();$(\"[id='textStyleName']\").show();\n"); +dyStringPrintf(dy, " }\n"); +dyStringPrintf(dy, " for(ii=0; ii < fontStyles[val].length; ii++) { $(\"[name='textStyle']\").append( new Option(fontStyles[val][ii],fontStyles[val][ii],))};\n"); +dyStringPrintf(dy, "});\n"); +dyStringPrintf(dy, "$(\"[name='textFont']\").change();\n"); +dyStringPrintf(dy, "$(\"[name='textStyle']\").val('%s');\n", currentStyle); +jsInline(dy->string); + +hDropList(textFontVar, faceNames, numFonts, currentFontName); +} + +static void textStyleDropDown() +/* Create drop down for font size. */ +{ +hDropList(textStyleVar, emptyStyles, ArraySize(emptyStyles), emptyStyles[0]); } 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); } 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 @@ -495,58 +547,62 @@ cartSaveSession(cart); hPrintf(""); /* do not want all the submit buttons named the same thing, this one is: */ cgiMakeButton("topSubmit", "submit"); // 3 column table hPrintf("\n"); hPrintf(""); hPrintf(""); hPrintf(""); if (trackLayoutInclFontExtras()) { hPrintf(""); } hPrintf(""); if (sameString(cfgOptionDefault("freeType", "off"), "on")) { hPrintf(""); + hPrintf(""); + hPrintf(""); hPrintf(""); } themeDropDown(cart); hTableStart(); if (ideoTrack != NULL) { hPrintf("\n"); } hPrintf("
image width:"); hPrintf(""); hIntVar("pix", tl.picWidth, 4); hPrintf("pixels
label area width:"); hPrintf(""); -hIntVar("hgt.labelWidth", leftLabelWidthChars, 2); +hIntVar(leftLabelWidthVar, tl.leftLabelWidthChars, 2); hPrintf("characters
text size:"); hPrintf(""); textSizeDropDown(); hPrintf(""); char *defaultStyle = cartUsualString(cart, "fontType", "medium"); cartMakeRadioButton(cart, "fontType", "medium", defaultStyle); hPrintf(" medium "); cartMakeRadioButton(cart, "fontType", "fixed", defaultStyle); hPrintf(" fixed "); cartMakeRadioButton(cart, "fontType", "bold", defaultStyle); hPrintf(" bold "); hPrintf(" "); hPrintf("
font:"); hPrintf(""); textFontDropDown(); - hPrintf("
style:"); + hPrintf(""); + textStyleDropDown(); + hPrintf("
"); hCheckBox("ideogram", cartUsualBoolean(cart, "ideogram", TRUE)); hPrintf(""); hPrintf("Display chromosome ideogram above main graphic"); hPrintf("
");