f4d16c968e8bb273b564253341a690ee824d203c
tdreszer
  Tue Aug 10 15:55:50 2010 -0700
Extended commonCssStyles and made amenable to printf/hgPrintf
diff --git src/lib/cheapcgi.c src/lib/cheapcgi.c
index e17dbc9..12683a6 100644
--- src/lib/cheapcgi.c
+++ src/lib/cheapcgi.c
@@ -1944,26 +1944,56 @@
 cookieList = NULL;
 }
 
-void commonCssStyles()
-/* Defines a few common styles to use through CSS */
-{
-    printf("\n<style type='text/css'>\n");
-    printf(".trDrag {background-color:%s;} .pale {background-color:%s;}\n",COLOR_BG_GHOST,COLOR_BG_PALE);
-    printf(".inputBox {border: 2px inset %s;}\n",COLOR_LTGREY);
-    printf(".greenRoof {border-top: 3px groove %s;}\n",COLOR_DARKGREEN);
-    //printf(".greenFloor {border-bottom: 3px ridge %s;}\n",COLOR_DARKGREEN);      // Unused
-    //printf(".hiddenRoof {border-top: 0px solid %s;}\n",COLOR_BG_ALTDEFAULT);     // Doesn't work
-    //printf(".hiddenFloor {border-bottom: 0px solid %s;}\n",COLOR_BG_ALTDEFAULT); // Doesn't work
-    printf(".greenBox {border: 5px outset %s;}\n",COLOR_DARKGREEN);
-    printf(".blueBox {border: 4px inset %s;}\n",COLOR_DARKBLUE);
-    //printf(".slantUp {-moz-transform:rotate(-75deg); -moz-transform-origin: bottom left; -webkit-transform:rotate(-75deg); -webkit-transform-origin: bottom left; white-space:nowrap; position:relative;left: 16px; filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}\n");
-    //printf(".slantDn {-moz-transform:rotate( 75deg); -moz-transform-origin: top left;    -webkit-transform:rotate( 75deg); -webkit-transform-origin: top left;    white-space:nowrap; position:relative;left: 16px; filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}\n");
-    //printf(".rotate90 {-webkit-transform: rotate(-90deg); -moz-transform: rotate(-90deg);}\n");
-    printf(".hintCol {font-size:70%%; line-height:80%%; border-style: hidden; background-color:%s;}\n",COLOR_BG_ALTDEFAULT);
-    printf(".hintRow {font-size:70%%; line-height:80%%; border-style: hidden; background-color:%s;}\n",COLOR_BG_ALTDEFAULT);
-    //printf(".halfVis {opacity: 0.5; filters.alpha.opacity=50;}\n");   // not ready for prime time because ff and ie can't agree
-    printf(".inOutButton {height:24px; width:24px; border-style: outset;}\n");
-    printf(".waitMask {display: none; cursor: wait; z-index: 9999; position: absolute; top: 0; left: 0; height: 100%%; width: 100%%; background-color: #fff; opacity: 0;}");
-    puts("</style>");
+char *commonCssStyles()
+/* Returns a string of common CSS styles */
+{
+static boolean commonStylesWritten = FALSE;
+if(commonStylesWritten)
+    return "";
+commonStylesWritten = TRUE;
+
+struct dyString *style = newDyString(256);
+
+dyStringPrintf(style,"\n<style type='text/css'>\n");
+dyStringPrintf(style,".ghost {background-color:%s;}\n",COLOR_BG_GHOST);
+dyStringPrintf(style,".pale {background-color:%s;}\n",COLOR_BG_PALE);
+
+// These are for dreagReorder: both in imageV2 and in hgTrackUi subtrack list
+dyStringPrintf(style,".trDrag {background-color:%s;}\n",COLOR_LTGREEN);
+dyStringPrintf(style,".dragHandle {cursor: s-resize;}\n");
+
+// These are for imageV2 sideButtons:
+dyStringPrintf(style,".btn  {border-style:outset; background-color:%s; border-color:%s;}\n",COLOR_LTGREY,COLOR_DARKGREY);
+dyStringPrintf(style,".btnN {border-width:1px 1px 1px 1px; margin:1px 1px 0px 1px;}\n"); // connect none
+dyStringPrintf(style,".btnU {border-width:0px 1px 1px 1px; margin:0px 1px 0px 1px;}\n"); // connect up
+dyStringPrintf(style,".btnD {border-width:1px 1px 0px 1px; margin:1px 1px 0px 1px;}\n"); // connect down
+dyStringPrintf(style,".btnL {border-width:0px 1px 0px 1px; margin:0px 1px 0px 1px;}\n"); // connect linear
+dyStringPrintf(style,".btnBlue {background-color:#91B3E6; border-color:%s;}\n",COLOR_BLUE_BUTTON);
+
+// Common boxes
+dyStringPrintf(style,".inputBox {border: 2px inset %s;}\n",COLOR_LTGREY);
+dyStringPrintf(style,".greenRoof {border-top: 3px groove %s;}\n",COLOR_DARKGREEN);
+//dyStringPrintf(style,".greenFloor {border-bottom: 3px ridge %s;}\n",COLOR_DARKGREEN);      // Unused
+//dyStringPrintf(style,".hiddenRoof {border-top: 0px solid %s;}\n",COLOR_BG_ALTDEFAULT);     // Doesn't work
+//dyStringPrintf(style,".hiddenFloor {border-bottom: 0px solid %s;}\n",COLOR_BG_ALTDEFAULT); // Doesn't work
+dyStringPrintf(style,".greenBox {border: 5px outset %s;}\n",COLOR_DARKGREEN); // Matrix
+dyStringPrintf(style,".blueBox {border: 4px inset %s;}\n",COLOR_DARKBLUE);    // cfg box
+dyStringPrintf(style,".redBox {border: 3px ridge %s; background:Beige; padding:10px; margin:10px; text-align:left;}\n",COLOR_RED); // Special alert
+
+// Experiments with squeezing giant matrices
+//dyStringPrintf(style,".slantUp {-moz-transform:rotate(-75deg); -moz-transform-origin: bottom left; -webkit-transform:rotate(-75deg); -webkit-transform-origin: bottom left; white-space:nowrap; position:relative;left: 16px; filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}\n");
+//dyStringPrintf(style,".slantDn {-moz-transform:rotate( 75deg); -moz-transform-origin: top left;    -webkit-transform:rotate( 75deg); -webkit-transform-origin: top left;    white-space:nowrap; position:relative;left: 16px; filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}\n");
+//dyStringPrintf(style,".rotate90 {-webkit-transform: rotate(-90deg); -moz-transform: rotate(-90deg);}\n");
+
+dyStringPrintf(style,".hintCol {font-size:70%%; line-height:80%%; border-style: hidden; background-color:%s;}\n",COLOR_BG_ALTDEFAULT);
+dyStringPrintf(style,".hintRow {font-size:70%%; line-height:80%%; border-style: hidden; background-color:%s;}\n",COLOR_BG_ALTDEFAULT);
+//dyStringPrintf(style,".halfVis {opacity: 0.5; filters.alpha.opacity=50;}\n");   // not ready for prime time because ff and ie can't agree
+
+// waitMask allows waiting on long running javascript using utils.js::waitOnFunction
+dyStringPrintf(style,".waitMask {display: none; cursor: wait; z-index: 9999; position: absolute; top: 0; left: 0; height: 100%%; width: 100%%; background-color: #fff; opacity: 0;}\n");
+dyStringPrintf(style,".inOutButton {height:24px; width:24px; border-style: outset;}\n"); // A [+][-] button can be toggled by waitOnFunction during long running scripts
+
+dyStringPrintf(style,"</style>\n");
+return dyStringCannibalize(&style);
 }