# HG changeset patch
# User Peer Sommerlund <[EMAIL PROTECTED]>
# Date 1207077728 -7200
# Node ID b82cd25622cf9735658b75bf167dbc708d35fb04
# Parent 8a6b2ec1828eab46429eaf2ec102782ca186e5e3
overlay: Use TortoiseOverlays.dll for overlays
This change will make it possible for THG to coexist with TSVN and
TCVS by sharing the overlay handler. The overlay handler is
TortoiseOverlays.dll which is assumed to be installed before you
install THG.
diff -r 8a6b2ec1828e -r b82cd25622cf tortoise/iconoverlay.py
--- a/tortoise/iconoverlay.py Sat Mar 08 06:58:22 2008 +0000
+++ b/tortoise/iconoverlay.py Tue Apr 01 21:22:08 2008 +0200
@@ -250,7 +250,7 @@
return S_OK
return S_FALSE
-def make_icon_overlay(name, icon, state, clsid):
+def make_icon_overlay(name, icon_type, state, clsid):
"""
Make an icon overlay COM class.
@@ -262,11 +262,11 @@
prog_id = "Mercurial.ShellExtension.%s" % classname
desc = "Mercurial icon overlay shell extension for %s files" % name.lower()
reg = [
- (_winreg.HKEY_LOCAL_MACHINE,
r"Software\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\%s"
% name) ]
+ (_winreg.HKEY_LOCAL_MACHINE, r"Software\TortoiseOverlays\%s" %
icon_type) ]
cls = type(
classname,
(IconOverlayExtension, ),
- dict(_reg_clsid_=clsid, _reg_progid_=prog_id, _reg_desc_=desc,
registry_keys=reg, icon=icon, state=state))
+ dict(_reg_clsid_=clsid, _reg_progid_=prog_id, _reg_desc_=desc,
registry_keys=reg, state=state))
_overlay_classes.append(cls)
# We need to register the class as global, as pythoncom will
@@ -274,9 +274,9 @@
globals()[classname] = cls
_overlay_classes = []
-make_icon_overlay("Changed", "changed.ico", MODIFIED,
"{102C6A24-5F38-4186-B64A-237011809FAB}")
-make_icon_overlay("Unchanged", "unchanged.ico", UNCHANGED,
"{00FEE959-5773-424B-88AC-A01BFC8E4555}")
-make_icon_overlay("Added", "added.ico", ADDED,
"{8447DB75-5875-4BA8-9F38-A727DAA484A0}")
+make_icon_overlay("Changed", "Modified", MODIFIED,
"{4D0F33E1-654C-4A1B-9BE8-E47A98752BAB}")
+make_icon_overlay("Unchanged", "Normal", UNCHANGED,
"{4D0F33E2-654C-4A1B-9BE8-E47A98752BAB}")
+make_icon_overlay("Added", "Added", ADDED,
"{4D0F33E3-654C-4A1B-9BE8-E47A98752BAB}")
def get_overlay_classes():
"""
diff -r 8a6b2ec1828e -r b82cd25622cf tortoisehg.py
--- a/tortoisehg.py Sat Mar 08 06:58:22 2008 +0000
+++ b/tortoisehg.py Tue Apr 01 21:22:08 2008 +0200
@@ -72,14 +72,18 @@
# Add the appropriate shell extension registry keys
for category, keyname in cls.registry_keys:
- _winreg.SetValue(category, keyname, _winreg.REG_SZ, cls._reg_clsid_)
+ key = _winreg.OpenKey(category, keyname, 0, _winreg.KEY_SET_VALUE)
+ _winreg.SetValueEx(key, "HG", 0, _winreg.REG_SZ, cls._reg_clsid_)
+ _winreg.CloseKey(key)
print cls._reg_desc_, "registration complete."
def UnregisterServer(cls):
for category, keyname in cls.registry_keys:
try:
- _winreg.DeleteKey(category, keyname)
+ key = _winreg.OpenKey(category, keyname, 0, _winreg.KEY_SET_VALUE)
+ _winreg.DeleteValue(key, "HG")
+ _winreg.CloseKey(key)
except WindowsError, details:
import errno
if details.errno != errno.ENOENT:
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Tortoisehg-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop