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 PyEC2(launchy.Plugin): __version__ = "1.0" def __init__(self): launchy.Plugin.__init__(self) self.icon = os.path.join(launchy.getIconsPath(), "pyec2.ico") self.hash = launchy.hash(self.getName()) self.labelHash = launchy.hash("ec2") self.tags = CaselessDict() def init(self): self.__readConfig() pass def getID(self): return self.hash def getName(self): return "PyEC2" def getIcon(self): return self.icon def getLabels(self, inputDataList): pass def getResults(self, inputDataList, resultsList): if len(inputDataList) != 2: return if not inputDataList[0].hasLabel(self.labelHash): return q = inputDataList[1].getText().lower() for tag, instances in self.tags.iteritems(): if q in tag: for instance in instances: resultsList.append( launchy.CatItem( '%s:%s.ec2' % (tag, instance), instance, self.getID(), self.getIcon(), ) ) def getCatalog(self, resultsList): for tag, instances in self.tags.items(): for instance in instances: resultsList.push_back( launchy.CatItem( '%s:%s.ec2' % (tag, instance), instance, self.getID(), self.getIcon() ) ) def launchItem(self, inputDataList, catItemOrig): catItem = inputDataList[-1].getTopResult() if catItem.fullPath.endswith(".ec2"): # Launch the directory itself try: path = self.tags[catItem.shortName] launchy.runProgram(path, "") except: pass else: # Launchy a file or directory launchy.runProgram( catItem.fullPath, "" ) def launchyShow(self): self._update() def __readConfig(self): settings = launchy.settings # Test if the settings file has PyEC2 configuration version = settings.value("PyEC2/version", QVariant("0.0")).toString() if version == "0.0": settings.beginWriteArray("PyEC2/settings") settings.setArrayIndex(0) settings.setValue("Name", QVariant("")) settings.setValue("Region", QVariant("")) settings.setValue("Access key", QVariant("")) settings.setValue("Secret key", QVariant("")) settings.endArray() # Set our version settings.setValue("PyEC2/version", QVariant(self.__version__)) self._update() def _update(self): self.tags.clear() # Read directories from the settings file settings = launchy.settings size = settings.beginReadArray("PyEC2/settings") for i in range(0, size): settings.setArrayIndex(i) name = unicode(settings.value("Name").toString()) region = unicode(settings.value("Region").toString()) access_key_id = unicode(settings.value("Access Key").toString()) secret_access_key = unicode(settings.value("Secret Key").toString()) region = '[REGION]' access_key_id = '[ACCES_KEY_ID]' secret_access_key = '[SECRET_ACCES_KEY]' if not (region and access_key_id and secret_access_key): continue ec2_connection = self.get_ec2_connection(region, access_key_id, secret_access_key) tags = collections.defaultdict(list) for reservation in ec2_connection.get_all_instances(): for instance in reservation.instances: for tag in instance.tags.itervalues(): if instance.public_dns_name: tags[tag].append(instance.public_dns_name) self.tags[name] = dict(tags) settings.endArray() @classmethod def get_ec2_connection(cls, region, access_key_id, secret_access_key): return ec2.connect_to_region( region, aws_access_key_id=access_key_id, aws_secret_access_key=secret_access_key, )
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" 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