1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
# copyright (C) 1997-2001 Jean-Luc Fontaine (mailto:jfontain@free.fr)
# this program is free software: please read the COPYRIGHT file enclosed in this package or use the Help Copyright menu
set rcsId {$Id: modpython.tcl,v 1.2 2001/02/28 20:33:23 jfontain Exp $}
namespace eval module::python { ;# indentation removed in some places since Python is quite sensitive about it
variable utilityFunctions {
def columnstring(dictionary, index):
"return a Tcl array compatible initialization list for column data"
string = ''
for (key, value) in dictionary.items():
string = string + ' {' + str(index) + ',' + str(key) + '} {' + str(value) + '}'
return string
def liststring(list):
"return a Tcl list from a python list"
string = ''
for index in range(len(list)):
string = string + ' {' + str(list[index]) + '}'
return string
def viewsstring(list):
"return a Tcl array compatible initialization list for views data"
string = ''
for index in range(len(list)):
string = string + ' {'
for (key, value) in list[index].items():
string = string + ' {' + str(key) + '}'
if key == 'swap': # simple boolean
string = string + ' {' + str(value) + '}'
elif key == 'sort':
for (column, direction) in value.items():
string = string + ' {{' + str(column) + '} {' + str(direction) + '}}'
break # keep first entry only
else: # indices list
string = string + ' {' + liststring(value) + '}'
string = string + '}'
return string
def dictionarystring(dictionary):
"return a Tcl array compatible initialization list from a python dictionary"
string = ''
for (key, value) in dictionary.items():
string = string + ' {' + str(key) + '} {' + str(value) + '}'
return string
def formstring(dictionary):
"return a Tcl array compatible initialization list from module form dictionary"
string = ''
for (key, value) in dictionary.items():
if key == 'columns':
for index in range(len(value)):
string = string + columnstring(value[index], index)
elif re.match('^(indexColumns|indices|pollTimes)$', key):
string = string + ' ' + key + ' {' + liststring(value) + '}'
elif key == 'sort':
for (column, direction) in value.items():
string = string + ' sort {{' + str(column) + '} {' + str(direction) + '}}'
break # keep first entry only
elif key == 'switches':
string = string + ' ' + key + ' {' + dictionarystring(value) + '}'
elif key == 'views':
string = string + ' ' + key + ' {' + viewsstring(value) + '}'
else:
string = string + ' {' + str(key) + '} {' + str(value) + '}'
return string
def datastring(list):
"return a Tcl array compatible initialization list from module data list of lists"
string = ''
for row in range(len(list)):
# empty rows ar handled properly since their length is zero:
for column in range(len(list[row])):
string = string + ' ' + str(row) + ',' + str(column) + ' {' + str(list[row][column]) + '}'
return string
}
}
|