def fromString(self, aString): # format is x1 y1 x2 y2 stream = usstream.KfStringStream() stream.onStringSeparator(aString, " ") succesful, self.x1 = usupport.boundForString(stream.nextToken(), uparams.kFieldFloat) succesful, self.y1 = usupport.boundForString(stream.nextToken(), uparams.kFieldFloat) succesful, self.x2 = usupport.boundForString(stream.nextToken(), uparams.kFieldFloat) succesful, self.y2 = usupport.boundForString(stream.nextToken(), uparams.kFieldFloat) return(self)
def adjustValue(self): newString = ansistring() oldValueInCurrentUnit = 0.0 newValue = 0.0 newValueInPlantUnit = 0.0 oldString = "" prompt = "" nameString = "" unitString = "" minString = "" maxString = "" outOfRange = false oldValueInCurrentUnit = self.toCurrentUnit(self.currentValue) newString = usupport.digitValueString(oldValueInCurrentUnit) oldString = newString nameString = UNRESOLVED.copy(self.Caption, 1, 30) if len(nameString) == 30: nameString = nameString + "..." unitString = uunits.UnitStringForEnum(self.param.unitSet, self.currentUnitIndex) minString = usupport.digitValueString(self.toCurrentUnit(self.minValue)) maxString = usupport.digitValueString(self.toCurrentUnit(self.maxValue)) prompt = "Type a new value." if InputQuery("Enter value", prompt, newString): if (newString != oldString) and (usupport.boundForString(newString, self.param.fieldType, newValue)): newValueInPlantUnit = self.toPlantUnit(newValue) outOfRange = self.checkValueAgainstBounds(newValueInPlantUnit) if not outOfRange: self.currentValue = newValueInPlantUnit umain.MainForm.doCommand(updcom.PdChangeRealValueCommand().createCommandWithListOfPlants(umain.MainForm.selectedPlants, self.currentValue, self.param.fieldNumber, self.arrayIndex, self.param.regrow)) self.updateDisplay() self.Invalidate()
def stringToSCurve(aString): result = SCurveStructure() result.x1 = 0 result.y1 = 0 result.x2 = 0 result.y2 = 0 result.c1 = 0 result.c2 = 0 # format is x1 y1 x2 y2 stream = usstream.KfStringStream() stream.onStringSeparator(aString, " ") succesful, result.x1 = usupport.boundForString(stream.nextToken(), uparams.kFieldFloat) succesful, result.y1 = usupport.boundForString(stream.nextToken(), uparams.kFieldFloat) succesful, result.x2 = usupport.boundForString(stream.nextToken(), uparams.kFieldFloat) succesful, result.y2 = usupport.boundForString(stream.nextToken(), uparams.kFieldFloat) return result
def adjustValue(self): newString = ansistring() oldString = "" nameString = "" prompt = "" currentUnitString = "" newValue = 0.0 oldValue = 0.0 valueInCurrentUnit = 0.0 index = 0 failed = false points = [0] * (range(0, 1 + 1) + 1) if self.selectedItemIndex < kItemX1: return index = self.selectedItemIndex - kItemX1 oldValue = self.currentValues[index] nameString = UNRESOLVED.copy(self.Caption, 1, 30) currentUnitString = uunits.UnitStringForEnum(self.param.unitSet, self.currentUnitIndex) if len(nameString) == 30: nameString = nameString + "..." if not odd(index): # x valueInCurrentUnit = self.toCurrentUnit(self.currentValues[index]) newString = usupport.digitValueString(valueInCurrentUnit) # y # don't convert y value - is always 0-1 else: valueInCurrentUnit = self.currentValues[index] newString = FloatToStrF(valueInCurrentUnit, UNRESOLVED.ffFixed, 7, 2) oldString = newString prompt = "Type a new value." if InputQuery("Enter value", prompt, newString): if (newString != oldString) and (usupport.boundForString(newString, self.param.fieldType, newValue)): if not odd(index): self.currentValues[index] = self.toPlantUnit(newValue) else: self.currentValues[index] = newValue points[0] = self.pointFromXY(self.currentValues[0], self.currentValues[1]) points[1] = self.pointFromXY(self.currentValues[2], self.currentValues[3]) self.keepPointInGraphRect(points[(index - 1) / 2]) self.keepPointsFromCrossing(points[0], points[1], (index - 1) / 2) failed = self.drawSCurve(false, failed) if failed: self.currentValues[index] = oldValue ShowMessage("Invalid value.") else: # don't create change point command here, because only one float is changed umain.MainForm.doCommand( updcom.PdChangeRealValueCommand().createCommandWithListOfPlants( umain.MainForm.selectedPlants, self.currentValues[index], self.param.fieldNumber, index, self.param.regrow, ) ) self.Invalidate()
def stringToSCurve(aString): result = SCurveStructure() stream = KfStringStream() result.x1 = 0 result.y1 = 0 result.x2 = 0 result.y2 = 0 result.c1 = 0 result.c2 = 0 # format is x1 y1 x2 y2 stream = usstream.KfStringStream.create try: stream.onStringSeparator(aString, " ") result.x1 = usupport.boundForString(stream.nextToken(), uparams.kFieldFloat, result.x1) result.y1 = usupport.boundForString(stream.nextToken(), uparams.kFieldFloat, result.y1) result.x2 = usupport.boundForString(stream.nextToken(), uparams.kFieldFloat, result.x2) result.y2 = usupport.boundForString(stream.nextToken(), uparams.kFieldFloat, result.y2) finally: stream.free return result
def adjustValue(self): newString = ansistring() oldValueInCurrentUnit = 0.0 newValue = 0.0 newValueInPlantUnit = 0.0 oldString = "" prompt = "" nameString = "" unitString = "" minString = "" maxString = "" outOfRange = false oldValueInCurrentUnit = self.toCurrentUnit(self.currentValue) newString = usupport.digitValueString(oldValueInCurrentUnit) oldString = newString nameString = UNRESOLVED.copy(self.Caption, 1, 30) if len(nameString) == 30: nameString = nameString + "..." unitString = uunits.UnitStringForEnum(self.param.unitSet, self.currentUnitIndex) minString = usupport.digitValueString(self.toCurrentUnit( self.minValue)) maxString = usupport.digitValueString(self.toCurrentUnit( self.maxValue)) prompt = "Type a new value." if InputQuery("Enter value", prompt, newString): if (newString != oldString) and (usupport.boundForString( newString, self.param.fieldType, newValue)): newValueInPlantUnit = self.toPlantUnit(newValue) outOfRange = self.checkValueAgainstBounds(newValueInPlantUnit) if not outOfRange: self.currentValue = newValueInPlantUnit umain.MainForm.doCommand(updcom.PdChangeRealValueCommand( ).createCommandWithListOfPlants( umain.MainForm.selectedPlants, self.currentValue, self.param.fieldNumber, self.arrayIndex, self.param.regrow)) self.updateDisplay() self.Invalidate()