示例#1
0
    def __resolve1(self, id, path, ordinal, asTerm=False):
        a = logic.render_term((tuple(path), ordinal - 1))
        r = (yield rpc.invoke_rpc(id, 'finfo', a))

        if not r.status():
            print 'rpc error, finfo'
            yield async .Coroutine.failure(*r.args(), **r.kwds())

        flist = logic.parse_clause(r.args()[0])

        if not flist:
            yield async .Coroutine.failure('no selection %d' % ordinal)

        print 'flist=', flist

        (cookie, desc, name) = flist[0][:3]
        if len(flist[0]) > 3:
            aux = flist[0][3]

        a = logic.render_term((tuple(path), cookie))
        r = (yield rpc.invoke_rpc(id, 'fideal', a))

        if not r.status():
            print 'rpc error, fideal'
            yield async .Coroutine.failure(*r.args(), **r.kwds())

        try:
            ideal = logic.parse_clause(r.args()[0], paths.make_subst(id))
        except:
            print 'cant parse:', r.args()[0]
            raise

        print 'converted', ordinal, 'to ideal', ideal
        yield async .Coroutine.success(self.__render(ideal, asTerm))
示例#2
0
 def rpc_finfo(self,a):
     (path,idx) = logic.parse_clause(a)
     if len(path) == 1:
         p = self.__plugin_list.plugins_by_manufacturer.get(path[0])
         if p:
             return render_list(p,idx,lambda i,t: logic.render_term((plugin_id_escaped(t),t.name(),t.description())))
     return logic.render_term(())
    def rpc_cinfo(self,a):
        (path,idx) = logic.parse_clause(a)
        self.__scan()

        if len(path) == 0:
            return render_list(self.__files,idx,lambda i,t: logic.render_term((t)))

        return logic.render_term(())
示例#4
0
    def rpc_enumerate(self, arg):
        path = logic.parse_clause(arg)
        if len(path) > 0:
            if path[0] == factory_cat:
                return logic.render_term((len(self.__factory_fingerings), 0))
            if path[0] == user_cat:
                return logic.render_term((len(self.__user_fingerings), 0))

        return logic.render_term((0, 2))
    def rpc_finfo(self,a):
        (path,idx) = logic.parse_clause(a)

        if len(path) == 1:
            self.__scan()
            presets = self.__scanpresets(path[0])
            #return render_list(presets,idx,lambda i,t: logic.render_term((t[0],t[1],t[2],'autoload')))
            return render_list(presets,idx,lambda i,t: logic.render_term((t[0],t[1],t[2])))

        return logic.render_term(())
示例#6
0
 def rpc_finfo(self, a):
     (path, idx) = logic.parse_clause(a)
     if len(path) == 1:
         p = self.__plugin_list.plugins_by_manufacturer.get(path[0])
         if p:
             return render_list(
                 p, idx, lambda i, t: logic.render_term(
                     (plugin_id_escaped(t), t.name() + ' (' + t.format()
                      + prepad_not_empty(t.category()) + ')', t.description(
                      ))))
     return logic.render_term(())
    def rpc_dinfo(self,a):
        c=self.get_value()
        l=[]
        if c:
            l.append(('dinfo_id',c))
            l.append(('Current sample',c.split('|')[0]))
            return logic.render_term(T('keyval',tuple(l) ))
        else:
            n=self.get_description()
            l.append(('dinfo_id',n))

            return logic.render_term(T('keyval',tuple(l) ))
示例#8
0
    def rpc_finfo(self, a):
        (path, idx) = logic.parse_clause(a)
        self.__scan()

        if len(path) == 0:
            # list of tuples for the browser window, [(cookie,textcolumn1,textcolumn2),...]
            map = tuple([(files, files, self.__c2n.get(files))
                         for files in self.__files[idx:]])
            mapstr = logic.render_term(map)
            return mapstr

        return logic.render_term(())
