[node-patches] Change in ovirt-node[master]: Scrolling text fields

rbarry at redhat.com rbarry at redhat.com
Tue Feb 25 18:15:47 UTC 2014


Ryan Barry has uploaded a new change for review.

Change subject: Scrolling text fields
......................................................................

Scrolling text fields

Let text fields scroll back and forth normally instead of
truncating.

Change-Id: I09a0428425db911bdfb155c25ffc0a3883b59c08
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=981189
Signed-off-by: Ryan Barry <rbarry at redhat.com>
---
M src/ovirt/node/ui/widgets.py
1 file changed, 25 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-node refs/changes/44/25044/1

diff --git a/src/ovirt/node/ui/widgets.py b/src/ovirt/node/ui/widgets.py
index d49252e..bec0275 100644
--- a/src/ovirt/node/ui/widgets.py
+++ b/src/ovirt/node/ui/widgets.py
@@ -457,7 +457,7 @@
         self._label = urwid.Text(label)
         self._label_attrmap = urwid.AttrMap(self._label,
                                             "plugin.widget.entry.label")
-        self._edit = EditWithChars(mask=mask, wrap="clip")
+        self._edit = EditWithChars(mask=mask, wrap="clip", layout=UnderscoreRight())
         self._edit_attrmap = urwid.AttrMap(self._edit, "plugin.widget.entry")
         self._linebox = urwid.LineBox(self._edit_attrmap)
         self._linebox_attrmap = urwid.AttrMap(self._linebox,
@@ -706,28 +706,31 @@
         self._progressbar.set_completion(v)
 
 
+class UnderscoreRight(urwid.StandardTextLayout):
+    def layout(self, text, width, align, wrap):
+        s = urwid.StandardTextLayout.layout(self, text, width, align, wrap)
+        out = []
+        last_offset = 0
+        for row in s:
+            used = 0
+            for seg in row:
+                used += seg[0]
+                if len(seg) == 3:
+                    last_offset = seg[2]
+            if used == width:
+                out.append(row)
+                continue
+            fill = width - used
+            if fill == width:
+                #Fake out empty entries
+                row = [(1, 0, 1), (0, 1)]
+                last_offset = 1
+            out.append(row + [(fill, last_offset, '_'*fill)])
+        return out
+
+
 class EditWithChars(urwid.Edit):
-    """Is an Edit, but displaying self.char where not char is.
-    """
-    char = u"_"
-
-    def render(self, size, focus=False):
-        (maxcol,) = size
-        self._shift_view_to_cursor = bool(focus)
-
-        txt = self.get_edit_text()
-        if len(txt) > maxcol:
-            chop = len(txt) - maxcol
-            txt = txt[chop:]
-        txt = u"".join([self._mask] * len(txt)) if self._mask else txt
-        txt = txt.ljust(maxcol, self.char)[:maxcol]
-        canv = urwid.Text(txt).render((maxcol,))
-        if focus:
-            canv = urwid.CompositeCanvas(canv)
-            canv.cursor = self.get_cursor_coords((maxcol,))
-
-        return canv
-
+    pass
 
 class TabablePile(urwid.Pile):
     """A pile where you can use (shift+)tab to cycle (back-)forward through the


-- 
To view, visit http://gerrit.ovirt.org/25044
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I09a0428425db911bdfb155c25ffc0a3883b59c08
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-node
Gerrit-Branch: master
Gerrit-Owner: Ryan Barry <rbarry at redhat.com>



More information about the node-patches mailing list