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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
|
########################################################################
#
# File Name: HTMLInputElement.py
#
# Documentation: http://docs.4suite.com/4DOM/HTMLInputElement.py.html
#
"""
WWW: http://4suite.com/4DOM e-mail: support@4suite.com
Copyright (c) 2000 Fourthought Inc, USA. All Rights Reserved.
See http://4suite.com/COPYRIGHT for license and copyright information
"""
from xml.dom.html.HTMLElement import HTMLElement
from xml.dom import InvalidAccessErr
import string
class HTMLInputElement(HTMLElement):
def __init__(self, ownerDocument, nodeName='INPUT'):
HTMLElement.__init__(self, ownerDocument, nodeName)
def _get_accept(self):
return self.getAttribute('ACCEPT')
def _set_accept(self,accept):
self.setAttribute('ACCEPT',accept)
def _get_accessKey(self):
return self.getAttribute('ACCESSKEY')
def _set_accessKey(self,accessKey):
self.setAttribute('ACCESSKEY',accessKey)
def _get_align(self):
return string.capitalize(self.getAttribute('ALIGN'))
def _set_align(self,align):
self.setAttribute('ALIGN',align)
def _get_alt(self):
return self.getAttribute('ALT')
def _set_alt(self,alt):
self.setAttribute('ALT',alt)
def _get_checked(self):
if self._get_type() in ['Radio', 'Checkbox']:
return self.hasAttribute('CHECKED')
else:
raise InvalidAccessErr()
def _set_checked(self,checked):
if self._get_type() in ['Radio','Checkbox']:
if checked:
self.setAttribute('CHECKED', 'CHECKED')
else:
self.removeAttribute('CHECKED')
else:
raise InvalidAccessErr()
def _get_defaultChecked(self):
return self._get_checked()
def _set_defaultChecked(self,checked):
self._set_checked(checked)
def _get_defaultValue(self):
return self._get_value()
def _set_defaultValue(self,value):
self._set_value(value)
def _get_disabled(self):
return self.hasAttribute('DISABLED')
def _set_disabled(self,disabled):
if disabled:
self.setAttribute('DISABLED', 'DISABLED')
else:
self.removeAttribute('DISABLED')
def _get_form(self):
parent = self.parentNode
while parent:
if parent.nodeName == "FORM":
return parent
parent = parent.parentNode
return None
def _get_maxLength(self):
if self._get_type() in ['Text','Password']:
rt = self.getAttribute('MAXLENGTH')
if rt:
return int(rt)
raise InvalidAccessErr()
def _set_maxLength(self,maxLength):
if self._get_type() in ['Text','Password']:
self.setAttribute('MAXLENGTH',str(maxLength))
else:
raise InvalidAccessErr()
def _get_name(self):
return self.getAttribute('NAME')
def _set_name(self,name):
self.setAttribute('NAME',name)
def _get_readOnly(self):
if self._get_type() in ['Text','Password']:
return self.hasAttribute('READONLY')
raise InvalidAccessErr()
def _set_readOnly(self,readOnly):
if self._get_type() in ['Text','Password']:
if readOnly:
self.setAttribute('READONLY', 'READONLY')
else:
self.removeAttribute('READONLY')
else:
raise InvalidAccessErr()
def _get_size(self):
return self.getAttribute('SIZE')
def _set_size(self,size):
self.setAttribute('SIZE',size)
def _get_src(self):
if self._get_type() == 'Image':
return self.getAttribute('SRC')
else:
raise InvalidAccessErr()
def _set_src(self,src):
if self._get_type() == 'Image':
self.setAttribute('SRC',src)
else:
raise InvalidAccessErr()
def _get_tabIndex(self):
rt = self.getAttribute('TABINDEX')
if rt:
return int(rt)
return -1
def _set_tabIndex(self,tabIndex):
self.setAttribute('TABINDEX',str(tabIndex))
def _get_type(self):
return string.capitalize(self.getAttribute('TYPE'))
def _get_useMap(self):
return self.getAttribute('USEMAP')
def _set_useMap(self,useMap):
self.setAttribute('USEMAP',useMap)
def _get_value(self):
return self.getAttribute('VALUE')
def _set_value(self,value):
self.setAttribute('VALUE',value)
### Methods ###
def blur(self):
pass
def click(self):
pass
def focus(self):
pass
def select(self):
pass
### Attribute Access Mappings ###
_readComputedAttrs = HTMLElement._readComputedAttrs.copy()
_readComputedAttrs.update ({
'accept' : _get_accept,
'accessKey' : _get_accessKey,
'align' : _get_align,
'alt' : _get_alt,
'checked' : _get_checked,
'defaultChecked' : _get_defaultChecked,
'defaultValue' : _get_defaultValue,
'disabled' : _get_disabled,
'form' : _get_form,
'maxLength' : _get_maxLength,
'name' : _get_name,
'readOnly' : _get_readOnly,
'size' : _get_size,
'src' : _get_src,
'tabIndex' : _get_tabIndex,
'type' : _get_type,
'useMap' : _get_useMap,
'value' : _get_value,
})
_writeComputedAttrs = HTMLElement._writeComputedAttrs.copy()
_writeComputedAttrs.update ({
'accept' : _set_accept,
'accessKey' : _set_accessKey,
'align' : _set_align,
'alt' : _set_alt,
'checked' : _set_checked,
'defaultChecked' : _set_defaultChecked,
'defaultValue' : _set_defaultValue,
'disabled' : _set_disabled,
'maxLength' : _set_maxLength,
'name' : _set_name,
'readOnly' : _set_readOnly,
'size' : _set_size,
'src' : _set_src,
'tabIndex' : _set_tabIndex,
'useMap' : _set_useMap,
'value' : _set_value,
})
_readOnlyAttrs = filter(lambda k,m=_writeComputedAttrs: not m.has_key(k),
HTMLElement._readOnlyAttrs + _readComputedAttrs.keys())
|