]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/wx/lib/masked/ctrl.py
Added new MaskedEditControl code from Will Sadkin. The modules are
[wxWidgets.git] / wxPython / wx / lib / masked / ctrl.py
diff --git a/wxPython/wx/lib/masked/ctrl.py b/wxPython/wx/lib/masked/ctrl.py
new file mode 100644 (file)
index 0000000..897d066
--- /dev/null
@@ -0,0 +1,109 @@
+#----------------------------------------------------------------------------
+# Name:         wxPython.lib.masked.ctrl.py
+# Author:       Will Sadkin
+# Created:      09/24/2003
+# Copyright:   (c) 2003 by Will Sadkin
+# RCS-ID:      $Id$
+# License:     wxWindows license
+#----------------------------------------------------------------------------
+# 12/09/2003 - Jeff Grimmett (grimmtooth@softhome.net)
+#
+# o Updated for wx namespace (minor)
+#
+# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
+#
+# o Removed wx prefix
+#
+
+"""<html><body>
+<P>
+<B>masked.Ctrl</B> is actually a factory function for several types of
+masked edit controls:
+<P>
+<UL>
+    <LI><b>masked.TextCtrl</b>   - standard masked edit text box</LI>
+    <LI><b>masked.ComboBox</b>   - adds combobox capabilities</LI>
+    <LI><b>masked.IpAddrCtrl</b> - adds logical input semantics for IP address entry</LI>
+    <LI><b>masked.TimeCtrl</b>   - special subclass handling lots of time formats as values</LI>
+    <LI><b>masked.NumCtrl</b>    - special subclass handling numeric values</LI>
+</UL>
+<P>
+<B>masked.Ctrl</B> works by looking for a special <b><i>controlType</i></b>
+parameter in the variable arguments of the control, to determine
+what kind of instance to return.
+controlType can be one of:
+<PRE><FONT SIZE=-1>
+    controlTypes.TEXT
+    controlTypes.COMBO
+    controlTypes.IPADDR
+    controlTypes.TIME
+    controlTypes.NUMBER
+</FONT></PRE>
+These constants are also available individually, ie, you can
+use either of the following:
+<PRE><FONT SIZE=-1>
+    from wxPython.wx.lib.masked import Ctrl, COMBO, TEXT, NUMBER, TIME
+    from wxPython.wx.lib.masked import Ctrl, controlTypes
+</FONT></PRE>
+If not specified as a keyword argument, the default controlType is
+controlTypes.TEXT.
+<P>
+Each of the above classes has its own unique arguments, but MaskedCtrl
+provides a single "unified" interface for masked controls.  Masked.TextCtrl,
+masked.ComboBox and masked.IpAddrCtrl are all documented below; the others have
+their own demo pages and interface descriptions.
+</body></html>
+"""
+
+from wx.lib.masked   import TextCtrl, ComboBox, IpAddrCtrl
+from wx.lib.masked   import NumCtrl
+from wx.lib.masked   import TimeCtrl
+
+
+# "type" enumeration for class instance factory function
+TEXT        = 0
+COMBO       = 1
+IPADDR      = 2
+TIME        = 3
+NUMBER      = 4
+
+# for ease of import
+class controlTypes:
+    TEXT        = TEXT
+    COMBO       = COMBO
+    IPADDR      = IPADDR
+    TIME        = TIME
+    NUMBER      = NUMBER
+
+
+def Ctrl( *args, **kwargs):
+    """
+    Actually a factory function providing a unifying
+    interface for generating masked controls.
+    """
+    if not kwargs.has_key('controlType'):
+        controlType = TEXT
+    else:
+        controlType = kwargs['controlType']
+        del kwargs['controlType']
+
+    if controlType == TEXT:
+        return TextCtrl(*args, **kwargs)
+
+    elif controlType == COMBO:
+        return ComboBox(*args, **kwargs)
+
+    elif controlType == IPADDR:
+        return IpAddrCtrl(*args, **kwargs)
+
+    elif controlType == TIME:
+        return TimeCtrl(*args, **kwargs)
+
+    elif controlType == NUMBER:
+        return NumCtrl(*args, **kwargs)
+
+    else:
+        raise AttributeError(
+            "invalid controlType specified: %s" % repr(controlType))
+
+