Skip to content

Releases: bczsalba/pytermgui

v7.7.4: Rapid input

31 Mar 13:55
Compare
Choose a tag to compare

Bugfix update to allow for faster/instant input that tends to come from external scanners.

Bugfixes

v7.7.3: Maybe Windows input will work now

29 Dec 22:09
Compare
Choose a tag to compare

This version primarily updates the Windows getch mapping, so things like arrow keys should work more consistently across machines. s/o @Moeefa!

Fixes

  • Update windows platform specific key codes (@Moeefa, #153)

v7.7.2: The smallest update

31 Aug 21:48
Compare
Choose a tag to compare

This is mostly to bump documentation versions, as there are a few important clarifications in there.


Additions

  • Stop allowing selection of closed Collapsible's items (337e780)
  • Clarify some documentation

🚀

v7.7.1: Minor fixes pt.2

24 Feb 13:32
Compare
Choose a tag to compare

Really small update this time, mostly dealing with long-standing issues. Haven't had the time to work on any programming for a minute (a multiple-month spanning minute, at that), so apologies for it taking so long.

Additions

  • Add support for wide characters

Bugfixes

  • Fix inline widget referring to hover mouse mode

🚀

v7.7.0: Minor fixes

06 Sep 08:43
Compare
Choose a tag to compare

Changelog

Additions

  • Add support for Button submit on carriage return (#127, 0cdcc91)

Bugfixes

  • Fix sluggish and unreliable text input caused by getch_timeout (74f72df)

🚀

v7.6.0: Fix 'er up!

25 Jul 20:23
Compare
Choose a tag to compare

Minor release to allow building our documentation.

Changelog

Bugfixes

  • (temporarily) Fix hyperlinks breaking SVG exports

Removals

  • Remove (undocumented) shortening behaviour from Button (#124)

    Normally this would be considered an API breaking change, but since it was never documented (and didn't even work properly in most scenarios) it's only a minor-level change.

v7.5.0: Windows mouse support!

25 Jul 20:18
Compare
Choose a tag to compare

The standout feature from this update is finally getting windows mouse support working, courtesy of @Tired-Fox!

Changelog

Additions

  • Add support for Windows' mouse events (@Tired-Fox, #122)
  • Add support for feeding input into getch

Refactor

  • Allow immediately halting WindowManager programatically by not blocking on getch calls

Bugfixes

  • Fix mouse event handlers not getting cleaned up properly

v7.4.0: Long overdue!

17 May 13:28
Compare
Choose a tag to compare

Lots and lots of things have happened since my previous time writing a release like this. It will all make sense soon (you can check my PyPi for a sneak peak!), but for the time being there's some changes to document.

Changelog

Additions

  • Add meta tokens for saving & restoring styles (bcf0a2e)

    This adds the new meta tokens #stash, #pop and their clearing-variants #stash/ and #/pop, which allow you to save a snapshot of the currently applied styles and restore it at a later point within the same markup.

    It can be super useful for when you want to insert special styles for a single word.

    [bold 141]This is an example with a [#stash/ @black grey]code-snippet [#/pop] in the middle.

  • Add support for alt/ctrl+backspace to remove whole words (@i404788, #109)

  • Add support for word move actions (Ctrl/Alt+/) & Home/End move (@i404788, #109)

Bugfixes

  • Fix multiline Label widget to incorrectly display message with hyperlink (@leonard-IMBERT, #108)
  • Fix input errors when alert is open (@qoft, #115)

Miscellaneous

v7.3.0: Document this!

17 Nov 14:07
Compare
Choose a tag to compare

The primary focus for this release is the new documentation, but there is a lot of minor changes that slipped through in the meantime. The new documentation is great; it has much more in-depth content on most parts of the library, it looks amazing and it's a lot less of a hassle to maintain! It also has build-time screenshot generation using this very module, so all the SVGs will always remain up to date.

Changelog

Additions

  • Add support for SHIFT+ scroll events (74722db)
  • Add shade number indicators to Palette.print (06f2ec7)
  • Add inline widget runner (ba19d36)

Bugfixes

  • Fix incorrect macro caching behaviour (321f1f9)
  • Fix various issues and misbehaviours with SVG exports
  • Fix incorrect placement of InputField cursor (7281c57)

Refactors

  • New MkDocs based documentation

    While the previous documentation was alright, it missed a lot of things. MkDocs makes it a bit easier to create step-by-step style documentation pages, which was exactly what we needed. We also made use of Termage to make it a lot more dynamic.

  • Change terminal.py -> term.py and serializer.py -> serialization.py to avoid naming conflicts (e38603e)

  • Improve pseudo token behaviour by parsing it as a new token type (f19b897)

  • Start generating semantic colors (success, warning, error) by blending with the primary (2daee90)

Removals

  • Remove is_bindable widget attribute (866cd09)

    This was only used as an arbitrary limitation, one that was not needed in the library.

Showcase

Screenshot 2022-11-17 at 15 05 44
Screenshot 2022-11-17 at 15 05 53
Screenshot 2022-11-17 at 15 06 00
Screenshot 2022-11-17 at 15 06 07

v7.2.0: Palettes and #auto!

05 Aug 22:06
Compare
Choose a tag to compare

This version brings the long-awaited (at least by myself) color palette system!

Before that, the new #auto TIM pseudo-tag deserves a mention. It makes the parser look at the currently applied background color, and it is replaced with a color that properly contrasts it while parsing! This way, [alias #auto]Text, will always be legible, regardless of the meaning of alias. It is also automatically used by all widget styles (whenever there is no foreground specified), so you can just define a style as @surface+1, and PTG will make sure it looks nice and readable!

Anyways, the palette. Here is the gist of it:

  • The new module palettes provides a Palette class
  • This class can generate mashing colors from just one primary color input, with multiple possible strategies
  • The whole module now has a default palette that can be accessed using ptg.palette and in markup

TIM gains the following sets of new aliases:

  • primary
  • secondary
  • tertiary
  • accent
  • surface
  • surface2
  • surface3
  • surface4
  • success
  • warning
  • error

Each color has 7 shades, and each shade a foreground and background variant. The base color (i.e. with no shade modifications) use the name as written above, and every other alias is defined as {name}{+/-}{shade_amount}, like primary-3 for the darkest shade of primary, and surface+2for the second-brightest surface shade. Each alias comes complete with a background variant bound to@{alias}`, such as @secondary+2.

It's easier to show than tell, so here is the new default palette, as exported by ptg --palette --export-svg <filename>:
palette

Changelog

Additions

  • Add various color manipulation utilities
  • Add #auto TIM pseudo-tag that always gives properly contrasted foreground text
  • Add palettes module for framework-wide color generation & configuration
  • Add Synchronized Output support
  • Add FancyReprWidget
  • Add ptg --palette flag

Bugfixes

  • Fix markup aliases getting literalized during parsing.eval_alias & MarkupLanguage.alias
  • Fix background colors creating vertical seams in SVG exports
  • Fix colors getting localized pre-maturely

Refactors

  • Make all the ptg program & all builting widgets use the global palette
  • Prefix all ANSI colors with ansi-

Showcase

Here is my home-grown project launcher, lens, using the new default color palette (and an upcoming new button widget, but that's for the next release notes):

Screenshot 2022-08-05 at 23 53 46

...and now, using it's custom-defined palette, using the primary color #58A46F:

Screenshot 2022-08-05 at 23 54 32

Here is ptg in the new default color palette:

Screenshot 2022-08-05 at 23 55 29

...and now with a bunch of randomly generated ones:

Screenshot 2022-08-05 at 23 55 35

Screenshot 2022-08-05 at 23 55 42

Screenshot 2022-08-05 at 23 55 46

Screenshot 2022-08-05 at 23 55 55