692065227f9b0f987144c4608ffd6c31ce2af35d
kate
  Mon Jul 29 17:45:05 2019 -0700
Add support for styling submit buttons to indicate if they have been pressed (in modal mode).  Do this for reverse and multi-region buttons on hgTracks. refs #23922

diff --git src/hg/lib/hPrint.c src/hg/lib/hPrint.c
index eda4fae..f1cb7bf 100644
--- src/hg/lib/hPrint.c
+++ src/hg/lib/hPrint.c
@@ -1,185 +1,190 @@
 /* hPrint - turning html printing on and off, which is useful
  * when postscript and PDF images are being drawn  */
 
 /* Copyright (C) 2014 The Regents of the University of California 
  * See README in this or parent directory for licensing information. */
 
 #include "hPrint.h"
 #include "htmshell.h"
 
 
 static boolean suppressHtml = FALSE;
 /* If doing PostScript output we'll suppress most of HTML output. */
 
 boolean hPrintStatus()
 /* is html printing on or off ?
    return TRUE for print is on, FALSE for printing is off */
 {
 return ! suppressHtml;
 }
 
 void hPrintDisable()
 /* turn html printing off */
 {
 suppressHtml = TRUE;
 }
 
 void hPrintEnable()
 /* turn html printing on */
 {
 suppressHtml = FALSE;
 }
 
 void hvPrintf(char *format, va_list args)
 /* Suppressable variable args printf. Check for write error so we can
  * terminate if http connection breaks. */
 {
 if (suppressHtml)
     return;
 vprintf(format, args);
 if (ferror(stdout))
     noWarnAbort();
 }
 
 void hPrintf(char *format, ...)
 /* Printf that can be suppressed if not making html. */
 {
 va_list(args);
 va_start(args, format);
 hvPrintf(format, args);
 va_end(args);
 }
 
 void hPrintNonBreak(char *s)
 /* Print out string but replace spaces with   */
 {
 char c;
 
 if (suppressHtml)
     return;
 while ((c = *s++) != '\0')
     if (c == ' ')
 	fputs(" ", stdout);
     else
         putchar(c);
 }
 
 void hPrintEncodedNonBreak(char *s)
 /* Print with htmlEncode and non-break */
 {
 char *encoded = htmlEncode(s);
 hPrintNonBreak(encoded);
 freeMem(encoded);
 }
 
 void hPuts(char *string)
 /* Puts that can be suppressed if not making html. */
 {
 if (!suppressHtml)
     puts(string);
 }
 
 void hPutc(char c)
 /* putc that can be suppressed if not making html. */
 {
 if (!suppressHtml)
     fputc(c, stdout);
 }
 
 void hWrites(char *string)
 /* Write string with no '\n' if not suppressed. */
 {
 if (!suppressHtml)
     fputs(string, stdout);
 }
 
+void hButtonMaybePressed(char *name, char *label, char *msg, char *onClick, boolean pressed)
+/* If not suppresed, write out button optionally with onclick javascript, message and 
+   styled to indicate modal state (button pressed)
+ */
+{
+if (!suppressHtml)
+    cgiMakeSubmitButtonMaybePressed(name, label, msg, onClick, pressed);
+}
+
 void hButton(char *name, char *label)
 /* Write out button if not suppressed. */
 {
-if (!suppressHtml)
-    cgiMakeButton(name, label);
+hButtonMaybePressed(name, label, NULL, NULL, FALSE);
 }
 
 void hButtonWithMsg(char *name, char *label, char *msg)
 /* Write out button with msg if not suppressed. */
 {
-if (!suppressHtml)
-    cgiMakeButtonWithMsg(name, label, msg);
+hButtonMaybePressed(name, label, msg, NULL, FALSE);
 }
 
 void hButtonWithOnClick(char *name, char *label, char *msg, char *onClick)
 /* Write out button with onclick javascript if not suppressed. */
 {
-if (!suppressHtml)
-    cgiMakeButtonWithOnClick(name, label, msg, onClick);
+hButtonMaybePressed(name, label, msg, onClick, FALSE);
 }
 
 void hOnClickButton(char *id, char *command, char *label)
-/* Write out push button if not suppressed. */
+/* Write out button with onclick command */
 {
-if (!suppressHtml)
-    cgiMakeOnClickButton(id, command, label);
+hButtonMaybePressed(id, label, NULL, command, FALSE);
 }
 
 void hTextVar(char *varName, char *initialVal, int charSize)
 /* Write out text entry field if not suppressed. */
 {
 if (!suppressHtml)
     cgiMakeTextVar(varName, initialVal, charSize);
 }
 
 void hIntVar(char *varName, int initialVal, int maxDigits)
 /* Write out numerical entry field if not supressed. */
 {
 if (!suppressHtml)
     cgiMakeIntVar(varName, initialVal, maxDigits);
 }
 
 void hDoubleVar(char *varName, double initialVal, int maxDigits)
 /* Write out numerical entry field if not supressed. */
 {
 if (!suppressHtml)
     cgiMakeDoubleVar(varName, initialVal, maxDigits);
 }
 
 void hCheckBox(char *varName, boolean checked)
 /* Make check box if not suppressed. */
 {
 if (!suppressHtml)
     cgiMakeCheckBox(varName, checked);
 }
 
 void hDropListClassWithStyle(char *name, char *menu[], int menuSize, 
                                 char *checked, char *class, char *style)
 /* Make a drop-down list with names if not suppressed, 
  * using specified class and style */
 {
 if (!suppressHtml)
     cgiMakeDropListClassWithStyle(name, menu, menuSize, checked, class, style);
 }
 
 void hDropListClass(char *name, char *menu[], int menuSize, char *checked,
                         char *class)
 /* Make a drop-down list with names if not suppressed, using specified class. */
 {
 hDropListClassWithStyle(name, menu, menuSize, checked, class, NULL);
 }
 
 void hDropList(char *name, char *menu[], int menuSize, char *checked)
 /* Make a drop-down list with names if not suppressed. */
 {
 hDropListClass(name, menu, menuSize, checked, NULL);
 }
 
 void hPrintComment(char *format, ...)
 /* Function to print output as a comment so it is not seen in the HTML
  * output but only in the HTML source. */
 {
 va_list(args);
 va_start(args, format);
 hWrites("\n<!-- DEBUG: ");
 hvPrintf(format, args);
 hWrites(" -->\n");
 fflush(stdout); /* USED ONLY FOR DEBUGGING BECAUSE THIS IS SLOW - MATT */
 va_end(args);
 }