def requestpath(self, path): getconn().sioreq({ "kind": "getpath", "owner": self.id, "drive": self.drive, "path": path })
def requestdirlist(self): getconn().sioreq({ "kind": "getdirlist", "owner": self.id, "drive": self.drive, "dirpath": self.path() })
def startcallback(self): getconn().sioreq({ "kind": "startprocess", "key": self.key, "command": self.command, "command_args": self.command_args })
def requestcreatedir(self, createname): getconn().sioreq({ "kind": "createdir", "owner": self.id, "drive": self.drive, "path": self.comppath(createname), "dirpath": self.path() })
def requestsave(self, path, content): getconn().sioreq({ "kind": "savefile", "owner": self.id, "drive": self.drive, "content": content, "path": path })
def requestdeletedir(self, dir): getconn().sioreq({ "kind": "deletedir", "owner": self.id, "drive": self.drive, "path": self.comppath(dir), "dirpath": self.path() })
def sendline(self, sline): getconn().sioreq({ "kind": "sendline", "key": self.key, "command": self.command, "command_args": self.command_args, "sline": sline })
def movecallback(self, variantkey, fen, uci): if self.reqfenunderway: print("a fen request is in progress, cannot start a new one") return self.root.shift() self.root.reqfenunderway = True self.root.reqnode = self getconn().sioreq({ "kind": "forumgamemove", "owner": "forumgame", "moveuci": uci, "variantkey": variantkey, "fen": fen })
def idclicked(self): self.parent.loadedgameid = self.id self.parent.loadedgameside = "white" if self.meblack(): self.parent.loadedgameside = "black" self.parent.pgntext.setpgn(self.content) self.bds("dotted").bdw("6").bdc("#00f") localStorage.setItem("pgninfo/idclicked", self.id) self.pgnlistparent.bookmarkedpi = self getconn().sioreq({ "kind": "parsepgn", "owner": self.parent.id, "data": self.content })
def store(self): self.parenttabpane.contentdiv.bc("#faa") self.messagediv.html("Parsing JSON") try: obj = JSON.parse(self.textarea.getText()) self.messagediv.html("Storing JSON") getconn().sioreq({ "kind": "setforumgame", "owner": "forumgame", "forumgame": obj }) except: self.messagediv.html("Error: could not parse JSON") return
def dirclicked(): if dir == "..": if len(self.pathlist) > 0: self.pathlist.pop() self.requestdirlist() else: self.pathlist.append(dir) getconn().sioreq({ "kind": "appenddirtopath", "owner": self.id, "drive": self.drive, "dirpath": self.path(), "dir": dir }) self.pathlist.pop()
def __init__(self, args={}): super().__init__("div") self.id = args.get("id", "doc") self.startpage = args.get("startpage", "contents") self.showcontentslink = args.get("showcontentslink", True) self.mdconv = __new__(showdown.Converter()) self.docdiv = Div("docdiv") self.srcdiv = Div("srcdiv") self.a(self.docdiv) getconn().sioreq({ "kind": "getdoc", "owner": self.id, "data": self.startpage, "switchtodoctab": False })
def __init__(self, args={}): super().__init__("div") self.ac("dirbrowser") self.id = args.get("id", None) self.drive = args.get("drive", False) self.editclickedcallback = args.get("editclickedcallback", None) self.pathlist = [] self.listing = [] self.filesdiv = SplitPane({"controlheight": 40}) self.pathlabel = Div("pathlabel") self.createfilebutton = Button("Create file", self.createfileclicked) self.createdirbutton = Button("Create dir", self.createdirclicked) self.refreshbutton = Button("Refresh", self.refreshclicked) self.filesdiv.controlpanel.a([ self.pathlabel, self.createfilebutton, self.createdirbutton, self.refreshbutton ]) if self.drive: self.ziptocloudbutton = Button("Zip to cloud", self.ziptocloudclicked) self.unzipfromcloudbutton = Button("Unzip from cloud", self.unzipfromcloudclicked) self.filesdiv.controlpanel.a( [self.ziptocloudbutton, self.unzipfromcloudbutton]) self.filescontentdiv = Div() self.filesdiv.setcontentelement(self.filescontentdiv) self.editor = Editor() self.editor.reloadbutton.ae("mousedown", self.reloadclicked) self.editor.savebutton.ae("mousedown", self.saveclicked) self.uploader = FileUploader({ "url": "/dirbrowserupload", "accept": "*", "acceptdisplay": "file", "drive": self.drive, "dirbrowseruploadedcallback": self.dirbrowseruploadedcallback, "dirbrowsergetpathcallback": self.path, "getuid": getconn().getuid }) self.tabs = TabPane({ "id": self.id + "tabpane", "tabs": [ Tab("files", "Files", self.filesdiv), Tab("edit", "Edit", self.editor), Tab("upload", "Upload", self.uploader), ], "selected": "files" }) self.tabs.controlpanel.ac("subcontrolpanel") self.a(self.tabs) self.requestdirlist()
def onready(self): getconn().sioreq({"kind": "connected", "queryparams": queryparams})
def synclocalstorage(self): getconn().sioreq({"kind": "synclocalstorage", "owner": self.id})
def serializelocalstorage(self): getconn().sioreq({ "kind": "serializelocalstorage", "data": JSON.stringify(localStorage), "owner": self.id })
def serializeconfig(self): getconn().sioreq({ "kind": "serializeconfig", "data": self.configschema.toargs(), "owner": self.id })
def requestziptocloud(self): getconn().sioreq({ "kind": "ziptocloud", "owner": self.id, "drive": self.drive })
def reflinkclicked(): getconn().sioreq({"kind": "getdoc", "owner": self.id, "data": ref})
def stopcallback(self): getconn().sioreq({"kind": "stopprocess", "key": self.key})
def requestforumgame(self): getconn().sioreq({"kind": "getforumgame", "owner": "forumgame"})
def requestunzipfromcloud(self): getconn().sioreq({ "kind": "unzipfromcloud", "owner": self.id, "drive": self.drive })
def requestbots(self): getconn().sioreq({"kind": "getmybots"})
def build(self): self.root.innerHTML = "" self.owners["config"] = self.config if self.dodirbrowser: self.maindirbrowser = DirBrowser({"id": "maindirbrowser"}) self.owners["maindirbrowser"] = self.maindirbrowser else: self.maindirbrowser = Div() if self.dodrive: self.drive = DirBrowser({ "id": "drive", "drive": True, "editclickedcallback": self.driveeditclickedcallback }) self.owners["drive"] = self.drive else: self.drive = Div() self.createbotdiv() if self.doboard: self.mainboard = Board({ "dobook": self.dobook, "dostoredanalysis": self.dostoredanalysis, "dostoredauto": self.dostoredauto, "dogames": self.dogames, "setposinfo": self.setposinfo, "dogamepreview": self.dogamepreview, "background": self.boardbackground, "autoanalysisdelay": self.autoanalysisdelay, "maxgames": self.maxgames, "gamesfilter": self.gamesfilter, "analysispvlength": self.analysispvlength }) self.mainboard.setusername(self.username, self.usertoken) self.mainboard.tabpane.controlpanel.ac("subcontrolpanel") self.owners["mainboard"] = self.mainboard else: self.mainboard = Div() if self.dodocs: self.doc = Doc() self.srcdiv = self.doc.srcdiv self.owners["doc"] = self.doc else: self.doc = Div() self.srcdiv = Div() if self.doabout: self.about = Doc({ "id": "about", "startpage": "about", "showcontentslink": False }) self.owners["about"] = self.about else: self.about = Div() if self.isadmin: self.processpane = ProcessPane( {"configsch": self.config.getpath("processes")}) self.processpane.processtabpane.controlpanel.ac("subcontrolpanel") else: self.processpane = Div("featureplaceholder").html( "Admin only feature.") self.forumgametab = Tab( "forumgame", "Forum game", Div("featureplaceholder").html("Forum game disabled.")) if self.doforumgame: self.forumgame = Forumgame() self.forumgame.mainboard = self.mainboard self.owners["forumgame"] = self.forumgame self.forumgametab = Tab("forumgame", "Forum game", self.forumgame) self.tabs = TabPane({ "id": "maintabpane", "fillwindow": True, "tabs": [ Tab("config", "Config", self.config), Tab("upload", "Upload", FileUploader({"url": "/upload"})), Tab("board", "Board", self.mainboard), self.forumgametab, Tab("process", "Process", self.processpane), Tab("dirbrowser", "Dirbrowser", self.maindirbrowser), Tab("drive", "Drive", self.drive), Tab("bots", "Bots", self.botdiv), Tab("doc", "Doc", self.doc), Tab("src", "Src", self.srcdiv), Tab("log", "Log", getconn().log), getconn().profiletab, Tab("about", "About", self.about) ], "selected": "drive" }) self.root.appendChild(self.tabs.e) qseltab = queryparams.get("tab", None) if qseltab: self.tabs.selectbykey(qseltab)
def openclicked(): if self.drive: window.open("/file/drive/" + getconn().getuid() + "/" + self.comppath(dir)) else: window.open("/file/" + self.comppath(dir))