$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.