Changeset 7192

Show
Ignore:
Timestamp:
04/24/08 09:52:36 (5 years ago)
Author:
Snyder.Jason
Message:

added displayDoxygen() and generateTestWaveform

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • ossiedev/branches/jsnyder/ComponentProject/PythonSrc/MainFrameGlue.py

    r7164 r7192  
    11import sys, os, copy 
    2 import importResource 
     2import wavedev.importResource 
     3import wavedev.importNode 
     4import wavedev.WaveformClass 
     5import wavedev.PlatformClass 
     6import wavedev.ComponentClass 
     7import threading 
    38from edu.vt.ossie.jyinterface.interfaces import MainFrame 
    49 
     10class MainFrameTreeNode: 
     11    def __init__(self, name, contents): 
     12        self.name = name 
     13        self.contents = contents 
     14         
     15class RunInNewThread(threading.Thread): 
     16    def __init__(self, inCommand): 
     17        self.command = inCommand 
     18        threading.Thread.__init__(self) 
     19         
     20    def run(self): 
     21        os.system(self.command) 
    522 
    623class MainFrameGlue(MainFrame): 
     24    def __init__(self): 
     25        self.active_waveform = wavedev.WaveformClass.Waveform() 
     26        self.active_platform = wavedev.PlatformClass.Platform() 
     27        self.installPath = "/sdr/" 
     28     
    729    def loadResources(self): 
    830        self.Available_Components = [] 
     
    1133  
    1234        resList = [] 
    13         self.installPath = "/sdr/" 
     35         
    1436 
    1537        # List possible resource directories (components and device) 
     
    2446 
    2547        # find the .scd.xml files for each resource 
     48         
    2649        for r in resList: 
    2750            tmpResName = r[1] 
    2851            tmpResPath = r[0] + r[1] 
    29             tmpComp = importResource.getResource(tmpResPath,tmpResName,self) 
     52            tmpComp = wavedev.importResource.getResource(tmpResPath,tmpResName,self) 
    3053                 
    3154            if tmpComp == None: 
     
    3356            if tmpComp.type == 'resource': 
    3457                self.Available_Components.append(tmpComp) 
     58               
    3559            elif tmpComp.type == 'executabledevice': 
    3660                self.Available_Devices.append(tmpComp) 
     61               
    3762            elif tmpComp.type == 'loadabledevice': 
    3863                self.Available_Devices.append(tmpComp) 
     64                
    3965            elif tmpComp.type == 'device': 
    4066                self.Available_Devices.append(tmpComp) 
     67                 
    4168         
    4269        nodeList = [] 
    4370        if os.path.isdir(self.installPath + 'nodes'): 
    4471            nodeList = os.listdir(self.installPath + 'nodes') 
     72            print nodeList 
    4573        else: 
    4674            errorMsg(self, "No nodes could be found in: " + self.installPath) 
     
    6795            nodePath = self.installPath + 'nodes/' + nodeName + '/' 
    6896             
    69             tmpNode = importNode.getNode(nodePath,nodeName,self) 
     97            print "calling getNode(", nodePath, ",", nodeName, ")" 
     98            tmpNode = wavedev.importNode.getNode(nodePath,nodeName,self) 
     99             
    70100            if tmpNode == None: 
    71101                print "WARNING: possibly an error reading node " + nodePath + "/" + nodeName 
    72102                continue 
    73103            self.Available_Nodes.append(tmpNode) 
     104        return [MainFrameTreeNode("Components", self.Available_Components), 
     105                MainFrameTreeNode("Devices", self.Available_Devices), 
     106                MainFrameTreeNode("Nodes", self.Available_Nodes)] 
     107 
     108    def getActiveWaveform(self): 
     109        return self.active_waveform 
     110     
     111    def getActivePlatform(self): 
     112        return self.active_platform 
     113     
     114     
     115    def generateTestWaveform(self): 
     116        self.active_wave = wavedev.WaveformClass.Waveform() 
     117        int1 = wavedev.ComponentClass.Interface('complexShort') 
     118        op1 = wavedev.ComponentClass.Operation('pushPacket','void') 
     119        param1 = wavedev.ComponentClass.Param('I','PortTypes::ShortSequence','in') 
     120        param2 = wavedev.ComponentClass.Param('Q','PortTypes::ShortSequence','in') 
     121        op1.params.extend([param1,param2]) 
     122        int1.operations.append(op1) 
     123 
     124        t2 = wavedev.ComponentClass.Component("Transmitter",AC=True) 
     125        p1 = wavedev.ComponentClass.Port('inPortTx1',copy.deepcopy(int1),'Provides') 
     126        p2 = wavedev.ComponentClass.Port('outPortTx1',copy.deepcopy(int1),'Uses') 
     127        t2.ports.append(p1); t2.ports.append(p2) 
     128        self.active_wave.components.append(t2) 
     129         
     130        t3 = wavedev.ComponentClass.Component("Channel") 
     131        p1 = wavedev.ComponentClass.Port('inPortCh1',copy.deepcopy(int1),'Provides') 
     132        p2 = wavedev.ComponentClass.Port('inPortCh2',copy.deepcopy(int1),'Provides') 
     133        p3 = wavedev.ComponentClass.Port('inPortCh3',copy.deepcopy(int1),'Provides') 
     134        p4 = wavedev.ComponentClass.Port('outPortCh1',copy.deepcopy(int1),'Uses') 
     135        p5 = wavedev.ComponentClass.Port('outPortCh2',copy.deepcopy(int1),'Uses') 
     136        p6 = wavedev.ComponentClass.Port('outPortCh3',copy.deepcopy(int1),'Uses') 
     137        t3.ports.extend([p1,p2,p3,p4,p5,p6]) 
     138        self.active_wave.components.append(t3)         
     139         
     140        t4 = wavedev.ComponentClass.Component("Receiver") 
     141        p1 = wavedev.ComponentClass.Port('inPortRx1',copy.deepcopy(int1),'Provides') 
     142        p2 = wavedev.ComponentClass.Port('outPortRx1',copy.deepcopy(int1),'Uses') 
     143        t4.ports.append(p1); t4.ports.append(p2) 
     144        self.active_wave.components.append(t4)         
     145         
     146        temp_dev = wavedev.ComponentClass.Component("GPP") 
     147        self.active_wave.devices.append(temp_dev) 
     148        return [MainFrameTreeNode("Sample Waveform", self.active_wave)] 
     149         
     150    def displayDoxygen(self, referenceMaterials): 
     151        defaultHtml = 'index.html' 
     152        defaultPdf = 'refman.pdf' 
     153        docList = None 
     154        
     155        docsPath = self.installPath + 'docs/' + referenceMaterials.name 
     156        print docsPath 
     157        RunInNewThread('evince ' + "/home/Ossie/Desktop/OSSIE_0.6.2_User_Guide.pdf").start() 
     158        if os.path.isdir(docsPath): 
     159            docList = os.listdir(docsPath) 
     160            if os.path.isfile(docsPath + '/' + defaultHtml): 
     161                webbrowser.open_new('file://' + docsPath + '/' + defaultHtml) 
     162            elif os.path.isfile(docsPath + '/' + defaultPdf): 
     163                #find more portable way to view pdf? 
     164                try: 
     165                    RunInNewThread('evince ' + docsPath + '/' + defaultPdf + ' &') 
     166                finally: 
     167                    errorMsg(self,'evince pdf viewer threw exception or not found') 
     168                #webbrowser.open('file://' + docsPath + '/' + defaultPdf, 1) 
     169            else: 
     170                errorMsg(self,'Neither index.html nor refman.pdf found in ' + docsPath + ': directory listing: ' + str(docList)) 
     171        else: 
     172            errorMsg(self,'No directory for ' + referenceMaterials.name + ' could be found in: ' + self.installPath + 'docs')             
     173            return 
     174         
     175    def errorMsg(self, message): 
     176        sys.stderr.write(message) 
     177