-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

I've hacked together a patch for the Edit widget to allow masking of
the rendered text, e.g. for password fields.

Cheers,
Nik
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQJJBAEBAgAzBQJND1GlLBpodHRwOi8vd3d3Lm5hdHVyYWxuaWsuZGUvZ3BnLXBv
bGljeS50eHQuYXNjAAoJEOl28jJzc23tKTUP/AlUmXaFhWrgMra39WD/Vz7c0frC
VLfDvavn6Qk7eW03EBWJce/7JALMhYOU9KFTmw7ReBDub5Bfn4AvwkGwhgy81mOS
BKlIO0gbuLnbonBZHrG0B/kX9AcObNARHqm7aDPo0c3xRrc3JSl5YdoTsCc37YdF
5kViNo5HktQegnN73/IX9v28758T7K94+jDhD4aV+kMGMNZBjJ578rZf+NkKey+K
bYwjOrsQx73Dxm+o2OcFkiSLIQ50BuZyshpFeNi/0I+kCIxtVHuGmL0duupnDElT
aWX1rtkVAfBGLsIpFwd1ze3QMtcQpse/DhqtvCCjdo/Mi9dsudYe5jhMrbL468xR
wO9hx1VGTogpwnoIE8XmQzYBAi2Wp3UhK45EyBlD/sIDcFZfVJNROpt/GTOfT9sX
8jw1L3d6+YE9Zmfhj/g6uLYwwtF5fbNtHaDSsWZuEEkRUEnzLfrMFh2mcEDC/4Cx
EI7iyJOKGV+pVq02fJ3fuX1UhiNWZnxwH8/op1lNSssHwEdzByJPWHcFsFCytjvo
R/xz6+35H85N25YEB4L5A2OQqQW3fSdSUB0wkF5LyJ6B1sM+dtWXXc4mnJnGHl25
yvLxpkHHAe0tD8dpWb7K44AwUy8L5fGOIMAh3hnuCOAs1PRr3af6Z4sE1agZk0L3
7WpZoD2Jl1YLNTRM
=JF7M
-----END PGP SIGNATURE-----

>From f4b5a46b05c976d5fef84da7ae978332ad23041d Mon Sep 17 00:00:00 2001
From: Dominik George <n...@portux.(none)>
Date: Mon, 20 Dec 2010 01:43:01 +0100
Subject: [PATCH] Added masking to Edit widget.


Signed-off-by: Dominik George <[email protected]>
---
 urwid/widget.py |   20 +++++++++++++++++---
 1 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/urwid/widget.py b/urwid/widget.py
index 04dd1dc..742ce56 100644
--- a/urwid/widget.py
+++ b/urwid/widget.py
@@ -715,7 +715,7 @@ class Edit(Text):
 
     def __init__(self, caption="", edit_text="", multiline=False,
             align=LEFT, wrap=SPACE, allow_tab=False,
-            edit_pos=None, layout=None):
+            edit_pos=None, layout=None, mask=""):
         """
         caption -- markup for caption preceeding edit_text
         edit_text -- text string for editing
@@ -725,6 +725,7 @@ class Edit(Text):
         allow_tab -- True: 'tab' inserts 1-8 spaces  False: return it
         edit_pos -- initial position for cursor, None:at end
         layout -- layout object
+        mask -- character to mask away text with, empty means no masking
 
         >>> Edit()
         <Edit selectable flow widget '' edit_pos=0>
@@ -745,6 +746,7 @@ class Edit(Text):
         if edit_pos is None:
             edit_pos = len(edit_text)
         self.set_edit_pos(edit_pos)
+        self.set_mask(mask)
         self._shift_view_to_cursor = False
     
     def _repr_words(self):
@@ -762,7 +764,7 @@ class Edit(Text):
         """
         Returns (text, attributes).
         
-        text -- complete text of caption and edit_text
+        text -- complete text of caption and edit_text, maybe masked away
         attributes -- run length encoded attributes for text
 
         >>> Edit("What? ","oh, nothing.").get_text()
@@ -770,7 +772,11 @@ class Edit(Text):
         >>> Edit(('bright',"u...@host:~$ "),"ls").get_text()
         ('u...@host:~$ ls', [('bright', 13)])
         """
-        return self._caption + self._edit_text, self._attrib
+
+        if self._mask == "":
+            return self._caption + self._edit_text, self._attrib
+        else:
+            return self._caption + (self._mask * len(self._edit_text)), self._attrib
     
     def set_text(self, markup):
         """
@@ -892,6 +898,14 @@ class Edit(Text):
         self._invalidate()
     
     edit_pos = property(lambda self:self._edit_pos, set_edit_pos)
+
+    def set_mask(self, mask):
+        """
+        Set the character for masking text away. Empty means no masking.
+        """
+
+        self._mask = mask
+        self._invalidate()
     
     def set_edit_text(self, text):
         """
-- 
1.7.1

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQJJBAABAgAzBQJND1GrLBpodHRwOi8vd3d3Lm5hdHVyYWxuaWsuZGUvZ3BnLXBv
bGljeS50eHQuYXNjAAoJEOl28jJzc23t4hIP/ijSrY9DZ5cm9lLEHMIpO6BugidR
1lErYFerKcjaqBO3F85jf6ZuJ5ueoL2L92IKN7+qXvBkjKHgqJv7dp0vHcBZKKoC
4sIpkmz5xQMZ5Sf6/KiBts47naPedsJ1go569DC+d9gStj6rDZZ8yswCeE6bAI/a
6OF980N/YAboGt+FSABhhj8oAao9SzrE1Yh1uFkgrgW4zsm0bYlSLMGXOmF1OpKR
fdEhD76VPH2Oy73FgIhXjIddpMObhPT8S3cHH70fH2SZCSbaNYB9xJbARU8NG84M
8nSXKXS7dutDuXB75w6nXijRw+h3eZ4DQvh/am5c5RFU3KkFdHOsX/hRkscZUUF6
id7Fjlwy7+TaTTVSN0LsjNKi0nU710MTODw/Uipgs0+h4dV0kGWemYMYRhkTRc5U
eRgCV3ggK0apxzrGyBRHkTCZqWoXm4/8lMJ+Mm3Df+g6p/ZtO4D34+MfSv7RHk0X
ihr1bYgDMYzaHd+8frYLyhQmR8NPnnqh1iSbUae5Rg4uWuqghPRlg1uWMxxaLPMF
94XInq/1h/KXrMIvQBRVihq75GoLz7qu7CYfJZGFKg8Gjp0kG3RlS9mq/Q5y1d1u
OuzdZ91lFihOFvLhHJ5vQ/N+F5AQiXkZe9L2adHJa8wymUUS46o+8bPLd4ziNmKQ
gwDKS1CiCiFAOfuA
=lkQS
-----END PGP SIGNATURE-----
_______________________________________________
Urwid mailing list
[email protected]
http://lists.excess.org/mailman/listinfo/urwid

Reply via email to