#encoding=utf8 import json import sys import inspect import chardet class Wox(object): """ Wox python plugin base """ def __init__(self): rpc_request = json.loads(sys.argv[1],encoding=chardet.detect(sys.argv[1])["encoding"]) self.proxy = rpc_request.get("proxy",{}) request_method_name = rpc_request.get("method") request_parameters = rpc_request.get("parameters") methods = inspect.getmembers(self, predicate=inspect.ismethod) request_method = dict(methods)[request_method_name] results = request_method(*request_parameters) if request_method_name == "query": print json.dumps({"result": results}) def query(self,query): """ sub class need to override this method """ return [] def debug(self,msg): """ alert msg """ print "DEBUG:{}".format(msg) sys.exit() class WoxAPI(object): @classmethod def change_query(cls,query,requery = False): """ change wox query """ print json.dumps({"method": "Wox.ChangeQuery","parameters":[query,requery]}) @classmethod def shell_run(cls,cmd): """ run shell commands """ print json.dumps({"method": "Wox.ShellRun","parameters":[cmd]}) @classmethod def close_app(cls): """ close wox """ print json.dumps({"method": "Wox.CloseApp","parameters":[]}) @classmethod def hide_app(cls): """ hide wox """ print json.dumps({"method": "Wox.HideApp","parameters":[]}) @classmethod def show_app(cls): """ show wox """ print json.dumps({"method": "Wox.ShowApp","parameters":[]}) @classmethod def show_msg(cls,title,sub_title,ico_path=""): """ show messagebox """ print json.dumps({"method": "Wox.ShowMsg","parameters":[title,sub_title,ico_path]}) @classmethod def open_setting_dialog(cls): """ open setting dialog """ print json.dumps({"method": "Wox.OpenSettingDialog","parameters":[]}) @classmethod def start_loadingbar(cls): """ start loading animation in wox """ print json.dumps({"method": "Wox.StartLoadingBar","parameters":[]}) @classmethod def stop_loadingbar(cls): """ stop loading animation in wox """ print json.dumps({"method": "Wox.StopLoadingBar","parameters":[]}) @classmethod def reload_plugins(cls): """ reload all wox plugins """ print json.dumps({"method": "Wox.ReloadPlugins","parameters":[]})