Goldenseal Pro Appearance

We started work on Goldenseal Pro for Windows a couple weeks ago, and soon had to stop until we made a decision about the basic window setup.

On Macintosh, there is a menu bar at the top of the screen. The current Goldenseal then shows separate windows for each type of record (customers, estimates, material purchases, checking transactions, etc). You can open just what you need, and put the windows side-by-side on the screen so it’s easy to jump from one task to another.

Windows has a menu bar along the top of each window, instead of at the top of the screen. That can take up a lot of space when there are multiple windows, so the current Goldenseal setup is to have one big window with a menu bar, and then smaller ‘child’ windows inside it, for each type of record.  It’s called MDI (multiple document interface).

These days, very few programs use MDI: it looks fine on a small screen, but is rather dorky on a large one.  However, if we abandon MDI, we still want the Mac and Windows versions to look approximately the same. It makes our tech support (and manual writing) easier, and it’s also easier for users to switch platforms.

Most apps are fairly simple, and can get by with just one window.  The trend in GUIs seems to be that even complex programs will stuff everything into one window, with tabs and/or panels to organize it all. A single tabbed window works OK well when there are 5 to 10 things to show, but we have more than 100 possible accounts, lists and transactions that you might want to see. Running a business is complicated, which makes our app more complicated than most.

Usually when we have a tough interface problem, we look at other apps and ‘borrow’ whatever looks the best.  Unfortunately, we haven’t found the ideal model to copy, yet. The closest ones so far are the two apps we use for writing code (Xcode on Mac, Visual Studio on Windows).  Xcode has one main window, plus the option to open separate windows. Visual Studio has one window, with tabs to switch between files. Neither is particularly ‘user-friendly’, but programming is also very complicated, and at least they don’t make it any worse.

Unless we find something better, we will use a combination of the two approaches for Goldenseal Pro.  It will have a main window with tabs for all the accounts and transactions you have active, plus the option to move anything into a separate window.  Move them all, and it will look the same as now.

Meanwhile, work is progressing well on Goldenseal Pro. Right now we are busy deleting the old drawing code from our GUI classes, and adding links so they can connect with the modern GUI objects from Cocoa and MFC.

Dennis Kolva
Programming Director


Goldenseal Pro Progress Report (Oct 20)

On the Mac, Goldenseal Pro now shows data entry windows: complete with fields, titles and buttons.  That is pretty much the specs for the first draw stage of six. It feels like we are making decent progress, and getting ‘up to speed’ with Cocoa.

The second draw is to link in the fancier aspects of the human interface: tables, having controls interact with each other, and lots of little stuff like colors and fonts and sounds.  Originally, we planned to use the same basic approach as the current Windows code, but now we are considering a more complete redesign. There is a lot of old clutter in the code base, which may be easier to just replace entirely.

It makes sense to get the Windows version caught up to the same place, before deciding how much GUI code to rewrite.  So we have shifted gears, and are currently delving into Visual Studio and Microsoft Foundation Classes (MFC).  We’ve also peeked at C# and .Net (the Microsoft equivalents to Objective-C and Cocoa), but probably won’t use those.

Sadly, Microsoft’s software design and documentation is even denser than Apple’s.  The first part of Goldenseal Pro for Windows will be a spell of rather frustrating work. Still too early to say how difficult it will be, or how long it will take.  Best guess is a month or two.

On the plus side, we can do small stuff in the Mac version whenever Windows gets too head-bangingly difficult.  Some programming problems are best solved by just ignoring them for a few days, and doing something that is more fun.

Dennis Kolva
Programming Director


Writing Big Software (Oct 11)

Goldenseal is a rather big app: 6 million lines of code, which compares to the 20+ million lines in Microsoft Office.  We have at least 15 programmer-years invested in it.

Like any big project, you still have to build it one day at a time.  We have learned that programmers need to see tangible results at least a couple times a day.  A couple times per hour is better. So we are inching along on the interface conversion, with many small milestones (yardstones?). Sometimes we add temporary code to draw something on the screen, just so there is visible progress!

Yesterday we got over a big hump when we figured out how to write ‘linkers’ that connect each of our interface classes to the matching one in Cocoa.  Cocoa was using our C++ code weeks ago, but it was much harder to go the other direction. Now that we have a template for a few classes, the rest will be easier.

Along the way, there are many small details to convert or modernize. Right now we are working on colors. Goldenseal used to pick most colors from a palette of 256 colors, but Goldenseal Pro will use ‘color wheels’ with millions of choices.

Dennis Kolva
Programming Director