Adiciona interface para Declaração.
[cascardo/irpf-gui.git] / src / menu.py
index 4ba0d31..094285f 100644 (file)
 
 import baseui
 import contribuinte
-import ocupacoes
 import rendimentoPJ
+import bens
 import sys
-import form
-
-class OcupacaoForm(form.OptionsForm):
-    def __init__(self, ocupacoes, contribuinte):
-        g = ocupacoes.groups()
-        l = []
-        for i in sorted(g):
-            l.extend(g[i])
-        o = map(lambda x: (x[0], x[3]), l)
-        form.OptionsForm.__init__(self, u"Ocupações", o, contribuinte.get_campo_contribuinte("ocupacaoPrincipal"))
-        self.ocupacoes = ocupacoes
-        self.contribuinte = contribuinte
-    def set_value(self, value):
-        form.OptionsForm.set_value(self, value)
-        self.contribuinte.set_campo_contribuinte("ocupacaoPrincipal", value)
-
-class ContribuinteForm(form.StringForm):
-    def __init__(self, name, attr, contribuinte):
-        self.contribuinte = contribuinte
-        self.attr = attr
-        form.StringForm.__init__(self, name, self.contribuinte.get_campo_contribuinte(self.attr))
-    def set_value(self, value):
-        form.StringForm.set_value(self, value)
-        self.contribuinte.set_campo_contribuinte(self.attr, value)
+import isentos
+import exclusivos
 
 def List(UI, L, display):
     exit = False
@@ -70,22 +48,56 @@ def RendimentosPJ(UI, contrib):
     rend = rendimentoPJ.RendimentosPJ(contrib)
     return List(UI, rend, "nomeFontePagadora")
 
+def Declaracao(UI, contrib):
+    UI.form(contrib.declaracoes.form(contrib.declaracao))
+    return True
+
 def DadosPessoais(UI, contrib):
-    form = []
-    ocup = ocupacoes.Ocupacoes()
-    form.append(ContribuinteForm("Nome", "nome", contrib))
-    form.append(OcupacaoForm(ocup, contrib))
-    for i in contribuinte.contribuinte_attributes:
-        form.append(ContribuinteForm(i, i, contrib))
-    UI.form(form)
+    UI.form(contrib.form())
     return True
 
+def Bens(UI, contrib):
+    b = bens.Bens(contrib)
+    return List(UI, b, "discriminacao")
+
+def Quadro(UI, quadro):
+    return List(UI, quadro, "especificacao")
+
+def Quadros(quadros):
+    def fQuadros(UI, contrib):
+        exit = False
+        while not exit:
+            r = UI.menu(map(lambda x: x.name, quadros.quadros))
+            if r < 0:
+                exit = True
+            else:
+                Quadro(UI, quadros.quadros[r])
+    return fQuadros
+
 def Salvar(UI, contrib):
     contrib.save()
 
 def menu(UI, contrib):
-    m = [ "Sair", "Salvar", "Dados Pessoais", "Rendimentos PJ" ]
-    f = [ None, Salvar, DadosPessoais, RendimentosPJ ]
+    m = [ 
+        "Sair",
+        "Salvar",
+        u"Declaração",
+        "Dados Pessoais",
+        "Rendimentos PJ",
+        "Bens",
+        "Rendimentos Isentos",
+        "Rendimentos Exclusivos na Fonte",
+        ]
+    f = [
+        None,
+        Salvar,
+        Declaracao,
+        DadosPessoais,
+        RendimentosPJ,
+        Bens,
+        Quadros(isentos.RendimentosIsentos(contrib)),
+        Quadros(exclusivos.RendimentosExclusivos(contrib)),
+        ]
     exit = False
     while not exit:
         r = UI.menu(m)