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-18241c95194e4e1c597bd2923cf296084fc... [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