Module: check_mk
Branch: master
Commit: c5dc344efec14f7d4568c821e0a30138fb0b0d1b
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=c5dc344efec14f…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Jan 17 10:56:53 2012 +0100
new valuespec RadioChoice
---
web/htdocs/valuespec.py | 37 +++++++++++++++++++++++++++++++++++++
1 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/web/htdocs/valuespec.py b/web/htdocs/valuespec.py
index e498133..4edad63 100644
--- a/web/htdocs/valuespec.py
+++ b/web/htdocs/valuespec.py
@@ -562,6 +562,43 @@ class DropdownChoice(ValueSpec):
raise MKUserError(varprefix, _("Invalid value %s, must be in %s") %
", ".join([v for (v,t) in self._choices]))
+# The same logic as the dropdown choice, but rendered
+# as a group of radio buttons.
+# columns == None or unset -> separate with " "
+class RadioChoice(DropdownChoice):
+ def __init__(self, **kwargs):
+ DropdownChoice.__init__(self, **kwargs)
+ self._columns = kwargs.get("columns")
+
+ def render_input(self, varprefix, value):
+ html.begin_radio_group()
+ if self._columns != None:
+ html.write("<table class=radiochoice>")
+ html.write("<tr>")
+
+ for n, entry in enumerate(self._choices):
+ if self._columns != None:
+ html.write("<td>")
+ if len(entry) > 2: # icon!
+ label = '<img class=icon align=absmiddle
src="images/icon_%s.png" title="%s">' % \
+ ( entry[2], entry[1].encode("utf-8"))
+ else:
+ label = entry[1]
+ html.radiobutton(varprefix, str(n), value == entry[0], label)
+ if self._columns != None:
+ html.write("</td>")
+ if (n+1) % self._columns == 0 and (n+1) < len(self._choices)-1:
+ html.write("<tr></tr>")
+ else:
+ html.write(" ")
+ if self._columns != None:
+ mod = len(self._choices) % self._columns
+ if mod:
+ html.write("<td></td>" * (self._columns - mod -
1))
+ html.write("</tr></table>")
+ html.end_radio_group()
+
+
# A list of checkboxes representing a list of values
class ListChoice(ValueSpec):