def read(self, xml_file): xmldom = minidom.parse(xml_file) path = os.path.realpath(os.path.dirname(xml_file)) # Environment self.environment = str( self.data(xmldom.getElementsByTagName("gpuip")[0], "environment")) # Buffers for b in xmldom.getElementsByTagName("buffer"): buffer = Settings.Buffer(self.data(b, "name"), self.data(b, "type"), utils.safeEval(self.data(b, "channels"))) if b.getElementsByTagName("input"): buffer.input = os.path.join(path, self.data(b, "input")) if b.getElementsByTagName("output"): buffer.output = os.path.join(path, self.data(b, "output")) if not os.path.exists(os.path.dirname(buffer.output)): os.makedirs(os.path.dirname(buffer.output)) self.buffers.append(buffer) # Kernels for k in xmldom.getElementsByTagName("kernel"): kernel = Settings.Kernel( self.data(k, "name"), os.path.join(path, self.data(k, "code_file"))) # In Buffers for inb in k.getElementsByTagName("inbuffer"): name = self.data(inb, "name") hasBuffer = inb.getElementsByTagName("targetbuffer") buf = self.data(inb, "targetbuffer") if hasBuffer else "" kernel.inBuffers.append(Settings.Kernel.KernelBuffer( name, buf)) # Out Buffers for outb in k.getElementsByTagName("outbuffer"): name = self.data(outb, "name") hasBuffer = outb.getElementsByTagName("targetbuffer") buf = self.data(outb, "targetbuffer") if hasBuffer else "" kernel.outBuffers.append( Settings.Kernel.KernelBuffer(name, buf)) # Params for p in k.getElementsByTagName("param"): type = self.data(p, "type") param = Settings.Param( self.data(p, "name"), type, utils.safeEval(self.data(p, "default"), type), utils.safeEval(self.data(p, "min"), type), utils.safeEval(self.data(p, "max"), type)) param.value = utils.safeEval(self.data(p, "value"), type) kernel.params.append(param) self.kernels.append(kernel) self.updateCode()
def read(self, xml_file): xmldom = minidom.parse(xml_file) path = os.path.realpath(os.path.dirname(xml_file)) # Environment self.environment = str(self.data( xmldom.getElementsByTagName("gpuip")[0], "environment")) # Buffers for b in xmldom.getElementsByTagName("buffer"): buffer = Settings.Buffer(self.data(b, "name"), self.data(b, "type"), utils.safeEval(self.data(b, "channels"))) if b.getElementsByTagName("input"): buffer.input = os.path.join(path,self.data(b, "input")) if b.getElementsByTagName("output"): buffer.output = os.path.join(path,self.data(b, "output")) if not os.path.exists(os.path.dirname(buffer.output)): os.makedirs(os.path.dirname(buffer.output)) self.buffers.append(buffer) # Kernels for k in xmldom.getElementsByTagName("kernel"): kernel = Settings.Kernel( self.data(k, "name"), os.path.join(path, self.data(k, "code_file"))) # In Buffers for inb in k.getElementsByTagName("inbuffer"): name = self.data(inb, "name") hasBuffer = inb.getElementsByTagName("targetbuffer") buf = self.data(inb, "targetbuffer") if hasBuffer else "" kernel.inBuffers.append(Settings.Kernel.KernelBuffer(name,buf)) # Out Buffers for outb in k.getElementsByTagName("outbuffer"): name = self.data(outb, "name") hasBuffer = outb.getElementsByTagName("targetbuffer") buf = self.data(outb, "targetbuffer") if hasBuffer else "" kernel.outBuffers.append(Settings.Kernel.KernelBuffer(name,buf)) # Params for p in k.getElementsByTagName("param"): type = self.data(p, "type") param = Settings.Param( self.data(p, "name"), type, utils.safeEval(self.data(p, "default"),type), utils.safeEval(self.data(p, "min"),type), utils.safeEval(self.data(p, "max"),type)) param.value = utils.safeEval(self.data(p, "value"),type) kernel.params.append(param) self.kernels.append(kernel) self.updateCode()
def getData(self): name = self.nameLineEdit.text() type = str(self.typeComboBox.currentText()).strip() defaultVal = self.defaultLineEdit.text() minVal = self.minLineEdit.text() maxVal = self.maxLineEdit.text() if type == "int": defaultVal = str(utils.safeEval(defaultVal,"int")) minVal = str(utils.safeEval(minVal,"int")) maxVal = str(utils.safeEval(maxVal,"int")) return name, type, defaultVal, minVal, maxVal
def getData(self): name = self.nameLineEdit.text() type = str(self.typeComboBox.currentText()).strip() defaultVal = self.defaultLineEdit.text() minVal = self.minLineEdit.text() maxVal = self.maxLineEdit.text() if type == "int": defaultVal = str(utils.safeEval(defaultVal, "int")) minVal = str(utils.safeEval(minVal, "int")) maxVal = str(utils.safeEval(maxVal, "int")) return name, type, defaultVal, minVal, maxVal
def onLineEditChange(self): # Changing the line edit triggers slider update that triggers # line edit update again. This is to prevent the second update if not self.updateLineEdit: return # Evaluate the line edit text to get the number val = utils.safeEval(self.lineEdit.text(), self.defaultVal, self.typename) if self.typename == "int": # If the parameter is of int, format line edit to be int too. self.lineEdit.setText(str(val)) # Don't run the onSliderChange function self.updateSlider = False # Update the slider position if val < self.minVal: self.slider.setSliderPosition(0) elif val > self.maxVal: self.slider.setSliderPosition(100) else: t = (val - self.minVal) / float(self.maxVal - self.minVal) self.slider.setSliderPosition(100 * t) # Slider has been updated, safe to set this variable to true again self.updateSlider = True # If a callback function was added, call it if self.callbackFunc: self.callbackFunc()
def onLineEditChange(self): # Changing the line edit triggers slider update that triggers # line edit update again. This is to prevent the second update if not self.updateLineEdit: return # Evaluate the line edit text to get the number val = utils.safeEval(self.lineEdit.text(),self.defaultVal,self.typename) if self.typename == "int": # If the parameter is of int, format line edit to be int too. self.lineEdit.setText(str(val)) # Don't run the onSliderChange function self.updateSlider = False # Update the slider position if val < self.minVal: self.slider.setSliderPosition(0) elif val > self.maxVal: self.slider.setSliderPosition(100) else: t = (val - self.minVal) / float(self.maxVal - self.minVal) self.slider.setSliderPosition(100 * t) # Slider has been updated, safe to set this variable to true again self.updateSlider = True # If a callback function was added, call it if self.callbackFunc: self.callbackFunc()
def getSettings(self): s = settings.Settings() # Environment s.environment = str(self.envComboBox.currentText()) # Buffers for b in self.buffersGroupBox.buffers: s.buffers.append( settings.Settings.Buffer( str(b.nameLineEdit.text()), str(b.typeComboBox.currentText()).strip(), utils.safeEval(str(b.channelsComboBox.currentText())))) # Kernels for k in self.kernels: sk = settings.Settings.Kernel( str(k.nameLineEdit.text()).replace(" ", "_"), str(k.codeFileLineEdit.text())) # In Buffers for le in k.inBufferLineEdits: sk.inBuffers.append( settings.Settings.Kernel.KernelBuffer(str(le.text()),"")) # Out Buffers for le in k.outBufferLineEdits: sk.outBuffers.append( settings.Settings.Kernel.KernelBuffer(str(le.text()),"")) # Params for p in k.params: param = settings.Settings.Param( str(p.nameLineEdit.text()), str(p.typeComboBox.currentText()).strip(), utils.safeEval(p.defaultLineEdit.text()), utils.safeEval(p.minLineEdit.text()), utils.safeEval(p.maxLineEdit.text())) sk.params.append(param) s.kernels.append(sk) s.updateCode() return s
def getSettings(self): s = settings.Settings() # Environment s.environment = str(self.envComboBox.currentText()) # Buffers for b in self.buffersGroupBox.buffers: s.buffers.append( settings.Settings.Buffer( str(b.nameLineEdit.text()), str(b.typeComboBox.currentText()).strip(), utils.safeEval(str(b.channelsComboBox.currentText())))) # Kernels for k in self.kernels: sk = settings.Settings.Kernel( str(k.nameLineEdit.text()).replace(" ", "_"), str(k.codeFileLineEdit.text())) # In Buffers for le in k.inBufferLineEdits: sk.inBuffers.append( settings.Settings.Kernel.KernelBuffer(str(le.text()), "")) # Out Buffers for le in k.outBufferLineEdits: sk.outBuffers.append( settings.Settings.Kernel.KernelBuffer(str(le.text()), "")) # Params for p in k.params: param = settings.Settings.Param( str(p.nameLineEdit.text()), str(p.typeComboBox.currentText()).strip(), utils.safeEval(p.defaultLineEdit.text()), utils.safeEval(p.minLineEdit.text()), utils.safeEval(p.maxLineEdit.text())) sk.params.append(param) s.kernels.append(sk) s.updateCode() return s
def getSettings(args): import settings if not args.file or not os.path.isfile(args.file): return None ipsettings = settings.Settings() ipsettings.read(args.file) # Change parameter values if args.param: for p in args.param: kernelName, paramName, value = p kernel = ipsettings.getKernel(kernelName) if not kernel: terminate("gpuip error: No kernel %s found." % kernelName) param = kernel.getParam(paramName) if param: param.setValue(utils.safeEval(value)) else: terminate("gpuip error: No param %s found in kernel %s." \ % (paramName, kernelName)) # Change input buffers if args.inbuffer: for inb in args.inbuffer: bufferName, path = inb[0], inb[1] buffer = ipsettings.getBuffer(bufferName) if buffer: buffer.input = path if not os.path.isfile(buffer.input): raise IOError("No such file: '%s'" % buffer.input) else: terminate("gpuip error: No buffer %s found." % buffer) # Change output buffers if args.outbuffer: for outb in args.outbuffer: bufferName, path = outb[0], outb[1] buffer = ipsettings.getBuffer(bufferName) if buffer: buffer.output = path os.makedirs(os.path.dirname(os.path.realpath(path))) else: terminate("gpuip error: No buffer %s found." % bufferName) return ipsettings
def updateSettings(self): # Get buffer input and outputs for b in self.settings.buffers: b.input = self.buffersWidget.getBufferInput(b.name) b.output = self.buffersWidget.getBufferOutput(b.name) # Get in buffers, out buffers and param values for k in self.settings.kernels: kw = self.kernelWidgets[k.name] k.code = str(kw.codeEditor.toPlainText()) for inb in k.inBuffers: inb.buffer = str(kw.inBuffers[inb.name].cbox.currentText()) for outb in k.outBuffers: outb.buffer = str(kw.outBuffers[outb.name].cbox.currentText()) for p in k.params: kernelParam = kw.params[p.name] p.value = utils.safeEval(kernelParam.lineEdit.text())