
# Define and write the CSS
# --------------------------------------------------------------------
# --------------------------------------------------------------------
#
#
# 
ver = '2.21' ; date = 'May 22, 2019' 
# + [PT] fix pbar width
# + [PT] sectionize the CSS for putting in vars easier to parts
# + [PT] warning level color specification
#
ver = '2.30' ; date = 'Aug 2, 2022' 
# + [PT] Save -> Srvr button, for noting/checking whether server is on
# + [PT] color for button based on serving
# + [PT] 'SAVING' button reflects whether server is active or not
#
ver = '2.31' ; date = 'Aug 2, 2022' 
# + [PT] forgot some pieces from last update; adding now
# + [PT] also rename 'srvr' to 'saving'
# --------------------------------------------------------------------




# --------------------------------------------------------------------
# Notes on CSS choices:
#
# + need to use "display: inline-block" in the img { } def in
#   order to not have the whole line be a clickable link
#
# + .container and .container2 are the same except for the font
#   colors in each's "pre"; at this present time, that is to have
#   "subtxt" be gray, and header stuff be yellow.
# 
# + In the .container pre { } stuff, one could add the following
#   to have wrapping on long lines (though it won't help too much
#   with long censor lists):
#   white-space: pre;
# 
# + Move someday to light gray background?  background-color:
#   #DCDCDC;
# 
# + Re. the navigation bar, at the moment: 
#   !!!!!!!!!!!!!! need to update-- is 64 px here!
#   - Line 1: the text height is 20px, and the vertical margins on
#     it are 8px, so the total height is *36 px*;
#   - Line 2: the text height is 20px, and the vertical margins on
#     it are 2px, so the total height is *24 px*;
#   ---> for a TOTAL of: 62 px. ---> but use **74 px**
#
#   That total
#   navbar height determines the amount of padding needed above
#   the title text per section for jumping around, which is
#   actually done for most parts in lah.wrap_block_title().
#
# --------------------------------------------------------------------

# [PT: May 22, 2019] new param to keep track of max warn level and
# display something based on it.
# rank of warning levels
wlevel_ranks = {
    ''          : 0,
    'none'      : 1,
    'undecided' : 2,
    'mild'      : 3,
    'medium'    : 4,
    'severe'    : 5
    }
wlevel_colors = {
    ''          : "#CCCCCC",
    'none'      : "#CCFFCC",
    'undecided' : "#EAEA99", # possible alt. for underlines: "#F7CA18"
    'mild'      : "#FFC3C4",
    'medium'    : "#FF7F7F",
    'severe'    : "#FF0000"
    }

wlevel_str = '  '.join(list(wlevel_ranks.keys())) 

# --------------------------------------------------------------------

# The CSS!
css_text = '''
/* Include nice (open) font for reading */
@font-face {
  font-family: 'myFiraCode';
  src: url('FiraCode-Regular.woff2') format('woff2');
}
@font-face {
  font-family: 'myFiraCode';
  src: url('FiraCode-Bold.woff2') format('woff2');
  font-weight: bold;
}

h1 {
    padding-top: 80px;
    padding-bottom: 0px;
    margin: 0px;
    border: 0px;
    color: #FFC310; /* #ccc; */
    font-weight: bold;
    text-decoration: underline;
    font-size: 26px;
    font-family: myFiraCode, "courier new", courier, monospace;
}

h2 {
    padding: 0px;
    margin: 0px;
    border: 0px;
    color: #fff; /* #ccc; #FFC310; */
    font-weight: bold;
    font-size: 26px;
    font-family: myFiraCode, "courier new", courier, monospace;
}

h3 {
    padding: 0px;
    margin: 0px;
    border: 0px;
    color: #ccc; /* #FFC310; #ccc; #FFC310; */
    font-weight: bold;
    font-size: 26px;
    font-family: myFiraCode, "courier new", courier, monospace;
}
'''

css_text+= '''

/* have padding at top and bottom of each main section*/ 
.div_pad_class{
    padding: 25px 0px 15px 0px;
    margin: 0px;
}

img {
    padding: 2px 1px;
    display: inline-block;
    margin-left: auto;
    margin-right: auto;
    width:90%; 
}

pre {
    font-family: myFiraCode, "courier new", courier, monospace;
    font-size: 20px;
    color: #FFC310;
}

body {
    background-color: #014E33;
    font-family: "Lucida Console", Monaco, monospace;
    margin: 0px;
}

.hr_sec {
    display: block;
    height: 3px;
    /* border: 0; */
    /* border-top: 2px solid #ccc; */
    background-color: #ccc;
    margin: 0px 0px 10px 0px;
    padding: 0;
}

.padtop {
    padding-top: 10px;
    padding-bottom: 0px;
    margin: 0px;
    /*text-decoration: underline;*/
}
'''

