def saveConfig(self, jkey, value): WoxAPI.change_query('') self.configfile[jkey] = value with open(os.path.join(os.path.dirname(__file__), "config.json"), "w+") as jsonFile: jsonFile.write(json.dumps(self.configfile)) jsonFile.close()
def createPalette(self, name): self.initializeLibrary() self.library['palettes'].append({ "name": name, "colors": [] }) self.saveLibrary() WoxAPI.change_query("tint palette " + name)
def store_tip(self, info): try: times = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) tip = {"tip": info, "updated_time": times} with open(self.TIPS_FILE, "a") as f: f.write(json.dumps(tip) + "\n") WoxAPI.change_query("tip") except: logging.error(traceback.format_exc())
def addColor(self, paletteName, hexColor): self.initializeLibrary() palette = self.findPalette(paletteName) if palette: palette['colors'].append({ 'hex': hexColor }) self.saveLibrary() WoxAPI.change_query("tint palette " + paletteName)
def delete_tip(self, times): try: tips = [] with open(self.TIPS_FILE, "r") as f: for line in f: tips.append(json.loads(line.strip())) for tip in tips: if times == tip["updated_time"]: tips.remove(tip) break with open(self.TIPS_FILE, "w") as f: for tip in tips: f.write(json.dumps(tip) + "\n") WoxAPI.change_query("tip") except: logging.error(traceback.format_exc())
def activate(self, service, title, query): action = "toggle" if get_type(service) == "media_player": action = "media_play_pause" if query != title: action = None WoxAPI.change_query("ha " + title + " ",True) try: if action != None: post_data('http://' + ha_ip + ':' + ha_port + '/api/services/' + str(get_type(service)) + '/' + str(action) + '?api_password=' + ha_password,{ "entity_id": str(service) }) #WoxAPI.start_loadingbar(self) #time.sleep(0.8) #WoxAPI.stop_loadingbar(self) #if query.endswith("trigger"): #WoxAPI.change_query("dimming " + fn,True) #else: #WoxAPI.change_query("ha " + fn,True) except: pass
def change_query_method(self, query): WoxAPI.change_query(query + '(')
def change_query(self, query): # change query and copy to clipboard after pressing enter WoxAPI.change_query(query) copy_to_clipboard(query)
def query(self, query): results = [] argument = "" argument = query.split() #---handle connection errors if len(argument) >= 1: for keywords in key_services: title = keywords subtext = keywords ico = './icons/icons_' + icon_color + "/filter.png" if query.strip().lower() in keywords.lower(): #---add filters to results if argument[0] not in key_services: results.append({ "Title": "Filter by: [" + keywords + "]", "SubTitle": "show " + keywords + " services only", "IcoPath":ico, "JsonRPCAction": { "method": "Wox.ChangeQuery", "parameters": ["ha" + " " + keywords, True], "dontHideAfterAction": True } }) service = get_entity(argument[0]) if service == -1: WoxAPI.change_query("ha connection error",True) for x in range(0, len(service)): entity_id = service[x]["entity_id"] try: title = service[x]["attributes"]["friendly_name"] except: title = entity_id state = service[x]["state"] try: unit_of_measurement = service[x]["attributes"]["unit_of_measurement"] state += unit_of_measurement except: pass ico = get_icon(entity_id,state) subtext = get_attributes(service,x) #----Check if user is refrencing a service keyword and filters it out of query if argument[0].rstrip("s") in key_services: if query.replace(argument[0],"",1).strip().lower() in title.lower(): results.append({ "Title": title + " is " + '\"' + state + '\"', "SubTitle": subtext, "IcoPath":ico, "JsonRPCAction":{ "method": "activate", "parameters":[entity_id,title,query], "dontHideAfterAction":True, } }) else: #----check if query matches any results if query.lower().strip() in title.lower(): results.append({ "Title": title + " is " + '\"' + state + '\"', "SubTitle": subtext, "IcoPath":ico, "JsonRPCAction":{ "method": "activate", "parameters":[entity_id,title,query], "dontHideAfterAction":True } }) #----Check to see if only one match and if exact match of title (No false positives when using filters) if query.lower().strip().startswith(title.lower()): results = [] #----Add entry for every attribute if not query.lower().replace(title.lower(),"",1).strip().startswith("info".lower()): if get_type(entity_id) == "light": ico = get_icon(entity_id, state) percentage = query.lower().replace(title.lower(),"",1).strip() results.append({ "Title": "Adjust Brightness", "SubTitle": "Adjust brightness level to " + query.replace(title.lower(),"",1).lower().strip() + "%", "IcoPath":ico, "JsonRPCAction":{ "method": "adjust_brightness", "parameters":[entity_id,percentage], "dontHideAfterAction":True } }) results.append({ "Title": "Toggle", "SubTitle": "Toggle " + title, "IcoPath":ico, "JsonRPCAction":{ "method": "activate", "parameters":[entity_id,title,query], "dontHideAfterAction":True } }) else: results.append({ "Title": "Action", "SubTitle": "Activate default action for " + get_type(entity_id), "IcoPath":ico, "JsonRPCAction":{ "method": "activate", "parameters":[entity_id,title,query], "dontHideAfterAction":True } }) if subtext != "N/A": ico = './icons/icons_' + icon_color + '/info.png' results.append({ "Title": "Info", "SubTitle": "Show detailed information", "IcoPath":ico, "JsonRPCAction": { "method": "Wox.ChangeQuery", "parameters": ["ha " + query + " info" , True], "dontHideAfterAction": True } }) if query.lower().replace(title.lower(),"",1).strip().startswith("info".lower()): results = [] for g in range(len(service[x]["attributes"].keys())): key = list(service[x]["attributes"].keys())[g].replace("_"," ") value = service[x]["attributes"].values()[g] try: value = removeNonAscii(value) except: value = value ico = './icons/icons_' + icon_color + '/info.png' if key != "friendly name" and key != "unit of measurement": if query.lower().replace(title.lower(),"",1).replace("info","",1).lower().strip().lower() in str(value).lower().strip().lower(): results.append({ "Title": value, "SubTitle": key, "IcoPath": ico, "JsonRPCAction": { "method": "Wox.ChangeQuery", "parameters": [str(key) + ": " + str(value), True], "dontHideAfterAction": True } }) #----No user input except action word else: for keywords in key_services: title = keywords subtext = keywords ico = './icons/icons_' + icon_color + "/filter.png" results.append({ "Title": "Filter by: [" + keywords + "]", "SubTitle": "show " + keywords + " services only", "IcoPath":ico, "JsonRPCAction": { #change query to show only service type "method": "Wox.ChangeQuery", "parameters": ["ha" + " " + keywords, False], # hide the query wox or not "dontHideAfterAction": True } }) return results
def config(self, text): WoxAPI.change_query('yt --config ' + text)
def openUrl(self, url): webbrowser.open(url) # todo:doesn't work when move this line up WoxAPI.change_query(url)
def openConfig(self): WoxAPI.change_query(PREFIX_CONFIG, True)
def change_query(self, query): WoxAPI.change_query(query)
def openInBrowser(self, url): webbrowser.open(url) WoxAPI.change_query("")
def callwechat(self, friend): os.popen(f'start wechatcall.ahk {friend}') WoxAPI.change_query("")
def copy(self, ans): if flag_package: pyperclip.copy(ans) else: WoxAPI.change_query("tran ERROR: pyperclip is not installed")
def copy_to(self, data): pyperclip.copy(data) WoxAPI.change_query(data)
def handle(self, order): WoxAPI.change_query(order, True)
def saveConfig(self, jkey, value): WoxAPI.change_query('') self.configfile[jkey] = value with open(os.path.join(os.path.dirname(__file__),"config.json"), "w+") as jsonFile: jsonFile.write(json.dumps(self.configfile)) jsonFile.close()
def openUrl(self, url): webbrowser.open(url) #remove input from Wox line WoxAPI.change_query('')
def hide_app(self): WoxAPI.change_query('d ')
def pasteContent(self): if _clipboard_exit: key = clipboard.paste() WoxAPI.change_query("wb " + key)
def openUrl(self, url): webbrowser.open(url) WoxAPI.change_query(url)
def copy(self, ans): if flag: pyperclip.copy(ans) else: WoxAPI.change_query("ERROR: pyperclip is not installed", True)
def change_query(self, q): """method: 在搜索框替换新的查询字符串""" WoxAPI.change_query(q, False) # False: change过后不需要重新查询,但由于往往会触发一次query
def selectConfig(self, item): WoxAPI.change_query("{} {}".format(PREFIX_CONFIG, item), True)
def navigate(self, command): WoxAPI.change_query(command)
def openUrl(self, url): # webbrowser.open(url) webbrowser.open_new_tab(url) WoxAPI.change_query(url)
def openUrl(self,url): webbrowser.open(url) #remove input from Wox line WoxAPI.change_query('')
def open_url(self, url): webbrowser.open(url) WoxAPI.change_query(url)
def openUrl(self, url): # open the browser import webbrowser webbrowser.open(url) # todo:doesn't work when move this line up WoxAPI.change_query(url)
def openFolder(self, path: str): os.startfile(path) WoxAPI.change_query(path)