Пример #1
0
    def __init__(self, ownId, ownName=None, host=None, port=None):

        self.capabilities = self.detectCapabilities()
        self.preconditions = capabilities['precondition']



        # create a test StateClient
        self.stateClient = StateClient( config.get('identity', 'id'), 
                                        config.get('identity', 'name'),
                                        config.get('server', 'address'),
                                        config.get('server', 'port') )
        self.stateClient.start()

        # create and connect pipelines
        self.pipelines = {}

        # test struct for source components
        self.sources = {}

        for interface in self.preconditions.keys():
            pipelines[interface] = {}
            methods=preconditions[interface]

            for method in methods.keys(): #these are the interface methods, essentially
                pipe = callPipe(methods[method])
                pipe_components = []

                if pipe and type(pipe) == list: #valid pipeline implementation expected here..
                    print pipe

                    for comp in pipe:
                        cclass = instantiateComponent(comp)
                        if cclass: pipe_components.append( cclass )

                        if type(cclass) == SimpleStateSink:
                            cclass.setEventMethod_callback( cb_test )
                        ##testing
                        elif type(cclass) == TrackerSource:
                            print "appending source Class: " + str(cclass)
                            self.sources[interface] = cclass

                    self.pipelines[interface][method] = pipe_components

                elif type(pipe) != list:
                    print "Pipe description missing: pipeline not created for:", interface, method
                else:
                    print "Pipeline description not found: pipeline not created"
                    
                self.connectPipeComponents( pipe_components )    




        

        threading.Thread.__init__(self)
        self.setDaemon(True)
Пример #2
0
class StatePlugin(threading.Thread):
    
    
    def sdQtMethod(self):
        class StateRenderWidget(QtGui.QScrollArea):
            def __init__(self, statePlugin):
                super(StateRenderWidget, self).__init__()
                self.initUI()
                self.statePlugin = statePlugin
    
                self.mainw = QWidget(self)
                self.mainlayout = QVBoxLayout()    
    
            def initUI(self):
                self.iws = {}
                
                # create the ui system
                for interface in self.statePlugin.pipelines.keys():
                    methods=self.statePlugin.pipelines[interface].keys()
                    iw = InfoFrame( parent=mainw, name=interface )
                        
                    for method in methods: #these are the interface methods, essentially
                        methodw = InfoFrame( parent=iw, name=method, level=1 )
                        iw.addGuiElem(methodw)
                        
                        pipe_components = pipelines[interface][method]
                        
                        for comp in pipe_components:
                            compw = InfoFrame(parent=methodw, name=comp.name, level=2)
                            compw.addGuiElem(comp.initUi())
                            
                            methodw.addGuiElem(compw)
                            

                    self.mainlayout.addWidget(iw)
                    self.iws[interface] = iw


                # bind source states..
                for interface in sources.keys():
                    self.iws[interface].valueGuiElem.slider.valueChanged[int].connect( self.statePlugin.sources[interface].set_state )

                self.mainlayout.addStretch()
                self.mainw.setLayout( mainlayout )

                for iw in self.iws.keys():
                    iws[iw].showMethodElemsRecur(False)
                    
                self.setWidget(self.mainw)
            

        global CURRENT_PLUGIN_WINGET
        CURRENT_PLUGIN_WINGET = StateRenderWidget(self)
        CURRENT_PLUGIN_WINGET.show()
    
    
        return
    
    def __init__(self, ownId, ownName=None, host=None, port=None):

        self.capabilities = self.detectCapabilities()
        self.preconditions = capabilities['precondition']



        # create a test StateClient
        self.stateClient = StateClient( config.get('identity', 'id'), 
                                        config.get('identity', 'name'),
                                        config.get('server', 'address'),
                                        config.get('server', 'port') )
        self.stateClient.start()

        # create and connect pipelines
        self.pipelines = {}

        # test struct for source components
        self.sources = {}

        for interface in self.preconditions.keys():
            pipelines[interface] = {}
            methods=preconditions[interface]

            for method in methods.keys(): #these are the interface methods, essentially
                pipe = callPipe(methods[method])
                pipe_components = []

                if pipe and type(pipe) == list: #valid pipeline implementation expected here..
                    print pipe

                    for comp in pipe:
                        cclass = instantiateComponent(comp)
                        if cclass: pipe_components.append( cclass )

                        if type(cclass) == SimpleStateSink:
                            cclass.setEventMethod_callback( cb_test )
                        ##testing
                        elif type(cclass) == TrackerSource:
                            print "appending source Class: " + str(cclass)
                            self.sources[interface] = cclass

                    self.pipelines[interface][method] = pipe_components

                elif type(pipe) != list:
                    print "Pipe description missing: pipeline not created for:", interface, method
                else:
                    print "Pipeline description not found: pipeline not created"
                    
                self.connectPipeComponents( pipe_components )    




        

        threading.Thread.__init__(self)
        self.setDaemon(True)


    def run(self):
        self.running = True
        kk = True
        while self.running:
            print "worker ticking sources.."
            for source in self.sources.keys():
                self.sources[source].tick()

            print "done"
            #testing
            print 'adding state_event'
            
            stateClient.add_state_event( 'TalkingDevice', 'isSilent', str(kk) )
            kk = not kk
            
            sleep(10)
            
        self.stateClient.stop()
        
    def stop(self):
        self.running = False


    def detectCapabilities(self):
        body = {}
        precon = {}
        try:
            import capability
            from inspect import getmembers, isclass, ismethod

            for m in filter( lambda x: not x.startswith('__'), dir(capability) ):
                for c in getmembers( eval('capability.' + m), isclass ):
                    d_b = dict(getmembers(c[1],lambda x: ismethod(x) and 'SDMethodType' in dir(x) and x.SDMethodType == 'body'))
                    d_p = dict(getmembers(c[1],lambda x: ismethod(x) and 'SDMethodType' in dir(x) and x.SDMethodType == 'pre'))
                    if d_b:
                        if '__init__' in d_b.keys():
                            del d_b['__init__']
                        body[c[0]] = d_b
                    if d_p:
                        if '__init__' in d_p.keys():
                            del d_p['__init__']
                        precon[c[0]] = d_p

            #del getmembers, isclass, ismethod

        except Exception, x:
            print "Error detecting capabilities: "
            print str(x)

        return {'body':body, 'precondition':precon}
Пример #3
0
#mainwin.setFixedWidth( QApplication.desktop().width()-20 )

sa = QScrollArea(mainwin)
#mainwin.setCentralWidget(sa)

mainw = QWidget(sa)
mainlayout = QVBoxLayout()



capabilities = detectCapabilities()
preconditions = capabilities['precondition']

# create a test StateClient
stateClient = StateClient( config.get('identity', 'id'), 
                           config.get('identity', 'name'),
                           config.get('server', 'address'),
                           config.get('server', 'port') )
stateClient.start()

# create and connect pipelines
pipelines = {}

# test struct for source components
sources = {}

for interface in preconditions.keys():
    pipelines[interface] = {}
    methods=preconditions[interface]

    for method in methods.keys(): #these are the interface methods, essentially
        pipe = callPipe(methods[method])