示例#9
0
    def rpc_activated(self, arg):
        (path, selected) = logic.parse_clause(arg)
        if self.__selected == selected and self.__armed == self.__selected:
            self.__run()
            return logic.render_term(('', ''))

        self.__selected = selected
        self.__armed = selected
        self.__status = 'armed'
        print 'arming', self.__armed
        self.update()
        return logic.render_term(('', ''))
示例#10
0
    def rpc_enumerate(self,a):
        path = logic.parse_clause(a)
        self.__scan()

        if len(path) == 0:
            return logic.render_term((0, len(self.__f2p)))

        if len(path) == 1:
            p = self.__scanpresets(path[0])
            return logic.render_term((len(p), 0))

        return logic.render_term((0,0))
示例#11
0
    def rpc_enumerate(self,a):
        path=logic.parse_clause(a)
        if len(path)==0:
            r = logic.render_term((0,len(self.__plugin_list.plugins_by_manufacturer)))
            return r

        if len(path)==1:
            p = self.__plugin_list.plugins_by_manufacturer.get(path[0])
            if p:
                r = logic.render_term((len(p),0))
                return r

        r = logic.render_term((0,0))
        return r
示例#12
0
    def __mode(self,text,k,u):
        row = int(action.abstract_string(k))-1

        for v in self[5].itervalues():
            d = v.target.get_data()
            if d.is_long() and d.as_long()==row:
                v.addref()
                return logic.render_term((v.id(),('transient',)))

        i = self[5].find_hole()
        if i:
            self[5][i] = RowTarget(self,row)
            return logic.render_term((self[5][i].id(),('transient',)))

        return None
示例#13
0
    def rpc_dinfo(self, a):
        print 'scale __dinfo:'
        activated = self.__activated_name
        l = []
        if activated is not None:
            print 'scale dinfo', activated
            l.append(('dinfo_id', activated))
            l.append(('Selected scale', self.__describe(activated)))
            l.append(('Definition',
                      ' '.join([str(f) for f in self.__activated_scale])))
            return logic.render_term(T('keyval', tuple(l)))
        else:
            l.append(('dinfo_id', 'scale'))

            return logic.render_term(T('keyval', tuple(l)))
示例#14
0
    def disconnect(self, srcid, dstid, u, f, c):
        proxy = self.__database.find_item(dstid)

        if proxy:
            if u == 0:
                u = None
            if f == '':
                f = None
            if c == '':
                c = None
            r = proxy.invoke_rpc(
                'disconnect',
                logic.render_term(logic.make_term('conn', u, None, srcid, f,
                                                  c)))
            yield (r)
            if not r.status():
                print 'disconnect failed', srcid, dstid, u, f, c
                self.__frontend.report_error(
                    'eigenD could not disconnect wire ' + srcid + ':' + dstid,
                    r.args()[0])
                yield async .Coroutine.failure('rpc_disconnect failed')

            yield async .Coroutine.success()
        else:
            print 'proxy not found'
示例#15
0
    def rpc_dinfo(self, a):
        path = logic.parse_clause(a)
        l = []
        l.append(('dinfo_id', self.__selected or path))

        if self.__selected:
            x = self.read_script(self.__selected)
            if x:
                (n, d, sc, rn) = x

                if rn:
                    l.append(('name', "%s (%s)" % (n, rn)))
                else:
                    l.append(('name', n))

                l.append(('', ''))

                for (i, di) in enumerate(d):
                    l.append(('description' if i == 0 else '', di))

                if self.__status:
                    l.append(('', ''))
                    l.append(('status', self.__status))

        return logic.render_term(logic.make_term('keyval', tuple(l)))
示例#16
0
文件: agent.py 项目: jschpmn/EigenD
 def unload(self):
     ss = ''
     if self.open():
         ss = logic.render_term(
             tuple([ss.id() for ss in self.__subsystems.values()]))
     self.close_server()
     return ss
