OK, I'll have a look at it.
From where you are now, making it such that you can actually enter moves (and thus play a game against an engine) should be quite easy. You only have to connect clicks on the board to the back-end LeftClick and RightClick routines, passing the board coordinates of the click point.
The difficult part of the front-end is getting the animateMoving and animateDragging to work. (DragPieceBegin etc.)
Anyway, if you have any questions about all the stuff that was added since version 1.2, just fire away. I have actually no idea what 1.2 was like; I stepped in at 4.2.7! From reading the 'Contributors' section I got the impression that the front-end still underwent significant improvements (such as the animation) between those.
When you get to porting menu dialogs, the important function is GenericPopup in xoptions.c, which is a table-driven universal dialog generator (which was needed anyway, to generate the Engine Settings dialogs on the engine's specifications),. The tables to define what should be in the dialogs are also in that file, although they are really back-end. (But WinBoard already had all dialogs implemented in a dedicated way, so it doesn't use its universal dialog generator for this, so the tables are not needed there.) I guess xoptions.c should be split up into xpopup.c that contains the code of GenericPopup, associated callbacks and the wrappers to access individual control elements, and a back-end file options.c, containing all the option tables and platform-independent button-handlers. Which would not be used in WinBoard, but could be shared between XBoard, OSXBoard. (Wouldn't it be better to call this MacBoard? We could also have an iBoard then.