Natural One 1.7

Few big things this update. Templates are no longer auto-sorted, but can instead be reordered by dragging and dropping. This should make it easier to find templates in a long list, as important ones can now be dragged to the top.
Error indications resulting from user input should now be more accessible. Popovers now display next to widgets with errors, helpfully pointing out where a problem is and what to do about it. Previously these errors were kind of a problem for colorblind users, as the only indication was a red outline, but this addition should make the errors more obvious. The popovers are only dismissed after a click/focus change, so this helps make it more obvious to all users too.
Finally, Unicode support is here! Sort of, at least. It’s a rather bad hack to get it functional while I go refactor parts of the code to support it in a better way, but at least now it works. This is another important step in accessibility, as this previously limited all user inputs to ASCII characters only; now many more languages are supported. Or, I guess you could do this:
unicode

  • Interface changes:
    • Improved accessibility for user input errors by showing a popover in addition to the red outline.
    • Added ability to drag and drop templates to reorder. Order is saved on application exit and restored on open. Template sorting removed.
    • Merged enable all/disable all buttons in the systems dialog into one button that toggles state.
  • Systems changes:
    • Added Pathfinder’s “alchemical” weapon categories.
    • Added support for “Pure Steam” system. This is a Western/steampunk Pathfinder conversion, so no mechanical changes were required.
  • Code:
    • Added rudimentary Unicode support.
    • Moved template copy and remove into functions in the io module.
    • Simplified initiative drag and drop reorder code.
    • Added helper for loading symbolic icons.
    • Switched all string formatting to use format() instead of the old printf style formatting.
  • Fixes:
    • Fixed CSS data causing app to crash on launch in Python 3.

All code is on GitHub: https://github.com/achesak/natural-one/

Advertisements

Natural One 1.6

Despite having a very large number of lines changed, aside from a couple minor fixes and changes most of this release should be invisible to users. Instead, this release focuses more on the internals; there are multiple simplifications to common tasks, and a much stricter adherence to style conventions. This is part of my effort to clean up my “yeah it works, good enough” approach to new features, though there’s still a bit to go.

  • Interface changes:
    • Changed initiative list column spacing to give more room to the name.
    • Mixed weapon damage types now display in order. Previously, it would sort alphabetically, which isn’t the most intuitive or standard way to do it.
  • Code changes:
    • Renamed many functions.
    • Simplified mixed damage type calculations.
    • Added helper methods for getting selected indices in lists.
    • Renamed application and window classes.
    • All code now uses flake8 to adhere to style conventions.
    • Simplified question dialog result checking.
  • Fixes:
    • Fixed spelling mistake.

All code is on GitHub: https://github.com/achesak/natural-one/

Natural One 1.5

  • Feature changes:
    • Removing a system now deletes the imported system file.
    • Added feature to export templates.
    • Added feature to import templates.
  • Interface changes:
    • Added placeholder text to most inputs instead of default values. Along with this, most of the fields will default to these placeholder values if nothing is set, preventing user error and making validation easier.
    • Changed error styling to red border around the widget instead of red background with white text. This still needs work, as accessibility isn’t great, but it removes most aesthetic and user theme related issues.
    • Templates are now sorted alphabetically.
    • Improved tooltip on “clear output” header bar button.
    • Headers are now shown in the templates list.
    • Added “Rolls” column to the templates list to show the number of rolls in each template.
    • Critical range input can now longer be above 20.
  • Output changes:
    • Removed quotes from template roll output.
  • Code changes:
    • Fixed variable name shadowing.
    • Fixed code style issues.
    • Removed most roll input validation, as it is no longer necessary with default values and limited inputs.
    • Cleaned imports.
    • Removed unnecessary comments.
    • Moved the CSS data to a file to reduce duplication.
  • Fixes:
    • Fixed extra newline at the end of the output.
    • Fixed typo in template dialog tooltip.
    • Fixed inconsistent grammar in template dialog labels.

