Exemplo n.º 1
0
 def QueryContextMenu(self, hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags):        
     print 'QueryContextMenu'      
     # Query the items clicked on
     format_etc = win32con.CF_HDROP, None, 1, -1, pythoncom.TYMED_HGLOBAL
     try:
         sm = self.dataobj.GetData(format_etc)
     except pythoncom.com_error:
         return 0
     num_files = shell.DragQueryFile(sm.data_handle, -1)
     msg = "Scan For Viruses With ClamWin"
     if num_files>1:
         # we aren't handling multiple files
         return 0
     else:
         self._fname = shell.DragQueryFile(sm.data_handle, 0)
     idCmd = idCmdFirst
     items = []
     if (uFlags & 0x000F) == shellcon.CMF_NORMAL or uFlags & shellcon.CMF_EXPLORE: 
         items.append(msg)
     
     win32gui.InsertMenu(hMenu, indexMenu,
                         win32con.MF_SEPARATOR|win32con.MF_BYPOSITION,
                         0, None)
     indexMenu += 1
     for item in items:
         win32gui.InsertMenu(hMenu, indexMenu,
                             win32con.MF_STRING|win32con.MF_BYPOSITION,
                             idCmd, item)
         indexMenu += 1
         idCmd += 1
     win32gui.InsertMenu(hMenu, indexMenu,
                         win32con.MF_SEPARATOR|win32con.MF_BYPOSITION,
                         0, None)
     indexMenu += 1
     return idCmd-idCmdFirst # Must return number of menu items we added.
Exemplo n.º 2
0
    def QueryContextMenu(self, hMenu, indexMenu, idCmdFirst, idCmdLast,
                         uFlags):
        if (uFlags & 0x000F) != shellcon.CMF_NORMAL:
            return 0

        format_etc = win32con.CF_HDROP, None, 1, -1, pythoncom.TYMED_HGLOBAL
        sm = self.dataobj.GetData(format_etc)
        num_files = shell.DragQueryFile(sm.data_handle, -1)
        if num_files != 1:
            return 0

        folder_name = shell.DragQueryFile(sm.data_handle, 0)
        if not os.path.isdir(folder_name):
            return 0

        self.folder = folder_name

        idCmd = idCmdFirst
        win32gui.InsertMenu(hMenu, indexMenu,
                            win32con.MF_SEPARATOR | win32con.MF_BYPOSITION, 0,
                            None)
        indexMenu += 1
        win32gui.InsertMenu(hMenu, indexMenu,
                            win32con.MF_STRING | win32con.MF_BYPOSITION, idCmd,
                            u'统计代码行数')
        indexMenu += 1
        idCmd += 1

        win32gui.InsertMenu(hMenu, indexMenu,
                            win32con.MF_SEPARATOR | win32con.MF_BYPOSITION, 0,
                            None)
        indexMenu += 1
        return idCmd - idCmdFirst  # Must return number of menu items we added.
Exemplo n.º 3
0
 def getFilesSelected(self):
     format_etc = win32con.CF_HDROP, None, 1, -1, pythoncom.TYMED_HGLOBAL
     sm = self.dataobj.GetData(format_etc)
     num_files = shell.DragQueryFile(sm.data_handle, -1)
     files = []
     for i in xrange(num_files):
         fpath = shell.DragQueryFile(sm.data_handle, i)
         files.append(fpath)
     return files
Exemplo n.º 4
0
    def QueryContextMenu(self, hMenu, indexMenu, idCmdFirst, idCmdLast,
                         uFlags):
        print("QCM", hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags)
        # Query the items clicked on
        format_etc = win32con.CF_HDROP, None, 1, -1, pythoncom.TYMED_HGLOBAL
        sm = self.dataobj.GetData(format_etc)
        num_files = shell.DragQueryFile(sm.data_handle, -1)
        if num_files > 1:
            msg = "&Hello from Python (with %d files selected)" % num_files
        else:
            fname = shell.DragQueryFile(sm.data_handle, 0)
            msg = "&Hello from Python (with '%s' selected)" % fname
        idCmd = idCmdFirst
        items = ["First Python content menu item"]
        if (uFlags & 0x000F
            ) == shellcon.CMF_NORMAL:  # Check == here, since CMF_NORMAL=0
            print("CMF_NORMAL...")
            items.append(msg)
        elif uFlags & shellcon.CMF_VERBSONLY:
            print("CMF_VERBSONLY...")
            items.append(msg + " - shortcut")
        elif uFlags & shellcon.CMF_EXPLORE:
            print("CMF_EXPLORE...")
            items.append(msg + " - normal file, right-click in Explorer")
        elif uFlags & CMF_DEFAULTONLY:
            print("CMF_DEFAULTONLY...\r\n")
        else:
            print("** unknown flags", uFlags)
        win32gui.InsertMenu(hMenu, indexMenu,
                            win32con.MF_SEPARATOR | win32con.MF_BYPOSITION, 0,
                            None)
        indexMenu += 1
        for item in items:
            win32gui.InsertMenu(
                hMenu,
                indexMenu,
                win32con.MF_STRING | win32con.MF_BYPOSITION,
                idCmd,
                item,
            )
            indexMenu += 1
            idCmd += 1

        win32gui.InsertMenu(hMenu, indexMenu,
                            win32con.MF_SEPARATOR | win32con.MF_BYPOSITION, 0,
                            None)
        indexMenu += 1
        return idCmd - idCmdFirst  # Must return number of menu items we added.
