Helping out with Explorer New

All development related issues welcome

Moderator: Moderator Team

Post Reply
buildere
Posts: 12
Joined: Tue Jun 09, 2009 4:04 pm

Helping out with Explorer New

Post by buildere »

Hi. Long time lurker here, I have mentioned sometime ago here in the forums and at IRC that I wanted to contribute to ReactOS as a developer. Some reading and testing after a couple of months I think I'm ready to show the little progress I've made.

First, since I don't think anyone would remember my previous comments, I'm a professional developer, but have little experience with C, except from when I was a student, even less with Win32. I've worked with C++ builder, but it is not the same thing by far. I've also made some contributions to another project (wxDevC++, I know, not much appreciated among devels here ;) ). So, to practice Win32 I decided to start playing around with an application that tries to resemble Windows Explorer. In a related subject, I noticed that as far as I can tell, ReactOS Explorer_New doesn't have the functionallity for folder/file management, so if my application gets good by any chance, I thought that it may be used or at least some parts of the code, for the Explorer_New file management features.

At this point I'm not sure my work is up to the task, to be considered for inclusion in ReactOS (and I don't mean inclusion "right now"; I mean, I'm not sure it will ever be). I think the functionality is more or less on par with the current explorer in ReactOS (in terms of what you can do with it). Some things are not working under ReactOS yet but do work under XP, so I guess they will work at some point, or they could be tweaked. I have to say that the current ROS explorer is a much more complex work, and I don't think my skills are on the same level of Martin Fuchs'. Still, a non C++ Explorer is required and since there's no one else working on this portion of the functionality (that I'm aware), I figured it wouldn't hurt to ask for some feedback here; who knows, maybe it could be useful. So if your interested you could try it out. If you're a devel, you could tell me if it sucks too much to be considered for inclusion or if it has potential to become part of ReacOS someday (after I improve it).

It currently supports program execution/file or folder opening by double click, navigating "Up", different icon views, partial Control Panel applet listing (with icons), partial devices listing (with icons), read only (for now) address bar, and simple single file copy/paste operations. I plan to improve all of these features and include many more, mirroring Windows Explorer of course and maybe even improving some aspects of it.
I need to do more research about "folder view" control panel sections, like Fonts folders and so.

The code right now is very amateurish, for the reasons stated above; but I plan to clean it up, modularize it better and make it compliant with ReactOS coding rules. I just need to know if I'm heading in the right direction with this work: if some people try it out (especially devels) and comment if they see some future in it as the new Explorer replacement (the file management portion of it) then I'll keep working on improving it.

http://www.filefactory.com/file/b0f6ge5 ... annabe.zip

The file includes the executable and an ISO for ReactOS testing.

Be advised that this is work in early progress... I don't recommend trying out the file operation features (like copy/paste) in production systems, since there could be some data loss.

Some important things missing:

-MSVC compatibility
-Localization
-Cut operations
-Multiple file operations
-Context menus and pretty much any file operation (like renaming, presenting file properties, creating new files, etc.)
-History and back/forward navigation
-Control panel folder items (I don't know the real name of this feature; the stuff that reads font folders for instance).
-Integration with real explorer (right now it is a standalone executable; I have to research how does explorer really works in the background, and integrates with the desktop, etc.)
-Conformance with real explorer "APIs", like the extensibility options (thumbnails, previewpane extensions, shell context menu extensions...)
-Customizable toolbar
-Search features
-etc, etc...

It probably has some memory leaks (not that good C programmer, yet), or even some horrible C mistakes. I still think I can fix all this at some point.

Some screenshots:

Running in ReactOS 0.3.11:
[ external image ]

[ external image ]

Running in XP:
[ external image ]

Running in Vista:
[ external image ]
vicmarcal
Test Team
Posts: 2733
Joined: Mon Jul 07, 2008 12:35 pm

Re: Helping out with Explorer New

Post by vicmarcal »

Hi buildere :)
Thanks for showing interest in explorer-new. With the screenshot i see you are working in a new-from-scratch explorer,while we have a explorer-new that needs some love and currently ours is a little bit more complete.
Explorer-new is partially coded in C++, as it makes easier to fight with Objects.So C++ is not forbidden in Explorer-new.This is the good new :)
Our Explorer-new is working on XP/VISTA and it looks like a perfect NT clone.But we need some COM,OLE backend(iirc).Why dont you join the explorer-new development?
:)
buildere
Posts: 12
Joined: Tue Jun 09, 2009 4:04 pm

