[DEV] work on the menu of documentation
This commit is contained in:
parent
b02c8b5221
commit
5ea83bfdde
218
lutinDocHtml.py
218
lutinDocHtml.py
@ -5,6 +5,7 @@ import lutinTools
|
|||||||
import CppHeaderParser
|
import CppHeaderParser
|
||||||
import re
|
import re
|
||||||
import codeBB
|
import codeBB
|
||||||
|
import collections
|
||||||
|
|
||||||
global_class_link = {
|
global_class_link = {
|
||||||
"std::string" : "http://www.cplusplus.com/reference/string/string/",
|
"std::string" : "http://www.cplusplus.com/reference/string/string/",
|
||||||
@ -244,9 +245,75 @@ def class_name_to_file_name(className):
|
|||||||
className = className.replace(" ", "")
|
className = className.replace(" ", "")
|
||||||
className += ".html"
|
className += ".html"
|
||||||
return className
|
return className
|
||||||
|
"""
|
||||||
|
<div id="navigation">
|
||||||
|
<center>
|
||||||
|
<div id="menu">
|
||||||
|
<h2>Le manga</h2>
|
||||||
|
<ul class="niveau1">
|
||||||
|
<li class="sousmenu"><a href="http://127.0.0.1/AMS/Galerie_view/">Galerie</a>
|
||||||
|
<ul class="niveau2">
|
||||||
|
<li><a href="http://127.0.0.1/AMS/Galerie_view/Hunter_X_Hunter">Hunter_X_Hunter</a></li>
|
||||||
|
<li><a href="http://127.0.0.1/AMS/Galerie_view/Negima">Negima</a></li>
|
||||||
|
<li><a href="http://127.0.0.1/AMS/Galerie_view/Shaman_King">Shaman_King</a></li>
|
||||||
|
<li><a href="http://127.0.0.1/AMS/Galerie_view/love_Hina">love_Hina</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="sousmenu"><a href="http://127.0.0.1/AMS/Wiki_view/Wiki_view/HxH/Accueil">Hunter X Hunter </a>
|
||||||
|
<ul class="niveau2">
|
||||||
|
<li class="sousmenu"> Generalite :</li>
|
||||||
|
<li><a href="http://127.0.0.1/AMS/Wiki_view/HxH/hxh_resumer_general"> Generalite</a></li>
|
||||||
|
<li><a href="http://127.0.0.1/AMS/Wiki_view/HxH/manga/liste_des_tomes"> Les differents tomes </a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</center>
|
||||||
|
</div>
|
||||||
|
"""
|
||||||
|
|
||||||
|
def addElement(elementList, tree):
|
||||||
|
if elementList[0] in tree.keys():
|
||||||
|
tree[elementList[0]] == addElement(elementList[1:], tree[elementList[0]])
|
||||||
|
else :
|
||||||
|
tree[elementList[0]] == elementList[0]
|
||||||
|
if len(elementList) != 1:
|
||||||
|
tree[elementList[0]] == addElement(elementList[1:], tree[elementList[0]])
|
||||||
|
return tree
|
||||||
|
|
||||||
|
def recursively_default_dict():
|
||||||
|
return collections.defaultdict(recursively_default_dict)
|
||||||
|
|
||||||
|
def createTree(list):
|
||||||
|
output = []
|
||||||
|
myTree = recursively_default_dict()
|
||||||
|
#myTree['a']['b'] = 'c'
|
||||||
|
for className in sorted(list) :
|
||||||
|
list = className.split("::")
|
||||||
|
if len(list)==1:
|
||||||
|
myTree[list[0]] == className
|
||||||
|
elif len(list)==2:
|
||||||
|
myTree[list[0]][list[1]] == className
|
||||||
|
elif len(list)==3:
|
||||||
|
myTree[list[0]][list[1]][list[2]] == className
|
||||||
|
elif len(list)==4:
|
||||||
|
myTree[list[0]][list[1]][list[2]][list[3]] == className
|
||||||
|
elif len(list)==5:
|
||||||
|
myTree[list[0]][list[1]][list[2]][list[3]][list[4]] == className
|
||||||
|
else:
|
||||||
|
myTree[list[0]][list[1]][list[2]][list[3]][list[4]][list[5]] == className
|
||||||
|
|
||||||
|
#output.append(className.split("::"))
|
||||||
|
#myTree = addElement(className.split("::"), myTree)
|
||||||
|
#debug.info("plop" + str(myTree))
|
||||||
|
return myTree
|
||||||
|
|
||||||
|
def addSub(tree, filterSubNamespace=False):
|
||||||
|
return ""
|
||||||
|
|
||||||
def generate(myDoc, outFolder) :
|
def generate(myDoc, outFolder) :
|
||||||
lutinTools.CopyFile(lutinTools.GetCurrentPath(__file__)+"/theme/base.css", outFolder+"/base.css")
|
lutinTools.CopyFile(lutinTools.GetCurrentPath(__file__)+"/theme/base.css", outFolder+"/base.css")
|
||||||
|
lutinTools.CopyFile(lutinTools.GetCurrentPath(__file__)+"/theme/menu.css", outFolder+"/menu.css")
|
||||||
# create common header
|
# create common header
|
||||||
genericHeader = "<!DOCTYPE html>\n"
|
genericHeader = "<!DOCTYPE html>\n"
|
||||||
genericHeader += "<html>\n"
|
genericHeader += "<html>\n"
|
||||||
@ -254,54 +321,116 @@ def generate(myDoc, outFolder) :
|
|||||||
genericHeader += " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0\">\n"
|
genericHeader += " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0\">\n"
|
||||||
genericHeader += " <title>" + myDoc.moduleName + " Library</title>\n"
|
genericHeader += " <title>" + myDoc.moduleName + " Library</title>\n"
|
||||||
genericHeader += " <link rel=\"stylesheet\" href=\"base.css\">\n"
|
genericHeader += " <link rel=\"stylesheet\" href=\"base.css\">\n"
|
||||||
|
genericHeader += " <link rel=\"stylesheet\" href=\"menu.css\">\n"
|
||||||
genericHeader += "</head>\n"
|
genericHeader += "</head>\n"
|
||||||
genericHeader += "<body>\n"
|
genericHeader += "<body>\n"
|
||||||
genericHeader += " <div class=\"navbar navbar-fixed-top\">\n"
|
genericHeader += " <div class=\"navbar navbar-fixed-top\">\n"
|
||||||
genericHeader += " <div class=\"container\">\n"
|
genericHeader += " <div class=\"container\">\n"
|
||||||
genericHeader += " <h1>" + myDoc.moduleName + " Library</h1>\n"
|
genericHeader += " <h1>" + myDoc.moduleName + " Library</h1>\n"
|
||||||
#genericHeader += " <ul>\n"
|
genericHeader += ' <div id="menu">\n'
|
||||||
|
genericHeader += ' <h2>' + myDoc.moduleName + '</h2>\n'
|
||||||
|
globalList = []
|
||||||
|
for className in myDoc.listClass.keys() :
|
||||||
|
globalList.append(className)
|
||||||
|
for enumName in myDoc.listEnum.keys() :
|
||||||
|
globalList.append(enumName)
|
||||||
|
# check if all element start wuth the lib namespace (better for interpretations ...)
|
||||||
|
allSartWithModuleName = True
|
||||||
|
for className in sorted(globalList) :
|
||||||
|
if className[:len(myDoc.moduleName)+2] != myDoc.moduleName+"::":
|
||||||
|
allSartWithModuleName = False
|
||||||
|
break
|
||||||
|
myTree = createTree(globalList)
|
||||||
|
for element in sorted(myTree.keys()) :
|
||||||
|
debug.warning(" * " + element)
|
||||||
|
#get elemement
|
||||||
|
subElementTree = myTree[element]
|
||||||
|
for subElement in sorted(subElementTree.keys()) :
|
||||||
|
debug.warning(" " + subElement)
|
||||||
|
#get elemement
|
||||||
|
subSubElementTree = subElementTree[subElement]
|
||||||
|
for subSubElement in sorted(subSubElementTree.keys()) :
|
||||||
|
debug.warning(" " + subSubElement)
|
||||||
|
|
||||||
|
genericHeader += ' <ul class="niveau1">\n'
|
||||||
|
if len(myTree.keys()) == 1 \
|
||||||
|
and myDoc.moduleName in myTree.keys():
|
||||||
|
myTree = myTree[myDoc.moduleName]
|
||||||
|
# todo : in this case I will create a lib element and set all global element in it, other namespace will have there own entry ...:
|
||||||
|
# ewol
|
||||||
|
# ewol
|
||||||
|
# widget
|
||||||
|
# compositing
|
||||||
|
# resources
|
||||||
|
# sys
|
||||||
|
for element in sorted(myTree.keys()) :
|
||||||
|
#get elemement
|
||||||
|
subElementTree = myTree[element]
|
||||||
|
if len(myTree.keys()) != 1:
|
||||||
|
# TODO : ...
|
||||||
|
None
|
||||||
|
if len(subElementTree.keys()) == 0:
|
||||||
|
genericHeader += ' <li><a>' + element + '</a></li>\n'
|
||||||
|
continue
|
||||||
|
genericHeader += ' <li class="sousmenu"><a>' + element + '</a>\n'
|
||||||
|
genericHeader += ' <ul class="niveau2">\n'
|
||||||
|
for subElement in sorted(subElementTree.keys()) :
|
||||||
|
#get elemement
|
||||||
|
subSubElementTree = subElementTree[subElement]
|
||||||
|
debug.warning('len = ' + str(len(subSubElementTree.keys())) + " list" + str(subSubElementTree.keys()))
|
||||||
|
if len(subSubElementTree.keys()) == 0:
|
||||||
|
genericHeader += ' <li><a>' + subElement + '</a></li>\n'
|
||||||
|
continue
|
||||||
|
|
||||||
|
genericHeader += ' <li class="sousmenu"><a>' + subElement + '</a>\n'
|
||||||
|
genericHeader += ' <ul class="niveau3">\n'
|
||||||
|
for subSubElement in sorted(subSubElementTree.keys()) :
|
||||||
|
#get elemement
|
||||||
|
subSubSubElementTree = subSubElementTree[subSubElement]
|
||||||
|
if len(subSubSubElementTree.keys()) == 0:
|
||||||
|
genericHeader += ' <li><a>' + subSubElement + '</a></li>\n'
|
||||||
|
continue
|
||||||
|
genericHeader += ' <li><a>****' + subSubElement + '****</a></li>\n'
|
||||||
|
genericHeader += ' </ul>\n'
|
||||||
|
genericHeader += ' </li>\n'
|
||||||
|
genericHeader += ' </ul>\n'
|
||||||
|
genericHeader += ' </li>\n'
|
||||||
|
|
||||||
|
genericHeader += ' <ul>\n'
|
||||||
|
"""
|
||||||
baseNamespace = ""
|
baseNamespace = ""
|
||||||
for className in sorted(myDoc.listClass.iterkeys()) :
|
for className in sorted(globalList) :
|
||||||
pos = className.find("::")
|
searchIn = className
|
||||||
|
if allSartWithModuleName == True:
|
||||||
|
searchIn = className[len(myDoc.moduleName)+2:]
|
||||||
|
pos = searchIn.find("::")
|
||||||
if pos >= 0:
|
if pos >= 0:
|
||||||
namespace = className[:pos]
|
namespace = searchIn[:pos]
|
||||||
rest = className[pos+2:]
|
rest = searchIn[pos+2:]
|
||||||
else:
|
else:
|
||||||
namespace = ""
|
namespace = ""
|
||||||
rest = className
|
rest = searchIn
|
||||||
if baseNamespace != namespace:
|
if baseNamespace != namespace:
|
||||||
if baseNamespace != "":
|
if baseNamespace != "":
|
||||||
genericHeader += " </ul>\n"
|
genericHeader += ' </ul>\n'
|
||||||
genericHeader += " <li>" + namespace + "</li>\n"
|
genericHeader += ' </li>\n'
|
||||||
genericHeader += " <ul>\n"
|
genericHeader += ' </ul>\n'
|
||||||
|
genericHeader += ' <ul class="niveau1">\n'
|
||||||
|
genericHeader += ' <li class="sousmenu"><a>' + namespace + '</a>\n'
|
||||||
|
genericHeader += ' <ul class="niveau2">\n'
|
||||||
baseNamespace = namespace
|
baseNamespace = namespace
|
||||||
|
|
||||||
genericHeader += " <li><a href=\"" + class_name_to_file_name(className) + "\">" + rest + "</a></li>\n"
|
genericHeader += ' <li><a href="' + class_name_to_file_name(className) + '">' + rest + '</a></li>\n'
|
||||||
|
|
||||||
if baseNamespace != "":
|
if baseNamespace != "":
|
||||||
genericHeader += " </ul>\n"
|
genericHeader += ' </ul>\n'
|
||||||
|
genericHeader += ' </li>\n'
|
||||||
|
genericHeader += ' </ul>\n'
|
||||||
|
genericHeader += ' </div>\n'
|
||||||
|
"""
|
||||||
|
genericHeader += ' <h3> </h3>\n'
|
||||||
|
genericHeader += ' </div>\n'
|
||||||
|
|
||||||
for enumName in sorted(myDoc.listEnum.iterkeys()) :
|
|
||||||
pos = enumName.find("::")
|
|
||||||
if pos >= 0:
|
|
||||||
namespace = enumName[:pos]
|
|
||||||
rest = enumName[pos+2:]
|
|
||||||
else:
|
|
||||||
namespace = ""
|
|
||||||
rest = enumName
|
|
||||||
if baseNamespace != namespace:
|
|
||||||
if baseNamespace != "":
|
|
||||||
genericHeader += " </ul>\n"
|
|
||||||
genericHeader += " <li>" + namespace + "</li>\n"
|
|
||||||
genericHeader += " <ul>\n"
|
|
||||||
baseNamespace = namespace
|
|
||||||
|
|
||||||
genericHeader += " <li><a href=\"" + class_name_to_file_name(enumName) + "\">" + rest + "</a></li>\n"
|
|
||||||
|
|
||||||
if baseNamespace != "":
|
|
||||||
genericHeader += " </ul>\n"
|
|
||||||
|
|
||||||
#genericHeader += " </ul>\n"
|
|
||||||
genericHeader += " </div>\n"
|
genericHeader += " </div>\n"
|
||||||
genericHeader += " </div>\n"
|
genericHeader += " </div>\n"
|
||||||
genericHeader += " <div class=\"container\" id=\"content\">\n"
|
genericHeader += " <div class=\"container\" id=\"content\">\n"
|
||||||
@ -348,19 +477,44 @@ def generate(myDoc, outFolder) :
|
|||||||
sizefunction = calsulateSizeFunction(function, sizefunction)
|
sizefunction = calsulateSizeFunction(function, sizefunction)
|
||||||
sizeReturn = calsulateSizeReturn(function, sizeReturn)
|
sizeReturn = calsulateSizeReturn(function, sizeReturn)
|
||||||
|
|
||||||
|
file.write("<h2>Constructor and Destructor:</h2>\n")
|
||||||
|
file.write("<pre>\n");
|
||||||
|
for function in localClass["methods"]["public"]:
|
||||||
|
if function['destructor'] \
|
||||||
|
or function['constructor'] :
|
||||||
|
display_reduct_function(function, file, "+ ", sizeReturn, sizefunction, myDoc)
|
||||||
|
for function in localClass["methods"]["protected"]:
|
||||||
|
if function['destructor'] \
|
||||||
|
or function['constructor'] :
|
||||||
|
display_reduct_function(function, file, "# ", sizeReturn, sizefunction, myDoc)
|
||||||
|
for function in localClass["methods"]["private"]:
|
||||||
|
if function['destructor'] \
|
||||||
|
or function['constructor'] :
|
||||||
|
display_reduct_function(function, file, "- ", sizeReturn, sizefunction, myDoc)
|
||||||
|
|
||||||
|
file.write("</pre>\n");
|
||||||
|
|
||||||
file.write("<h2>Synopsis:</h2>\n")
|
file.write("<h2>Synopsis:</h2>\n")
|
||||||
# display all functions :
|
# display all functions :
|
||||||
# TODO: ...
|
# TODO: ...
|
||||||
file.write("<pre>\n");
|
file.write("<pre>\n");
|
||||||
for function in localClass["methods"]["public"]:
|
for function in localClass["methods"]["public"]:
|
||||||
|
if not function['destructor'] \
|
||||||
|
and not function['constructor'] :
|
||||||
display_reduct_function(function, file, "+ ", sizeReturn, sizefunction, myDoc)
|
display_reduct_function(function, file, "+ ", sizeReturn, sizefunction, myDoc)
|
||||||
for function in localClass["methods"]["protected"]:
|
for function in localClass["methods"]["protected"]:
|
||||||
|
if not function['destructor'] \
|
||||||
|
and not function['constructor'] :
|
||||||
display_reduct_function(function, file, "# ", sizeReturn, sizefunction, myDoc)
|
display_reduct_function(function, file, "# ", sizeReturn, sizefunction, myDoc)
|
||||||
for function in localClass["methods"]["private"]:
|
for function in localClass["methods"]["private"]:
|
||||||
|
if not function['destructor'] \
|
||||||
|
and not function['constructor'] :
|
||||||
display_reduct_function(function, file, "- ", sizeReturn, sizefunction, myDoc)
|
display_reduct_function(function, file, "- ", sizeReturn, sizefunction, myDoc)
|
||||||
file.write("</pre>\n");
|
file.write("</pre>\n");
|
||||||
file.write("\n")
|
file.write("\n")
|
||||||
file.write("\n")
|
file.write("\n")
|
||||||
|
|
||||||
|
|
||||||
heritage = myDoc.get_heritage_list(className)
|
heritage = myDoc.get_heritage_list(className)
|
||||||
heritageDown = myDoc.get_down_heritage_list(className)
|
heritageDown = myDoc.get_down_heritage_list(className)
|
||||||
if len(heritage) > 1 \
|
if len(heritage) > 1 \
|
||||||
|
@ -55,8 +55,8 @@ body {
|
|||||||
text-shadow: 0 1px 0 #ce4213;
|
text-shadow: 0 1px 0 #ce4213;
|
||||||
padding: 10px 20px 10px;
|
padding: 10px 20px 10px;
|
||||||
margin-left: -20px;
|
margin-left: -20px;
|
||||||
overflow:scroll;
|
//overflow:scroll;
|
||||||
overflow-x:hidden;
|
//overflow-x:hidden;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
.navbar ul {
|
.navbar ul {
|
||||||
|
146
theme/menu.css
Normal file
146
theme/menu.css
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
/* CSS Document */
|
||||||
|
|
||||||
|
/*----------------MENU-----------------*/
|
||||||
|
div#menu div{
|
||||||
|
margin-top: 0px;
|
||||||
|
background: #6699FF;
|
||||||
|
}
|
||||||
|
/* permet l'affichage du haut du menu*/
|
||||||
|
div#menu h2{
|
||||||
|
color: #000000;
|
||||||
|
FONT-FAMILY: Arial;
|
||||||
|
FONT-SIZE: 9pt;
|
||||||
|
text-align:left;
|
||||||
|
margin: 0;
|
||||||
|
padding: 3px;
|
||||||
|
padding-left: 6px;
|
||||||
|
background: #1a62db;
|
||||||
|
}
|
||||||
|
div#menu h3{
|
||||||
|
margin: 0;
|
||||||
|
padding: 6px;
|
||||||
|
background: #6699FF;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#menu a{
|
||||||
|
color: #000000;
|
||||||
|
bgcolor=#6699FF;
|
||||||
|
FONT-FAMILY: Arial;
|
||||||
|
FONT-SIZE: 9pt;
|
||||||
|
}
|
||||||
|
div#menu li {
|
||||||
|
position: relative;
|
||||||
|
list-style:none;
|
||||||
|
margin:0px;
|
||||||
|
border-bottom: 1px solid #0008ab;
|
||||||
|
}
|
||||||
|
div#menu li.sousmenu {
|
||||||
|
background: url(sous_menu.gif) 95% 50% no-repeat;
|
||||||
|
}
|
||||||
|
div#menu li:hover {
|
||||||
|
background: #0008ab;
|
||||||
|
}
|
||||||
|
div#menu li.sousmenu:hover {
|
||||||
|
background: #0008ab;
|
||||||
|
}
|
||||||
|
div#menu ul ul {
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*TAILLE PREMIERE COLONNE*/
|
||||||
|
div#menu {
|
||||||
|
float: center;
|
||||||
|
width: 200px;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
div#menu ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
width: 200px;
|
||||||
|
background: #6699FF;
|
||||||
|
border: 0px solid;
|
||||||
|
}
|
||||||
|
div#menu ul ul {
|
||||||
|
left: 199px;
|
||||||
|
display:none;
|
||||||
|
background: #FFFFFF;
|
||||||
|
}
|
||||||
|
div#menu li a {
|
||||||
|
display: block;
|
||||||
|
padding: 2px 0px 2px 4px;
|
||||||
|
text-decoration: none;
|
||||||
|
width: 191px;
|
||||||
|
border-left: 3px solid #6699FF;
|
||||||
|
}
|
||||||
|
div#menu form {
|
||||||
|
border-left: 8px solid #6699FF;
|
||||||
|
background: #6699FF;
|
||||||
|
FONT-FAMILY: Arial;
|
||||||
|
margin:0px;
|
||||||
|
FONT-SIZE: 8pt;
|
||||||
|
}
|
||||||
|
div#menu texte {
|
||||||
|
border-left: 8px solid #6699FF;
|
||||||
|
FONT-FAMILY: Arial;
|
||||||
|
FONT-SIZE: 9pt;
|
||||||
|
font-weight:bold;
|
||||||
|
border-bottom: 1px solid #6699FF;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*TAILLE DEUXIEME COLONE*/
|
||||||
|
|
||||||
|
div#menu ul.niveau1 ul {
|
||||||
|
left: 200px;
|
||||||
|
height: 500px;
|
||||||
|
border: 1px solid #0008ab;
|
||||||
|
background: #1a62db;
|
||||||
|
/*
|
||||||
|
overflow:scroll;
|
||||||
|
overflow-y:auto;
|
||||||
|
overflow-x:hidden;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
div#menu ul.niveau1 li {
|
||||||
|
background: #6699FF;
|
||||||
|
}
|
||||||
|
div#menu ul.niveau1 li.sousmenu:hover ul.niveau2 {
|
||||||
|
width:219px;
|
||||||
|
display:block;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*TAILLE TROISIEME COLONNE*/
|
||||||
|
div#menu ul.niveau2 ul {
|
||||||
|
left: 219px;
|
||||||
|
height: 500px;
|
||||||
|
}
|
||||||
|
div#menu ul.niveau2 li a {
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
div#menu ul.niveau2 li.sousmenu:hover ul.niveau3 {
|
||||||
|
width:10em;
|
||||||
|
display:block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*TAILLE Quatrieme COLONNE*/
|
||||||
|
div#menu ul.niveau3 ul {
|
||||||
|
left: 369px;
|
||||||
|
height: 500px;
|
||||||
|
}
|
||||||
|
div#menu ul.niveau3 li a {
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
div#menu ul.niveau3 li.sousmenu:hover ul.niveau4 {
|
||||||
|
width:10em;
|
||||||
|
display:block;
|
||||||
|
}
|
||||||
|
/*TAILLE DEUXIEME COLONE BIS????*/
|
||||||
|
|
||||||
|
/*COULEUR DES BORDURES*/
|
||||||
|
div#menu li a:hover {
|
||||||
|
border-left-color: #000ADE;
|
||||||
|
background: #6699FF;
|
||||||
|
font-weight:bold;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user