Exemplo n.º 5
0
    def QueryContextMenu(self, hMenu, indexMenu, idCmdFirst, idCmdLast,
                         uFlags):
        if (uFlags & 0x000F) != shellcon.CMF_NORMAL:
            return

        format_etc = win32con.CF_HDROP, None, 1, -1, pythoncom.TYMED_HGLOBAL
        sm = self.dataobj.GetData(format_etc)
        num_files = shell.DragQueryFile(sm.data_handle, -1)
        if num_files != 1:
            return

        items = []

        file_name = shell.DragQueryFile(sm.data_handle, 0)
        if not os.path.isdir(file_name):
            folder_name = os.path.dirname(file_name)
        else:
            folder_name = file_name

        msg = "Cmd Window at %s" % folder_name
        items.append(msg)

        self.folder = folder_name

        idCmd = idCmdFirst

        win32gui.InsertMenu(hMenu, indexMenu,
                            win32con.MF_SEPARATOR | win32con.MF_BYPOSITION, 0,
                            None)
        indexMenu += 1
        for item in items:
            win32gui.InsertMenu(hMenu, indexMenu,
                                win32con.MF_STRING | win32con.MF_BYPOSITION,
                                idCmd, item)
            indexMenu += 1
            idCmd += 1

        win32gui.InsertMenu(hMenu, indexMenu,
                            win32con.MF_SEPARATOR | win32con.MF_BYPOSITION, 0,
                            None)
        indexMenu += 1
        return idCmd - idCmdFirst  # Must return number of menu items we added.
Exemplo n.º 6
0
    def QueryContextMenu(self, hMenu, indexMenu, idCmdFirst, idCmdLast,
                         uFlags):
        print("QCM", hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags)
        # Query the items clicked on
        format_etc = win32con.CF_HDROP, None, 1, -1, pythoncom.TYMED_HGLOBAL
        sm = self.dataobj.GetData(format_etc)
        num_files = shell.DragQueryFile(sm.data_handle, -1)

        firstFile = shell.DragQueryFile(sm.data_handle, 0)
        folder = path.dirname(firstFile)
        self.folderObject = TaggerFolder(folder)

        self.cmdUnitMap = []
        # fnames = [shell.DragQueryFile(sm.data_handle, i) for i in range(num_files)]
        # TaggerFile is not for multifiles, so just pause toggleTagunits
        self.fileObject = TaggerFile(self.folderObject,
                                     path.basename(firstFile))

        win32gui.InsertMenu(hMenu, indexMenu,
                            win32con.MF_SEPARATOR | win32con.MF_BYPOSITION, 0,
                            None)
        indexMenu += 1

        flag = win32con.MF_STRING | win32con.MF_BYPOSITION
        idCmd = idCmdFirst
        if num_files > 1:
            pass
            # if more than one file selected, then add the tag to all of them.
            # what if want to remove the tag from all of them? rare case, right?
        else:
            win32gui.InsertMenu(
                hMenu, indexMenu, flag, idCmd,
                self.fileObject.getTitle() or "- unspecified title -")
            indexMenu += 1
        idCmd += 1
        submenu = win32gui.CreatePopupMenu()
        subindex = 0
        for tagClass in self.fileObject.getTag():
            win32gui.InsertMenu(submenu, subindex, flag | win32con.MF_DISABLED,
                                0, "- %s -" % tagClass["name"])
            subindex += 1
            for tagItem in tagClass["tags"]:
                self.cmdUnitMap.append(tagItem["tagunit"])
                f = flag
                if tagItem["checked"]:
                    f |= win32con.MF_CHECKED
                win32gui.InsertMenu(submenu, subindex, f, idCmd,
                                    tagItem["name"])
                subindex += 1
                idCmd += 1
        win32gui.InsertMenu(
            hMenu, indexMenu,
            win32con.MF_POPUP | win32con.MF_STRING | win32con.MF_BYPOSITION,
            submenu, APP)
        indexMenu += 1

        win32gui.InsertMenu(hMenu, indexMenu,
                            win32con.MF_SEPARATOR | win32con.MF_BYPOSITION, 0,
                            None)
        indexMenu += 1
        return idCmd - idCmdFirst  # Must return number of menu items we added.