mirror of
https://github.com/microsoft/PowerToys.git
synced 2024-12-14 03:37:10 +08:00
108 lines
2.7 KiB
Python
108 lines
2.7 KiB
Python
#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":[]})
|