示例#17
0
 def rpc_dinfo(self,arg):
     l=[]
     dsc=self.get_description()
     l.append(('dinfo_id',dsc))
     l.append(('Headphone enabled','Yes' if self[103][100].get_value() else 'No'))
     l.append(('Headphone gain',self[103][101].get_value()))
     return logic.render_term(T('keyval',tuple(l) ))
示例#18
0
def find_conn(aproxy, id):
    r = []
    for cnx in cnxs:
        if logic.is_pred_arity(cnx, 'conn', 5) and cnx.args[2] == id:
            r.append(logic.render_term(cnx))

    return r
示例#19
0
 def rpc_get_test_data(self,arg):
     print 'getting test data',self.__filename
     f = files.get_ideal(self.id(),'audio',files.FileSystemFile(self.__filename,'audio'),0) if resource.os_path_exists(self.__filename) else '[]'
     print 'got recording',f
     d = self.audio.get_dropout_count()
     print 'got dropouts',d
     return logic.render_term((f,d))
示例#20
0
 def rpc_fideal(self, arg):
     (path, cookie) = logic.parse_clause(arg)
     for id, n in self.__midi_port.sinks:
         if id == cookie:
             return 'ideal([~server,midiport],%s)' % logic.render_term(
                 cookie)
     return async .failure('invalid cookie')
示例#21
0
    def verb2_19_unconnect_from(self, subject, t, f):
        """
        connect([un],global_unconnect_from,role(None,[concrete]),role(from,[concrete,singular]))
        """
        f = self.database.to_database_id(action.concrete_object(f))
        for o in action.concrete_objects(t):
            t2 = self.database.to_database_id(o)
            print 'un connect', t2, 'from', f
            tproxy = self.database.find_item(t2)
            objs = self.database.search_any_key(
                'W', T('unconnect_from_list', t2, f, V('W')))

            for (s, m) in objs:
                sproxy = self.database.find_item(s)
                cnxs = logic.parse_clauselist(sproxy.get_master())
                for cnx in cnxs:
                    if logic.is_pred_arity(cnx, 'conn',
                                           5) and self.database.to_database_id(
                                               cnx.args[2]) == m:
                        print 'disconnect', cnx, 'from', s
                        yield interpreter.RpcAdapter(
                            sproxy.invoke_rpc('disconnect',
                                              logic.render_term(cnx)))

        yield async .Coroutine.success()
示例#22
0
 def rpc_finfo(self, a):
     (dlist, cnum) = logic.parse_clause(a)
     all = list(
         enumerate(
             [e for k in self.__keylist() for e in self.__eventlist(k)]))
     map = tuple([(i, e.describe(), None) for (i, e) in all[cnum:]])
     return logic.render_term(map)
示例#23
0
 def setSelectedFile(self, selected):
     if selected > 0 and selected <= len(self.finfo):
         print 'browseModel:setSelectedFile: No. in browser list=', selected, 'uid=', self.finfo[
             selected - 1]
         self.selected_file = self.finfo[selected - 1][0]
         args = logic.render_term((tuple(self.path), self.selected_file))
         rpc.invoke_rpc(self.getTargetId(), 'setselected', args)