Re: Helping out with Explorer New

Post by buildere »

Hi Victor. Thanks for your answer.

I've heard about this and I saw those screenshots at some point, but after using a build that someone posted with it enabled (I don't recall were was it) and after looking around the sources, I just couldn't find any code related to the file navigation stuff in explorer_new. To be more specific, I have looked in reactos\base\shell\explorer-new, and found mostly taskbar/start menu stuff, but nothing on the file manager (this is a SVN sync from around 0.3.11, I haven't updated my sources, but I don't see any recent commits in this area anyway). I assumed, the filemanager you see is just the regular XP one being called from explorer_new.

Of course, it could be that I'm an idiot, and overlooked it. If you or someone else can point me to the file or files that actually implement the filemanager in explorer_new, I'd be glad to study them and try to join this portion of the development, using some of the things I've learn from my test app.
gabrielilardi
Moderator Team
Posts: 873
Joined: Sat Sep 02, 2006 1:30 am
Location: Italy

Re: Helping out with Explorer New

Post by gabrielilardi »

I guess this can shed some light on the issue:
The shell that users interact with is actually several components all tied together, which is why a rewrite is highly nontrivial. Besides the explorer shell itself there are the shell32, browseui, comctl32, and shlwapi libraries, to name just a few. In ReactOS, much of the functionality in the libraries are all crammed into the explorer shell because the libraries themselves did not really exist. This is due to the current explorer's Wine heritage and the fact that Wine really does not need a shell32 implementation. One such example would be the start menu itself. This is not actually implemented in explorer, but merely exposed by it. Another is the menu system. Traditionally menus are managed by user32 in Windows applications, but the shell actually has a few custom menus that are handled separately. Few applications besides a shell would ever use these custom menus so their lack went largely unnoticed, though if anyone ever tried to use an alternative shell they would immediately notice all the missing functionality.

Andrew Hill has spent the last few months researching the shell system on Windows and what ReactOS is missing. He has managed to get several shell related libraries as well was explorer_new, the intended replacement for ReactOS' current shell, to compile and run on Windows XP using Visual Studio. This allowed him to find specific missing functionality as well as places where existing functionality is lacking. One such example would be the lack of the start menu, one of those custom menus not managed by
user32. His current objective is to get explorer_new to behave identical to how XP's own shell behaves and then reintegrate his work into ReactOS.
from newsletter 67
buildere
Posts: 12
Joined: Tue Jun 09, 2009 4:04 pm

Re: Helping out with Explorer New

Post by buildere »

Thanks gabriel, that actually helps. I think browseui is what I was looking for. I'll take a closer look at the sources now.
ThePhysicist
Developer
Posts: 509
Joined: Mon Apr 25, 2005 12:46 pm

Re: Helping out with Explorer New

Post by ThePhysicist »

Let me add some things here: explorer_new is C, not C++, explorer is C++ and some dlls are C++
Also the current explorer_new is only a shell, not a file manager and I'm for keeping it that way. So a new filebrowser is interesting, if it's written in C, the better.
Could you provide the sources, too?
buildere
Posts: 12
Joined: Tue Jun 09, 2009 4:04 pm

Re: Helping out with Explorer New

Post by buildere »

Let me add some things here: explorer_new is C, not C++, explorer is C++ and some dlls are C++
When you say explorer, are you referring to current explorer in ReactOS, or to "real" explorer, in XP for example?
Also the current explorer_new is only a shell, not a file manager and I'm for keeping it that way. So a new filebrowser is interesting, if it's written in C, the better.
Could you provide the sources, too?
Ok, I'm still confused by this. By "current explorer_new is only a shell, not a file manager" I take it that you are positive, current explorer_new does not include any functionality that let's you manipulate files and folders in a listView-with-icons type of browser window? So, vicmarcal is incorrect in saying explorer_new browser is very close to the NT one?