All code is on GitHub: https://github.com/achesak/natural-one/

Natural One 1.4

  • Interface changes:
    • The input panes and output list are now in panes, so they have a divider that can be used to change the size of each.
    • Redesigned template pane. The buttons are moved to an action bar, and the “New Template” section is gone.
    • Redesigned initiative pane, similarly to the template pane.
    • Redesigned template dialog, similarly to the template pane.
    • Minimum damage entries now show placeholder text.
    • Added system management functionality.
      • Users can now add their own systems through the UI.
      • Systems can now be rearranged.
      • Systems can now be removed.
      • Systems can now be enabled or disabled.
    • Add input filtering for appropriate fields. No more typing letters into numeric fields. It also checks things like spaces, commas, and negative signs when appropriate.
  • Output changes:
    • Improved formatting of damage roll output.
    • Improved formatting of modifiers. If the modifier is 0, it is not shown. If it is negative, it no longer displays with an extra plus sign.
    • Improved formatting of anything that could have multiple values; equal signs are now hidden when not necessary. No more being reminded that “7=7” is, in fact, true.
    • Added critical outputs for maximized on critical.
    • Improved formatting of templates, with more spacing, more consistent formatting, the count and die in the roll output, and better critical messages.
  • Roll changes:
    • Added damage types to all damage rolls. Each damage roll displays its type, and totals are broken down by type if applicable.
    • Minimum damage is now optional; if not set, it’s negative infinity.
  • Systems changes:
    • Added D&D 3.5e data file.
    • Added The Modern Path data file (disabled by default).
    • Rearranged default order of systems.
    • Added Pathfinder naval siege weapons.
    • Added several missing Pathfinder weapons.
  • Fixes:
    • Fixed static damage not being multiplied by critical hits.
    • Fixed modifiers being applied twice if weapon has bonus critical damage.
    • Fixed editing rolls saving data before it should have, resulting in the user applying changes even if clicking “Cancel”.

All code is on GitHub: https://github.com/achesak/natural-one/

Natural One 1.3

This release brings support for D&D 5e and 4e, with all the data and roll rule changes that entails. 5e support was actually trivially easy, not much to do there at all; weapon data is short and the rules are a subset of Pathfinder’s. 4e wasn’t bad either, though it did involve adding support for it’s odd style of criticals (maximized instead of multiplied).

Also new this release is an “Initiative” tab for tracking encounter initiative. These can either be rolled or added manually, with additional sorting and drag and drop to re-order the list.

Due to a large rewrite of how roll data is handled internally, some things visible to the user changed as well. Output should now also be cleaner and nicer to look at. Some very significant issues with damage rolls should be fixed now too.

Full changes:

  • Added D&D 5e weapon data.
  • Added D&D 4e weapon data.
  • Added new data files properties:
    • “max_on_crit”: if set to true, rolls will be maximized on criticals instead of multiplied.
    • “reroll_below”: if set to an integer, rolls will be rerolled as long as their value is less than or equal to this integer.
  • Improved the UI to better follow Gnome’s HIG.
  • Added option to maximize on criticals to templates.
  • Decoupled generating rolls from output of the rolls.
  • Improved roll output:
    • Negative mods now longer display an extra “+”.
    • Mods of 0 no longer display.
  • Fixed many issues with roll output:
    • Fixed incorrect numbering on critical hits for critical mods of 4 and above
    • Fixed incorrect numbering on critical hits for critical mods of 1.
    • Fixed extra blank lines appearing for certain weapons.
  • User input now strips text before checking validity.
  • Fixed template dialog not setting the critical option in the UI properly when loading a roll.
  • Added classes to represent roll results, to help with decoupling generating rolls from formatting rolls.
  • Fixed warnings when double clicking template or roll lists.
  • Simplified error checking for user input.
  • Renamed “format.py” -> “formatter.py”.

All code is on GitHub: https://github.com/achesak/natural-one/