~ntt-pf-lab/nova/monkey_patch_notification

« back to all changes in this revision

Viewing changes to vendor/Twisted-10.0.0/twisted/python/shortcut.py

  • Committer: Jesse Andrews
  • Date: 2010-05-28 06:05:26 UTC
  • Revision ID: git-v1:bf6e6e718cdc7488e2da87b21e258ccc065fe499
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
 
2
# See LICENSE for details.
 
3
 
 
4
 
 
5
"""Creation of  Windows shortcuts.
 
6
 
 
7
Requires win32all.
 
8
"""
 
9
 
 
10
from win32com.shell import shell
 
11
import pythoncom
 
12
import os
 
13
 
 
14
 
 
15
def open(filename):
 
16
    """Open an existing shortcut for reading.
 
17
 
 
18
    @return: The shortcut object
 
19
    @rtype: Shortcut
 
20
    """
 
21
    sc=Shortcut()
 
22
    sc.load(filename)
 
23
    return sc
 
24
 
 
25
 
 
26
class Shortcut:
 
27
    """A shortcut on Win32.
 
28
    >>> sc=Shortcut(path, arguments, description, workingdir, iconpath, iconidx)
 
29
    @param path: Location of the target
 
30
    @param arguments: If path points to an executable, optional arguments to
 
31
                      pass
 
32
    @param description: Human-readable decription of target
 
33
    @param workingdir: Directory from which target is launched
 
34
    @param iconpath: Filename that contains an icon for the shortcut
 
35
    @param iconidx: If iconpath is set, optional index of the icon desired
 
36
    """
 
37
 
 
38
    def __init__(self, 
 
39
                 path=None,
 
40
                 arguments=None, 
 
41
                 description=None,
 
42
                 workingdir=None,
 
43
                 iconpath=None,
 
44
                 iconidx=0):
 
45
        self._base = pythoncom.CoCreateInstance(
 
46
            shell.CLSID_ShellLink, None,
 
47
            pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink
 
48
        )
 
49
        data = map(None, 
 
50
                   ['"%s"' % os.path.abspath(path), arguments, description,
 
51
                    os.path.abspath(workingdir), os.path.abspath(iconpath)], 
 
52
                   ("SetPath", "SetArguments", "SetDescription",
 
53
                   "SetWorkingDirectory") )
 
54
        for value, function in data:
 
55
            if value and function:
 
56
                # call function on each non-null value
 
57
                getattr(self, function)(value)
 
58
        if iconpath:
 
59
            self.SetIconLocation(iconpath, iconidx)
 
60
 
 
61
    def load( self, filename ):
 
62
        """Read a shortcut file from disk."""
 
63
        self._base.QueryInterface(pythoncom.IID_IPersistFile).Load(filename)
 
64
    
 
65
    def save( self, filename ):
 
66
        """Write the shortcut to disk.
 
67
 
 
68
        The file should be named something.lnk.
 
69
        """
 
70
        self._base.QueryInterface(pythoncom.IID_IPersistFile).Save(filename, 0)
 
71
    
 
72
    def __getattr__( self, name ):
 
73
        if name != "_base":
 
74
            return getattr(self._base, name)
 
75
        raise AttributeError, "%s instance has no attribute %s" % \
 
76
                (self.__class__.__name__, name)