def handle_pageUnloaded(self, ctx): """ Called after a refresh or window close. Save the page """ print 'Page Unloaded' self.client.send(js.alert('Page Unloaded Matey')) self.package.save(self.config.configDir/'unsavedWork.elp', True)
def recieveFieldData(self, client, fieldId, value, total, onDone=None): """ Called by client to give us a value from a certain field """ total = int(total) self.fieldsReceived.add(fieldId) obj, name = self.fieldId2obj(fieldId) # Decode the value decoded = '' toSearch = value def getMatch(): if toSearch and toSearch[0] == '%': match1 = self.reUni.search(toSearch) match2 = self.reChr.search(toSearch) if match1 and match2: if match1.start() < match2.start(): return match1 else: return match2 else: return match1 or match2 else: return self.reRaw.search(toSearch) match = getMatch() while match: num = match.groups()[-1] if len(num) > 1: decoded += unichr(int(num, 16)) else: decoded += num toSearch = toSearch[match.end():] match = getMatch() # Check the field type if fieldId in self.booleanFieldNames: setattr(obj, name, decoded[0].lower() == 't') elif fieldId in self.imgFieldNames: if not decoded.startswith("resources"): setattr(obj, name, toUnicode(decoded)) else: # Must be a string setattr(obj, name, toUnicode(decoded)) client.sendScript( js('document.getElementById("%s").style.color = "black"' % fieldId)) if len(self.fieldsReceived) == total: self.fieldsReceived = set() client.sendScript( js.alert((u"%s" % _('Settings saved')).encode('utf8'))) if onDone: client.sendScript(js(onDone))
def recieveFieldData(self, client, fieldId, value, total, onDone=None): """ Called by client to give us a value from a certain field """ total = int(total) self.fieldsReceived.add(fieldId) obj, name = self.fieldId2obj(fieldId) # Decode the value decoded = '' toSearch = value def getMatch(): if toSearch and toSearch[0] == '%': match1 = self.reUni.search(toSearch) match2 = self.reChr.search(toSearch) if match1 and match2: if match1.start() < match2.start(): return match1 else: return match2 else: return match1 or match2 else: return self.reRaw.search(toSearch) match = getMatch() while match: num = match.groups()[-1] if len(num) > 1: decoded += unichr(int(num, 16)) else: decoded += num toSearch = toSearch[match.end():] match = getMatch() # Check the field type if fieldId in self.booleanFieldNames: setattr(obj, name, decoded[0].lower() == 't') elif fieldId in self.imgFieldNames: if not decoded.startswith("resources"): setattr(obj, name, toUnicode(decoded)) else: # Must be a string setattr(obj, name, toUnicode(decoded)) client.sendScript(js( 'document.getElementById("%s").style.color = "black"' % fieldId)) if len(self.fieldsReceived) == total: self.fieldsReceived = set() client.sendScript(js.alert( (u"%s" % _('Settings saved')).encode('utf8'))) if onDone: client.sendScript(js(onDone))
def recieveFieldData(self, client, fieldId, value, number, total): """ Called by client to give us a value from a certain field """ number = int(number) total = int(total) if number == 0: self.fieldsReceived = set([0]) else: self.fieldsReceived.add(fieldId) obj, name = self.fieldId2obj(fieldId) decoded = "" toSearch = value def getMatch(): if toSearch and toSearch[0] == "%": match1 = self.reUni.search(toSearch) match2 = self.reChr.search(toSearch) if match1 and match2: if match1.start() < match2.start(): return match1 else: return match2 else: return match1 or match2 else: return self.reRaw.search(toSearch) match = getMatch() while match: num = match.groups()[-1] if len(num) > 1: decoded += unichr(int(num, 16)) else: decoded += num toSearch = toSearch[match.end() :] match = getMatch() if fieldId in self.booleanFieldNames: setattr(obj, name, decoded[0].lower() == "t") else: setattr(obj, name, toUnicode(decoded)) client.sendScript(js('document.getElementById("%s").style.color = "black"' % fieldId)) if len(self.fieldsReceived) == total: client.sendScript(js.alert((u"%s" % _("Settings saved")).encode("utf8")))