I'm studying files in reactos\dll\win32\browseui, but I still can't say for sure. I know that many functionality required for the filebrowser is actually implemented in the windows libraries; in fact, my app is nothing more than a wrapper for much of this functionality, but the question here is if such wrapper is already implemented in explorer_new at all (even if it's not currently working) or not.

About the code, I'm embarrassed to show it right now, but if you're really curious I can upload it, with the advice that I know it needs big work.
Haos
Test Team
Posts: 2954
Joined: Thu Mar 22, 2007 5:42 am
Contact:

Re: Helping out with Explorer New

Post by Haos »

If you study ReactOS code more, you shall see that there is no code one cant be proud of.

Now, seriously speaking, why dont you get in touch with our project coordinator? If you want, he can set you up with our shell people (I think we have more than just a single person), set up a separate branch for your work. This way its easier to get your code tested, audited and simply speaking - helped with.
buildere
Posts: 12
Joined: Tue Jun 09, 2009 4:04 pm

Re: Helping out with Explorer New

Post by buildere »

That would be Aleksey, right?

From gabrielilardi's post I guess Andrew Hill would be one person involved in explorer_new at this point, that could answer my question about the state of the filebrowser thing. If it happens that there is not really much done currently in explorer_new about this segment of it's functionality, I guess a branch would be nice. I'll try to contact them soon.

Thanks.
Ged
Developer
Posts: 925
Joined: Thu Sep 29, 2005 3:00 pm
Location: UK

Re: Helping out with Explorer New

Post by Ged »

A lot of people are getting a lot of information wrong in this thread.

Here are some facts to clear things up:
1. Explorer_new is C and it needs to remain C. I'm all for having a C++ explorer as it's a much better language for this tech (as it's layered entirely on COM) but you would have to rewrite it from scratch (explorer_new2) and ignore the explorer_new code.

2. The file browsing capabilities are nothing to do with explorer, they are implemented in one of the shell dlls, browseui.dll. This again should be written in C++ as it's entirely COM and is much better suited.

3. We want to move our shell to C++ if possible, again for reasons relating to COM.

4. There's already someone working on this. I'll not go into the details, but it would be wise to come to IRC and speak to me before anyone considers writing any code for inclusions in either the shell libraries or explorer itself.

5. We are hoping to move much of our shell code to make use of new ATL stuff we have coming.

6. Before you get involved in all this it would be wise to have advanced ATL and COM skills.
buildere
Posts: 12
Joined: Tue Jun 09, 2009 4:04 pm

Re: Helping out with Explorer New

Post by buildere »

Ged, thanks for clearing up this mess :)

Ok, as I suspected, my app will not be of much help. Well, at least it still helps me get more familiar with Win32 programming.

I'll try to learn COM and ATL now (COM at least I know what it is about... ATL I have no idea) and report back again someday.
Ged
Developer
Posts: 925
Joined: Thu Sep 29, 2005 3:00 pm
Location: UK

Re: Helping out with Explorer New

Post by Ged »

buildere wrote:I'll try to learn COM and ATL now (COM at least I know what it is about... ATL I have no idea) and report back again someday.
ATL is a template library for use with COM. It's similar to MFC in many respects but it's much more lightweight and contained entierly within the headers, so there's no dependencies.
Our reasons for wanting to move to ATL are because it makes COM stuff simpler to read and use and because it it will help to reduce bugs in the code.

A lot of our ATL code is missing at the moment, so it's sort of being developed in tandem with the shell rewrites.
Haos
Test Team
Posts: 2954
Joined: Thu Mar 22, 2007 5:42 am
Contact:

Re: Helping out with Explorer New

Post by Haos »

There is plenty of free room to roam in our project, hopefully you'll find something suiting yourself.
patternjake
Posts: 112
Joined: Sun May 31, 2009 12:15 am
Location: UK
Contact:

Re: Helping out with Explorer New

Post by patternjake »

I'd say stick to the existing ROS explorer they have.
I attempted a file browser / desktop on ReactOS, didn't come out well.

I would contribute massively to ReactOS' userland, but I'm waiting for the project to hit beta, and for its graphics layer to be improved a bit.
User avatar
betaluva
Posts: 424
Joined: Tue Dec 14, 2004 1:33 am
Location: Australia
Contact:

Re: Helping out with Explorer New

Post by betaluva »

i know this is a bit late but someone tell me where the code for ros explorer start menu hides, is it in shell32.dll? i have had a look and i cant find it.
Post Reply

Who is online

Users browsing this forum: No registered users and 18 guests