class PyDiry(launchy.Plugin): __version__ = "1.0" def __init__(self): launchy.Plugin.__init__(self) self.icon = os.path.join(launchy.getIconsPath(), "pydiry.ico") self.hash = launchy.hash(self.getName()) self.labelHash = launchy.hash("pydiry") self.dirs = CaselessDict() def init(self): self.__readConfig() pass def getID(self): return self.hash def getName(self): return "PyDiry" def getIcon(self): return self.icon def getLabels(self, inputDataList): pass def getResults(self, inputDataList, resultsList): inputs = len(inputDataList) if inputs != 2: return firstText = inputDataList[0].getText() if not self.dirs.has_key(firstText): return path = self.dirs[firstText] query = inputDataList[1].getText() if query == '': # Default query is '*' query = '*' elif not query.startswith('*') and not query.endswith('*'): # Add * at both sides to ease searching query = '*%s*' % query pathContents = glob.glob(os.path.join(path, query)) pathContents.sort() for itemPath in pathContents: resultsList.append( launchy.CatItem(itemPath, self.__makeShortName(itemPath), self.getID(), itemPath ) ) def getCatalog(self, resultsList): for name,path in self.dirs.items(): resultsList.push_back( launchy.CatItem( name + ".pydiry", name, self.getID(), self.getIcon() ) ) def launchItem(self, inputDataList, catItemOrig): catItem = inputDataList[-1].getTopResult() if catItem.fullPath.endswith(".pydiry"): # Launch the directory itself try: path = self.dirs[catItem.shortName] launchy.runProgram(path, "") except: pass else: # Launchy a file or directory launchy.runProgram( catItem.fullPath, "" ) def hasDialog(self): return True def doDialog(self, parentWidgetPtr): parentWidget = wrapinstance(parentWidgetPtr, QtGui.QWidget) self.widget = PyDiryGui.PyDiryUi(parentWidget) self.widget.show() return unwrapinstance(self.widget) def endDialog(self, accept): self.widget.hide() if accept: self.widget.writeSettings() self.__readConfig() del self.widget self.widget = None def __readConfig(self): settings = launchy.settings # Test if the settings file has PyDiry configuration version = settings.value("PyDiry/version", QVariant("0.0")).toString() print_debug("PyDiry version: " + version) if version == "0.0": settings.beginWriteArray("PyDiry/dirs") settings.setArrayIndex(0) settings.setValue("name", QVariant("My Documents")) settings.setValue("path", QVariant("%USERPROFILE%\\My Documents")) settings.endArray() # Set our version settings.setValue("PyDiry/version", QVariant(self.__version__)) self.dirs.clear() # Read directories from the settings file size = settings.beginReadArray("PyDiry/dirs") for i in range(0, size): settings.setArrayIndex(i); name = unicode(settings.value("name").toString()) path = unicode(settings.value("path").toString()) self.dirs[name] = expandvars(path) settings.endArray() def __makeShortName(self, itemPath): try: return os.path.split(itemPath)[1] except: return itemPath
class PyDiry(launchy.Plugin): __version__ = "1.0" setting_dir = "PyDiryPy" #setting_dir = "py_directories/dirs" #setting_dir = "py_speedcommander/dirs" def __init__(self): launchy.Plugin.__init__(self) self.hash = launchy.hash(self.getName()) # self.labelHash = launchy.hash("pydiry") self.dirs = CaselessDict() #self.icon = self.getIcon() def init(self): self.__readConfig() pass def getID(self): return int(self.hash) def getName(self): return "PyDiry" def setPath(self, path): self.path = path def getIcon(self): return self.path + "/pydiry.ico" def getLabels(self, inputDataList): pass def getResults(self, inputDataList, resultsList): inputs = len(inputDataList) if inputs != 2: return firstText = inputDataList[0].getText() if not self.dirs.has_key(firstText): return path = self.dirs[firstText] query = inputDataList[1].getText() if query == '': # Default query is '*' query = '*' elif not query.startswith('*') and not query.endswith('*'): # Add * at both sides to ease searching query = '*%s*' % query pathContents = glob.glob(os.path.join(path, query)) pathContents.sort() for itemPath in pathContents: resultsList.append( launchy.CatItem(itemPath, self.__makeShortName(itemPath), self.getID(), itemPath ) ) def getCatalog(self, resultsList): for name,path in self.dirs.items(): resultsList.push_back( launchy.CatItem( name + ".pydiry", name, self.getID(), self.getIcon() ) ) def launchItem(self, inputDataList, catItemOrig): catItem = inputDataList[-1].getTopResult() if catItem.fullPath().endswith(".pydiry"): # Launch the directory itself try: path = self.dirs[catItem.shortName] launchy.runProgram(path, "") #import os,win32api #win32api.ShellExecute(0, '', os.path.join(working,"programs/nsis/~~~/makensisw.exe"), path, '', 1)# 前台打开 except: pass else: # Launchy a file or directory launchy.runProgram(catItem.fullPath(), "" ) def hasDialog(self): return True def doDialog(self, parentWidgetPtr): print(parentWidgetPtr) parentWidget = wrapinstance(parentWidgetPtr, QtWidgets.QWidget) self.widget = PyDiryGui.PyDiryUi(parentWidget, self.setting_dir) self.widget.show() return unwrapinstance(self.widget) def endDialog(self, accept): self.widget.hide() if accept: self.widget.writeSettings() self.__readConfig() del self.widget self.widget = None def __readConfig(self): settings = launchy.settings # Test if the settings file has PyDiry configuration # version = settings.value("PyDiry/version", QVariant("0.0")).toString() # print_debug("PyDiry version: " + version) # if version == "0.0": # settings.beginWriteArray(self.setting_dir) # settings.setArrayIndex(0) # settings.setValue("name", QVariant("My Documents")) # settings.setValue("path", QVariant("%USERPROFILE%\\My Documents")) # settings.endArray() # # # Set our version # settings.setValue("PyDiry/version", QVariant(self.__version__)) self.dirs.clear() # Read directories from the settings file size = settings.beginReadArray(self.setting_dir) for i in range(0, size): settings.setArrayIndex(i); name = settings.value("name") path = settings.value("path") self.dirs[name] = expandvars(path) settings.endArray() def __makeShortName(self, itemPath): try: return os.path.split(itemPath)[1] except: return itemPath def launchyShow(self): pass def launchyHide(self): pass
class PyDiry(launchy.Plugin): __version__ = "1.0" setting_dir = "PyDiryPy" def __init__(self): launchy.Plugin.__init__(self) self.hash = launchy.hash(self.getName()) self.dirs = CaselessDict() def init(self): self.__readConfig() def getID(self): return int(self.hash) def getName(self): return "PyDiryPy" def setPath(self, path): self.path = path def getIcon(self): return self.path + "/pydiry.ico" def getLabels(self, inputDataList): pass def getResults(self, inputDataList, resultsList): if len(inputDataList) != 2: return firstText = inputDataList[0].getText() if not self.dirs.has_key(firstText): return path = self.dirs[firstText] query = inputDataList[1].getText() if query == '': # Default query is '*' query = '*' elif not query.startswith('*') and not query.endswith('*'): # Add * at both sides to ease searching query = '*%s*' % query pathContents = glob.glob(os.path.join(path, query)) pathContents.sort() for itemPath in pathContents: resultsList.append( launchy.CatItem(itemPath, self.__makeShortName(itemPath), self.getID(), itemPath)) def getCatalog(self, resultsList): for name, path in self.dirs.items(): resultsList.push_back( launchy.CatItem(name + ".pydiry", name, self.getID(), self.getIcon())) def launchItem(self, inputDataList, catItemOrig): catItem = inputDataList[-1].getTopResult() if catItem.fullPath().endswith(".pydiry"): # Launch the directory itself try: path = self.dirs[catItem.shortName] launchy.runProgram(path, "") except: pass else: # Launchy a file or directory launchy.runProgram(catItem.fullPath(), "") def doDialog(self, parentWidgetPtr): parentWidget = wrapinstance(parentWidgetPtr, QtWidgets.QWidget) self.widget = PyDiryGui.PyDiryUi(parentWidget, self.setting_dir) self.widget.show() return unwrapinstance(self.widget) def endDialog(self, accept): self.widget.hide() if accept: self.widget.writeSettings() self.__readConfig() del self.widget self.widget = None def __readConfig(self): settings = launchy.settings self.dirs.clear() # Read directories from the settings file size = settings.beginReadArray(self.setting_dir) for i in range(0, size): settings.setArrayIndex(i) name = settings.value("name") path = settings.value("path") self.dirs[name] = expandvars(path) settings.endArray() def __makeShortName(self, itemPath): try: return os.path.split(itemPath)[1] except: return itemPath