import olex
import olx
import OlexVFS
import os
from olexFunctions import OlexFunctions
OV = OlexFunctions()
global CURR_CIF_FILE_NAME
CURR_CIF_FILE_NAME = None
global CURR_CIF_FILE_LIST
CURR_CIF_FILE_LIST = []
global CURR_CIF_FILE_FOLDER
CURR_CIF_FILE_FOLDER = None
def BGColorForValue(value):
if value == '' or value == '?':
return "#FFDCDC"
return OV.GetParam('gui.html.input_bg_colour')
class MultipleDataset:
def __init__(self):
self.CURR_CIF_FILE_NAME = CURR_CIF_FILE_NAME
self.CURR_CIF_FILE_FOLDER = CURR_CIF_FILE_FOLDER
self.CURR_CIF_FILE_LIST = CURR_CIF_FILE_LIST
def check(self):
if CURR_CIF_FILE_FOLDER:
if CURR_CIF_FILE_FOLDER != OV.FilePath():
return False
if CURR_CIF_FILE_NAME:
self.CURR_CIF_FILE_NAME = CURR_CIF_FILE_NAME
return True
if olx.IsFileType('cif') == 'false':
return False
if int(olx.xf.DataCount()) <= 1:
return False
return True
def generateHtml(self,make_always=False):
global CURR_CIF_FILE_NAME
global CURR_CIF_FILE_LIST
global CURR_CIF_FILE_FOLDER
current = None
html = '
'
if olx.IsFileType('cif') == 'true':
if CURR_CIF_FILE_NAME != OV.FileFull():
CURR_CIF_FILE_NAME = None
CURR_CIF_FILE_LIST = []
if not CURR_CIF_FILE_FOLDER:
if olx.IsFileType('cif') == 'true':
CURR_CIF_FILE_FOLDER = OV.FilePath()
if not CURR_CIF_FILE_NAME:
if olx.IsFileType('cif') == 'true':
CURR_CIF_FILE_NAME = OV.FileFull()
current = int(olx.xf.CurrentData())
if not CURR_CIF_FILE_LIST:
cnt = int(olx.xf.DataCount())
for i in xrange(0, cnt):
if olx.IsFileType('cif') == 'true':
if olx.xf.DataName(i) == "global" or not olx.xf.DataName(i):
cnt -= 1
continue
display = ""
if olx.IsFileType('cif') == 'true':
name = olx.xf.DataName(i)
else:
name = OV.FileName()
if len(name) > 15:
display = "%s..%s" %(name[:6], name[-6:])
else:
display = name
current = 0
CURR_CIF_FILE_LIST.append((i, name, display))
else:
cnt = len(CURR_CIF_FILE_LIST)
for i in xrange(0, cnt):
if OV.ModelSrc() in CURR_CIF_FILE_LIST[i]:
current = i
break
if (cnt%3) == 0:
td_width='33'
elif (cnt%4) == 0:
td_width='25'
elif (cnt%2) == 0:
td_width='50'
else:
td_width='25'
for i in xrange(0, cnt):
index = CURR_CIF_FILE_LIST[i][0]
name = CURR_CIF_FILE_LIST[i][1]
display = CURR_CIF_FILE_LIST[i][2]
if i > 0 and (i%4) == 0:
html += "
"
if i == current:
bgcolour=OV.GetVar('HtmlBgColour')
if OV.FileExt() == "cif":
action = "refine"
highlight = olx.GetVar('HtmlHighlightColour')
display = "** Refine **"
else:
action = 'reap %s#'%(CURR_CIF_FILE_NAME) + str(index)
highlight = OV.GetParam('gui.green')
display = "CIF %s" %display
else:
action = 'reap %s#'%(CURR_CIF_FILE_NAME) + str(index)
highlight = olx.GetVar('linkButton.bgcolor')
name = name.replace("(", "_").replace(")", "_")
display = display.replace("(", "_").replace(")", "_")
html += '''
$+
html.Snippet(GetVar(default_link),
"value=%s",
"name=%s",
"onclick=%s",
"bgcolor=%s",
)
$-''' %(display, name, action, highlight)
html += "
"
name = "%s_%s" %(CURR_CIF_FILE_NAME, 'multicif.htm')
OlexVFS.write_to_olex(name, html)
return "" %name
mds = MultipleDataset()
olex.registerFunction(mds.check, False, "gui.home.multiple_dataset")
olex.registerFunction(mds.generateHtml, False, "gui.home.multiple_dataset")