Py Cui Versions Save

A python library for intuitively creating CUI/TUI interfaces with widgets, inspired by gocui.

v0.1.6

1 year ago

Minor release addressing some bugs introduced with v0.1.5.

Changes Made

  • Fix issue where adding a button to a widget set would return a NoneType
  • Fix IndexError when clicking below last element in ScrollMenu
  • Fix issue with install process/setup file

Breaking Changes

There should be no breaking outer facing changes in this release.

v0.1.5

1 year ago

This release focused primarily on bugfixes and code quality improvements. It also introduced support for much easier integration of custom widgets, along with default mouse event support for the slider widget.

Changes Made

  • Add support for lists of keys representing one key
  • Fix bug where crash could occur with empty menu widgets
  • Add support for adding custom widgets
  • PEP8 formatting
  • Slider mouse controls
  • Add option to set default text for textbox popups
  • Fix some issues with widget cycling
  • Minimize repo size by optimizing images

Issues Fixed

  • #143
  • #130
  • #121
  • #112
  • #174
  • #180

Breaking Changes

There should be no breaking outer facing changes in this release.

v0.1.4

2 years ago

This release focuses on improving debugging tools for py_cui developers, adds mouse press support, improves user definable callbacks for certain actions, and allows for "forgetting" widgets. It also drops support for python versions older than 3.6, improves some logging message levels, overhauls the widget ID system, and adds a large amount of various bug-fixes and other minor new features. Please see the more detailed breakdown and issue list below.

Changes Made

  • Live-Debug mode added. When enabled, a certain keybinding (default Ctrl-D) will open up an overlay widget with recent logger messages displayed. Log messages buffered up until a certain maximum. Standard logging levels are supported. Will make debugging UI issues and especially py_cui development much easier.
  • Support for variety of mouse functions - left/right/middle clicks, double clicks, triple clicks, presses and releases
  • Allow for user setting of mouse commands like key commands
  • Allow setting an on-selection-change event function for scroll menus
  • Python versions older than 3.6 dropped from support. I had wanted to keep around support for older versions due to the vintage of OS I used at work - but we have recently migrated everything to RHEL 8, giving me an excuse to drop older versions
  • Some changes to log message levels
  • Change to widget ID system - widgets now just get integers as IDs, this is cleaner
  • Add ability to "forget" a widget and remove it from an active UI

Issues Fixed

  • #106
  • #58
  • #109
  • #98
  • #115
  • #113
  • #100
  • #72
  • #126
  • #119
  • #114
  • #107

Breaking Changes

  • There should be no major outward facing breaking changes with this release

v0.1.3

3 years ago

This release adds filedialog popup support, a significant overhaul of the slider widget, overhaul of testing, scroll menu improvements, and minor bugfixes

Changes Made

  • New popup - Filedialog popup allows for seamlessly asking user to select a file, directory, or a save location.
  • Slider widget improved, adding options for alignment, as well as
  • Allow for border color to be set for in-focus and out of focus seperately
  • Test overhaul to use pytest fixtures. Modernized pytest structure
  • Version auto-detection during packaging process
  • Example improvements + bugfixes
  • IDE annotations added to examples
  • Cyrillic input support for textboxes
  • Avoid drawing bolded black on white - produces illegible results on many terminals
  • Raise exceptions when function required to be implemented is not.

Issues Fixed

  • #49
  • #68
  • #75
  • #57
  • #61
  • #86
  • #88
  • #90

Breaking Changes

The slider widget has had some changes to the outer facing API. No other breaking changes were made.

v0.1.2

3 years ago

Next iterative release of py_cui. This release fixes some minor issues with the old version, adds form and slider popups and widgets, expands color and key options, and makes performance improvements.

Features Added

  • Huge performance improvement. Only redraw changed areas of screen.
  • Functions to allow setting timeout for waiting for user input to refresh. Allows for editing values in second thread and seeing them update without having to interact with the UI
  • Many new Colors added (56 total combinations, up from 10)
  • Many new keys supported (Modifiers + letters, some special keys)
  • Support for setting widget cycling keys for navigating between widgets even when in focus mode. (Defaults to Ctrl + left/right arrow keys).
  • Support for a slider widget added.
  • Form entry popup added. Allows for asking for several fields of input
  • Greatly expanded coloration options. Can now individually set border color, text color, and selected text color

Issues Fixed

  • #54
  • #46
  • #50
  • #63
  • #60

Breaking Changes

No breaking changes were made to the outer-facing API in this PR. Internally, certain functions had arguments added, but externally these are treated as keyword arguments.

v0.1.1

3 years ago

Next iterative release of py_cui, meant to add some requested functionality and improvements, particularly for scroll and checkbox menu widgets. Also adds mouse click support

Features Added

  • Create CheckBoxMenuImplementation class
  • Allow menu items to receive objects as well as strings
  • Add additional default keys for faster menu navigation
  • Mouse click support
  • Fix bug with block label widget centering
  • Fix some minor encapsulation issues

Issues Fixed

  • #44
  • #45
  • #16
  • #51

Breaking Changes

The only (minor) breaking change in this release is the change in the scoping of the title bar variable in the root PyCUI class. Most applications should not be affected, unless referencing the variable directly, instead of through getters/setters.

v0.1.0

4 years ago

First alpha release of py_cui, adds many requested features, but has some minor breaking changes, that shouldn't affect many programs.

Features Added

  • Add logging support for debug purposes
  • Improve code reuse, restructure widget and popup classes
  • Add set of central base classes for UI elements and implementations
  • Move CI/CD to github actions
  • Fix bug with window resize with widget sets on win32
  • Improve error handling in main draw loop
  • Improved widget navigation
  • Fix KEY_BACKSPACE on MacOS
  • Add ability to run in simulated terminal to improve testing capabilities

Issues fixed

  • #40
  • #38
  • #36
  • #35
  • #27
  • #21

Breaking Changes

  • WidgetSet objects should no longer be directly created, but instead should be spawned with the create_new_widget_set function.
  • Many internal variable name changes, are now accessible via getter and setter methods. Any instances where direct access to internal variables was made may be broken, but can easily be replaced without functionality loss with getter/setter alternatives

v0.0.3

4 years ago

Next iterative release of py_cui

Features Added

  • Custom border characters. You may now use non-ascii unicode border characters (toggle_unicode_borders)
  • TextBox password option. You may now enable password protection on standard textboxes
  • Improved doc generation

Bug Fixes/Improvements

  • Navigation between widgets that are not directly adjacent improved
  • Missing DELETE key functionality added for textbox and textbox popup
  • Removed redundant docstrings
  • Mark checked option fixed for checkbox menu widget
  • Loading bar now will always be correct size
  • Add loading animation to loading bar

v0.0.2

4 years ago

Next iterative release of py_cui

Features Added

  • label.toggle_border() for showing label borders

Bug Fixes

  • move_focus command should work correctly
  • Fix issue with windows installs
  • Improve doc auto-generation
  • Improve docs in code and examples
  • Fix incorrect use of function in move_focus

v0.0.1

4 years ago

Initial pre-release version of py_cui.

Features Added

  • Collection of default widgets
  • Popup support
  • Loading icon support
  • Ability to switch between windows
  • Ascii based interface renderer
  • Basic text color options
  • Grid layout manager
  • Automated CI/CD unit testing with TravisCI

Known Issues

  • Windows version does not seem to pull windows-curses from pypi automatically
  • move_focus does not reset status bar text
  • Docs are incomplete

Future Plans

  • Improved layout management
  • More intuitive color rule definition
  • py_cui_constructor helper script for building py_cui interface templates
  • Code cleanup and bug fixes