defineSelectedWord.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import urllib
  2. import json
  3. import globalPluginHandler
  4. import scriptHandler
  5. import api
  6. import textInfos
  7. from ui import message, browseableMessage
  8. import addonHandler
  9. addonHandler.initTranslation()
  10. class GlobalPlugin(globalPluginHandler.GlobalPlugin):
  11. def define(self, word, lang='es'):
  12. link='https://googledictionaryapi.eu-gb.mybluemix.net/?define='+word+'&lang='+lang
  13. output=''
  14. f = urllib.urlopen(link)
  15. myfile = f.read().decode("utf-8")
  16. jsonDict=json.loads(myfile)
  17. meaning=jsonDict[0]['meaning']
  18. for k, v in meaning.items():
  19. if k!=u'':
  20. output+=k
  21. for d in v['definitions']:
  22. if d['definition']!=u'':
  23. output+='\n'+d['definition']
  24. return output
  25. def script_defineSelectedWord(self,gesture):
  26. obj = api.getFocusObject()
  27. treeInterceptor = obj.treeInterceptor
  28. if hasattr(treeInterceptor,'TextInfo') and not treeInterceptor.passThrough:
  29. obj = treeInterceptor
  30. try:
  31. info = obj.makeTextInfo(textInfos.POSITION_SELECTION)
  32. except (RuntimeError, NotImplementedError):
  33. info = None
  34. if not info or info.isCollapsed:
  35. # TRANSLATORS: Error message when there aren't any selected word
  36. message(_("Please select some word first."))
  37. else:
  38. browseableMessage(self.define(info.text.encode("utf-8")))
  39. # TRANSLATORS: Script __doc__
  40. script_defineSelectedWord.__doc__ = _("Defines selected word.")
  41. # TRANSLATORS: Script category
  42. script_defineSelectedWord.category = _("Text editing")
  43. __gestures = {
  44. "kb:control+shift+f11": "defineSelectedWord",
  45. }