16 from docutils
import nodes
17 from docutils.parsers.rst
import directives, roles, states
20 app.add_directive(
'toggle', ToggleDirective)
21 app.add_directive(
'toggle_table', ToggleTableDirective)
25 Base class that will be used by the two toggle directives 27 required_arguments = 1
28 optional_arguments = 0
29 final_argument_whitespace =
True 32 node_class = nodes.container
35 self.assert_has_content()
36 text =
'\n'.join(self.content)
39 label = self.arguments[0]
40 label_strip = label.replace(
' ',
'')
41 node += nodes.raw(self.arguments[0],
'<div class="toggleable_div label_%s">' % label_strip, format=
"html")
44 self.state.nested_parse(self.content, self.content_offset, node)
45 node += nodes.raw(self.arguments[0],
'</div>', format=
"html")
50 Class used to create a set of buttons to toggle different sections 52 required_arguments = 0
53 optional_arguments = 10
54 final_argument_whitespace =
True 56 for i
in xrange(0, 100):
57 option_spec[
'arg' + str(i)] = str
59 node_class = nodes.container
63 function toggle(label) { 64 $('.toggleable_button').css({border: '2px outset', 'border-radius': '4px'}); 65 $('.toggleable_button.label_' + label).css({border: '2px inset', 'border-radius': '4px'}); 66 $('.toggleable_div').css('display', 'none'); 67 $('.toggleable_div.label_' + label).css('display', 'block'); 74 $(document).ready(function() { 75 var classList =$('.toggleable_button').attr('class').split(/\s+/); 76 $.each( classList, function(index, item){ 77 if (item.substring(0, 5) === 'label') { 78 toggle(item.substring(6)); 87 for key
in self.options.keys():
89 raise RuntimeError(key +
' not in the contructor of ToggleTableDirective, use arg0 to arg99')
90 label = self.options[key]
91 label_strip = label.replace(
' ',
'')
92 str1 =
'<button class="toggleable_button label_%s" onclick="' % label_strip
93 str2 = js_toggle +
"toggle('%s')" % label_strip
94 str3 =
'">%s</button>' % label
95 node += nodes.raw(key, str1 + str2 + str3 + js_ready, format=
"html")