]> git.saurik.com Git - wxWidgets.git/blob - wxPython/wx/lib/masked/ctrl.py
Added new MaskedEditControl code from Will Sadkin. The modules are
[wxWidgets.git] / wxPython / wx / lib / masked / ctrl.py
1 #----------------------------------------------------------------------------
2 # Name: wxPython.lib.masked.ctrl.py
3 # Author: Will Sadkin
4 # Created: 09/24/2003
5 # Copyright: (c) 2003 by Will Sadkin
6 # RCS-ID: $Id$
7 # License: wxWindows license
8 #----------------------------------------------------------------------------
9 # 12/09/2003 - Jeff Grimmett (grimmtooth@softhome.net)
10 #
11 # o Updated for wx namespace (minor)
12 #
13 # 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
14 #
15 # o Removed wx prefix
16 #
17
18 """<html><body>
19 <P>
20 <B>masked.Ctrl</B> is actually a factory function for several types of
21 masked edit controls:
22 <P>
23 <UL>
24 <LI><b>masked.TextCtrl</b> - standard masked edit text box</LI>
25 <LI><b>masked.ComboBox</b> - adds combobox capabilities</LI>
26 <LI><b>masked.IpAddrCtrl</b> - adds logical input semantics for IP address entry</LI>
27 <LI><b>masked.TimeCtrl</b> - special subclass handling lots of time formats as values</LI>
28 <LI><b>masked.NumCtrl</b> - special subclass handling numeric values</LI>
29 </UL>
30 <P>
31 <B>masked.Ctrl</B> works by looking for a special <b><i>controlType</i></b>
32 parameter in the variable arguments of the control, to determine
33 what kind of instance to return.
34 controlType can be one of:
35 <PRE><FONT SIZE=-1>
36 controlTypes.TEXT
37 controlTypes.COMBO
38 controlTypes.IPADDR
39 controlTypes.TIME
40 controlTypes.NUMBER
41 </FONT></PRE>
42 These constants are also available individually, ie, you can
43 use either of the following:
44 <PRE><FONT SIZE=-1>
45 from wxPython.wx.lib.masked import Ctrl, COMBO, TEXT, NUMBER, TIME
46 from wxPython.wx.lib.masked import Ctrl, controlTypes
47 </FONT></PRE>
48 If not specified as a keyword argument, the default controlType is
49 controlTypes.TEXT.
50 <P>
51 Each of the above classes has its own unique arguments, but MaskedCtrl
52 provides a single "unified" interface for masked controls. Masked.TextCtrl,
53 masked.ComboBox and masked.IpAddrCtrl are all documented below; the others have
54 their own demo pages and interface descriptions.
55 </body></html>
56 """
57
58 from wx.lib.masked import TextCtrl, ComboBox, IpAddrCtrl
59 from wx.lib.masked import NumCtrl
60 from wx.lib.masked import TimeCtrl
61
62
63 # "type" enumeration for class instance factory function
64 TEXT = 0
65 COMBO = 1
66 IPADDR = 2
67 TIME = 3
68 NUMBER = 4
69
70 # for ease of import
71 class controlTypes:
72 TEXT = TEXT
73 COMBO = COMBO
74 IPADDR = IPADDR
75 TIME = TIME
76 NUMBER = NUMBER
77
78
79 def Ctrl( *args, **kwargs):
80 """
81 Actually a factory function providing a unifying
82 interface for generating masked controls.
83 """
84 if not kwargs.has_key('controlType'):
85 controlType = TEXT
86 else:
87 controlType = kwargs['controlType']
88 del kwargs['controlType']
89
90 if controlType == TEXT:
91 return TextCtrl(*args, **kwargs)
92
93 elif controlType == COMBO:
94 return ComboBox(*args, **kwargs)
95
96 elif controlType == IPADDR:
97 return IpAddrCtrl(*args, **kwargs)
98
99 elif controlType == TIME:
100 return TimeCtrl(*args, **kwargs)
101
102 elif controlType == NUMBER:
103 return NumCtrl(*args, **kwargs)
104
105 else:
106 raise AttributeError(
107 "invalid controlType specified: %s" % repr(controlType))
108
109