From 39c6dee84f9480d0aecf7183a2617235bb421d76 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Sat, 10 Sep 2022 16:12:35 +0100 Subject: [PATCH] styles docs --- docs/guide/styles.md | 22 +++++++++++++++++++--- docs/images/styles/box.excalidraw.svg | 6 +++--- docs/index.md | 6 +++++- src/textual/_doc.py | 7 ++++++- 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/docs/guide/styles.md b/docs/guide/styles.md index b54ad51a8..4b5ad968a 100644 --- a/docs/guide/styles.md +++ b/docs/guide/styles.md @@ -1,5 +1,24 @@ # Styles +Textual provides a large number of *styles* you can use to customize how your app looks and feels. In this chapter will will look at how you can edit styles in your applications. + + +## Styles object + +Every widget class in Textual provides a `styles` object which contains a number of writable attributes. Styles define the position and size of a widget, in addition to color, text style, borders, alignment and much more. + + + +## Box Model + + +
+--8<-- "docs/images/styles/box.excalidraw.svg" +
+ + + + TODO: Styles docs - What are styles @@ -10,6 +29,3 @@ TODO: Styles docs - Borders / Outline -
---8<-- "docs/images/styles/box.excalidraw.svg" -
diff --git a/docs/images/styles/box.excalidraw.svg b/docs/images/styles/box.excalidraw.svg index 68e58174f..470c9204b 100644 --- a/docs/images/styles/box.excalidraw.svg +++ b/docs/images/styles/box.excalidraw.svg @@ -1,6 +1,6 @@ - + - eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1bbU/bylx1MDAxMv7eX4E4X4u7u7Ovla6ugMJcdTAwMDVcbilvhbZXR5WJXHUwMDFkYkji1HaAtOp/v7NcdTAwMGXEdlx1MDAxMpskXHUwMDA0XHUwMDFhjq6llsRre8e788w8z+zm15uVldWk3/VX36+s+nd1t1x1MDAxNXiRe7v61p6/8aM4XGI72MTS73HYi+rplc0k6cbv371ru9G1n3Rbbt13boK457bipOdcdTAwMDWhU1x1MDAwZtvvgsRvx/+2/9fctv+vbtj2ksjJOlnzvSBcdKNBX37Lb/udJMan/1x1MDAxN7+vrPxK/89ZXHUwMDE3+fXE7Vxctvz0hrQpM5BcdTAwMTI1erZcdTAwMTZ2UmOZXHUwMDEyhFx1MDAwMGV8eEFcdTAwMTB/wO5cdTAwMTLfw9ZcdTAwMDaa7Gct9tRq/+zO1Vu19f32pzA6i086YaPuZb02glbrJOm3XHUwMDA2I+HWm70oZ1OcROG1f1x1MDAxZXhJ09o1cn54n1x1MDAxNybWgGFzXHUwMDE09i6bXHUwMDFkP45cdTAwMGI3hV23XHUwMDFlJP30XHUwMDA1yfDsYFx1MDAxNN6vZGfu8Fx1MDAxYqfUoYxcbsmBUcmlgWGzfVx1MDAwMCPa0VJcdTAwMTlcdTAwMDIgiJFU6lx1MDAxMdM2w1x1MDAxNk5cdTAwMDaa9lx1MDAxN0mPzLZcdTAwMGK3fn2JXHUwMDA2drzhNUnkduKuXHUwMDFi4ZRl193evzQ34HAjiVx1MDAwMSWGjU0/uGwm2FxuXHUwMDAyXHUwMDFjiYZInWuN/XQ2KKFAQenszWy/3V0v9Yu/R1x1MDAwN7PpRt37MVuN7ZeczdbcrZxTZTf3up47mHwqJeNCXHUwMDExIyRkg95cbjrX2NjptVrZubB+nflLevb32zn8lDFW5qeUXHUwMDBiqTTO39R+ur+z22qEtfpOo90/vlxmbvaP2HZcXOKncYigm9lLR+56zEnhUVx1MDAxZlXSXHUwMDExQlx0pVxyZ5JzVnRRbDU4XHUwMDA0wFxm01xcXHUwMDExUeqholx1MDAwMV6dV3roX7wu/YZcdTAwMTj3Tlx1MDAxMMrRQvCC/1xyvZNR4ihpXHUwMDA0XHUwMDA2jDHvZFxiXHUwMDFkSVx1MDAwNdeL9877hsydctNcXP+0/7X5Zeez1zem06vRrmp6wfBZXHUwMDA133OjKLxdXHUwMDFktvy+/1Tu+9JIxah6XHUwMDE539ey1PcxXHUwMDFjacLVXGZB+nr/6qpcdTAwMWRHP84j/y4yW1+2vvX4h6VcdTAwMGbSginrXlx1MDAwNjiXXHUwMDA0mOBcdTAwMDVcdTAwMDBcdTAwMDDj6JpcdTAwMThcdTAwMDBcdTAwMTW2XHUwMDE5Y8pDtC/xmieEaCaEwzRcdTAwMTBBJSZcZp6bmSFcdTAwMTIoYVx1MDAwZbZcYmG0MJRrkGN4IOg+XGKIXFzIelx1MDAxMUCs6Y2L/uXeoTigVz9cdTAwMGbXXHUwMDBmhdf1XHUwMDBlp1x1MDAwM8Tbyc99uDzx75Lig1x1MDAwNj1+/LZ+cPZjZ+fbxs636PuthuBuw/2DOCvYmadBOVx1MDAwMI1DjOBMXHUwMDAzJ1ND7CYgwLdNTfWOPtSvL8zR3mf5acFcdTAwMTCbMcNMgTBcdFx1MDAwZdH2XHUwMDAwQTmRxVx1MDAxNIPgcohiXHUwMDE4+3EwXHUwMDEwQubZSFCu4yy5TCA8QjJcdTAwMDWMPUNOqfJGLZFcdTAwMDXO4I3ZpIed5CT4mVx1MDAxMmtSOLvttoNWvzBvqZuipVx1MDAwN250XHUwMDE5dPJjXHUwMDE5+9hn6pa6cPV6K7i0jrza8lx1MDAxYkVcdTAwMGZPXHUwMDAy1Fxyw+YkzL15XHUwMDFke3fxcdGuN/pcdTAwMTZhXHUwMDE0YM9u67RoSSW4XHUwMDA2MWNcdTAwMDK6VI4zj6JLM8W1glx1MDAxYzd4XGZd3oHXYac/jj60vnxsXHUwMDFmt2Rf8k+X86GLzYEuMlx1MDAxZrqAYIbiXHUwMDAyXHUwMDE1XHUwMDA2IIJAXHUwMDE00MWFdkBJ/CMpNuvnk1x1MDAxOEjSXHUwMDE0aEWpRl9GraFgXHUwMDAy2pijOSohinxcdTAwMTM4YPhcdTAwMWJDXHUwMDFmNVxuU1x1MDAxY+Vz6I3U2DnRN2suyNnhRslG0PGCzuXoLX7HK2lpuXGyXHUwMDE5ttuBZTOHYdBJRq9In7tu/b7pu2Mgwifn20ZcdTAwMDHStU8sJu3s00rmQOmX4ee/306+unRi7TE+pdnz3uT/zoxtVJ6lqVx1MDAxM4jmiG85PTmtZijLjG3JQGtcdTAwMDPAZY7VXHKwLVx1MDAxY0DAcIOfkGfIXHUwMDExu1x1MDAxNoltMFxmKSmqco0xRFx1MDAxOTpcdNzCXHUwMDExmOKJXHUwMDA2jpGXoqhcdTAwMWJcdTAwMDW3Ylx1MDAxOKhcYskm7Vx1MDAxZlx1MDAwMu2MuD5cdTAwMTTNdqdcdTAwMTBEaZKu91LvcFxmalx1MDAwZjA4l1x1MDAwNIWGyFKwXHUwMDFkJLdrR9fhXGZcdTAwMTThjFx1MDAxMYZcdTAwMTeg8L2/4nf2XHUwMDFhryqolHqUPdbGnWnGsFLGx005YaBGa6FpXHUwMDA270erknHn48mRd7XlNnd39q9l5+gmbr6g4J0zqCBcdTAwMWRnxFx1MDAwMOWoPTRGj2JQ4cKRxJJxhYRUieej4yqLXHUwMDAz1XRcXFx1MDAxOVCGvDBcdTAwMWSfO2rMRcdcdTAwMGZdL40lS8DHXHUwMDFmTJlcdTAwMGJdnJaiy1xuPFxys4jdyVx1MDAxMn/p4Vx1MDAwNayqniS5g6iS1sOYyEFg4eUkPqmUXG6j8JJcdTAwMDYzXHTR8lx1MDAxZoQuXHUwMDE4Q9cmNqNVKzhU7mSImclcdTAwMTCr411+VFx1MDAwMbJ24Hn50mpcdTAwMTFnj1VER6FXsLNcdTAwMTJ/1VVdU45CYoMpXHUwMDAxOv2Sxsfjy+bOxXbN9JtXZ5e100h8ubstQWE9XG7jeK3pJvVmXHUwMDE5XHUwMDEyRz3++cpO6cqGNoJSYqShXHUwMDE0ikhEWuEgTFx1MDAxOTJcZqRcIpLScixOsbZRicX51zdQ5Vx1MDAxOFwiiHrhcu63XHUwMDBm392Nn+v11ueT//TbXHUwMDA3V+vHR1c8R1xcV2Yu51x1MDAwZZ57sHe3ZcLG3raITte+3rV+XHUwMDA2XHUwMDA36npB6yZcdTAwMGJeMyyXpUyWLlx1MDAxOFx1MDAxYbtSXHUwMDA2s6yZVI/0zOh6OWmqlHJQd1x1MDAwMqOCaJLL+2lNV1pcdTAwMTKJboupjnFaXnR6KrJcZncoKCFcZpph61x1MDAwMVx1MDAxM+CFdoItfaGKsKUlM5ZcdTAwMDKRmUhcdTAwMDCm9Fx1MDAxYzlwXHUwMDE5dGmZ+uyJ/llPbJLrgJyct2X76kadhZPVp9VgXHUwMDAyR8BaZajOSbF79YkhXG4o1Vx1MDAxOE1cciVcdTAwMTg55UOVJ1OfUyni6mRSsFx0QCqcXHUwMDE27FxuaVx1MDAxNFx1MDAxNWrcKOZoalx1MDAxN1x1MDAxNSRcdTAwMDeO4s2AXHUwMDE4M+o1SeK1UmdOW8f8OHvem/zfWSl7niiO7tPRQFx1MDAxNUg2PWWv9rllXHUwMDBlZ2BcdTAwMWOBbEBcdLBcdTAwMGK9vFhpwzDmXHUwMDE4XGb8QiBZQIX8pG1cdTAwMTDVa1RcdTAwMTOWfSfRXHUwMDAyxCFcdTAwMTNyjkraXHUwMDFmolx1MDAwNY+m75dW3Fx1MDAxYmHk5an9n1x1MDAxM9z3lsxcdTAwMDXeXG69LbjiqDD1XGZ6+3tjrb5zur/VPdnvX4ige3F08X1+8C5Mc8tHJTeRXHUwMDBlQ/dRhlwi6Vx1MDAwNyiSXHUwMDExKm3tlFx1MDAwMTWY5FxikzBiV/n+pPI9TFx1MDAwMOPQRZ0xXHJ2qV3eSlxyfVnwXlx1MDAxY9Pzg/bPsH/WIZuHJ5+3T2r7vYVxb8zCuWj07OBcdTAwMWROzFJcdTAwMDA4s2Y+SVGOYkWEVGKGmln1LC9xXHUwMDAyXHUwMDE2klhcZkvkcVx1MDAwMlx1MDAwNCEjXHUwMDE4NsJcdTAwMTFcdTAwMDSMSpfCXHUwMDE0XHUwMDAxNWLYTGXpXG5cdTAwMTAzXHUwMDA3u6ZMc1x1MDAwMlx1MDAwMrTQWT9DSFx1MDAxYmRcbooysKpHXHUwMDE4pXJjdI9wXHLGpFx1MDAwNfSXXHUwMDE0XHUwMDE0iEFcIuVzXG6K6vxQIO+EXHUwMDEyu7dcdMVcdTAwMDRTilx1MDAxM8F57rJcdTAwMDF711x1MDAwZdFUXG7OiKVURLJqRfFql8/XSl3KXHUwMDFlY860IFafy0VjxMBcdTAwMTBhzZm+SPH9lsSb58dcdTAwMDe9g2bbdGRtj3W3xGtcYiqKXHUwMDFix1Y7KVx1MDAwZTtcdTAwMTCSQ/OAXHUwMDE4XHUwMDEwh2qCKkfaaSFP2ttZXHUwMDExU8RUvEAjXGbQXHUwMDAz5qlCPIVcdTAwMTacX3D/cPe85l7v7GyefdZi7+Rqyp2bS8fpXHUwMDA3k7FcdTAwMDSMYGDIfGSgvHhv7HIs5IvBj1x1MDAwMbd6cpdcdTAwMTm4iiFcdTAwMWLghHIkXHUwMDAzjI2SXHUwMDAxJPTKboGmUjND2Khdi1wiXHUwMDAzXHUwMDE4N1x1MDAxY1x1MDAwMKY1/jOY02HCXHUwMDA2UqqpXS9cdTAwMDckacb+TFx1MDAwNnJR5IFcdTAwMGVg9Fx1MDAwMDnXT2iWub5YnVx1MDAxNXJ0YM1cdTAwMTZcdTAwMGZcdTAwMDUyO6aIIVSpXFxh655cZiiHXHUwMDE5jNCKa8ap4fCPJVx1MDAwM+UuZY9xZ5qRXHUwMDBllK9aUFXKXGJwWizMZqhcdTAwMTRUr+Ms7WY66qBcdTAwMGLi4NqfXGZJM7Jccp2Bg1FHa2W3y5qKXHUwMDEy39M30zGDzk5cdTAwMDVcdTAwMTJcdTAwMGZFqMkvTGY/ybO/12PEKJpSj1xcSeMhqlxisOVxwl94N52xhH5cdTAwMDFRZfbddDOsXHUwMDFkSIUqkigtXHLBkZY0d9Eg3nBH253GQqCwXHUwMDA0jsRwLN68pqhS4VH2WFx1MDAxYnOmRUVcdTAwMTUjS38/hpzablrV0+++P2zou5qutS42k6vT069f6ipufHxcckFFSUxcXEZiQGd0ZN2AocpcdTAwMDVqdzpqLXXFdp+nXHUwMDA3XHUwMDE11NqEo6wzoFx1MDAxMaFyQuHCmqrRSmLtlZTnXG52w6BCJKBcdTAwMTid57cvT1xuKlx1MDAxOH2zkfv/7vtcdTAwMDK2yybWXHUwMDFl41NaXHUwMDA27Tf3Pay63e5JguM/jLQ4xYF3r7Wy11xcvVx0/NuNXHR0uZFcdTAwMWVW3KThwuLSty/76/eb3/9cdTAwMDOnMe1cdTAwMTYifQ== + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1cXGtTXHUwMDFhy1x1MDAxNv2eX2F5voY+/X6k6tatSDTGV1R8JN66ZY0wyCgwZFx1MDAxOFQ8lf9+d4Nh3iOgXCLmpqtOjkxcdTAwMGZMT++99l6rX/+8W1lZXHKHPXf1w8qqe1d32l4jcG5X39vrN27Q9/wuVNHR574/XGLqoztbYdjrf/j7745cdTAwMTNcXLthr+3UXXTj9Vx1MDAwN067XHUwMDFmXHUwMDBlXHUwMDFhno/qfudvL3Q7/X/bf/ecjvuvnt9phFx1MDAwMYpcdTAwMWVScVx1MDAxYl7oXHUwMDA342e5bbfjdsM+/Pp/4PPKyj+jf2OtXHUwMDBi3HrodC/b7uhcdTAwMGKjqqiBhPL01T2/O2qsMVDJNIlu8Pqf4HGh24DaJjTZjWrspdXhyZ2j1/c+7nS++sFJv9b1m/VG9NSm127XwmF73Fx1MDAxM069NVxiYm3qh4F/7Z56jbBl25W6Pvlew1x1MDAwZm1cdTAwMDMm1YE/uGx13X4/8SW/59S9cGivYTy5Ou6FXHUwMDBmK9GVO/jEXHRBhFx1MDAxMiE5o0Ryadik2v5cdTAwMDDFXHUwMDFhaalcZmZMYCOJ1KmmVf02XHUwMDE4XHUwMDAzmvZcdTAwMTdcdTAwMWWVqG1cdTAwMTdO/fpcdTAwMTJcdTAwMWHYbUzuXHRcdTAwMDOn2+85XHUwMDAxmCy67/bhpblhiFx1MDAxYolcclNiUtlyvctWXGK1TDAkoSFSx2r77shcdTAwMWFcdTAwMDRcdTAwMTNGmNLRm9nn9r40Rn7x33Rntpyg99Bnq337IdZm29z1mFNFX1x1MDAxZfRcdTAwMWHO2PhESqopJUpcdTAwMGJcdTAwMWE9su11r6GyO2i3o2t+/Tryl9HVn+/n8FMhVZGfUjCZ5lx1MDAwMsup/XRn80u76e/VN5ud4eGld7NzQDf6XHUwMDA1ftr3XHUwMDAxdDN7aepbjzkpe9RHlUTCaMqo4FhcdMFk0keVQlhwJjSn3FBd7KKiyVx1MDAxYXVe6qJ/8bp0m1wi655MKKSF4Fx0XHUwMDA3nLgnJVx1MDAxOClpXHUwMDA0IzTjnlx1MDAxNLAjieD6+d3zoVwi8qeYnetfd763vm1cdTAwMWU3hsZ0XHUwMDA3e6SnWlxyb/JbXHTnc4LAv12d1Px8+Gs5nJ/FfDvl/ERgxYTBSk/t/dc7V1edfvDjNHDvXHUwMDAys/5t/WzAPy19lFx1MDAxNlRZ9zKMc4ktXGZcdTAwMTJcdTAwMDBglINrQlx1MDAwNFRQZ4wpXHUwMDA2gCvhnifEaCpcdTAwMDSimmFBJGRcZq5lXHUwMDE2XHRcdTAwMDRTXHUwMDA0NVx1MDAwMlx1MDAwMCtcZuE6XHUwMDA21l94wNJIXHUwMDAwhJCLXHUwMDAyxC8/XHUwMDBi3bswiYCxU2yffdw9+bG5eba2eVx1MDAxNpzfaubdrTkxPLzP/9nxl++HeuPzXHUwMDExZzvbd62q77X26+vXn5dcdTAwMTNnifePXHUwMDEzNVJcYjGpXHI2VGI6NcJuPMz4htlTg4NP9etcdTAwMGJzsHUsvz4zwmbMMI9cdTAwMDNcZjxcdTAwMTJxJbS2+NKAolx1MDAwNMBcdTAwMDThkGEogVrDoTN4IcCeSoIkzVwiKptRXGJcdTAwMTaSKkbpXHUwMDBipJTndMbI6H43rHn3I8KCXHUwMDEzVzecjtdcdTAwMWUm7DbyUmjprlx1MDAxM1xcet14X/ZdeOYo8OvE3Vx1MDAxZtvepfXj1bbbTDp46IFumFSHfuzN6/B0XHUwMDA3fi740ki/hVx1MDAxZnjwZKd9lGzJXFzYYjHzpbClQWFwTKeH1rDf3a5cdTAwMWQ0rtad1pfNnWvZPbjpt1x1MDAxNpi88JzYokhRzFx1MDAxOcgpXHUwMDA24Fx1MDAxMVx0bHHOXHUwMDExl5A1LHuyyFMvXHUwMDA2LsWnXHUwMDA0l1x1MDAwMlxyYvCC+ZqnWls39a3ql/Uu++j2vrdDcX70annkadDdd1x1MDAxYVxyr3u5XGbY/dWUucArdPriRHdZqlx1MDAwNVx1MDAxY0dOL7zyWcayo1cwWkY9JUdCXHRgg0ZSoYpcdTAwMTPjk5knz1Nd0WDFXHUwMDAzeCHWMIa1/I1cdTAwMTIjy6CrXG7V0KpcdTAwMTXoKidcdTAwMWZiJlx1MDAxZmJ1+JZcdTAwMWKUgKzjNVx1MDAxYXFcdTAwMTWWxNlj4ilccr1EO0vxVy5cdTAwMDBZYVx1MDAwNiXCUEOonEFcdTAwMDBuXHUwMDFmXrY2Lzb2zLB1dXK5d1x1MDAxNIhvd7dcdTAwMDUorFx1MDAwN36/X2k5Yb1VhMS0x79cdTAwMWNFXHUwMDFkjYJoI1xiwUZcdTAwMWFCWFx1MDAxMolUcaRcdTAwMTSkT4ypXHUwMDAxYmGKsTjFMEgpXHUwMDE251x1MDAxZlxu0Vx1MDAxY+RcdTAwMDSI9oUpv7HNzz6dO2v3XHUwMDFm6+3j2udhZ/fq4+HBXHUwMDE1ny61lkq/3a27deM3tzZEcFT5fte+93bV9XJKv/Hz87RcdTAwMWYjhUlOM6Elw2Z6dJX39Mzoolx1MDAwYkNcdTAwMTdwU2Q41pA+iFFcIlx1MDAxNlBGJFx1MDAxNWo5iC5cZjnQ6mFWiK2nclRDkKZGY05cdTAwMThTnOTgS0pcdTAwMDRcdTAwMTGPXHUwMDFisFx1MDAwYtxcYjowS2AlkVTKmJacXHUwMDFhZaOWLjpcdPZDJ1xi17zuiKd9iFx1MDAwMe3X/M44+1xmxPBkIKr42sO1047sXFzdqFx1MDAxMz+GNkib9cGI6EB00piAVFeCY2lcdTAwMTSL3XTp9EZ9XHUwMDA01mbQR8RcYq64ZPzhjlx04FfdbuPxNpVnk0SbwLk0ZtAsgJQx0cTSpE1cdTAwMTRporVcdTAwMDZKxTghwLhEpk1tp1x1MDAxZlb9TsezLG/f97phuotHffnRgr3lOlx1MDAxOXJcZu9cdTAwMTSvS0eFnv3FZDSN/lqJXHUwMDEwM/ow+fu/73PvLvJkWypcdTAwMTknjn7tXfz/s1x1MDAxMnapi7lcdTAwMDKmXHUwMDFjXHUwMDE0t2HTT+mVe9xCotl8pJ0qjYxRRChCOdWMpDS3xEgwpTjmXHUwMDEwrLSJiZjn5lxuJmdAKzskrLlcdTAwMDBcdTAwMWEnZGSaZedcdTAwMDUvkL9zRYFOXFwtkdxrftCIc/uYXHUwMDFjiPGwRSjuh5bMid8yxVxypFPxXHUwMDE58Lt93qzUN4921nu1neGF8HpcdTAwMTdcdTAwMDdcdTAwMTfn8+P32VS3fFx1MDAxNL+UIMVcZiVaXHUwMDAyiCFzREl+zPUxXCJYYyAqWmJcdTAwMWNDd1x1MDAxYb7p2cziXHUwMDE5T8ay4CVcImfELItewoFcdTAwMWZBRls0rb84JKe7nXt/eNLF1f3a8UZtb2fwVuE7McxSQDhqzXyqglx1MDAxMEHSlyeJXHUwMDE4XHUwMDE0XCJRyojpZUW5pZdaVlx1MDAwMNFcdTAwMDHZYIBcdTAwMDRRJkVq5Vx1MDAwMtRcdTAwMWFQXHUwMDEzoOepXHUwMDFkPXvS4poyXHUwMDFjM4GMUopIXGIojDCcIytcYkVcdTAwMDRkO+BcdTAwMThisJEk1kdcdTAwMGYo12A4I4X+zWRFeZKIUfhcbkZMXHUwMDE4XG6dpLhdjmKEit010Vx1MDAxNZxcdTAwMTKqQH6Bllx1MDAwNGVRLiuSr/GGyH2xR41q0770TOxexJZcbqXnqVx1MDAwNbZBZYbJtPNb3K+eXHUwMDFl7lx1MDAwZXZbXHUwMDFk05V7W7S3Lt5cdTAwMDS5N1x1MDAxMDUokHdccvFcdTAwMDRcXJGlh+RcdTAwMDVcdTAwMDJmYIzmklx1MDAxM51u10xD8iUxRUZjzKXEnlx1MDAwMVaUXvBcXNrpXHUwMDA1d/e/nO4515ub1ZNjLbZqV/tvlFx1MDAxOYyNsVx1MDAwNKRg3JD5+IAuRi5kXHUwMDE1XHKRZFx1MDAwNlpfbt1lZlx1MDAwM0ohwINU0k4xM2OStJ5phkCqXHUwMDEzzIEqKMr4k6bCS7BLMUFcdTAwMWNCuFx1MDAwMuUvgburvFUnyI6MUWJHx1x1MDAwNNUmPp/wQFxiJFx1MDAwNj1mXHUwMDA0mUO1LzMhKE9cZivxMT1cZp3HXGJcdTAwMDRkSIBcdTAwMTDqhInd9UBcYmxPayqVZXiGS8p+U0ZQ7FO2VLLuNCMnKJZcdTAwMWGseMyAUEyBglx1MDAwM6CmXHUwMDBlLuVzOjPN0i+OXHUwMDEyKE2QJVpcdTAwMTJcXExRnmJcdTAwMDSCglxi4YqBKDNcdTAwMDRcZvNyy9cwomBZTYRcdTAwMDJcdTAwMTaiITbQvFx1MDAwMVx1MDAwNGYhwe06XHUwMDFiIJCKZ1fgXGKmQC5h/kZcdTAwMDNLXHUwMDFhg884jVx1MDAwMFx1MDAxYURhXHUwMDAz+VJyyex6RVx1MDAxMSPeXHUwMDBmIUchMppigJRK7VxcscxEnLdcdTAwMTRXSlxcypZKxpueLa5cdTAwMTBROJfAmMRAavX0i3/2m/puT++1L6rh1dHR92911W9uv4WwYlx1MDAxNVx1MDAxY1acQEznSbpcdTAwMDJqXGZxLFx1MDAxOTdcdTAwMDRDh/BipfH0sFx1MDAwMmJcdTAwMTKCuOaGge/z2HaYKKpcdTAwMTCkNCRcdTAwMTZcZpbhknCZ5StcdTAwMDJcdTAwMWFcdTAwMGLpYJ5Vs8tcdTAwMWRW3ixpKDasLVmTzojtkU7KgTYtXHUwMDE5nGTwXHUwMDFjKeKLXCJcdTAwMWWD9trG+sktdoW621x1MDAxNFx1MDAxYltXzve6L4evu+D90Vx0XHUwMDA2QzVcdTAwMDKhXHUwMDAxOoNAguAyud59tJZIY805kHuIuqR4fvCp0Fx1MDAxNlx1MDAxOJH0tr5oTFx1MDAxMqVXXHUwMDE5RWORXG5jzsxcdTAwMWNb/v5/oZyoe1ZcdTAwMWPnWNGWif2eXHUwMDBit8akr0azg1x1MDAxMkhcdTAwMTH8Nz1u2daP21rdYDw4vTlpNVx1MDAxNDlY+8peXHUwMDE3t2JcdTAwMWHcasNAd8pcdTAwMWPccm1cdTAwMTBgglx1MDAxMvPiuOXabjlcdTAwMTOS5sBcdTAwMTYjZuct83DLXHUwMDAxt0LG12v+we0r4jZrRVsqkVx1MDAwMZ+LTDNcXKjRXHUwMDE1Z1x1MDAxNHx5hkWGn+6a0j37Uam2vPXj886nT8dcdTAwMTeH669cdTAwMGLcx7m04Vx1MDAwNlx1MDAxOUZcdJRcdTAwMWPkMrBcdTAwMDRcdTAwMDdgUGGV3YtcIlx1MDAxN6PCTfaSIWpHYllcdTAwMTa5XHUwMDE0WqVcYlx1MDAxNX+AuzzcOWVHWyoxXHUwMDEzPlx1MDAxYnZjk2pptlxmVFliOstcdTAwMWU20tgnt1x1MDAxN1x1MDAwN/WNz7WLy2r19nsgjneXXHUwMDFmvFx1MDAxYWFM7bh8XtolxIZRXCJcdTAwMTR+6bRL7UlcdTAwMDf5ZFlyXHUwMDA0MYbmpV077qqFVH/Y8rKAN2NHW2JcdTAwMTacXHUwMDExu4WbT3HhXHUwMDEwllx1MDAxZLfBksdcdTAwMTTUY8j1v1x1MDAxZO+cuMFV7+Twbrh+v7271urLpUcu5YgpJojiPCftSrWotCty5suzXHUwMDFiZIymwMe0+Y32r2VntDfH71x1MDAxZuvK19pcdTAwMWP60JJSbFx1MDAxNYpRWbyxm9nFqvG1XHUwMDE3j2Hr++nl8XV9d8eV92GvRszdZfhlc8m1KFdcdTAwMWF0gojGkJJHR1x1MDAxMcORtlKPLiArXHUwMDE2XHUwMDFmXHUwMDFjxVx1MDAwNVx1MDAwMkWcy2mJXHUwMDEwWmBN3+pGmd9NjWbNaEslZsFcdTAwMTnTYiF0WeG5b1x1MDAwNCtcdTAwMWJ+OZ1+amfQ6t5cdTAwMTLPIT82TslcdTAwMGXfMmdHXb9oR+myYFczjoTda5SrRokhkFx1MDAxNqlawDhcdTAwMTJF0Nn5wCVcYutU5WTlXHRcdTAwMTBaTrX67SaI3ypwk3aypVx1MDAxMrPfjLAtVqKi+Fx1MDAxYzxshLaLUafPua2t64uDXqVy2r/frFUrbKj2KkV7VZeGz8IrXCJdyGeJkohcdTAwMTlOXHUwMDE2wGdcdFV29jdv/Fx1MDAxN9SwJUA5+79cdTAwMTnnXFxrQv8k3GVcdTAwMTGilYxcdTAwMWTHVycmfDbs6uKcy1xmo5qxXHUwMDE5RpGkS25PXHUwMDBm1k6rg1x1MDAxZsfNflCrXHUwMDFlY5cuO3ZcdTAwMTUlyK7sNLmTN4BoqFUg/l9cdTAwMWW7mKE0J47N3pAkrn8lXUJcdTAwMDRcdTAwMTY4vpbuXHUwMDBmeF95XHUwMDE3RtaOo+89WHBG6Fx1MDAxNp5cdTAwMGVIi7Oulszu/Zt+7uZIN7fvz7YuXHUwMDBm3W/ra9uBc3peuynakrk0wJWcXCKLV8FNXtJcdTAwMWTtpl7MaolIYpedYKYx1kCF5tmp9XZGkcZuXHUwMDEw68rXXHUwMDFhRFx1MDAxYTdkvqxIVPHhtlx1MDAwNFx1MDAxYlCjhE0/Qlt+XHUwMDE06dIuMoQgXHUwMDA2OZFRwzSQ1+TaZS5cdTAwMTRcIsZQOdpcdTAwMGUtRPHJK1x1MDAxMFx1MDAwNlx1MDAxZP6keVGiqIJiiIFMrXHe2mUqQNRgRY09XHUwMDBiVEF7MqtcZo00XGbbQ4lcdTAwMTefJck82Hvy2uXyQ8FWYmuXQVx1MDAxMGJcdTAwMDKByVx1MDAxZVxuQlxylpHvr/xau8ztXHUwMDE5KNKe5y7sqdlCvO0zUEp8ypZK1p2ei25cdTAwMTNeODptoPOpXHUwMDEyM8z8lFx1MDAxZk25tHGFgrAx2M58XHUwMDFhISNwjE9AIYhozTFRWOr4XHUwMDAx4s9cdTAwMWZW7MYgSYElaCxEfFNDJJg1klx1MDAxNIO0Z3ZfsWYkc66hbSZwXGZF5zhiYVx1MDAxOcJKUfAoP9E2XHUwMDE5PDhcdTAwMDZhZM9cbtKQNVx1MDAxM/uLfu21XHUwMDEydrW6JFxcXHRh7JmUv+vu60qxU9mSdaeiqPLu4Vx1MDAxMatOr1dcdTAwMGLB9lx1MDAxM1OBe3mNXHUwMDA3Tlx1MDAxNr3n6o3n3q7l7DVsjoolQaO+tiHBtW/7z893P/9cdTAwMDc6dFx1MDAxMKIifQ== - MarginPaddingContent areaBorderBackgroundColor \ No newline at end of file + MarginPaddingContent areaBorderBackgroundColorHeightWidth \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index 02cf08e75..fece54a52 100644 --- a/docs/index.md +++ b/docs/index.md @@ -59,7 +59,11 @@ Textual is a framework for building applications that run within your terminal.
-```{.textual path="docs/examples/demo.py" columns=100 lines=48} +```{.textual path="examples/calculator.py" columns=100 lines=40} + +``` + +```{.textual path="examples/pride.py"} ``` diff --git a/src/textual/_doc.py b/src/textual/_doc.py index 6a73696a6..febe3e576 100644 --- a/src/textual/_doc.py +++ b/src/textual/_doc.py @@ -2,6 +2,7 @@ from __future__ import annotations import runpy import os +import shlex from typing import cast, TYPE_CHECKING if TYPE_CHECKING: @@ -13,7 +14,9 @@ def format_svg(source, language, css_class, options, md, attrs, **kwargs) -> str """A superfences formatter to insert a SVG screenshot.""" try: - path: str = attrs["path"] + cmd: list[str] = shlex.split(attrs["path"]) + path = cmd[0] + _press = attrs.get("press", None) press = [*_press.split(",")] if _press else ["_"] title = attrs.get("title") @@ -26,6 +29,8 @@ def format_svg(source, language, css_class, options, md, attrs, **kwargs) -> str cwd = os.getcwd() try: app_vars = runpy.run_path(path) + if "sys" in app_vars: + app_vars["sys"].argv = cmd app: App = cast("App", app_vars["app"]) app.run( quit_after=5,