Package empro :: Package toolkit :: Package analysis :: Module gui
[frames] | no frames]

Source Code for Module empro.toolkit.analysis.gui

  1  # Copyright 1983-2019 Keysight Technologies, Inc, Keysight Confidential 
  2  import empro 
  3  from empro.toolkit import _printexception 
4 5 -def _onContextMenu(menu, selection):
6 import empro 7 if not hasattr(empro.internal.analysis,"sipiEnvironmentStarted"): 8 return
9
10 @_printexception 11 -def _defaultAction(selection, nodeclass):
12 import empro 13 if isinstance(selection, empro.analysis.SimulationContainer): 14 if selection.getData().isEmpty(): 15 empro.gui.MessageBox.critical("Failed to Launch Simulation", "Failed to Launch Simulation.\nReason:\nEmpty Setup",0,0) 16 return 17 analysisType = selection.getData().analysisType 18 saveProject = "save" in nodeclass.lower() 19 waitForConfirmation = True 20 try: 21 if analysisType in [empro.toolkit.analysis.PIDC, empro.toolkit.analysis.THERMAL, empro.toolkit.analysis.ELECTRO_THERMAL]: 22 empro.toolkit.analysis.runDCSimulationFlow(selection.getData(),waitForConfirmation,saveProject) 23 elif analysisType==empro.toolkit.analysis.PIAC: 24 empro.toolkit.analysis.runACSimulationFlow(selection.getData(),waitForConfirmation,saveProject) 25 elif analysisType==empro.toolkit.analysis.PASI: 26 empro.toolkit.analysis.runPASISimulationFlow(selection.getData(),waitForConfirmation,saveProject) 27 elif analysisType==empro.toolkit.analysis.PPR: 28 empro.toolkit.analysis.runPPRSimulationFlow(selection.getData(),waitForConfirmation,saveProject) 29 elif analysisType in [empro.toolkit.analysis.EMFU, empro.toolkit.analysis.EMUD, empro.toolkit.analysis.EMSM, empro.toolkit.analysis.EMFUPE, empro.toolkit.analysis.EMUDPE]: 30 empro.toolkit.analysis.runEMExtractionSimulationFlow(selection.getData(),waitForConfirmation,saveProject) 31 except: 32 import sys 33 import traceback 34 traceback.print_exc() 35 empro.gui.MessageBox.critical("Failed to Launch Simulation", "Failed to Launch Simulation.\nReason:\n{}".format(sys.exc_info()[1]),0,0) 36 elif isinstance(selection, empro.analysis.ResultContainer): 37 resultType = selection.getType() 38 try: 39 if resultType==1: 40 empro.toolkit.analysis.viewVoltage(selection) 41 elif resultType==16: 42 empro.toolkit.analysis.viewTemperature(selection) 43 elif resultType==9: 44 empro.toolkit.analysis.viewCurrent(selection) 45 elif resultType==3: 46 empro.toolkit.analysis.viewPowerDensity(selection) 47 elif resultType==4: 48 empro.toolkit.analysis.viewImpedance([selection.getData()]) 49 elif resultType==5: 50 empro.toolkit.analysis.viewSParameters([selection.getData()]) 51 elif resultType==7: 52 empro.toolkit.analysis.viewDCOverview(selection.getData()) 53 elif resultType==6: 54 empro.toolkit.analysis.generateTestBench(selection.getData()) 55 elif resultType in [10,11,12,18]: 56 empro.toolkit.analysis.viewFemField(selection) 57 elif resultType in [13]: 58 empro.toolkit.analysis.generateSubCircuit(selection.getData()) 59 elif resultType == 15: 60 empro.toolkit.analysis.viewPPROverview(selection.getData()) 61 elif resultType == 17: 62 empro.toolkit.analysis.viewFarField(selection.getData()) 63 elif resultType == 20: 64 empro.toolkit.analysis.generateVoltageSpikesTB(selection.getData()) 65 elif resultType == 21: 66 empro.toolkit.analysis.generateConductedEmiTB(selection.getData()) 67 except RuntimeError: 68 import sys 69 msg = str(sys.exc_info()[1]) 70 empro.gui.MessageBox.warning("Failed to perform action", msg, 0, 0)
71
72 73 -def initialize():
74 import empro 75 if hasattr(empro.internal.analysis,"sipiEnvironmentStarted"): 76 return 77 78 haveWorkflowWidget = False 79 80 empro.internal.analysis.sipiEnvironmentStarted = True 81 82 pl = empro.activeProject.parameters() 83 pl.setFormula("minFreq", "1 kHz") 84 pl.setFormula("maxFreq", "1 GHz") 85 empro.activeProject.displayUnits.setPreference(empro.units.unitByAbbreviation("MHz")) 86 empro.activeProject.displayUnits.setPreference(empro.units.unitByAbbreviation("A/mm**2")) 87 #empro.activeProject.displayUnits.setPreference(empro.units.unitByAbbreviation("W/mm**2")) 88 empro.activeProject.displayUnits.setPreference(empro.units.unitByAbbreviation("W/m**2")) 89 empro.activeProject.displayUnits.setPreference(empro.units.unitByAbbreviation("W/mm**3")) 90 empro.activeProject.displayUnits.setPreference(empro.units.unitByAbbreviation("MHz")) 91 empro.activeProject.displayUnits.setPreference(empro.units.unitByAbbreviation("ns")) 92 93 import os 94 # 95 # Change the look and feel 96 # 97 empro.core.ApplicationPreferences.setPreference("ApplicationStyleName","NoStyle") 98 empro.core.ApplicationPreferences.setPreference("ApplicationButtonLayoutName","NoStyle") 99 empro.core.ApplicationPreferences.setPreference("Geometry/SkyVisible",False) 100 empro.core.ApplicationPreferences.setPreference("Geometry/SmoothViewTransitions",False) 101 empro.core.ApplicationPreferences.setPreference("Geometry/TextColor","#000000") 102 empro.core.ApplicationPreferences.setPreference("ShowTipOfTheDay",False) 103 empro.core.ApplicationPreferences.setPreference("SelectProjectTemplateDialog/ShowOnStartup",False) 104 empro.core.ApplicationPreferences.setPreference("ClearResultsOnProjectLoad",False) 105 106 if hasattr(empro.gui, "activeProjectView"): 107 pv = empro.gui.activeProjectView() 108 109 viewControl = empro.gui.AdvView2() 110 111 dockContainer = empro.gui.DockWidget() 112 dockContainer.objectName = "View" 113 dockContainer.windowTitle = "Visibility" 114 dockContainer.widget = viewControl 115 pv.addDockWidget(1,dockContainer) 116 117 pv.showGeometryView() 118 # app_info = empro.core.ApplicationInfo 119 # appName = app_info.applicationName() 120 appName = getGuiDisplayName() 121 pv.windowTitle = appName 122 # change the look and feel 123 124 if hasattr(pv,"geometryViewWidget"): 125 gv = empro.gui.activeProjectView().geometryViewWidget() 126 gv.windowTitle = "Layout" 127 gv.windowFlags = gv.windowFlags & (~0x00001000) 128 gv.update() 129 if appName.startswith("(SI"): 130 pv.setWindowIcon(empro.gui.Icon(":/sipi/setup")) 131 elif appName.startswith("(RF"): 132 pv.setWindowIcon(empro.gui.Icon(":/rfpro/setup")) 133 elif appName.startswith("(PE"): 134 pv.setWindowIcon(empro.gui.Icon(":/pepro/setup")) 135 else: 136 pv.setWindowIcon(empro.gui.Icon(":/sipi/setup")) 137 pv.showGeometryView()
138
139 140 -def getGuiDisplayName():
141 # we should be using appInfo but for that initialization needs to be fixed 142 # app_info = empro.core.ApplicationInfo 143 # return app_info.applicationName(), 144 import empro.core, empro.toolkit.rpc 145 if not empro.core.CommunicationWithParent.wasActivated(): 146 return "(SIPro/PIPro Setup)" 147 isAdsBusy = False 148 try: 149 isAdsBusy = empro.toolkit.rpc.callIsShowingModalOrPopupWidget() 150 except: 151 isAdsBusy = True 152 if isAdsBusy: 153 return "(SIPro/PIPro Setup)" 154 useLegacyCall = False 155 try: 156 displayName = empro.toolkit.rpc.callParent("displayName", [empro.core.ApplicationInfo.personality()] ) 157 except: 158 useLegacyCall = True 159 if useLegacyCall: 160 displayName = empro.toolkit.rpc.callAEL("sipiSetupView_displayName") 161 return "(" + displayName + ")"
162
163 -def _requestAdsToShowSipiHelp():
164 _requestAdsToShowHelp(topic="SIPro_PIPro")
165
166 -def _requestAdsToShowRFProHelp():
167 _requestAdsToShowHelp(topic="RFPro")
168
169 -def _requestAdsToShowPEProHelp():
170 _requestAdsToShowHelp(topic="pepromain")
171
172 -def _requestAdsToShowView3DHelp():
173 _requestAdsToShowHelp(topic="view3d")
174
175 -def _requestAdsToShowHelp(topic=None):
176 import empro.core, xml.dom, xml.dom.minidom 177 178 if not empro.core.CommunicationWithParent.wasActivated(): 179 return 180 181 doc = xml.dom.minidom.Document() 182 callElement = doc.appendChild(doc.createElement("call")) 183 callElement.appendChild(doc.createElement("method")).appendChild(doc.createTextNode("showHelp")) 184 if topic is not None: 185 callElement.appendChild(doc.createElement("helpid")).appendChild(doc.createTextNode(topic)) 186 empro.core.CommunicationWithParent.rpc().call(doc.toxml())
187