qdsfit/PeakWidget.py
2013-06-14 08:44:34 +02:00

88 lines
3.3 KiB
Python

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import PeakGroupBox
class PeakWidget(QGroupBox):
changedTable = pyqtSignal()
def __init__(self, parent=None):
QGroupBox.__init__(self)
super(PeakWidget, self).__init__(parent)
self.ui = PeakGroupBox.Ui_PeakGroupBox()
self.ui.setupUi(self)
self.lineEdits = [self.ui.lineEdit_1,
self.ui.lineEdit_2,
self.ui.lineEdit_3,
self.ui.lineEdit_4]
self.fixedCheckBoxes = [self.ui.checkBox_1,
self.ui.checkBox_2,
self.ui.checkBox_3,
self.ui.checkBox_4]
for le in self.lineEdits:
le.editingFinished.connect(self.changedTable.emit)
self.signalMapper = QSignalMapper(self)
for i, button in enumerate([self.ui.pushButton_1,
self.ui.pushButton_2,
self.ui.pushButton_3,
self.ui.pushButton_4,
self.ui.pushButton_5,
self.ui.pushButton_6,
self.ui.pushButton_7,
self.ui.pushButton_8,
]):
self.signalMapper.setMapping(button,i)
button.clicked.connect(self.signalMapper.map)
self.signalMapper.mapped.connect(self.changeValues)
def changeValues(self, num):
logstep = 1.29154967 # 10 log even steps per decade
linstep = 0.05
# 0-3 down/up for d_eps and tau, respectively
# 4-7 down, up for a, b
if num == 0:
self.ui.lineEdit_1.setText("%.2e"%(self.ui.lineEdit_1.text().toDouble()[0]/logstep))
if num == 1:
self.ui.lineEdit_1.setText("%.2e"%(self.ui.lineEdit_1.text().toDouble()[0]*logstep))
if num == 2:
self.ui.lineEdit_2.setText("%.2e"%(self.ui.lineEdit_2.text().toDouble()[0]/logstep))
if num == 3:
self.ui.lineEdit_2.setText("%.2e"%(self.ui.lineEdit_2.text().toDouble()[0]*logstep))
if num == 4:
self.ui.lineEdit_3.setText("%.2e"%(self.ui.lineEdit_3.text().toDouble()[0]-linstep))
if num == 5:
self.ui.lineEdit_3.setText("%.2e"%(self.ui.lineEdit_3.text().toDouble()[0]+linstep))
if num == 6:
self.ui.lineEdit_4.setText("%.2e"%(self.ui.lineEdit_4.text().toDouble()[0]-linstep))
if num == 7:
self.ui.lineEdit_4.setText("%.2e"%(self.ui.lineEdit_4.text().toDouble()[0]+linstep))
self.changedTable.emit()
def fixedParameter(self):
return [0 if cb.isChecked() else 1 for cb in self.fixedCheckBoxes]
def setId(self,id):
self.id=id
self.setTitle("Peak %i"%id)
def setColor(self, color):
r,g,b = color
palette = self.palette()
palette.setColor(QPalette.Foreground, QColor(r,g,b))
self.setPalette(palette)
def peakParameter(self):
tmp = [i.text().toDouble()[0] # selects the number, ignores the status
for i in self.lineEdits ]
print "peakParams:",tmp
return tmp
def update(self):
self.changedTable.emit()
def updateTable(self, *args):
print "updateTable", args
for i,arg in enumerate(args):
self.lineEdits[i].setText("%g"%(args[i]))