Last week, our staff spent a few days getting the old networking code to compile for 64-bits. A contractor will do the Qt work for the new multi-user versions, but we need to update some parts on our end, first.
The rest of the week, we mostly futzed with the basic interface for our new accounting software. It’s all the little stuff that you probably don’t even notice, except when it isn’t done right.
Some of the work was the usual interface perks: keyboard shortcuts, pull-down menus, handy buttons. Usually Goldenseal has several ways to do stuff, and we hadn’t filled them all in yet.
We faced one interface issue that’s called focus: what gets the message when the mouse clicks or the keyboard clatters. Focus can be complicated. When you use the scroll wheel, does it move the cursor inside a field, or the window contents? Does the Return key add a carriage return inside text, or save a record? How about the Enter key? Tab key? Shift-Tab? Control-Shift-Tab? It takes a lot of tweaking to get the “look and feel” to be right.
The framework we used for Goldenseal (PowerPlant) was primitive. We had to write all the focus management from scratch.
The frameworks we have used since then (Cocoa, MFC, and now Qt) include built-in handling for focus and other basic interface. That is not always a good thing. Sometimes the hidden behavior is wrong, and hard to change.
For example, we spent several programmer-hours on a very simple problem. After leaving a multi-line field, there still was a flashing cursor in the old field, plus one in the new field also. Having two of them looked weird. It was confusing. None of the obvious fixes worked. We finally had to set the cursor width to zero on exit, then back to one on return. It’s an ugly fix, but we didn’t find anything better.
Focus is part of a bigger problem, and not just for TurtleSoft. Apple and Microsoft keep getting further apart, which makes it harder and harder to write code that works on both. Frameworks like Qt help, but it can still take years to build a good interface.
To speed things up, many companies have turned to Electron. It builds desktop apps using web tools: Javascript, HTML and CSS. Using those simpler languages sounds great in theory. They’ll make an app that looks just like your website. You can hire less expensive programmers, and have just one code base.
Electron may speed up app development, but with some catches. Apps are huge, since they include a whole built-in web browser to run the code. They use a lot of RAM, and tend to have an awkward user interface. Web pages are not very good at small details like focus. HTML and web browsers have come a long ways, but they still can’t deliver as comfy an interface as real desktop apps.
Cheap/fast/good. Pick any two.
Dennis Kolva
Programming Director
TurtleSoft.com