css_text+= '''

.bordered {{
    padding: 0px;
    margin:  0px;
    border:  2px solid black;
}}

.warnbord {{
    padding: 0px;
    border:  2px solid black;
    color: #000000;
    background-color: #FFFFFF; /*#FFC3C4; */
    padding-left: 20px;
    padding-right: 20px;
    margin-top: 0px;
    margin-bottom: 10px;
    margin-left: auto;
    margin-right: auto;
    width: 90%; 
    text-align: left;
    font-family: "courier new", courier, monospace;
    font-weight: bold;
}}

.wcol_none {{
    text-align: center;
    background-color: {none};
}}

.wcol_undecided {{
    text-align: center;
    background-color: {undecided};
}}

.wcol_mild {{
    text-align: center;
    background-color: {mild};
}}

.wcol_medium {{
    text-align: center;
    background-color: {medium};
}}

.wcol_severe {{
    text-align: center;
    background-color: {severe};
}}

.datbord {{
    padding: 0px;
    border:  2px solid black;
    color: #000000;
    background-color: #ffffff;
    padding-left: 20px;
    margin-top: 0px;
    margin-left: auto;
    margin-right: auto;
    width:90%; 
    text-align: left;
    font-family: "courier new", courier, monospace;
    font-weight: bold;
}}
'''.format(**wlevel_colors)

# [mecho] mtedana link button
css_text+= '''

.btn_mtedana {  
    background-color: #FFC310;
    margin-top: 5px;
    padding: 5px 15px 5px ;
    color: #014E33;
    border: solid 2px black;
    border-radius: 20px;
    font-family:  Arial, "courier new", courier, monospace;
    font-size: 16px;
    font-weight: normal; 
}

.btn_mtedana:hover:not(.active) {
    background-color: #014E33;
    margin-top: 5px;
    padding: 5px 15px 5px ;
    color: #FFC310;
    border: solid 2px #FFC310;
    border-radius: 20px;
    font-family:  Arial, "courier new", courier, monospace;
    font-weight: normal; 
}

.btn_mtedana:focus:not(.active) {
    border: dashed 2px #ffea00!important;
}


'''




css_text+= '''
.container {
    text-align: center;
    padding-top: 0px;
    margin: 0px;
    padding: px
}

.container pre {
    margin: 3px;
    padding-top: 20px;
    white-space: pre;
    display: inline-block;
    text-align: left;
    font-family: myFiraCode, "courier new", courier, monospace;
    font-size: 20px;
    color: #FFC310;
}

.container2 {
    text-align: center;
    padding-top: 0px;
    margin: 3px;
}

.container2 pre {
    margin: 3px;
    padding-top: 0px;
    white-space: pre;
    display: inline-block;
    text-align: left;
    font-family: myFiraCode, "courier new", courier, monospace;
    font-size: 20px;
    color: #ccc;
}
'''

css_text+= '''
img.pbar {
    width: 16ch;  /* 200px; 20rem; */
/*    border:  2px solid black; */
    height: 0.7em; /* 14px; */
    text-align: middle;
    margin: 0px;
    border: 0px;
    padding: 0px 0ch; /* 4px; */
}

.navbar {
    position: fixed; 
    width: 100%;
    padding-top: 2px;
    padding-bottom: 0px;
    height: 70px;
    width:100%;
    background-color: #000; /* #444; */
    border-bottom: 3px solid #222; /*#ddd; #fff; */
    /* margin: 5px solid #000; */
}

table, tr {
    table-style-type: none;
    margin: 0px;
    padding: 0px;
    overflow: hidden;
    background-color: #000; /* #444; */
    border-collapse: collapse;
    border-bottom:  0px solid #ccc;
    top: 0;
    font-family: myFiraCode, "courier new", courier, monospace;
    font-size: 20px;
    /* color: #ccc; */
}

td {
    float: left;
    width: 80px;
    height: 30px;
    background-color: #000; /* #444; */
    border: 0px solid #bbb;
    margin: 0px;
    padding: 1px;
}

td a {
    display: block;
    color: white;
    text-align: center;
    text-vertical: center;
    padding: 0px;
    margin: 0px;
    text-decoration: none;
}

td a:hover:not(.active) {
    background-color: #111;
    color: #ffea00; /* yellow; */
}

td a:active {
    background-color: #4CAF50;
    color: green;
}
'''

