def upgrade_2_0_to_3_0(self, tools, address): root = tools.root(address) root.get_node(2).erase() root.ensure_node(1, 1, 255, 7).set_data(piw.makelong(1, 0)) tools.substitute_connection(paths.makeid_list(address, 2), paths.makeid_list(address, 2, 1)) return True
def convert_atom(atom,extra={},ext=253): metadata = extra.copy() children = map(ord,atom.list_children()) if 254 in children: children.remove(254) if 255 in children: children.remove(255) metanode = atom.get_child(255) metadata.update(convert_metadata(metanode)) if 253 in children: children.remove(253) convert_list(atom.get_child(253)) data = piw.dictnull(0) for (k,v) in metadata.iteritems(): if isinstance(v,str): data = piw.dictset(data,k,piw.makestring(v,0)) elif isinstance(v,int): data = piw.dictset(data,k,piw.makelong(v,0)) elif isinstance(v,bool): data = piw.dictset(data,k,piw.makebool(v,0)) atom.set_data(data) for c in children: convert_atom(atom.get_child(c))
def set_name(self,name): name = name.split() ordinal = None try: if len(name)>0: ordinal=int(name[-1]) name = name[:-1] except: pass name = ' '.join(name) d = self.get_data() if d.is_null(): d = piw.dictnull(0) if d.is_dict(): if name: d = piw.dictset(d,'name',piw.makestring(name,0)) else: d = piw.dictdel(d,'name') if ordinal: d = piw.dictset(d,'ordinal',piw.makelong(ordinal,0)) else: d = piw.dictdel(d,'ordinal') self.set_data(d)
def upgrade_7_0_to_8_0(self,tools,address): root = tools.root(address) rnode = root.ensure_node(4,17,255) rnode.ensure_node(1).set_data(piw.makestring('',0)) rnode.ensure_node(8).set_data(piw.makestring('relative octave input',0)) root.ensure_node(4,17,254).set_data(piw.makelong(0,0)) return True
def set_property_long(self, key, value, allow_veto=False, notify=True, delegate=None): self.set_property(key, piw.makelong(value, 0), allow_veto, notify, delegate)
def __init__(self, agent, row=None): self.__agent = agent self.__fastdata = bundles.FastSender() atom.Atom.__init__(self, domain=domain.Aniso(), policy=policy.FastReadOnlyPolicy()) self.get_policy().set_source(self.__fastdata) self.get_policy().set_clock(self.__agent.model.get_clock()) self.set_private( node.static(_1=node.Server(change=self.__changetarget), _2=node.Server(value=piw.makelong(1, 0), change=self.__changerefs))) self.target = self.get_private()[1] self.refs = self.get_private()[2] if row is not None: self.__changetarget(piw.makelong(row, 0))
def upgrade_1_0_0_to_1_0_1(self,tools,address): keys = tools.get_root(address).get_node(3) for k in keys.iter(exclude=(254,255)): ko = k.path[-1] km = k.get_data() km = piw.dictset(km,'name',piw.makestring('key',0)) km = piw.dictset(km,'ordinal',piw.makelong(ko,0)) k.set_data(km) for e in k.iter(exclude=(254,255)): eo = e.path[-1] em = e.get_data() et = e.ensure_node(255).get_data() em = piw.dictset(em,'name',piw.makestring('action',0)) em = piw.dictset(em,'ordinal',piw.makelong(ko,0)) em = piw.dictset(em,'help',et if et.is_string() else piw.makestring('',0)) e.set_data(em) e.erase_child(255)
def __init__(self,agent,controller,index): atom.Atom.__init__(self,creator=self.__create,wrecker=self.__wreck,ordinal=index,names='key') self.__event = piw.fasttrigger(const.light_unknown) self.__event.attach_to(controller,index) self.__handler = piw.change2_nb(self.__event.trigger(),utils.changify(self.event_triggered)) self.key_aggregator = piw.aggregator(agent.light_aggregator.get_output(index+1),agent.domain) self.agent = agent self.index = index self.set_private(node.Server(value=piw.makelong(3,0),change=self.__change_color)) self.set_internal(250,atom.Atom(domain=domain.Trigger(),init=False,names='activate',policy=policy.TriggerPolicy(self.__handler),transient=True))
def __init__(self,agent,index): self.agent = agent self.__fastdata = bundles.FastSender() collection.Collection.__init__(self,domain=domain.Aniso(),policy=policy.FastReadOnlyPolicy(),creator=self.__create,wrecker=self.__wreck,ordinal=index,names='row',protocols='hidden-connection remove explicit') self.get_policy().set_source(self.__fastdata) self.get_policy().set_clock(self.agent.model.get_clock()) self.set_private(node.static(_1=node.Server(change=self.__changetarget))) self.target = self.get_private()[1] if index is not None: self.__changetarget(piw.makelong(index-1,0))
def upgrade_2_0_to_3_0(self, tools, address): root = tools.root(address) root.get_node(1).erase() tools.substitute_connection(paths.makeid_list(address, 1), paths.makeid_list(address, 1, 1)) old_2 = root.get_node(2) root.get_node(2).erase() root.ensure_node(2, 1).copy(old_2) root.ensure_node(2, 1).rename(names='audio input') root.ensure_node(2, 1, 255, 7).set_data(piw.makelong(1, 0)) return True
def upgrade_0_0_to_1_0(self, tools, address): root = tools.root(address) loopstart = piw.makelong( 1 + root.get_node(7, 255, 6, 1).get_data().as_long(), 0) loopend = piw.makelong( 1 + root.get_node(7, 255, 6, 2).get_data().as_long(), 0) step = root.get_node(8, 1) frac = root.get_node(8, 2) root.remove(7) root.remove(8) root.ensure_node(7, 1, 255, 1).set_string('bint(1,10000,1,[])') root.ensure_node(7, 1, 255, 8).set_string('loopstart') root.ensure_node(7, 1, 255, 17) root.ensure_node(7, 1, 255, 18) root.ensure_node(7, 1, 254).set_data(loopstart) root.ensure_node(7, 2, 255, 1).set_string('bint(1,10000,1,[])') root.ensure_node(7, 2, 255, 8).set_string('loopend') root.ensure_node(7, 2, 255, 17) root.ensure_node(7, 2, 255, 18) root.ensure_node(7, 2, 254).set_data(loopend) root.ensure_node(7, 3).copy(step) root.ensure_node(7, 3, 255, 17) root.ensure_node(7, 3, 255, 18) root.ensure_node(7, 4).copy(frac) root.ensure_node(7, 4, 255, 17) root.ensure_node(7, 4, 255, 18) root.remove(8) root.ensure_node(255, 6).set_data(piw.makebool(True, 0)) return True
def __addvoiceatom(self,root,voice,file,vol,chop,playing): voice_node = root.ensure_node(5,voice) voice_node.ensure_node(255,7).set_data(piw.makelong(voice,0)) voice_node.ensure_node(255,8).set_data(piw.makestring('voice',0)) voice_node.ensure_node(255,6).set_data(piw.makestring(logic.render_term((file,playing)),0)) voice_node.ensure_node(255,1) voice_node.ensure_node(255,3) volume_node = voice_node.ensure_node(1) volume_node.ensure_node(255,8).set_data(piw.makestring('volume',0)) volume_node.ensure_node(255,1) volume_node.ensure_node(255,3) volume_node.ensure_node(254).set_data(piw.makefloat(vol,0)) chop_node = voice_node.ensure_node(2) chop_node.ensure_node(255,8).set_data(piw.makestring('chop',0)) chop_node.ensure_node(255,1) chop_node.ensure_node(255,3) chop_node.ensure_node(254).set_data(piw.makefloat(chop,0))
def event_triggered(self,v): self.get_internal(250).get_policy().set_status(piw.makelong(0,0)) self.set_status(piw.makelong(self.agent.light_convertor.get_status(self.index),piw.tsd_time()))
def default(self): return piw.makelong(0, 0)
def value2data(self, v, t=0L): v = long(v) return piw.makelong(v, t)
def upgrade_2_0_to_3_0(self,tools,address): root = tools.root(address) root.ensure_node(2,1,255,const.meta_ordinal).set_data(piw.makelong(1,0)) return True
def set_long(self, value, ts=0): self.dbnode.set_data(piw.makelong(value, ts))
def __end_change(self,v): fc = piw.fastchange(self.__agent.model.set_loopend()) fc(piw.makelong(v-1,0)) return True
def addref(self): r = self.refs.get_data().as_long() self.refs.set_data(piw.makelong(r+1,0))
def delref(self): r = self.refs.get_data().as_long() if r==1: return True self.refs.set_data(piw.makelong(r-1,0)) return False
def set_format(snap, fmt): a = snap.get_agent_address(255, 'meta', True) a.get_root().get_child(6).set_data(piw.makelong(fmt, 0))
def set_color(self,c): self.agent.light_convertor.set_default_color(self.index,c) self.get_private().set_data(piw.makelong(c,0))
def set_property_long(self, key, value, allow_veto=False): self.set_property(key, piw.makelong(value, 0), allow_veto)
def set_meta_long(self,key,value): self.set_meta(key,piw.makelong(value,0))
def maketuple_longs(items, ts): d = piw.tuplenull(ts) for v in items: d = piw.tupleadd(d, piw.makelong(v, ts)) return d