From 1d6bea7f2260e03a08ee3f2c832ff4ead5827d32 Mon Sep 17 00:00:00 2001 From: toofar Date: Sun, 31 Dec 2023 14:12:53 +1300 Subject: [PATCH] Add initial treetab docs. TODO: * convert to asciidoc or make scripts/asciidoc2html.py support markdown input too. * for now I'm using `pandoc -f markdown -t html -o qutebrowser/html/doc/treetabs.html doc/treetabs.md` * should be able to asciidoc with pandoc too * the last section and the rest of the second to last * review and refactor * post on the PR and figure out how we can contribute to it collectively (put on main branch so people can open PRs? create new integration repo where people can open issues, discussions and PRs?) * maybe add more examples showing the effect of various operations * (when including in a release) consider removing the implementation section, or refactoring it to be more high level broad strokes and less low level stuff that will inevitably drift from the actual implementation These docs are not supposed to be in their final state. My plan for them so far is to provide a guide to the changes for PR contributors. I think it's currently difficult to hold the scope of the changes in your head the description on the PR is currently very limited. I would like to encourage discussion of usability and feature set as well as highlighting some implementation details to point out upsides, downsides, implications and alternatives. I've modified asciidoc2html to copy all images over. It was only doing specific ones before. But there are more images in there, why are they in doc/img if they aren't images used in the documentation? Anyway, storage is cheap, none of the images are sensitive and not having to hardcode individual files names is good. --- doc/img/treetabs/tree_tabs_new_tab_types.png | Bin 0 -> 4869 bytes .../treetabs/tree_tabs_overview_detail.png | Bin 0 -> 11259 bytes doc/treetabs.md | 212 ++++++++++++++++++ scripts/asciidoc2html.py | 10 +- 4 files changed, 217 insertions(+), 5 deletions(-) create mode 100644 doc/img/treetabs/tree_tabs_new_tab_types.png create mode 100644 doc/img/treetabs/tree_tabs_overview_detail.png create mode 100644 doc/treetabs.md diff --git a/doc/img/treetabs/tree_tabs_new_tab_types.png b/doc/img/treetabs/tree_tabs_new_tab_types.png new file mode 100644 index 0000000000000000000000000000000000000000..fdca0e01d4ceeca5e56f342e154ceb7a1a613736 GIT binary patch literal 4869 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 V-kOv7-}hROzP7Pev4%s~{{Z{UP0|1W literal 0 HcmV?d00001 diff --git a/doc/img/treetabs/tree_tabs_overview_detail.png b/doc/img/treetabs/tree_tabs_overview_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..fc5610ecf8c7de8a41f3f8024efe499c663ec5a1 GIT binary patch literal 11259 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