"Tim Golden" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
> Andrea Gavana wrote:
>> Hi Roger,
>>
>> On Tue, Apr 15, 2008 at 12:21 AM, Roger Upole wrote:
>>> I've been meaning to look at how this works for some time,
>>> so I took a few minutes to cook up an example (attached).
>>
>> Thank you very much for the sample! It is really enlighting. I have
>> however some difficulty to understand it (sorry for the dumb
>> questions):
>
> (I think Roger's in a different timezone, so I'll answer what
> I can for the purposes of expediency. He can obviously speak
> for himself when he's online).


Sometimes I think I'm in an entirely different universe ;).


> You really want to look at:
>
> http://msdn2.microsoft.com/en-us/library/bb776858(VS.85).aspx?topic=306117
>
> for the inside story.
>
>> 1) How do you actually use the SIOI class?
>
> As a class, you don't. It's simply the mechanism for serving the
> COM object which contains the methods the shell will be calling
> back.


This is often a difficult concept for people new to shell extensions.


> There's some magic which the UseCommandLine call does
> on your behalf to register the class as the COM server which the
> shell expects.
>
>> I tried to run the sample,
>> then creating various files here and there in my hard drive, but I
>> don't really know what IsMemberOf() is accepting as fname to make the
>> overlay. Is it the file name? The icon name? Something else?
>
> Find an icon file that exists, unless you happen to have something
> on your J: drive which exactly matches Roger's example. I used the
> TortoiseSVN icons on my machine under:
>
> c:\Program Files\TortoiseSVN\icons\Classic\TortoiseAdded.ico
>
> Replace the path in GetOverlayInfo with whatever you've chosen.
> This is the icon which will be overlaid (in miniature) over whatever
> existing icon a file has.
>
> Have the IsMemberOf method return S_OK for every file whose icon
> you want overlaid. The first param is the filename. Roger's example simply
> looks for the world "overlay" in the filename.


I was actually testing the overlay on the script that produces the overlay.
(it seemed like a good idea at the time ...)


>> 2) Let's suppose that I want to assign an overlayed icon to a
>> particular file in a directory: let's say this file is called
>> "HELLO.DATA" and the directory contains also other files with the
>> .DATA extension. What should I do to assign the overlayed icon only to
>> this particular file?
>
> Change the .IsMemberOf function to say something like:
>
> if os.path.basename (fname) == "HELLO.DATA":
> return winerror.S_OK
> return winerror.E_FAIL
>
> Hope that helps
>
> TJG


Also, you'll probably need to log off and log back on for changes to
the class to take effect.

         Roger

_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to