summaryrefslogtreecommitdiffstats
path: root/pyfirstaidkit
diff options
context:
space:
mode:
authorMartin Sivak <msivak@redhat.com>2010-08-30 14:32:55 +0200
committerMartin Sivak <msivak@redhat.com>2010-08-30 14:37:55 +0200
commit4c968e83624b037837636f6a0064874a3dbeb0b3 (patch)
tree62f1c7e5c1f46459eed2901c85e5cf930388b154 /pyfirstaidkit
parent4e5d2fef9599b38fb12b7c403c85651af4545b49 (diff)
downloadfirstaidkit-4c968e83624b037837636f6a0064874a3dbeb0b3.tar.gz
firstaidkit-4c968e83624b037837636f6a0064874a3dbeb0b3.tar.xz
firstaidkit-4c968e83624b037837636f6a0064874a3dbeb0b3.zip
Standardize option passing in Questions and add Back & Abort buttons to Config question. Also add radio button mode to Config question.
Diffstat (limited to 'pyfirstaidkit')
-rw-r--r--pyfirstaidkit/reporting.py48
1 files changed, 25 insertions, 23 deletions
diff --git a/pyfirstaidkit/reporting.py b/pyfirstaidkit/reporting.py
index 88a7114..ec14b13 100644
--- a/pyfirstaidkit/reporting.py
+++ b/pyfirstaidkit/reporting.py
@@ -66,8 +66,9 @@ class Question(object):
Object identity is used to match questions and replies."""
- def __init__(self, prompt):
+ def __init__(self, prompt, options = {}):
self.prompt = prompt
+ self.options = options
def send_answer(self, question_message, answer, origin = None):
assert question_message["message"] is self
@@ -82,15 +83,15 @@ class ConfigQuestion(Question):
Each item is a tuple (id, title, value,
tooltip, regexp_validator, validator_error_msg)"""
- def __init__(self, title, description, items, mode = 0):
- super(ConfigQuestion, self).__init__(title)
+ def __init__(self, title, description, items, options = {}):
+ super(ConfigQuestion, self).__init__(title, options)
assert len(items) > 0
self.title = title
self.description = description
- self.mode = mode
+ self.mode = options.get("mode", 1)
def _fillrow(x):
- if mode == 2:
+ if self.mode == 2:
model = x[6]
else:
model = None
@@ -105,10 +106,10 @@ class ChoiceQuestion(Question):
Each option is a tuple of (return value, description)."""
- def __init__(self, prompt, options):
- super(ChoiceQuestion, self).__init__(prompt)
- assert len(options) > 0
- self.options = options
+ def __init__(self, prompt, choices, options = {}):
+ super(ChoiceQuestion, self).__init__(prompt, options)
+ assert len(choices) > 0
+ self.choices = choices
class TextQuestion(Question):
"""A question that asks for a string."""
@@ -121,8 +122,8 @@ class FilenameQuestion(TextQuestion):
class PasswordQuestion(Question):
"""A question that asks for a password."""
- def __init__(self, prompt, confirm):
- super(PasswordQuestion, self).__init__(prompt)
+ def __init__(self, prompt, confirm, options = {}):
+ super(PasswordQuestion, self).__init__(prompt, options)
self.confirm = confirm
class Reports(object):
@@ -314,9 +315,9 @@ class Reports(object):
mb.closeMailbox()
return answer
- def choice_question(self, reply_mb, prompt, options, origin, level = PLUGIN,
- importance = logging.ERROR):
- q = ChoiceQuestion(prompt, options)
+ def choice_question(self, reply_mb, prompt, choices, origin, level = PLUGIN,
+ importance = logging.ERROR, options = {}):
+ q = ChoiceQuestion(prompt, choices, options)
self.put(q, origin, level, CHOICE_QUESTION, importance = importance,
reply = reply_mb)
return q
@@ -325,8 +326,8 @@ class Reports(object):
return self.__blocking_question(self.choice_question, args, kwargs)
def text_question(self, reply_mb, prompt, origin, level = PLUGIN,
- importance = logging.ERROR):
- q = TextQuestion(prompt)
+ importance = logging.ERROR, options = {}):
+ q = TextQuestion(prompt, options)
self.put(q, origin, level, TEXT_QUESTION, importance = importance,
reply = reply_mb)
return q
@@ -335,8 +336,8 @@ class Reports(object):
return self.__blocking_question(self.text_question, args, kwargs)
def password_question(self, reply_mb, prompt, origin, level = PLUGIN,
- importance = logging.ERROR, confirm = False):
- q = PasswordQuestion(prompt, confirm)
+ importance = logging.ERROR, confirm = False, options = {}):
+ q = PasswordQuestion(prompt, confirm, options)
self.put(q, origin, level, PASSWORD_QUESTION, importance = importance,
reply = reply_mb)
return q
@@ -345,8 +346,8 @@ class Reports(object):
return self.__blocking_question(self.password_question, args, kwargs)
def filename_question(self, reply_mb, prompt, origin, level = PLUGIN,
- importance = logging.ERROR):
- q = FilenameQuestion(prompt)
+ importance = logging.ERROR, options = {}):
+ q = FilenameQuestion(prompt, options)
self.put(q, origin, level, FILENAME_QUESTION, importance = importance,
reply = reply_mb)
return q
@@ -354,9 +355,10 @@ class Reports(object):
def filename_question_wait(self, *args, **kwargs):
return self.__blocking_question(self.filename_question, args, kwargs)
- def config_question(self, reply_mb, title, description, items, origin, level = PLUGIN,
- importance = logging.ERROR, mode = 0):
- q = ConfigQuestion(title, description, items, mode = mode)
+ def config_question(self, reply_mb, title, description,
+ items, origin, level = PLUGIN,
+ importance = logging.ERROR, options = {}):
+ q = ConfigQuestion(title, description, items, options = options)
self.put(q, origin, level, CONFIG_QUESTION, importance = importance,
reply = reply_mb)
return q