scripts/lib/dialogwizard/dialogwizard.py
Antoine Durand-Gasselin 0d44a363eb [dialogwizard/dialogwizard] on prefere utiliser une methode generique pour verifier que l'appel a dialog s'est bien effectue
Ignore-this: 4323b4c019e56d8381587b82e183908d

darcs-hash:20090825144204-bd074-c765bda3efeedadc05914be0937530b27025cb33.gz
2009-08-25 16:42:04 +02:00

44 lines
1.4 KiB
Python
Executable file

#!/usr/bin/env python
#
# DIALOGWIZARD.PY--
#
# Copyright (C) 2009 Antoine Durand-Gasselin
# Author: Antoine Durand-Gasselin <adg@crans.org>
#
from wizard import Step, PreviousStep, EndScenario
from itertools import izip
import dialog, time
def really_quit(dico):
raise EndScenario("game over!", data = dico)
class DialogStepGenerator():
u"""This class defines a step, that will prompt the user for various
fields."""
def __init__(self, backtitle):
self.d = dialog.Dialog()
self.d.add_persistent_args(["--backtitle", backtitle])
def _check_rc(self, rc):
if rc == 2: really_quit(dico)
if rc == 1: raise PreviousStep
def form_step(self, title, enonce, form, **kw):
def fn(dico, default):
fields = [ ( field[1], default.get(field[0], dico.get(field[0], ''))) + field[2:] for field in form ]
rc, res = self.d.form(enonce, fields = fields, title=title, **kw)
self._check_rc(rc)
for field, val in izip (form, res):
dico[field[0]] = val
return dico
return Step(fn)
def select_step(self, title, enonce, var, choix):
def fn(dico, default):
rc, res = self.d.inputbox(enonce, title = title, init = dico.get(var, ''), **kw)
self._check_rc(rc)
dico[var] = res
return dico
return Step(fn)