diff --git a/css/html.css b/css/html.css
new file mode 100644
index 0000000..d53ee47
--- /dev/null
+++ b/css/html.css
@@ -0,0 +1,97 @@
+html > head {
+ display: none;
+}
+
+a {
+ color: #444;
+}
+
+i, em, cite, var, address {
+ font-style: italic;
+}
+
+b, strong {
+ font-weight: bold;
+}
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+h2 {
+ font-size: 1.5em;
+ margin: 0.75em 0;
+}
+
+h3 {
+ font-size: 1.17em;
+ margin: 0.83em 0;
+}
+
+h4, p, blockquote, dl {
+ margin: 1.12em 0;
+}
+
+h5 {
+ font-size: 0.83em;
+ margin: 1.5em 0;
+}
+
+h6 {
+ font-size: 0.75em;
+ margin: 1.67em 0;
+}
+
+dt {
+ margin-top: 1.12em;
+}
+
+dd {
+ margin-left: 1.5em;
+}
+
+pre, code, samp, kbd {
+ font-family: monospace;
+ font-size: 0.891em;
+}
+
+ul, ol {
+ margin-left: 1.5em;
+ margin-top: 0.6rem;
+ margin-bottom: 0.6rem;
+}
+
+li > ul, li > ol {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+svg {
+ text-align: center;
+}
+
+sub, sup {
+ font-size: 0.83em;
+}
+
+sub {
+ vertical-align: sub;
+}
+
+sup {
+ vertical-align: super;
+}
+
+table {
+ text-align: left;
+}
+
+th {
+ font-weight: bold;
+ text-align: center;
+}
+
+th, td {
+ padding: 0.67em;
+}
diff --git a/css/sysinfo.css b/css/sysinfo.css
new file mode 100644
index 0000000..586c975
--- /dev/null
+++ b/css/sysinfo.css
@@ -0,0 +1,21 @@
+body {
+ font-family: sans-serif;
+ font-size: 8.1875pt;
+ text-align: center;
+}
+
+table {
+ display: inline-table;
+}
+
+tr {
+ padding-bottom: 0.5em;
+}
+
+tr.sep {
+ padding-top: 0.5em;
+}
+
+td {
+ padding: 0 0.5em 0;
+}
diff --git a/css/toc.css b/css/toc.css
index b572a49..9a11419 100644
--- a/css/toc.css
+++ b/css/toc.css
@@ -3,16 +3,16 @@ ul {
padding: 0;
}
-ul ul {
+ul > ul {
padding-left: 2em;
}
-ul li {
+ul > li {
list-style-type: none;
padding-top: 0.5em;
}
-body > ul > li {
+ul.top > li {
padding-top: 1em;
}
diff --git a/src/app.rs b/src/app.rs
index f721fef..1fb00f2 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -25,6 +25,7 @@ use crate::view::keyboard::{Layout};
use crate::view::dictionary::Dictionary as DictionaryApp;
use crate::view::calculator::Calculator;
use crate::view::sketch::Sketch;
+use crate::document::sys_info_as_html;
use crate::input::{DeviceEvent, PowerSource, ButtonCode, ButtonStatus, VAL_RELEASE, VAL_PRESS};
use crate::input::{raw_events, device_events, usb_events, display_rotate_event, button_scheme_event};
use crate::gesture::{GestureEvent, gesture_events};
@@ -857,6 +858,19 @@ pub fn run() -> Result<(), Error> {
rq.add(RenderData::new(dialog.id(), *dialog.rect(), UpdateMode::Gui));
view.children_mut().push(Box::new(dialog) as Box);
},
+ Event::Select(EntryId::SystemInfo) => {
+ view.children_mut().retain(|child| !child.is::