$Id: 4-Limitations-Enhancements.txt,v 1.2 2001/07/18 18:20:50 tundra Exp $

                 KNOWN LIMITATIONS AND PROBLEMS OF HB
                 ====================================

- For some reason, I cannot get the Win32 version of Python 2.1 to
  properly trap a KeyboardInterrupt.  The code is there and it works
  on Unix (at least FreeBSD 4.3), but it just plain does not want to
  cooperate under WinDoze.

- There are several places where I don't bother to check for error
  conditions which can cause the Python runtime to burp and end with a
  traceback.

- There is almost no checking for sanity in the budget file being
  loaded, so it is easy to blow up HB with a bad budget.



              ENHANCEMENTS TO HB YOU MIGHT TRY YOURSELF
              =========================================

- Check correctness and/or be more forgiving about reading in budget
  files.

- Add a new user feature of your own.  This means adding the correct
  entry in Options, writing a Main Function Handler for the new
  feature and any needed support functions to compute arguments.
  Remember, keep literal strings out of the code and in the tables at
  the beginning of the program.  A good place to start would be
  features for creating new budgets, and adding or deleting accounts
  within a budget.

- Modify the Print() Main Function Handler to properly print under
  Unix or MacOS.

- Get the program running using curses on Unix or a similar screen
  management system for Win32.

- GUIify HB with Tkinter or wxPython.  The code is already setup for
  it to be event driven (more or less) in a GUI.

- Gut the Jump Table and Command Interpreter logic out of HB and write
  your own application using this approach.

- Rewrite all the arithmetic and currency objects in HB to use BCD or
  the FixedPoint library to avoid all the rounding error garbage
  floats give you.

- Modify the Command Interpreter to accept multiple arguments at once
  to avoid the endless input dialog.  For example:

        t Sav Ph 300

  Would mean to transfer 300 (Dollars/Pesos/Marks ...) from the Savings
  to to Phone Accounts.

- Replace the (really lame) ABORTINPUT global flag mechanism with
  a custom exception object to abort the current input dialog.
  Python lets you define your own exception types, and this is a
  good application of same.
