GSoC proposal: Implement the Explorer

David Hedberg david.hedberg at gmail.com
Fri Mar 19 09:56:10 CDT 2010


Hi everyone,

I too thought I'd see what my current thinking might be worth and
therefore submit what you might call a rough (and perhaps somewhat too
short) draft of my current "main proposal" for your tearing-apart
pleasure. This is based on the idea with the same name available on
the wine wiki, and is I guess sent to get some feedback on whether it
would be considered useful and worthy of further refinement or not.
----------------------

Proposal for GSoC 2010: Implement the Explorer
----
The proposal is, in short, to implement the Windows Explorer as a
replacement (or a complement) to winefile to browse the shell
namespace, and also as an easily accessed test bed for the wine
implementation of the windows shell components. It will also as a
design decision involve implementing the new IExplorerBrowser
interface available since Windows Vista which allows applications to
host the explorer ( [1], [2] ). If there is time available after this
I would also like to make explorer able to optionally show the task
bar and start menu as noted in the wiki entry for GSoC ( [3] ) and in
an enhancement request on wine bugzilla ( [4] ) .

Very Rough Design Description:
----
This would, logically at least, involve mainly two parts: An
implementation of IExplorerBrowser and IShellBrowser that uses the
current implementation of the shell in wine, and an Explorer.exe that
would be able to host IExplorerBrowser objects, interact with them and
possibly handle showing the task bar and start menu. This should all
be done in a way that is as compatible as possible with currently
available shell extensions for the Explorer like custom toolbars, desk
bands, and the like. If a choice have to made regarding what version
of the Explorer to be compatible with, the current thought is to
prefer the design decisions of the latter windows versions. For
example, in Windows 7 (and Vista I assume), the explorer folder bar
(showing the folder hierarchy) is replaced by a "navigation pane" that
is available to all applications hosting the explorer through the
IExplorerBrowser interface. As users of IExplorerBrowser would
conceivably expect this pane to be available, making this a part of
IExplorerBrowser would seem to make sense.

Main goals
---
* A functional implementation of explorer that can browse the shell
namespace and be used for both file management tasks and manual
testing of features of the wine shell implementation.
* A working implementation of IExplorerBrowser.
* Compatibility with shell extensions where it makes sense.

Secondary goals
----
* An optional start menu/taskbar mode, mainly for use when running
wine in virtual desktop mode.
* Chances are that implementing the Explorer will turn up bugs in the
wine shell implementation. Some of these bugs might hinder the main
goal of implementing the Explorer in which case they would need to be
investigated and fixed, and I suggest that those bugs (if any) that
are not show-stoppers should be documented and - if there is time
after finishing the main goals - investigated and (hopefully) fixed.

Thoughts on the User Interface
----
The primary concern when it comes to the UI is that it should be
functional. It would be loosely modeled after the Explorer in Windows,
especially where needed for compatibility reasons (e.g. the navigation
pane), but there might also be room for wine-specific features, look
and behavior. On this point, it would perhaps make sense to seek some
comments from other "heavy" explorer users and/or wine users.

Quick summary of steps suggested
----
1. Implement a simple initial container for IExplorerBrowser
(explorer.exe) with basic support for navigating. Make sure it works
with native IExplorerBrowser in windows Vista/7, and also write tests
for the interface (if possible).
2. Implement IExplorerBrowser (and other necessary interfaces), test
with new explorer.exe from step 1.
3. Refine explorer.exe as needed
Optional:
   4. Give explorer the ability to show the task bar/start menu, and/or
   5. Fix bugs in the wine shell components found during the course of
development.

References:
[1]. http://msdn.microsoft.com/en-us/library/bb761909(VS.85).aspx
[2]. http://www.codeproject.com/KB/vista/ExplorerBrowser.aspx
[3]. http://wiki.winehq.org/SummerOfCode#head-18241c95194e4e1c597bd2923cf296084fc3ba78
[4]. http://bugs.winehq.org/show_bug.cgi?id=11629

------------

Some notes and questions:
In the above I am assuming that the Explorer and Internet Explorer
should be regarded as separate applications as that seems to be the
current state of affairs in the windows world. Is this assumption
correct?

I can also note that I am guessing (from visual inspection alone) that
Vista/Win 7 uses IExplorerBrowser to implement IFileDialog (one of the
GSoC ideas on the wiki). I might be wrong though, and I guess that it
either way strictly speaking is an implementation detail that doesn't
really matter to wine.

Any thoughts, comments or questions on the above are very welcome. :-)
I'm also idling in #winehackers with the nick sk atteola.

Thanks,
David Hedberg



More information about the wine-devel mailing list