示例#24
0
    def upgrade_5_0_to_6_0(self, tools, address):
        root = tools.root(address)

        root.ensure_node(2, 253, 254).set_long(2)
        root.ensure_node(2, 253, 255.1)
        root.ensure_node(2, 253, 255.3)
        root.ensure_node(2, 253, 255.4).set_string('channel')
        root.ensure_node(2, 253, 255.8).set_string('count')
        root.ensure_node(2, 1, 255, 8).set_string('')

        root.ensure_node(3, 253, 254).set_long(2)
        root.ensure_node(3, 253, 255.1)
        root.ensure_node(3, 253, 255.3)
        root.ensure_node(3, 253, 255.4).set_string('channel')
        root.ensure_node(3, 253, 255.8).set_string('count')
        root.ensure_node(3, 1, 255, 8).set_string('')

        pmap = []
        for p in range(1, 17):
            pnode = root.ensure_node(4, p)
            for n in pnode.iter():
                pbits = n.get_string().split(',')
                pmap.append(logic.make_term('m', p, int(pbits[2]), 1.0))

            pnode.ensure_node(255, 17)

        # replace 0 tail time (meaning, plugin value) with a sensible default
        n = root.ensure_node(10, 254)
        if n.get_data().is_float() and n.get_data().as_float() == 0.0:
            n.set_data(piw.makefloat(30.0, 0))

        root.ensure_node(14, 255.1)
        root.ensure_node(14, 255.3)
        root.ensure_node(14, 255.8).set_string('midi input')

        root.ensure_node(15, 255.1)
        root.ensure_node(15, 255.3)
        root.ensure_node(15, 255.8).set_string('midi output')

        id_bits = root.ensure_node(255, 6).get_string().split('|')
        plug_id = id_bits[0]
        plug_name = id_bits[1] if len(id_bits) > 1 else ''
        au_bits = plug_id[0:4], plug_id[4:8], plug_id[8:12]

        what = ''
        if au_bits[0] == 'aumu': what = 'Synths'
        if au_bits[0] == 'aumf' or au_bits[0] == 'aufx': what = 'Effects'
        if what:
            desc = host_native.plugin_description(
                'AudioUnit:%s/%s' % (what, ','.join(au_bits)), plug_name)
            root.ensure_node(255, 6, 3).set_string(urllib.quote(desc.to_xml()))
            root.ensure_node(255, 6,
                             4).set_data(root.get_node(9, 254).get_data())
            root.ensure_node(255, 6, 5).set_string(
                logic.render_term(logic.make_term('mapping', *tuple(pmap))))

        root.remove(99)

        return True
示例#25
0
 def __add(self,subject,agent):
     id = action.concrete_object(agent)
     if self.__state.find(lambda v,s: s==id):
         print id,'already in',self.id()
         return
     print 'adding',id, 'to',self.id()
     rpc.invoke_rpc(id,'notify_delete',logic.render_term(self.id()))
     self.__state.assert_state(id)
示例#26
0
    def activate(self, selection):
        print 'activate', selection
        if selection > 0 and selection <= len(self.finfo):
            uid = self.finfo[selection - 1][0]
            print 'Activate: No. in browser list=', selection, 'uid=', uid

            args = logic.render_term((tuple(self.path), uid))
            self.__do_activate(self.getTargetId(), args)
示例#27
0
 def destroy(self):
     # remove this widget from the targets controllers
     address = self.get_property_string('target-id')
     myrid = paths.to_relative(self.id(), scope=paths.id2scope(address))
     cs = logic.render_term(
         logic.make_term('conn', None, None, myrid, None, 'ctl'))
     if address != '':
         rpc.invoke_rpc(address, 'disconnect', cs)
示例#28
0
 def rpc_finfo(self, a):
     print 'finfo', a
     (dlist, cnum) = logic.parse_clause(a)
     # XXX
     #map = tuple([(i+cnum,e.describe(),None) for (i,e) in enumerate(self.__eventlist()[cnum:])])
     map = tuple([(e.ordinal(), e.describe(), None)
                  for (i, e) in enumerate(self.__eventlist()[cnum:])])
     return logic.render_term(map)
示例#29
0
 def set_boolvalue(self, id, val):
     print 'backend set_boolvalue', id, val
     proxy = self.__database.find_item(id)
     if (not proxy == None):
         if val:
             proxy.invoke_rpc('set_value', logic.render_term(val))
         else:
             proxy.invoke_rpc('set_value', '')
示例#30
0
 def rpc_enumerate(self,a):
     path=logic.parse_clause(a)
     if len(path)==0:
         k=reduce(operator.add,[len(self.__eventlist(k)) for k in self.__keylist()],0)
         c=0
     else:
         k=0
         c=0
     return logic.render_term((k,c))