/[cvs]/nfo/projects/mess/src/client/windows/context_menu.py
ViewVC logotype

Diff of /nfo/projects/mess/src/client/windows/context_menu.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by joko, Sat Jun 3 15:11:27 2006 UTC revision 1.4 by joko, Sat Jun 3 16:33:30 2006 UTC
# Line 8  Line 8 
8  # * Right-Click on a .py file - locate and click on 'Hello from Python' on  # * Right-Click on a .py file - locate and click on 'Hello from Python' on
9  #   the context menu.  #   the context menu.
10    
11    # see also: http://www.codeproject.com/shell/ShellExtGuide2.asp
12    
13  import pythoncom  import pythoncom
14  from win32com.shell import shell, shellcon  from win32com.shell import shell, shellcon
15  import win32gui  import win32gui
16  import win32con  import win32con
17    import win32api, winerror
18    
19  IContextMenu_Methods = ["QueryContextMenu", "InvokeCommand", "GetCommandString"]  IContextMenu_Methods = ["QueryContextMenu", "InvokeCommand", "GetCommandString"]
20  IShellExtInit_Methods = ["Initialize"]  IShellExtInit_Methods = ["Initialize"]
# Line 55  class ShellExtension: Line 58  class ShellExtension:
58          items = []          items = []
59          if (uFlags & 0x000F) == shellcon.CMF_NORMAL: # Check == here, since CMF_NORMAL=0          if (uFlags & 0x000F) == shellcon.CMF_NORMAL: # Check == here, since CMF_NORMAL=0
60              print "CMF_NORMAL..."              print "CMF_NORMAL..."
61              items.append(msg)              items.append(msg + " - normal")
62          elif uFlags & shellcon.CMF_VERBSONLY:          elif uFlags & shellcon.CMF_VERBSONLY:
63              print "CMF_VERBSONLY..."              print "CMF_VERBSONLY..."
64              items.append(msg + " - shortcut")              items.append(msg + " - shortcut")
# Line 63  class ShellExtension: Line 66  class ShellExtension:
66              print "CMF_EXPLORE..."              print "CMF_EXPLORE..."
67              #items.append(msg + " - normal file, right-click in Explorer")              #items.append(msg + " - normal file, right-click in Explorer")
68              items.append(msg)              items.append(msg)
69                items.append("Named Shortcut &1")
70                items.append("Named Shortcut &2")
71          elif uFlags & CMF_DEFAULTONLY:          elif uFlags & CMF_DEFAULTONLY:
72              print "CMF_DEFAULTONLY...\r\n"              print "CMF_DEFAULTONLY...\r\n"
73              items.append("hello world - 1!")              items.append("hello world - 1!")
74          else:          else:
75              print "** unknown flags", uFlags              print "** unknown flags", uFlags
76              items.append("hello world - 2!")              items.append("hello world - 2!")
77            
78            # create menu entries
79          win32gui.InsertMenu(hMenu, indexMenu,          win32gui.InsertMenu(hMenu, indexMenu,
80                              win32con.MF_SEPARATOR|win32con.MF_BYPOSITION,                              win32con.MF_SEPARATOR|win32con.MF_BYPOSITION,
81                              0, None)                              idCmd, None)
82          indexMenu += 1          indexMenu += 1
83            idCmd += 1
84            
85          for item in items:          for item in items:
86              win32gui.InsertMenu(hMenu, indexMenu,              win32gui.InsertMenu(hMenu, indexMenu,
87                                  win32con.MF_STRING|win32con.MF_BYPOSITION,                                  win32con.MF_STRING|win32con.MF_BYPOSITION,
# Line 82  class ShellExtension: Line 91  class ShellExtension:
91    
92          win32gui.InsertMenu(hMenu, indexMenu,          win32gui.InsertMenu(hMenu, indexMenu,
93                              win32con.MF_SEPARATOR|win32con.MF_BYPOSITION,                              win32con.MF_SEPARATOR|win32con.MF_BYPOSITION,
94                              0, None)                              idCmd, None)
95          indexMenu += 1          indexMenu += 1
96            idCmd += 1
97            
98          return idCmd-idCmdFirst # Must return number of menu items we added.          return idCmd-idCmdFirst # Must return number of menu items we added.
99    
100        def GetCommandString(self, cmdId, typ):
101            #if cmdId == 0:
102            #  return "Hello from Python!!"
103            #else:
104            #  return "abc"
105            return self._reg_name_ + "_" + cmdId;
106    
107      def InvokeCommand(self, ci):      def InvokeCommand(self, ci):
108          mask, hwnd, verb, params, dir, nShow, hotkey, hicon = ci          mask, hwnd, verb, params, dir, nShow, hotkey, hicon = ci
         win32gui.MessageBox(hwnd, "\n".join(self.files_selected), "ArchiveMe", win32con.MB_OK)  
109    
110      def GetCommandString(self, cmd, typ):          # If lpVerb really points to a string, ignore this function call and bail out.
111          return "Hello from Python!!"          if win32api.HIWORD( verb ) != 0:
112              return winerror.E_INVALIDARG
113            
114            function_id = win32api.LOWORD(verb)
115            # TODO: establish mapping with building the context menus in "QueryContextMenu"
116            if function_id == 1:
117              method = "ArchiveMe"
118            elif function_id == 2:
119              method = "Shortcut 1"
120            elif function_id == 3:
121              method = "Shortcut 2"
122            else:
123              method = "Unknown"
124            
125            # do action(s)
126            win32gui.MessageBox(hwnd, "\n".join(self.files_selected), method, win32con.MB_OK)
127    
128    
129  def DllRegisterServer():  def DllRegisterServer():

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed