* Remove redundant import
* Generate a MouseUp event when dragging stops
* Update CHANGELOG.md
* Ensure button is propagated through to artificial MouseUp event
* Add the basic ContentSwitcher widget
* Docstring tidy
* Add a visible_content property to the ContentSwitcher
* Clarify that children of ContentSwitcher with no IDs get ignored
* Simplify setting the display value
* Add the start of an example ContentSwitcher for the docs
* Tweak the example layout to better fit in small spaces
* Add the content switcher to the API docs
* Add a guide entry for the ContentSwitcher
This one is a wee bit more involved than most other widget entries in the
guide in that it doesn't obviously do anything itself, but needs
developer-input to make it do something useful. As such the outline here
isn't as clean as it could be, but I think it conveys everything necessary
without getting too complicated.
* Add the reactive attribute table to the ContentSwitcher guide
* Update the README
* Add a refresh after everything has been flipped in the switcher
As noted in the code, this should not be necessary and I don't believe it
has anything to do with this code. I would suspect some lower-level issue
with flipping between different widgets within a container. I need to find a
way to make an isolated reproduction that isn't about this particular
widget. Meanwhile though this works with the refresh().
* Swap current from var to reactive
This solves the explicit refresh issue, but only because the refresh is
implied due to the use of a reactive over a var. As such this sort of
addresses #1979 by ignoring the issue rather than diving into it.
I still suspect that I shouldn't need to do this, and that perhaps there's a
refresh issue when you flip display. So I'll keep #1979 kicking around and
at some point see if I can recreate in isolation.
* Add unit tests for the content switcher
* Add snapshot tests for the ContentSwitcher
* Clarify that an exception can be thrown on a bad ID
* Try and help other Pythons
* Add a pause at the end of the second switcher snapshot test
I'm getting a lot of fails in CI; none of them are actual problems.
Hopefully this will cure it.
* Paaaaaaaaause
More of a test than anything else really. My particular snapshot test is
failing but kinda randomly in each environment each time -- sometimes
Windows, sometimes GNU/Linux, different Python versions.
So... yeah, let's try this and see if it makes it through; otherwise I may
need to rethink this.
* New pause
So it turns out that _ doesn't do anything any more; and instead there's a
"wait:<n>" syntax! So let's give that a try.
* Learning my alphabet...
* Fix a typo in the docs.
Co-authored-by: Rodrigo Girão Serrão <5621605+rodrigogiraoserrao@users.noreply.github.com>
* Add missing full stop.
Co-authored-by: Rodrigo Girão Serrão <5621605+rodrigogiraoserrao@users.noreply.github.com>
* Add a missing word
Co-authored-by: Rodrigo Girão Serrão <5621605+rodrigogiraoserrao@users.noreply.github.com>
* Try a longer wait on the switcher
I'm starting to suspect that this doesn't come down to a timing issue;
especially given that the snapshot report seems to be showing some oddity in
the length of the vertical scrollbar. But... I want to be as sure as
possible so let's double the length of the wait.
Bit a bit of me is starting to wonder if I've somehow managed to create the
perfect storm for scrollbars and you don't always get the same result every
time.
Seems unlikely, but if it's not timing it's that or lots of cosmic rays.
* Test a longer pause on the content switcher test
The idea here being that it takes 200ms for the button to pop again.
* Refresh the snapshots
This time. THIS TIME!
* Experiment: is the issue the same name for two tests?
* Experiment: drop the different source files, try terminal size
Having got over the issue of the button not ending up in the same state,
we're stuck with the scrollbar having different sizes. Having tried other
options let's go with tweaking the terminal size.
* Do a little less work when changing current
Rather than set everything invisible then the new one visible, every time
current is changed, instead just make sure everything is invisible up front
and then just swap the affected children each time.
This does mean that if someone messes with the children under the hood they
may see oddness happening, but less work while being less defensive seems
fair here.
---------
Co-authored-by: Rodrigo Girão Serrão <5621605+rodrigogiraoserrao@users.noreply.github.com>
* Swap out the primary Markdown bullet for one that works everywhere
The primary bullet wasn't displaying well on Windows in the Windows
terminal.
* Refresh the snapshot tests
Imagine that, changing how something looks needs that the snapshot tests get
updated. *facepalm*
I got a bit carried away with what to watch, and it looks like the mkdocs
watch plugin doesn't much care for watching for files that don't exist but
may.
When I made the changes to documentation generation I split up the then
single mkdocs configuration file. It looks like the reloader for mkdocs
always watches its configuration file, bit *only* the one that was loaded in
the first place, not any that are inherited from.
So this change adds all of the mkdocs yml files to the watch list to ensure
that any change causes the documentation server to reload.
Most useful if you're adding new files to the navigation.
* Delete redundant test file
* Sketch out pilot API improvements - signatures/docstrings
* Pilot click and hover
* Updating test to use new pilot hover method for DataTable
* hover and click methods for Pilot
* Update changelog
* Add docstring
* Allow setting an additional alpha on a border
See #1863.
* Update the ChangeLog
* Add snapshot tests for the border alpha value
* Extend the border snapshot tests
While this doesn't test *every* permutation, it covers enough bases that if
something were to change it should catch it.
* Tweak a typo in the border style examples
* Add border transparency percentage to the border docs
* Add a CSS example for using border transparency
* Add Color.multiply_alpha
* Update the CHANGELOG
* Multiply the alpha on a colour rather than replace it
As requested in
https://github.com/Textualize/textual/pull/1954#pullrequestreview-1328170386
(actually required while talking in person with Will, but noted in the
above)
* Multiply the alpha on a border colour rather than replace it
As requested in
https://github.com/Textualize/textual/pull/1954#pullrequestreview-1328170386
(actually requested while talking in person with Will, but noted in the
above)
To the best of my knowledge, and in testing myself, border and border_* are
properties of a widget's `styles` property, they're not a property of the
widget itself.
See #1934. Simply put: the character that we were using doesn't render well
at all in Windows Terminal on Windows 10 or 11. This one isn't ideal as it
sits a little low, at least in some environments. I want to try this one on
for a wee bit and see how we feel about it.
Honestly, I'm not 100% happy with it; but right now it's the least-worst
option I've tried.
See #1934. Simply put: the character that we were doesn't render well at all
in Windows Terminal on Windows 10; while there are other options available,
few seem to work well there either. So here we go for a bold X; this should
render fine everywhere.