After initial setbacks and some reconsiderations on my part as to what should be included in a second version of Jac, I’ve finally made some decent progress on the next iteration. I initially wanted to have a prefix and postfix expression evaluator but I found that I could not easily translate what was built in the first version to fulfill these requirements. I backed up, looked at adding functionality to the original infix expression evaluator and decided that doing so would give me more bang for my buck.
I’ve now added the trigonometric functions to the infix engine as well as the natural log function. Naturally, the command-line implementation of the calculator is adjusting nicely to the added functionality but the GUI is becoming troublesome. The biggest problem lies in the fact that it is easy to add functionality to the engine but the screen quickly becomes cluttered with buttons for every function that’s added. The ideal solution would be to have a SHIFT button that would temporarily change the function of every button on the panel to fit the user’s need. I have no idea how to implement such a thing and I may not even attempt it.
One idea that has crossed my mind is to freeze development of the GUI at some point where I’ve decided that enough of the underlying engine is accessible to consider the GUI a practical application and then let the command-line interface run away with the complete functionality of the engine.
Testing and pondering continues. In the meantime here is a screenshot of Jac as in stands right now: