aboutsummaryrefslogtreecommitdiff
path: root/docs/_ext/lv_example.py
diff options
context:
space:
mode:
Diffstat (limited to 'docs/_ext/lv_example.py')
-rw-r--r--docs/_ext/lv_example.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/docs/_ext/lv_example.py b/docs/_ext/lv_example.py
new file mode 100644
index 000000000..9e0cde96a
--- /dev/null
+++ b/docs/_ext/lv_example.py
@@ -0,0 +1,45 @@
+from docutils.parsers.rst import Directive
+from docutils import nodes
+from docutils.parsers.rst.directives.images import Image
+from sphinx.directives.code import LiteralInclude
+import os
+
+class LvExample(Directive):
+ required_arguments = 3
+ def run(self):
+ example_path = self.arguments[0]
+ example_name = os.path.split(example_path)[1]
+ node_list = []
+
+ env = self.state.document.settings.env
+
+ if self.arguments[2] == 'py':
+ paragraph_node = nodes.raw(text=f"Click to try in the simulator!<br/><a target='_blank' href='https://sim.lvgl.io/v7/micropython/ports/javascript/bundle_out/index.html?script_startup=https://raw.githubusercontent.com/lvgl/lv_examples/{env.config.example_commit_hash}/src/header.py&script=https://raw.githubusercontent.com/lvgl/lv_examples/{env.config.built_example_commit_hash}/{example_name}/{example_name}.py'><img alt='{example_name}' src='https://raw.githubusercontent.com/lvgl/lv_examples/{env.config.built_example_commit_hash}/{example_name}/{example_name}.png'/></a>", format='html')
+ else:
+ paragraph_node = nodes.raw(text=f"<iframe class='lv-example' src='../_static/built_lv_examples/{example_name}/?w=320&h=240'></iframe>", format='html')
+ toggle = nodes.container('', literal_block=False, classes=['toggle'])
+ header = nodes.container('', literal_block=False, classes=['header'])
+ toggle.append(header)
+ example_file = os.path.abspath("lv_examples/src/" + example_path + "." + self.arguments[2])
+
+ with open(example_file) as f:
+ contents = f.read()
+ literal_list = nodes.literal_block(contents, contents)
+ literal_list['language'] = self.arguments[2]
+ toggle.append(literal_list)
+ header.append(nodes.paragraph(text="code"))
+ if env.app.tags.has('html'):
+ node_list.append(paragraph_node)
+ node_list.append(toggle)
+ return node_list
+
+def setup(app):
+ app.add_directive("lv_example", LvExample)
+ app.add_config_value("example_commit_hash", "", "env")
+ app.add_config_value("built_example_commit_hash", "", "env")
+
+ return {
+ 'version': '0.1',
+ 'parallel_read_safe': True,
+ 'parallel_write_safe': True,
+ }