css_text+= '''

/* slightly lighter color and boldness for hyperlinks */
urlin a {
    color: #ffea00;
    font-weight: bold;
}

urlin a:hover:not(.active) {
    background-color: #014E33;
    color: #FFC310;
}


'''


css_text+= '''

/* Applies to all buttons */
.button-generic {
    overflow: hidden;
    text-align: center;
    vertical-align: middle; /* text-vertical: center; */
    font-size: 22px;
    cursor: pointer;
}

/* Applies to LHS buttons: .btn1, .btn5, .btn0 */
.button-LHS {
    background-color: #000; /* #444; */
    height: 28px;
    margin: 1px 3px;
    padding: 0px; 
    width: 74px;
}

/* "QC:" or "SET:" button, and background button in navbar */
.btn0 {
    color: #FFF;
    border: none;
    border-radius: 0px;
    font-family: "courier new", courier, monospace;
    font-size: 24px;
    font-weight: bold;
}


/* QC buttons */
.btn1 { 
    color: #000; /* #444; */
    border: solid 2px #bbb; /* transparent; none; */
    border-radius: 12px;
    font-family:  "courier new", courier, monospace;
    font-size: 23px;
    font-weight: bold;
    margin-top: 2px;
}

/* section labels */
.btn5 {  
    color: #FFF; /* #ffea00; /#FFF; */
    border: solid 1px transparent;
    border-radius: 0px;
    font-family: Arial, "courier new", courier, monospace;
    font-size: 21px;
    font-weight: normal; /* bold; */
}
'''

css_text+= '''
/* For NiiVue (NV) and AfniView (AV) buttons; 
   these know if server is serving */
.btn6 {
    color:            var(--SavingTextColB6);
    background-color: var(--SavingBkgdColB6);
    margin: 4px 2px 0px 3px;
    height: 26px;
    width: 40px;
    padding: 0px 2px;
    float: right;
}

/* turning img/text headings into (subtle) buttons */
.btn_title {
    background-color: #014E33;
    font-family: "Lucida Console", Monaco, monospace;
    border: solid 0px #014E33!important;
    border-color: #014E33!important; 
}

/* ... and the container/div holding the buttons */
.container_avnv {
    width: 160px;  /* if more btns added, make wider */
    white-space:nowrap; 
    position: absolute; 
    top: -34; 
    right: 5%;
}

/* for NV canvas properties */
canvas {
    outline: none;      /* no outline */
}

/* For Graphview (GV) and InstaCorr (IC) buttons; 
   these know if server is serving */
.btn6b {
    color:            var(--SavingTextColB6);
    background-color: var(--SavingBkgdColB6);
    margin: 4px 2px 0px 3px;
    height: 26px;
    width: 40px;
    padding: 0px 2px;
    float: left;
}
/* ... and the container/div holding the IC/GV buttons */
.container_icgv {
    width: 160px; 
    white-space:nowrap; 
    position: absolute; 
    top: -34; 
    left: 5%;
}

/* Formatting for NiiVue (NV) canvas */
.class_niivue {
    width: 90%; 
    aspect-ratio: 5 / 1; /* bit higher than value in toggle NV func */
    margin-left: auto; 
    margin-right: auto;
}

/* NV canvas button: show/hide olay (for align) */
.btn7 {
    color:            #000;
    background-color: #ccc; /*#029a64;*/
    margin: 0px;
    padding: 0px 0px 0px 0px;
    height: 24px;  /* set size, so no shifting */
    width: 96px;  /* set size, so no shifting */
    border: 1px solid;
    border-color:  #fff #aaa #aaa #fff;
    border-radius: 5px;
    text-decoration: none;
    font-family: Arial, "courier new", courier, monospace;
    font-size: 18px;
    font-weight: normal; /* bold; */
}
'''

