That was a nice Christmas break, but it’s back to work now for me, so here’s some news about what I’ve been doing:
Almost all of the programming I’ve been doing has gone into DDRescue-GUI, and there are a lot of improvements, so let’s start with the best! 🙂
OS X Notifications
Yep, notifications are now available for OS X, notably for all versions of OS X too! This was quite a tricky thing to do, because Notification Centre didn’t exist until OS X Mountain Lion (10.8), but I found a great little app called Cocoa Dialog with can display “bubbles” which look almost exactly like notifications and serve the purpose very well. This means now it’s easier to have DDRescue-GUI running in the background, knowing that if your recovery finishes, or there’s a problem, you will know rather than waiting for ages to find out it stopped, which is really annoying!
Get the output box looking and working much better
The output box now behaves a lot more like a terminal, as in ddrescue’s output will now overwrite itself with new output, rather than having scrolling output with some of the older text removed to prevent memory leaks. This is helpful because you can now see ddrescue’s initial status messages if you wish, and it’s just nice and makes the GUI look more sleek 🙂
In the currently online version, 1.5~pre1, the output box doesn’t work well under OS X at all, with very high CPU usage, a memory leak, and a big delay at the start of the recovery, but I’ve fixed these problems and made it run with even less CPU power than v1.4 now! These changes will be in 1.5~pre2, which will probably be out soon.
Enable some features that weren’t working in v1.4
There were some features that should have worked in v1.4, but annoyingly I found at the last minute that they didn’t! Fortunately, I’ve got them working now, and the fixes are:
- Direct Disk Access now works under Parted Magic and has been enabled in the GUI.
- You can now use a logfile under OS X (I really don’t know why this wouldn’t work at the time).
- Elapsed time now works better on OS X after using a separate thread for it, because there was a report that it grossly underestimated the time when using a wx.Timer.
- Give ddrescue the disk size on OS X, enabling Reverse mode and Preallocate mode.
There are a number of smaller but still important changes since v1.4, such as better code optimisation for efficiency, and making the “Mount Image” feature more robust under OS X. I’ve also moved some core functions to a Tools module to make maintenance easier.
Upcoming features and improvements
DDRescue-GUI v1.5 will offer a lot of improvements specifically for OS X, including:
- ddrescue v1.20 will be included in the OS X package (as a fat binary for both 32-bit and 64-bit systems), and it includes a ton of improvements, and a set of new features which you can read about in Antonio Diaz Diaz’s post here.
- 64-bit support because I’ve heard 32-bit app support is getting a bit sketchy on the newer OS X versions, and hence:
- A 64-bit only package for Snow Leopard (10.6) and newer for people who have 64-bit processors (all modern Macs).
- A 32-bit only package for Snow Leopard only for people with 32-bit bit Intel Core Solo and Duo processors.
- Don’t hang if ddrescue won’t exit peacefully (both Linux and OS X).
- Re-add support for Reverse mode and Preallocate on OS X (I lost data so this didn’t make it to v1.5~pre1).
I’ve done a fair bit of work with WxFixBoot too, mostly involving moving code to separate modules to ease maintenance, but there are also some features the user will actually notice 🙂
WxFixBoot’s new splash screen, and the startup scripts
As you can see, the new splash screen has a progress bar, and this design eliminates a two-second wait at launch time and the slightly messy text in the Initial Window from v1.0.2. During development, a lot of what I’ve been doing is moving, optimising, and reorganising the startup scripts, meaning the whole thing is a fair bit quicker to get going too.
I may add one line of text that changes for this splash screen so the user can see what’s being done though, because that’s quite helpful.
The Authentication Dialog and Disk Information
Another thing I’ve added is an authentication dialog, which is very similar to the one found in DDRescue-GUI, which replaces using pkexec like v1.0.2 did, which removes a dependency. The last major thing I’ve done is add the Disk Information Window, which looks and works the same as the one in DDRescue-GUI, and may eliminate a lot of the startup scripts, making the whole program a lot simpler and quicker to start.
Upcoming changes for v1.1
There are a lot of these! In fact, too many to list all of them at once, so here are some of the most important ones:
- Some more of the startup code needs to be moved, and a lot of the backend code will need to be moved too, which will make maintenance a lot easier and quicker. Meanwhile:
- I will optimise and rewrite the backend code as I see room for improvements during the moving process.
- I will get the whole code base ready to switch to a new method of keeping the data that WxFixBoot needs to run, because at the moment it’s based on a set of global variables. This works fine, but it limits the number of things WxFixBoot can do, and makes organisation quite difficult. So, I’ll be switching to a dictionary-based method with one global variable as the main dictionary and lots of sub-dictionaries to keep everything in order. This will make the code a LOT easier to read and maintain 🙂
- I’ll improve support for multiple operating systems, especially when they’re on more than one hard drive.
- I’ll improve support for the LILO and ELILO bootloaders (I have a warning about them being difficult to maintain in v1.0.2).
- The GUI will be redone with sizers instead of pixel-based positioning which means the windows can be resized and will looks better on different systems with different font sizes and so on.
So, as you can see there has been a lot of work done on DDRescue-GUI and WxFixBoot, and there are lots of great new features and improvements for DDRescue-GUI, particularly for OS X users. WxFixBoot v1.1 will look and work very similarly to v1.0.2 as far as the user can see, but underneath it will be very different and much more capable and powerful than before, not to mention easier to debug!
I hope you’ve enjoyed reading this article, and I’ll keep you updated on new features for my programs, and I’ll be doing some more in-depth software reviews soon as well 🙂