From 8e72c8c41ee508e4d96f82cd7a244c3cd6063d87 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Sat, 20 Apr 2024 13:16:11 +0100 Subject: [PATCH 1/5] flush inline --- src/textual/drivers/linux_inline_driver.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/textual/drivers/linux_inline_driver.py b/src/textual/drivers/linux_inline_driver.py index 01fc44b0df..dfcd09db98 100644 --- a/src/textual/drivers/linux_inline_driver.py +++ b/src/textual/drivers/linux_inline_driver.py @@ -266,6 +266,9 @@ def disable_input(self) -> None: # TODO: log this pass + def flush(self): + self._file.flush() + def stop_application_mode(self) -> None: """Stop application mode, restore state.""" self._disable_bracketed_paste() From 40eac179b1ee1d8b6516ea651425e2b752337ac9 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Sat, 20 Apr 2024 13:17:58 +0100 Subject: [PATCH 2/5] docstring changelog --- CHANGELOG.md | 1 + src/textual/drivers/linux_inline_driver.py | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2a8ae6d3d..61d1752d10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Fixed an off-by-one error in the line number of the `Document.end` property https://github.com/Textualize/textual/issues/4426 - Fixed setting scrollbar colors not updating the scrollbar https://github.com/Textualize/textual/pull/4433 +- Fixed flushing in inline mode ## [0.57.0] - 2024-04-19 diff --git a/src/textual/drivers/linux_inline_driver.py b/src/textual/drivers/linux_inline_driver.py index dfcd09db98..8d36a58510 100644 --- a/src/textual/drivers/linux_inline_driver.py +++ b/src/textual/drivers/linux_inline_driver.py @@ -267,6 +267,7 @@ def disable_input(self) -> None: pass def flush(self): + """Flush any buffered data.""" self._file.flush() def stop_application_mode(self) -> None: From 4a4d2cf09b09566f2de61f42e5e0c45504304625 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Sat, 20 Apr 2024 14:56:28 +0100 Subject: [PATCH 3/5] bump [skipci] --- CHANGELOG.md | 4 ++-- pyproject.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61d1752d10..0cfd3b819b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,13 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). -## Unreleased +## [0.57.1] - 2024-04-20 ### Fixed - Fixed an off-by-one error in the line number of the `Document.end` property https://github.com/Textualize/textual/issues/4426 - Fixed setting scrollbar colors not updating the scrollbar https://github.com/Textualize/textual/pull/4433 -- Fixed flushing in inline mode +- Fixed flushing in inline mode https://github.com/Textualize/textual/pull/4435 ## [0.57.0] - 2024-04-19 diff --git a/pyproject.toml b/pyproject.toml index 0395762016..81540de968 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "textual" -version = "0.57.0" +version = "0.57.1" homepage = "https://github.com/Textualize/textual" repository = "https://github.com/Textualize/textual" documentation = "https://textual.textualize.io/" From 98662cfb87e1d165b2ad1b0d7fd0b07e5aca448d Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Sat, 20 Apr 2024 17:06:08 +0100 Subject: [PATCH 4/5] words --- CHANGELOG.md | 5 + docs/blog/images/calcinline.png | Bin 0 -> 101617 bytes docs/blog/images/inline1.excalidraw.svg | 21 ++++ docs/blog/images/inline2.excalidraw.svg | 21 ++++ docs/blog/posts/inline-mode.md | 134 ++++++++++++++++++++++++ src/textual/app.py | 9 +- src/textual/geometry.py | 24 +++++ 7 files changed, 211 insertions(+), 3 deletions(-) create mode 100644 docs/blog/images/calcinline.png create mode 100644 docs/blog/images/inline1.excalidraw.svg create mode 100644 docs/blog/images/inline2.excalidraw.svg create mode 100644 docs/blog/posts/inline-mode.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cfd3b819b..d10552604d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Fixed setting scrollbar colors not updating the scrollbar https://github.com/Textualize/textual/pull/4433 - Fixed flushing in inline mode https://github.com/Textualize/textual/pull/4435 +### Added + +- Added `Offset.clamp` and `Size.clamp_offset` https://github.com/Textualize/textual/pull/4435 + + ## [0.57.0] - 2024-04-19 ### Fixed diff --git a/docs/blog/images/calcinline.png b/docs/blog/images/calcinline.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf54bb507e5531adbec5f4d48cc529c2c6c77b4 GIT binary patch literal 101617 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 EA7oztO#lD@ literal 0 HcmV?d00001 diff --git a/docs/blog/images/inline1.excalidraw.svg b/docs/blog/images/inline1.excalidraw.svg new file mode 100644 index 0000000000..4f04fb237b --- /dev/null +++ b/docs/blog/images/inline1.excalidraw.svg @@ -0,0 +1,21 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2caW7bSFx1MDAxNoD/51x1MDAxNIIzP7qBuFL7XHUwMDEyYDCwZStyXHUwMDFj2+1VTmZcdTAwMWFcckqiLMZcdTAwMTQpkZRspVx1MDAxMWAwZ+hcdTAwMWNjljPlJPOKdkRKMlx1MDAxNcWb1EmUwLGruDxcdTAwMTa/t5fz+5NSaSVcdTAwMTl23ZVcdTAwMTelXHUwMDE197Lh+F4zci5WntnxgVx1MDAxYsVeXHUwMDE4wFx1MDAxNE1/jsN+1EiPbCdJN37x/HnHic7dpOs7XHJcdTAwMTdccry47/hx0m96IWqEnede4nbiv9mvu07H/Ws37DSTXGJlN1l1m15cdTAwMTJGV/dyfbfjXHUwMDA2SVxmV/87/FxcKv2efs1JXHUwMDE3uY3EXHTOfDc9IZ3KXHUwMDA0JJjxyeHdMEilpVJcdCOVXHUwMDE5zXvxXHUwMDA23C5xmzDZXHUwMDAykd1sxlx1MDAwZa3UX56u8lajfr6zj/VvXHUwMDAz1yHRRT+7a8vz/cNk6KdSNaIwjlfbTtJoZ0fESVx1MDAxNJ67Na+ZtD8vXm58dG5cdTAwMWPCQmRnRWH/rFx1MDAxZLixXVx1MDAwMzJcdTAwMWFccrtOw0uG6TPi0ejVQrwoZSOX9k6UIcxcZlWGXHUwMDFhZrRQajRtLyAl0lpcdTAwMWGuXHUwMDE55lRzbiZcdTAwMDQrhz68XHUwMDBlXHUwMDEw7ClOP5lodadxflx1MDAwNvJcdTAwMDXN0TFJ5Fx1MDAwNHHXieClZcddXFw/slx1MDAwMEGYMEJJw5RmLJOj7Xpn7Vx1MDAwNFx1MDAwZWFcdTAwMTIjTbDhXFwyJoimMpPGTV9cclx1MDAxMVxcK1xml8jOtjJ0t5opJb9mLyRcdTAwMDK+tuwpQd/38+tcdTAwMTk0r9dzbKJuJzZzwGWX6nebzlx1MDAxNVx1MDAxOERcdTAwMTEmKeZSgJSjed9cdTAwMGLOJy/nh43zjKV09MOzWzCsjChCmGCl4aVcbknmhtjpVVx1MDAwNqe7XHUwMDA3bqvSOKqel/1cdTAwMWHFXHUwMDFi61x1MDAwNVx1MDAxME+AuDh8OdJcdTAwMDLAoFx1MDAxNFOjXGah4/hqhGFcdTAwMWSoxFx1MDAwMpBRWj9cdTAwMWO+xCBDODVcXGqBQZBpfKlGQlx0hTU2RmEpmZ7GXHUwMDE3c0OtXHUwMDFhfjP4ur7vdeNcdTAwMWLhhftcdTAwMTTBK7li5Gvs78nxK+dQXGYvejtcdTAwMDde69xcdTAwMDSV+JeXRfZ3Jrrk8dBlXHUwMDFjXHSARVx1MDAwMppEXHUwMDEzg8ctr5JAXHUwMDBio5JcdTAwMDHZXHUwMDE4kOJ3Qfdpy1x1MDAxMVTQaWxcdENcdTAwMWN0XHUwMDA3nFx1MDAxZOhcdTAwMGblWvNpblx0XHUwMDA1OSU3YHIxZYxyNcktXHUwMDAwXHUwMDBilvtbsrozsFU5XHUwMDFiM4Gt4kRcdTAwMWH4Oze2g+5cdTAwMWXpuoPN9ZbgZ69cdTAwMTmpXVbLtSXHVlx1MDAxMsSNXHUwMDExlFBcclx1MDAxNlx1MDAxNYtxalx1MDAwNThxooQ2XHUwMDE4XFwx0fKO1NYxXHUwMDE2XHUwMDBmRS1cdTAwMDSANtigmHxcdTAwMTfYSlWELVx1MDAwM3NLhNBsbm533uDt/dPN3v4gpju7XXZcdTAwMTJcdTAwMGZcdTAwMWG/LTm32iCwgYJDLKshvuTj3EJcdTAwMTiBOVx1MDAwNJZcdTAwMWNsMeNE3IlbQutcdTAwMTA1P1x1MDAxOLdKQKzOXHQ131xmt4l7mdxcdTAwMThcIlx1MDAxNEZcYlxcW88oclB/idmzzsn62/CiXHUwMDE19Fx1MDAwZvc3TpOeXGLeXHUwMDBivdzRLVx1MDAxN1x1MDAxNCmIXHIwY0bAs04kZ1xuI8CDXHUwMDE5XGJcdTAwMWQ0VzznfiehJa79c/voXHUwMDE2zDpEKIaBJJgqxm/glopJTjlIXHUwMDA1XGbrXHUwMDA1Yio1hORUf1x1MDAwNaaZVGGQXHUwMDFjeu/Talx1MDAwMFx1MDAxZVx1MDAxYq04XHUwMDFkz1x1MDAxZo691JTflOOo41x1MDAwNY6/Mjaz5ntnluZcdTAwMTXfbY1jnnhccsdcdTAwMWZNJ2E3m23AnVx1MDAxYy9wo+mVXHQj78ze5ajwrvCcbnVkUVDu3dSd2LWzdlxc30oniTCTo6OckzCqXHUwMDE1pGPzR0CXeu2UvD5cdTAwMWGcvCtv1JPGsLKvPLLcWkmZLYpcdTAwMTBuuMBgwlxyXHUwMDFlzzmpxogxQVx1MDAxNbf+RIviksldtZJcdTAwMTKMXGZT2cvNlDGXLVxcKSPF0qQ2YoGp5ZU2mjyl96iNWfTyWVx1MDAxYv9S6lx1MDAwZZN2XHUwMDE4lLzAXCKPusPH1ctZ95/U0Fx1MDAxYlx1MDAxNdTcUkHJ5OhIQVx1MDAwNbYhXHUwMDA1o/O7TYdcZumx13ldebllZCu52KItvrPkXG5KJVx1MDAwMlx1MDAxZsVcdTAwMDSXRFKFc4FtXG5cbjZIQZpcdTAwMDYpNzdE6clcdTAwMTg0U1DaMi7ndylcblx0JOlccvpJclx1MDAxMF8rKCNcdTAwMTCFa/pcdTAwMWSp56eP//70xz9cdTAwMTf59+N//lx1MDAxMXz6418lr9NccqOklLS9uDTzXHUwMDAzXHUwMDA3X53RXG6jktXrXHUwMDEyvP4z9yeCf37xhTPsp1x1MDAxYnlB8lPw81x1MDAxY/f4+L9Fr81/XHUwMDFm11j+oOHPQsNcXK6LiJm+a3ZnjnA5OTzyYJA9U1tcdTAwMWKe24GpzfiClVtcdTAwMGX1anHjpFLeXHUwMDFjen7052jNXHTEId9cdTAwMTKUgF9cdTAwMThrV1x1MDAwZdP0ykBgr4WEIFx1MDAxM1x1MDAxNlx1MDAwNcs71SxcdTAwMWWhN6chMIHogyy8uUHyKD9Yby5f0J/qzVx0SNgxJ/NT3H7/+vByUD1+e+iL9XpMnMBcdTAwMWK2lz1cZlOIci6UwMZcdTAwMDae48VcdTAwMGJu0yRcdTAwMDW8QDjKJeeYPVx1MDAxY7730puDlFx1MDAwZkIkyG+/XHUwMDE5fGdVi1x1MDAxNS6C1+a98FLN/H3lkzZda1x1MDAxZZQjUj1uXHUwMDFlXHUwMDFjNdpq66R6seTVYsjxXHJYPKZcdTAwMDVcdTAwMDXDy+SE7dVcdTAwMWFcdTAwMDG6WsExmuW7zsvXnKPEdpRccv4+wNW0cFOPzfkgIzTztzmq+28q4dbh+erQK7d5r856tfLakoMrXHUwMDE50jaxXHUwMDA150JcdTAwMTlcdTAwMTZ40uoqXHUwMDA040yJtHt3p/1cdTAwMTBcdTAwMGbcnlx1MDAwM72TWkqyyIrVI3Kriquq1LZ7zNdY3Jc7nlx1MDAxYuNcdTAwMWVf9VuDau3dpnpVq95qJ88jgmtcYjhpKYhSVLHc1pDP2Fx1MDAxMiWxpFx1MDAxMGOSO8Zcblx1MDAwZtye00pcdI5cdTAwMDVZeFf53rAtLDTqwiCBMNugs3ZobmYvutH+5j7ZXHUwMDEwu1x1MDAxYvuy2Ze7ZH/TXe5cYpdcdTAwMGKBIOfBXG645Fx1MDAxOPLSySiBXCJbZSRcdTAwMTAvSVx1MDAwNS+keFx1MDAwZs9CXHUwMDFhdFx1MDAwNljHkK0tvEH3UDXH77NBR1Vx/Z/BmlOt8fyJ53FP7jjbtdO1zdW9gyZdq78/7peXWy0h3kVUUS5cdTAwMTUziimWlVwi0j2hhlwiSPFsRFxm5Fx1MDAxOVpcXP5/zP6cLVx0gFx1MDAwMqtcdTAwMWb9ueyYb7Q/XHUwMDA3IXqhfnJqgcFfUVx1MDAxOPLXvM6GqO329ereK1V/XelttypLrp9UI1xi8Vx1MDAxOIUn5ZBCT2zFolx1MDAxNFx1MDAxMckoXHUwMDEznCqueXGs96jtOaGxXmhQl2on+5otV3fTzlx1MDAxZlxymVx1MDAxOWcsVUPmR3vuXHUwMDA3XHKP2Z6jhWmfpmCoXHUwMDE4IfOX2EhvfbuqlcvLb99eXjr97kbz6HLJ3Vx1MDAxN+OIQV5cdTAwMDc+Styw/1x1MDAwYuJNJLFcdTAwMDT/JpWcVVx1MDAxYXYxI4zMdF9PW62GaZhcdTAwMWJKXHUwMDE1XHUwMDE0XHQsXHUwMDA1xpRzwvGNXowypLUxIIfdlkem8z/wK5xA1irvIVx1MDAwMfyMUFx1MDAwNlx1MDAxMbtcdTAwMWX5UOzsRudkZ4/AONi+PN9cdTAwMWVe+q3tpNojvai25Veyus5cdTAwMTitTlx1MDAxNIVcdTAwMTcro5lcdTAwMGbX381ypZLl+6VcdTAwMGbZXHUwMDA2pKSwIM1cdTAwMTTmkI3kXHUwMDA0+ZK2bPT97aNcck81XHUwMDBl+/XtNVapbe3t9e5VW5phYm9/j+pcdTAwMDKJXHUwMDE4YkZAslx1MDAwNeGTytec7flcdTAwMWFzZCRcdTAwMTd2+5PUbEa0t3h1XHUwMDExttZjf1liQeryaFx1MDAwNb8rhbpcdTAwMDFmZoo3Zlx1MDAxMG53vOr5XHUwMDBifrM1fFx1MDAwMaZffVx1MDAxMWWGXHUwMDExNlxubD9k6oTh8X2Fmk7sx79LYaFcdTAwMTBlrjRcdTAwMDKGpaKQjlxiIFlOo6xcdTAwMDRcYmJ/aVBcdTAwMThObJljXG5larRS1NxH6W9cdTAwMWFlelx1MDAxN5RT26xulebEiVx1MDAxMyXrXtD0grPJU9ygmc3kRL7+T1x1MDAwNLbmXGJG0pSp0bfyr2LEIVFnRHNJMDNgMXjusDOna99cdTAwMTSCjI1rMFx1MDAxOFQoa1CmlsV34qRcdTAwMWN2Op61ub+EXHUwMDEwb06KnT7SmlXHtutMvVx1MDAwNnio/Nyk3nbtXHUwMDE1x1x1MDAxZG32XSljO/1h9P2vz248epVyg6RUXHUwMDAwN4RccpCW6/zpq1xuKWNgkCtpofzi1YoxvrrcJMHZXHUwMDA1n+T/vZ1LxoVcdTAwMDVcdTAwMTj7aNpQOn9cdTAwMDB7vMferVV3XHUwMDFijvP2/M3uprOxeeRcdTAwMWQtd1x1MDAwMKvA1UlcYl+lxvC4dLw8XG4mXHUwMDFlaSo45pxSlf8ls6VzyFx1MDAwNixcdTAwMTiwI+6hZHrP/lhqXHUwMDEwLVx1MDAxNyfM64+fXFwrzIrT7Vx1MDAxZSZwyZFo8Ghe87qGk11mZeC5XHUwMDE36zeuu/3YmDiV32Lops/54cmH/1x1MDAwM7lI91xmIn0= + + + + + terminal$ python inline.py╭──────────────────────────────────────────╮│ import this ││ for n in range(10): ││ print(n) │╰──────────────────────────────────────────╯terminal$ python inline.py╭──────────────────────────────────────────╮│ import this ││ for n in range(10): ││ print(n) │╰──────────────────────────────────────────╯ diff --git a/docs/blog/images/inline2.excalidraw.svg b/docs/blog/images/inline2.excalidraw.svg new file mode 100644 index 0000000000..3f0f6f1ab2 --- /dev/null +++ b/docs/blog/images/inline2.excalidraw.svg @@ -0,0 +1,21 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2a627bRlx1MDAxNoD/5ylcdTAwMDRlf7RAzMzMmWuAxcJ27Nhx41xc3NSut0VAkyOJNUWyJGVbKVxmXHUwMDE0fYbmMbq7z5Qn2TO0I0qUZKuOb73Qhi3O9fDMd+acM9RPXHUwMDBmWq12Ocxs+0mrbU9cdTAwMDI/jsLcP24/cuVHNi+iNMEqVt1cdTAwMTfpIFx1MDAwZqqWvbLMiiePXHUwMDFm9/380JZZ7Fx1MDAwN9Y7ioqBXHUwMDFmXHUwMDE35SCMUi9I+4+j0vaLf7m/237f/jNL+2GZe/UkSzaMyjQ/m8vGtm+TssDR/433rdZP1d8x6XJcdTAwMWKUftKNbdWhqqpcdTAwMDWkjJlm8XaaVNJSobk2Wkkxalx1MDAxMVx1MDAxNU9xwtKGWN1BoW1d44rar9+Q7GiLraytL29mS/L5yTc/RLv1vJ0ojnfKYVxcyVx1MDAxNeRpUSz1/DLo1S2KMk9cdTAwMGbtblx1MDAxNJa9T+pcdTAwMWIrXHUwMDFm9S1SVEXdK09cdTAwMDfdXmJcdTAwMGKnXHUwMDA1OipNMz+IyqErI2RUeqaKJ6265Fx1MDAwNO+48oBcdTAwMTFGqVx1MDAwMEo0UC5H1WdcdTAwMDNIT3AlJZdMXHRcdTAwMDGsKdlqXHUwMDFh44qgZFx1MDAwZkl11bJcdTAwMWT4wWFcdTAwMTdcdTAwMDVMwlGbMveTXCLzc1xct7rd8fkzXHUwMDBiXHUwMDA2XHUwMDFlXGIjlDSgNIBcdTAwMWG16Nmo2yuxXHRI4mlKXGbnXHUwMDEyQFDNamFcdTAwMGJbrY0mRoBSXHUwMDEyRlx1MDAxNU6EbDOsOPm+XpBcdTAwMWNcdNt0PZJBXHUwMDFjj+szXHTP9TlRceAq1saQq4dcdTAwMWFkoX9cdTAwMDZcdTAwMDZVXHUwMDE0JJOaaSlquOIoOWxcdTAwMGVcdTAwMTenwWHNUlV6+uhcblx1MDAxNFx1MDAxYkPmQqy0MIpcdTAwMThtXHUwMDE2hvjHr7rrq2+Wj9f2uqTc3szWNlx1MDAwM39jXHUwMDBlxFxyXHUwMDEw71xmX+NR4Fx1MDAwMjjnhCjJTYNe5UmpXHUwMDA1Z6CMJOPV104vNZ6hnFx1MDAxOY7zXHUwMDExZeg0vUx7Qlx0RZBRXFxcdTAwMTgpQTfpXHUwMDE1XHUwMDFjgKEhij9ccr02jqOsmMmuXHUwMDE2MI9dzXEtJfDF0e2+j168XHUwMDEw2TqYcqhXzP7zb/rv315cdTAwMDVdemvoXG7taW64UVpqQyVcdTAwMTI8yS6VXHUwMDFlXHUwMDAzMMo4KnBTa0r2u9h92PFcdTAwMDVcdTAwMTNsmltcblx1MDAxZSeMXHQj0Vx1MDAwYjCuNZ9cdTAwMDaXMk+gXHUwMDA3MLjlXHUwMDEyXHUwMDE0iXHVXHUwMDA01/UlnCui/lxu5Jqxx2ySXHUwMDBiwJkyv4Pc7bWXXHUwMDFi5bF+2SGr79ZcdTAwMGZiXHUwMDE28/f7nftNrlx1MDAxNp7SXHUwMDA0d13BiFZKq1x1MDAwNrjCI1x1MDAxNCFcdTAwMTGMaSXImJlfXHLcXHUwMDAzQsRNgUu5llxcMKn+XHUwMDEyWy7qalx1MDAxZbhC4V4jcVFcdTAwMTdcdTAwMDZ36+nhXHUwMDBifTLs7m1nvb2NV1svI1x1MDAwMUf3XHUwMDFiXFyK0GhcZlx1MDAwM1x1MDAxNG5Uwlx1MDAwMLrpXHUwMDA2udzjUtAq1EVi9GdcdTAwMDW7XHUwMDBmKTvQWt5cdTAwMTi5Qlx1MDAxYuCamj9cdTAwMGa5pT0pZ2HL5NxIgUpCccVAwcLc/rD79sSHr0Gvvn6z+3SfLNFnavN+R7lMSc9grFx1MDAwZkJcdTAwMDKT+LyNUIFg7Ek0brycUMVByrncUut+rlx1MDAxZeYqgVx0mDGYK1x1MDAwMmFcbvhcZnSZmEJVXHUwMDAyZcDUWFxi81x1MDAwN0C1lipNyp3ova3inInSdb9cdTAwMWbFw4llrVx1MDAxOK5YzvtR4sftiZrlOOo6otux7UyiXkaBXHUwMDFmj6rLNKtrXHUwMDAznMmPXHUwMDEym09rJs2jrpvl67mz4nPajdGu4o0tzoFfWFfryvWV7Fx1MDAxMoRolo7sXHUwMDEyWUVcdTAwMWUx3VnYLjl59tan20d+9JzRaOdN9mpJsfttl5J66Cw4hlx1MDAwZlxcYOJcdTAwMDeT7lx1MDAwNFxcSmhcdTAwMDTarZIuir85q2SUeFx1MDAwNsZimNpcdTAwMThrXHUwMDAz/WSMXG4loZzDXHUwMDFk+1xyReg4pNdojLUr+GSM/2hlw7KXJq0occR72fB2zfKi+ZtcdTAwMDY60z7N1eyTz81ThDuA0Fx1MDAxNOo1uMw8i63lYfx8XHUwMDA11nskXGJ3XHUwMDBls414S2T32zxcdTAwMDXxJCa9mF9cdTAwMGJcdTAwMDBkrlx1MDAxZaXChFx1MDAxYlx1MDAwZkP/KrdmnEvdkKs2T9YxlvPPOVx1MDAxYlx1MDAxMk6QWVFeLfDIPCWG4VxmQ9C7Nk82juiNmufHXHUwMDBmv3389ee7/P3wn++Sj7/+0or6WZqXrbJcdTAwMTdcdTAwMTWtXHUwMDBiL2x81qOT5i1n1y1cdTAwMDSga7+g5Msnl/RwV5ZHSflF8uVcdTAwMDJzfPjfXevmv7e7Wf5Nw1x1MDAxZoWGhVxcXHUwMDE3XHUwMDE1XHUwMDE3+q5cdTAwMGJfb1x1MDAwMJ3rwDDrk1x1MDAxMjd1tXiA2Vx1MDAwYsPO9ru9XHUwMDFmXHUwMDA3sYSlwVx0W9/v7r+731x1MDAxZYxhXGJcdIxi2qdcdTAwMThRXHUwMDA006hcdFx1MDAxN8ZcdTAwMTnxmCGcXGKXi4HiXHLBalx1MDAxN2axL9BLTto6gVx0zIzzXG7mXHRcIlx1MDAwNSHoJSknMz1cdTAwMTlcdTAwMDNPa1xmdkFSYJrOyFx1MDAwMYlcdTAwMDDsj20+3699gqjGXGLOS07nu7tRn7r3iIxju9594dM1sqo3l5dcdTAwMDa7+1n323ykiFx0Xv08T4/bo5rT80/343Ugp3PfaVx1MDAwM/IhheKLXHUwMDA3fGHk2+Dbbnm4WiztvVx1MDAxYa7oZ6+D19dqLmFauumvM+IznsRcXEtzQrTShky+zMbVQGvSXFxcdTAwMTJpwL1qvsfmXCJcdTAwMTU+giHmXHUwMDFhjkyuZC63XHUwMDA29JlBzYDZSD5cdTAwMGZmyo3WinJYfPO/2MTvYPNXl1x1MDAxZS5cYkxP8Fx1MDAxMSWbtfWDwuyFUFx1MDAwNVx1MDAwMIg7tvqcw4X5LFx1MDAwYuqhsinRWktFZ1x1MDAxZVVjloXJXHUwMDAyo0BcYroppae+k0E1+ih5Uyyz22V5TM1+Xq5ESVx1MDAxOCXdZlx1MDAxN5uEdc2YyOffWdpcXCBcdTAwMWOpsqZg4OQnuFx1MDAwNFxmd1x01LJcdTAwMTRcdTAwMTRcdTAwMTVdXHUwMDFmqjlV+pnTgoerQ1D51X5CzbSFx35Rrqb9fuT23FcpRpxNqasnWnbm2LP+1CrgM43XNe02cyNOOtr6U6tGu7pcdTAwMTl9/v7RzNZKeSCldF9cdTAwMDKQXHUwMDA0o5/xzlxcee49s+S0qmLissHmM+yuKXrr4Vx1MDAxZYz/d46+mqDtZ9lOiVx1MDAxNI2WXHUwMDE2aY7C86S3Vln7KLLHKzNtzV0uhKhcdTAwMTbHbT22Qvv0wen/XHUwMDAxc82RiyJ9 + + + + + terminal$ python inline.py╭──────────────────────────────────────────╮│ import this ││ for n in range(10): ││ print(n) │╰──────────────────────────────────────────╯ diff --git a/docs/blog/posts/inline-mode.md b/docs/blog/posts/inline-mode.md new file mode 100644 index 0000000000..bfb065efee --- /dev/null +++ b/docs/blog/posts/inline-mode.md @@ -0,0 +1,134 @@ +--- +draft: true +date: 2024-04-20 +categories: + - DevLog +authors: + - willmcgugan +--- + +Textual recently added the ability to run *inline* terminal apps. +You can see this in action if you run the [calculator example](https://github.com/Textualize/textual/blob/main/examples/calculator.py): + +![Inline Calculator](../images/calcinline.png) + +The application appears directly under the prompt, rather than occupying the full height of the screen—which is more typical of TUI applications. +You can interact with the calculator using keys *or* the mouse. +When you press ++ctrl+c++ the calculator disappears and returns you to the prompt. + +Here's another app that create an inline code editor: + + +=== "Video" + +
+ +
+ + +=== "inline.py" + + ```python + from textual.app import App, ComposeResult + from textual.widgets import TextArea + + + class InlineApp(App): + CSS = """ + TextArea { + height: auto; + max-height: 50vh; + } + """ + + def compose(self) -> ComposeResult: + yield TextArea(language="python") + + + if __name__ == "__main__": + InlineApp().run(inline=True) + + ``` + + +This post will cover some of what goes on under the hood to make inline apps work. + + + +## Recap + +Firstly, let's recap how you program the terminal. +Broadly speaking, the terminal is a device for displaying text. +You write (or print) text to the terminal, which it displays at the end of any existing text. +In addition to text you can also send [escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code), which are short sequences of characters that instruct the terminal to do things such as change the text color, scroll, or other more exotic things. +We only need a few of these escape codes to implement inline apps. + +!!! note + + I will gloss over the exact characters used for these escape codes. + It's enough to know that they exist for now. + If you implement any of this yourself, refer to the [wikipedia article](https://en.wikipedia.org/wiki/ANSI_escape_code). + +## Rendering frames + +The first step is to display the app, which is simply text (possibly with escape sequences to change color and style). +The lines are terminated with a newline character (`"\n"`), *except* for the very last line (otherwise we get a blank line a the end which we don't need). +Rather than a final newline, we write an escape code that moves the cursor back to it's prior position. + +!!! tip + + The cursor is where text will be written. + It's the same cursor you see as you type. + Normally it will be at the end of the text in the terminal, but it can be moved around terminal with escape codes. + It can be made invisible (as in Textual apps), but the terminal will keep track of the cursor, even if it can not be seen. + +Because the cursor has been moved back to its original position, when we write the subsequent frame it overwrites the previous frame. +Here's a diagram that shows what happens. +I've drawn the cursor in red, although it isn't typically visible. + + +
+--8<-- "docs/blog/images/inline1.excalidraw.svg" +
+ + +There is an additional consideration that comes in to play when the output has less lines than the previous frame. +If we were to write a shorter frame, it wouldn't fully overwrite the previous frame. +We would be left with a few lines of a previous frame that wouldn't update. + +The solution to this problem is to write an escape code that clears lines from the cursor downwards before we write a smaller frame. + +## Cursor input + +The cursor tells the terminal where any text will be written by the app, but it also assumes this will be where the user enters text. +If you enter CJK (Chinese Japanese Korean) text in to the terminal, you will typically see a floating control that points where new text will be written. If you are on a Mac, the emoji entry dialog (++ctrl+cmd+space++) will also point at the current cursor position. To make this work in a sane way, we need to move the terminal's cursor to where any new text will appear. + +
+--8<-- "docs/blog/images/inline2.excalidraw.svg" +
+ +This only really impacts text entry (such as the [Input](https://textual.textualize.io/widget_gallery/#input) and [TextArea](https://textual.textualize.io/widget_gallery/#textarea) widgets). + +## Mouse control + +Inline apps in Textual also support mouse input. +This works in almost the same way as fullscreen apps. +You write an escape code to enable mouse input then read mouse coordinates from standard input. + +The only real challenge with using the mouse in inline apps is that the mouse coordinates are relative to the top left of the terminal window (*not* the top left of our frame). +To work around this difference, we need to detect where the cursor is relative to the terminal. + +The only way I have discovered to do this, is to query the cursor position from the terminal, which we can do by sending an escape sequence then reading the cursor position from standard input. Once we have this information we can work out the mouse position relative to our frame, so that the app knows where you are clicking. + +## tl;dr + +[Escapes codes](https://en.wikipedia.org/wiki/ANSI_escape_code). + +## Found this interesting? + +If you are interested in Textual, join our [Discord server](https://discord.gg/Enf6Z3qhVr). + +Or follow me for more terminal shenanigans. + +- [@willmcgugan](https://twitter.com/willmcgugan) +- [mastodon.social/@willmcgugan](https://mastodon.social/@willmcgugan) diff --git a/src/textual/app.py b/src/textual/app.py index d0d6d8a057..6a16f41fff 100644 --- a/src/textual/app.py +++ b/src/textual/app.py @@ -2840,20 +2840,23 @@ def _display(self, screen: Screen, renderable: RenderableType | None) -> None: try: try: if isinstance(renderable, CompositorUpdate): + cursor_position = self.screen.size.clamp_offset( + self.cursor_position + ) if self._driver.is_inline: terminal_sequence = Control.move( *(-self._previous_cursor_position) ).segment.text terminal_sequence += renderable.render_segments(console) terminal_sequence += Control.move( - *self.cursor_position + *cursor_position ).segment.text else: terminal_sequence = renderable.render_segments(console) terminal_sequence += Control.move_to( - *self.cursor_position + *cursor_position ).segment.text - self._previous_cursor_position = self.cursor_position + self._previous_cursor_position = cursor_position else: segments = console.render(renderable) terminal_sequence = console._render_buffer(segments) diff --git a/src/textual/geometry.py b/src/textual/geometry.py index 2a7879a983..c8b7ab99da 100644 --- a/src/textual/geometry.py +++ b/src/textual/geometry.py @@ -151,6 +151,19 @@ def get_distance_to(self, other: Offset) -> float: distance: float = ((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) ** 0.5 return distance + def clamp(self, width: int, height: int) -> Offset: + """Clamp the offset to fit within a rectangle of width x height. + + Args: + width: Width to clamp. + height: Height to clamp. + + Returns: + A new offset. + """ + x, y = self + return Offset(clamp(x, 0, width), clamp(y, 0, height)) + class Size(NamedTuple): """The dimensions (width and height) of a rectangular region. @@ -268,6 +281,17 @@ def __contains__(self, other: Any) -> bool: width, height = self return width > x >= 0 and height > y >= 0 + def clamp_offset(self, offset: Offset) -> Offset: + """Clamp an offset to fit within the width x heigh. + + Args: + offset: An offset. + + Returns: + A new offset that will fit inside the dimensions defined in the Size. + """ + return offset.clamp(self.width, self.height) + class Region(NamedTuple): """Defines a rectangular region. From 48a1fd0ce2ed23eb31a6a718b6eac83a61eb8102 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Sat, 20 Apr 2024 17:16:42 +0100 Subject: [PATCH 5/5] words --- docs/blog/posts/inline-mode.md | 36 +++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/blog/posts/inline-mode.md b/docs/blog/posts/inline-mode.md index bfb065efee..3e3f634991 100644 --- a/docs/blog/posts/inline-mode.md +++ b/docs/blog/posts/inline-mode.md @@ -7,6 +7,8 @@ authors: - willmcgugan --- +# Behind the Curtain of Inline Terminal Applications + Textual recently added the ability to run *inline* terminal apps. You can see this in action if you run the [calculator example](https://github.com/Textualize/textual/blob/main/examples/calculator.py): @@ -16,8 +18,7 @@ The application appears directly under the prompt, rather than occupying the ful You can interact with the calculator using keys *or* the mouse. When you press ++ctrl+c++ the calculator disappears and returns you to the prompt. -Here's another app that create an inline code editor: - +Here's another app that creates an inline code editor: === "Video" @@ -27,7 +28,6 @@ Here's another app that create an inline code editor: === "inline.py" - ```python from textual.app import App, ComposeResult from textual.widgets import TextArea @@ -50,17 +50,16 @@ Here's another app that create an inline code editor: ``` - -This post will cover some of what goes on under the hood to make inline apps work. - +This post will cover some of what goes on under the hood to make such inline apps work. -## Recap +## Programming the terminal Firstly, let's recap how you program the terminal. Broadly speaking, the terminal is a device for displaying text. -You write (or print) text to the terminal, which it displays at the end of any existing text. +You write (or print) text to the terminal which typically appears at the end of a continually expanding text buffer. In addition to text you can also send [escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code), which are short sequences of characters that instruct the terminal to do things such as change the text color, scroll, or other more exotic things. + We only need a few of these escape codes to implement inline apps. !!! note @@ -73,18 +72,19 @@ We only need a few of these escape codes to implement inline apps. The first step is to display the app, which is simply text (possibly with escape sequences to change color and style). The lines are terminated with a newline character (`"\n"`), *except* for the very last line (otherwise we get a blank line a the end which we don't need). -Rather than a final newline, we write an escape code that moves the cursor back to it's prior position. - -!!! tip +Rather than a final newline, we write an escape code that moves the *cursor* back to it's prior position. - The cursor is where text will be written. - It's the same cursor you see as you type. - Normally it will be at the end of the text in the terminal, but it can be moved around terminal with escape codes. - It can be made invisible (as in Textual apps), but the terminal will keep track of the cursor, even if it can not be seen. +The cursor is where text will be written. +It's the same cursor you see as you type. +Normally it will be at the end of the text in the terminal, but it can be moved around terminal with escape codes. +It can be made invisible (as in Textual apps), but the terminal will keep track of the cursor, even if it can not be seen. -Because the cursor has been moved back to its original position, when we write the subsequent frame it overwrites the previous frame. +Because we move the cursor back to its original starting position, when we write a subsequent frame it overwrites the previous frame. Here's a diagram that shows what happens. -I've drawn the cursor in red, although it isn't typically visible. + +!!! note + + I've drawn the cursor in red, although it isn't typically visible.
@@ -113,7 +113,7 @@ This only really impacts text entry (such as the [Input](https://textual.textual Inline apps in Textual also support mouse input. This works in almost the same way as fullscreen apps. -You write an escape code to enable mouse input then read mouse coordinates from standard input. +There is an escape code to enable mouse input which sends encoded mouse coordinates to the app via standard input (in much the same way as you would read keys). The only real challenge with using the mouse in inline apps is that the mouse coordinates are relative to the top left of the terminal window (*not* the top left of our frame). To work around this difference, we need to detect where the cursor is relative to the terminal.