css_text+= '''
/* add subj ID to navbar*/
.subj_text {
    color: #000; 
    background-color: #ccc; 
    padding: 0px 2px; 
    margin: 2px 0px 0px 6px; 
    border: 0px 0px 0px 0px solid #000; 
    font-size: 22px; 
}

'''


### no longer including:
# button:focus:not(.active) {
#     /* background-color: #333; */
#     /* color: #ffea00; yellow; */
#     border: dashed 1px #ffea00!important;
#     /* border-color: #ffea00!important; yellow; */
# }

css_text+= '''

/* see: https://fvsch.com/styling-buttons/ */
/* Firefox: removes the inner border shown on focus */
.btn5::-moz-focus-inner {
  border: none;
}

/* Applies to .btn2* (A+, Ax) and .btn3saving (Server) */
.button-RHS {
    border: solid 1px transparent;
    border-radius: 4px;
    font-family: "courier new", courier, monospace;
    font-size: 22px;
    font-weight: bold;
}

.button-RHS-little {
    float: left;
    margin: 4px 2px 0px 3px;
    height: 26px;
    width: 40px;
    padding: 0px 2px;
}

.btn2good {
    background-color: #67a9cf;
    color: #FFF;
}

.btn2bad {
    background-color: #d7191c;
    color: #000;
}

.btn2other {
    background-color: #fff;
    color: #777;
}

.btn2clear {
    background-color: #777;
    color: #fff;
    padding: 0px 0px;
}

.btn3help {
    background-color: #F0F0F0;
    float: left;
    margin: 3;
    width: 86px;
    height: 28px;
    padding: 2px 2px;
}

/* Now, server button color is from a variable that can be re-set by 
   whether the server is running or not
*/
.btn3saving {
    color:            var(--SavingTextCol);
    background-color: var(--SavingBkgdCol);
    text-decoration:  var(--SavingTextDec);
    text-decoration-thickness: 10%;
    text-decoration-color: #d7191c;
    float: left;
    margin: 3;
    /*width: 86px;*/
    width: 74px;
    height: 28px;
    padding: 0px 2px;
    font-size: 24px;
    border-radius: 0px;
    cursor: auto;
}


/* Use this so that the saving/rating button is passive, nonclickable
*/
.disabled {
    pointer-events: none; 
}


/* help button color just on its own */
.btn3help {
    background-color: #F0F0F0;
    color: #000;
}


button:hover:not(.active) {
    background-color: #333;
    color: #ffea00; /* yellow; */
    border: solid 2px #ffea00!important;
    border-color: #ffea00!important; /* yellow; */
}

button:active {
  transform: translateY(1px);
}

/* For the commenting buttons! */

/* The popup form format - hidden by default */
.form-popup {
  display: none;
  position: absolute;
  width: 400px;
  height: 75px;
  top: 75px;
  right: 15px;
  /* border: 3px solid #f1f1f1; */
  /* z-index: 9; */
}
'''

css_text+= '''

/* Add styles to the form container */
.form-container {
  max-width: 400px;
  padding: 5px 5px 35px 5px;
  background-color: #ccc;
}

/* Full-width input fields */
.form-container textarea[type=text] {
  width: 100%;
  height: 100%;
  padding: 5px;
  margin: 0px 0px 0px 0px;
  border: none;
  background: #eee;
  font-family: helvetica, "courier new", courier, monospace;
  font-size: 18px;
  color: black;
}


/* When the inputs get focus, do something */
.form-container textarea[type=text]:focus {
  background-color: #FFF;
  outline: none;
}


/* Set a style for the submit/login button */
.form-container .btn {
  background-color: #7ece8c;
  padding: 0px 0px;
  border: 3px solid #5f926a;
  float: left;
  cursor: pointer;
  margin:0;
  width: 33.3%;
  height: 30px;
  opacity: 1;
  font-weight: bold;
  /*color: #FFF;*/
  color: #000;
}

/* Add a yellow background color to the cancel (clear text) button */
.form-container .cancel {
  background-color: #f3c36b; /*#c0ce7e;*/
  border: 3px solid #a06c0d; 
  color: #000;
}

/* Add a red background color to the clear-all button */
.form-container .clearall {
  background-color: #f36b9b;
  border: 3px solid #c20000;
  color: #000;
}


'''



# --------------------------------------------------------------------

# write the CSS file out
def write_css_file( ofile ):

    # output
    fff = open( ofile, "w" )
    fff.write( css_text )
    fff.close()
