I have created a first iteration of the windows implementation, attached. I
have not integrated this into the mono build system, or indeed tried
compiling it with mcs yet, as I am having difficulty building mono under
cygwin.

Here's a brief overview of the API:

interface IShellItem -
This acts as a common interface for ShellFolder and ShellItem. It exposes
properties such as DisplayName, SmallIcon, LargeIcon, Parent, Path.

class ShellFolder -
Represents a folder in the Windows Shell Namepsace. ShellFolder can be
constructed with an Environment.SpecialFolder value, or from a path. It
implements IEnumerable, which allows a user to iterate over the folder's
ShellItems.

class ShellItem -
Represents an item in a ShellFolder. If the item is itself a folder,
ToShellFolder() will create a ShellFolder representation of the item.

I have used the namespace Mono.WindowsShell for the moment.

An example of a program using the API:

       static void Main(string[] args) {
           ShellFolder folder =
               new ShellFolder(Environment.SpecialFolder.Desktop);

           foreach (ShellItem item in folder) {
               if (item.IsFolder) Console.Write("d ");
               Console.WriteLine(item.DisplayName);
           }

           ShellItem windows = new ShellItem(@"c:\progra~1");
           Console.WriteLine();
           Console.WriteLine(windows.DisplayName);
           Console.WriteLine(windows.LargeIcon.Width);
       }

Comments welcome!

Cheers
Steve

On 11/29/06, Miguel de Icaza <[EMAIL PROTECTED]> wrote:

Hello,

> Yes, I agree with your assesment.
>
> As for duplicating the Windows Shell API, it would need to be
> abstracted quite significantly, as it is the single worst API I have
> used, and very much tied to the win32 implementation.

I would create an abstraction for what you are trying to solve, and have
one implementation call into the Windows space, and another that we do
to map into the Linux world.

This is what we have in mind.

Miguel.

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to