There are three key features planned for future versions of Explorer++, all of which have had some work done:

Directory monitoring changes

Currently, the method Explorer++ uses to monitor directories for changes only works in real filesystem folders. That means that if you create a file in a library, for example, Explorer++ won’t pick up the change.

I’ve started work on an alternative implementation that will allow virtual folders (like libraries) to be correctly monitored for changes. That work is contained on the directory_monitoring_updates branch in the repository.

Plugin support

Development for this is well underway. See this post for a description of the current state of implementation. Unlike the above changes, the changes for this are contained on the master branch but disabled by default. The functionality can be enabled with a command line switch (-enable_plugins), making it possible to use now.

Saving data in JSON format

Currently, Explorer++ can load/save data from the following locations

  • The registry
  • A config file (in XML format)

There are a number of issues with this:

  • Firstly, there are two completely independent implementations, making it possible for there to be bugs in both.
  • The XML code in particular is complex and error-prone.
  • The registry code is simpler but still has issues.
  • All the work to load and save data is done manually and requires a fair amount of boilerplate code at times.

A unified system to persist data in a single format would have clear advantages. Explorer++ would still need to be able to load data from the registry/XML config file (at least initially), but the general process of loading and saving data would be a lot simpler.

Then, the only difference when running Explorer++ in portable mode would be the location of the settings file. In portable mode, the settings file would be located in the same directory as the executable, while it would be located in one of the user directories in non-portable mode.

So far, I’ve looked at a few different options for loading/saving the data. Boost PropertyTree is what I’m leaning towards at the moment. I haven’t started integrating it yet at all, but I have done some initial work to make integrating it easier.