List UI: uma interface para listas, ao estilo CRUD.
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.info>
Thu, 13 Mar 2014 21:38:22 +0000 (18:38 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.info>
Thu, 13 Mar 2014 21:44:27 +0000 (18:44 -0300)
Lista elementos, permitindo sua edição, remoção e criação.

src/baseui.py

index 4d340ed..dcbf797 100644 (file)
@@ -78,6 +78,30 @@ class BaseUI():
             return -1
     def show_item(self, s):
         print s
+    def item(self):
+        menu = [ "Exit", "Edit", "Delete" ]
+        actions = [ None, "edit", "delete" ]
+        r = self.menu(menu)
+        if r >= 0:
+            return actions[r]
+        return None
+    def list(self, ls):
+        self.show_item("0. Exit")
+        self.show_item("1. Add")
+        i = 2
+        for l in ls:
+            self.show_item(str(i) + ". " + l)
+            i += 1
+        ans = self.get_string("Option: ")
+        try:
+            opt = int(ans)
+            if opt >= i or opt <= 0:
+                return (-1, None)
+            elif opt == 1:
+                return (-1, "add")
+            return (opt - 1, self.item())
+        except Exception, e:
+            return (-1, None)
     def form(self, fs):
         exit = False
         while not exit: