class Config(QWidget): DATETIME_FORMAT = "%d-%m-%Y %H:%M:%S" terminals_changed = pyqtSignal() def __init__(self, parent=None): QWidget.__init__(self, parent) self.ui = uic.loadUiType("config.ui")[0]() self.ui.setupUi(self) self.terminals = None self.payment = None self.terminal_config = None self.flick = FlickCharm() self.flick.activate_on(self.ui.scrollArea) def setup(self, terminals, payment): self.terminals = terminals self.payment = payment self.ui.setupTerminals.clicked.connect(self.setup_terminals) self.ui.updateTerminals.clicked.connect(self.update_terminals) self.ui.updateConfig.clicked.connect(self.update_terminals_config) self.ui.testDisplay.clicked.connect(self.test_display) def test_display(self): self.terminals.test_display() self.ui.testDisplayResult.setText(datetime.now().strftime(self.DATETIME_FORMAT)) def setup_terminals(self): self.terminal_config = TerminalConfig() if self.terminal_config.exec_() == QDialog.Accepted: self.update_terminals() self.terminal_config = None def update_terminals_config(self): self.terminals.update_device_config() self.ui.updateConfigResult.setText(datetime.now().strftime(self.DATETIME_FORMAT)) def terminals_ready(self, ok): message = u"успешно" if ok else u"не удалось" now = datetime.now().strftime(self.DATETIME_FORMAT) self.ui.updateTerminalsResult.setText(u"Обновление %s (%s)" % (message, now)) self.ui.updateTerminals.setEnabled(True) def update_terminals(self): self.ui.updateTerminals.setEnabled(False) self.terminals_changed.emit()
def __init__(self, parent=None): QWidget.__init__(self, parent) self.ui = uic.loadUiType('config.ui')[0]() self.ui.setupUi(self) self.localize() self.terminals = None self.payment = None self.terminal_config = None self.flick = FlickCharm() self.flick.activate_on(self.ui.terminalsScrollArea) self.flick.activate_on(self.ui.generalScrollArea) self.ui.version.setText(stoppark.__version__) self.get_time() self.ui.updateVersion.setVisible(False) self.ui.setupTerminals.clicked.connect(self.setup_terminals) self.ui.updateTerminals.clicked.connect(self.begin_terminal_update) self.wicd = None self.ui.setupNetworkConnection.clicked.connect(self.setup_network_connection) self.ui.apbState.stateChanged.connect(lambda state: self.option_changed.emit('apb', str(state))) self.ui.manualTicketPrint.stateChanged.connect(lambda state: self.option_changed.emit('ticket.manual_print', str(state)))
def __init__(self, image): QtGui.QWidget.__init__(self) self.setupUi(self) #self.scrollArea.setWidgetResizable(True) self.charm = FlickCharm() self.charm.activateOn(self.scrollArea) QObject.connect(self.fitToolButton,QtCore.SIGNAL('clicked()'), self.fitImage) QObject.connect(self.fullSizeToolButton,QtCore.SIGNAL('clicked()'), self.fullSizeImage) QObject.connect(self.cornersToolButton,QtCore.SIGNAL('clicked()'), self.cornersImage) QObject.connect(self.horizontalSlider,QtCore.SIGNAL('valueChanged(int)'), self.zoomImage) QObject.connect(self.colormapComboBox,QtCore.SIGNAL('currentIndexChanged(QString)'), self.colorMapChanged) #QObject.connect(self.minDoubleSpinBox,QtCore.SIGNAL('valueChanged(double)'), self.clampChanged) #QObject.connect(self.maxDoubleSpinBox,QtCore.SIGNAL('valueChanged(double)'), self.clampChanged) QObject.connect(self.histogram,QtCore.SIGNAL('clampChanged(double,double)'), self.clampChanged) self.splitter.setStretchFactor(0, 5) self.splitter.setStretchFactor(1, 2) self.colormap=[] currentMap=matplotlib.cm.get_cmap('gray') for n in range(256) : self.colormap.append( tuple([int(255*k) for k in currentMap(n)]) ) self.setImage(image) self.scrollArea.installEventFilter(self) self.painter=QPainter()
def __init__(self, parent=None): QWidget.__init__(self, parent) self.ui = uic.loadUiType("config.ui")[0]() self.ui.setupUi(self) self.terminals = None self.payment = None self.terminal_config = None self.flick = FlickCharm() self.flick.activate_on(self.ui.scrollArea)
class Config(QWidget): terminals_changed = pyqtSignal() terminals_update_requested = pyqtSignal() option_changed = pyqtSignal(str, str) own_ip_changed = pyqtSignal(str) def __init__(self, parent=None): QWidget.__init__(self, parent) self.ui = uic.loadUiType('config.ui')[0]() self.ui.setupUi(self) self.localize() self.terminals = None self.payment = None self.terminal_config = None self.flick = FlickCharm() self.flick.activate_on(self.ui.terminalsScrollArea) self.flick.activate_on(self.ui.generalScrollArea) self.ui.version.setText(stoppark.__version__) self.get_time() self.ui.updateVersion.setVisible(False) self.ui.setupTerminals.clicked.connect(self.setup_terminals) self.ui.updateTerminals.clicked.connect(self.begin_terminal_update) self.wicd = None self.ui.setupNetworkConnection.clicked.connect(self.setup_network_connection) self.ui.apbState.stateChanged.connect(lambda state: self.option_changed.emit('apb', str(state))) self.ui.manualTicketPrint.stateChanged.connect(lambda state: self.option_changed.emit('ticket.manual_print', str(state))) def localize(self): self.ui.tabs.setTabText(0, _('General')) self.ui.tabs.setTabText(1, _('Terminals')) self.ui.tabs.setTabText(2, _('Payments')) self.ui.versionTitle.setText(_('Version:')) self.ui.dateTimeTitle.setText(_('Date and time:')) self.ui.setTime.setText(_('Setup')) self.ui.dbIPTitle.setText(_('DB server IP:')) self.ui.setDBIP.setText(_('Setup')) self.ui.networkConnectionTitle.setText(_('Network connection:')) self.ui.setupNetworkConnection.setText(_('Setup network connection')) self.ui.updateTerminalsTitle.setText(_('Terminal list')) self.ui.updateTerminalsHelp.setText(_('Configure and update terminal list:')) self.ui.setupTerminals.setText(_('Configure')) self.ui.updateTerminals.setText(_('Update')) self.ui.updateConfigTitle.setText(_('Terminal setup')) self.ui.updateConfigHelp.setText(_('Perform global terminal setup:')) self.ui.updateConfig.setText(_('Setup')) self.ui.testsTitle.setText(_('Tests')) self.ui.testDisplayHelp.setText(_('Display test:')) self.ui.testDisplay.setText(_('Test display')) self.ui.apbTitle.setText(_('Antipassback')) self.ui.apbState.setText(_('Enable')) self.ui.manualTicketPrintTitle.setText(_('Manual ticket print')) self.ui.manualTicketPrint.setText(_('Enable')) def begin_session(self, fio, access): if access in ['admin', 'operator']: [self.ui.tabs.setTabEnabled(i, True) for i in [0, 1, 2]] self.ui.setTime.setEnabled(True) self.ui.updateVersion.setEnabled(True) return True if access in ['config']: [self.ui.tabs.setTabEnabled(i, True if i == 0 else False) for i in [0, 1, 2]] self.ui.setTime.setEnabled(False) self.ui.updateVersion.setEnabled(False) return True return False def end_session(self): [self.ui.tabs.setTabEnabled(i, False) for i in [0, 1, 2]] return True def setup(self, terminals, payment): self.terminals = terminals self.payment = payment self.ui.setTime.clicked.connect(self.set_time) self.ui.showKeyboard.clicked.connect(lambda: Keyboard.show()) self.ui.setDBIP.clicked.connect(self.set_db_ip) self.ui.testDisplay.clicked.connect(self.test_display) def handle_option(self, key, value): handler = { 'db.ip': lambda v: self.ui.dbIP.setText(v), 'apb': lambda v: self.ui.apbState.setCheckState(int(v)), 'ticket.manual_print': lambda v: self.ui.manualTicketPrint.setCheckState(int(v)) }.get(str(key), None) if handler: print 'found handler for ', key handler(value) def get_time(self): from PyQt4.QtCore import QTime, QDate self.ui.dateEdit.setDate(QDate.currentDate()) self.ui.timeEdit.setTime(QTime.currentTime()) def set_time(self): from subprocess import Popen new_date = self.ui.dateEdit.date() new_time = self.ui.timeEdit.time() new_datetime = datetime(year=new_date.year(), month=new_date.month(), day=new_date.day(), hour=new_time.hour(), minute=new_time.minute(), second=new_time.second()) arg = new_datetime.strftime('%m%d%H%M%Y') Popen(['date', arg]) def set_db_ip(self): self.option_changed.emit('db.ip', self.ui.dbIP.text()) self.ui.setDBIPHelp.setText(_('Update: %s') % (datetime.now().strftime(DATETIME_FORMAT_USER))) def test_display(self): self.terminals.test_display() self.ui.testDisplayResult.setText(_('Update: %s') % (datetime.now().strftime(DATETIME_FORMAT_USER))) def setup_terminals(self): from terminal_config import TerminalConfig self.terminal_config = TerminalConfig() if self.terminal_config.exec_() == QDialog.Accepted: self.begin_terminal_change() self.terminal_config = None def terminals_ready(self, ok): message = _('successful') if ok else _('unsuccessful') now = datetime.now().strftime(DATETIME_FORMAT_USER) self.ui.updateTerminalsResult.setText(_('Update: %(message)s (%(now)s)' % { 'message': message, 'now': now })) self.ui.updateTerminals.setEnabled(True) def begin_terminal_update(self): self.ui.updateTerminals.setEnabled(False) self.terminals_update_requested.emit() def begin_terminal_change(self): self.ui.updateTerminals.setEnabled(False) self.terminals_changed.emit() def setup_network_connection(self): Keyboard.show(layout=[]) from subprocess import Popen if self.wicd is not None: if self.wicd.poll() is None: return self.wicd = Popen(['xterm', '-maximized', '-e', 'wicd-curses'])
class ImagePreviewWidget(QtGui.QWidget, Ui_ImagePreviewWidget): def __init__(self, image): QtGui.QWidget.__init__(self) self.setupUi(self) #self.scrollArea.setWidgetResizable(True) self.charm = FlickCharm() self.charm.activateOn(self.scrollArea) QObject.connect(self.fitToolButton,QtCore.SIGNAL('clicked()'), self.fitImage) QObject.connect(self.fullSizeToolButton,QtCore.SIGNAL('clicked()'), self.fullSizeImage) QObject.connect(self.cornersToolButton,QtCore.SIGNAL('clicked()'), self.cornersImage) QObject.connect(self.horizontalSlider,QtCore.SIGNAL('valueChanged(int)'), self.zoomImage) QObject.connect(self.colormapComboBox,QtCore.SIGNAL('currentIndexChanged(QString)'), self.colorMapChanged) #QObject.connect(self.minDoubleSpinBox,QtCore.SIGNAL('valueChanged(double)'), self.clampChanged) #QObject.connect(self.maxDoubleSpinBox,QtCore.SIGNAL('valueChanged(double)'), self.clampChanged) QObject.connect(self.histogram,QtCore.SIGNAL('clampChanged(double,double)'), self.clampChanged) self.splitter.setStretchFactor(0, 5) self.splitter.setStretchFactor(1, 2) self.colormap=[] currentMap=matplotlib.cm.get_cmap('gray') for n in range(256) : self.colormap.append( tuple([int(255*k) for k in currentMap(n)]) ) self.setImage(image) self.scrollArea.installEventFilter(self) self.painter=QPainter() def eventFilter(self, obj, event): if event.type() == QEvent.Resize: if(self.fitToolButton.isChecked()): self.fitImage() elif(self.cornersToolButton.isChecked()): self.cornersImage() return False def setImage(self,image): #print 'opening:',image self.titleLabel.setText("<b>"+image+"</b>") self.image=image hdulist = pyfits.open(image) prihdr = hdulist[0].header keys=prihdr.ascardlist().keys() keys.sort() self.tableWidget.setRowCount(len(keys)); self.tableWidget.setColumnCount(2); i=0 for item in keys: self.tableWidget.setItem(i, 0, QTableWidgetItem(item)); self.tableWidget.setItem(i, 1, QTableWidgetItem(str(prihdr[item]))); i=i+1 self.tableWidget.resizeColumnsToContents() self.tableWidget.resizeRowsToContents() #load the image self.data = hdulist[0].data #.astype('float32') self.histogram.setData(self.data) min = self.data.min() max = self.data.max() #self.minDoubleSpinBox.setMinimum(min) #self.minDoubleSpinBox.setMaximum(max) #self.minDoubleSpinBox.setValue(min) #self.maxDoubleSpinBox.setMinimum(min) #self.maxDoubleSpinBox.setMaximum(max) #self.maxDoubleSpinBox.setValue(max) self.clampChanged(min,max) #create histogram #http://matplotlib.sourceforge.net/users/image_tutorial.html #print numpy.histogram(self.data,200) #im.show() def fitImage(self): #print 'fitting image' self.fitToolButton.setChecked(True) self.fullSizeToolButton.setChecked(False) self.cornersToolButton.setChecked(False) fittedimage=self.qimage.scaled(self.scrollArea.size().width()-4,self.scrollArea.height()-4,Qt.KeepAspectRatio,Qt.SmoothTransformation) self.imageLabel.setPixmap(QPixmap.fromImage(fittedimage)) def fullSizeImage(self): #print 'fitting image' self.fitToolButton.setChecked(False) self.fullSizeToolButton.setChecked(True) self.cornersToolButton.setChecked(False) self.imageLabel.setPixmap(QPixmap.fromImage(self.qimage)) def cornersImage(self): #print 'fitting image' self.fitToolButton.setChecked(False) self.fullSizeToolButton.setChecked(False) self.cornersToolButton.setChecked(True) width=self.scrollArea.size().width()-4 height=self.scrollArea.height()-4 cornersImage=QImage(width,height,QImage.Format_RGB32) #for n in range(256): # cornersImage.setColor (n, qRgb(*self.colormap[n][:3])) self.painter.begin(cornersImage) #upperLeft=self.qimage.copy(0,0,width/2,height/2) self.painter.drawImage(0,0,self.qimage.copy(0,0,width/2,height/2)) #upper left self.painter.drawImage(width/2,0,self.qimage.copy(self.qimage.width()-width/2,0,width/2,height/2)) #upper right self.painter.drawImage(0,height/2,self.qimage.copy(0,self.qimage.height()-height/2,width/2,height/2)) #lower left self.painter.drawImage(width/2,height/2,self.qimage.copy(self.qimage.width()-width/2,self.qimage.height()-height/2,width/2,height/2))#lower right self.painter.setPen(QColor(255,160,47)) self.painter.drawLine(width/2,0,width/2,height) self.painter.drawLine(0,height/2,width,height/2) xcenter=self.qimage.width()/2 ycenter=self.qimage.height()/2 self.painter.drawImage(width/4,height/4,self.qimage.copy(xcenter-width/4,ycenter-height/4,width/2,height/2)) self.painter.drawRect(width/4,height/4,width/2,height/2) self.painter.end() self.imageLabel.setPixmap(QPixmap.fromImage(cornersImage)) def zoomImage(self, value): #print 'zoom', value self.fitToolButton.setChecked(False) self.fullSizeToolButton.setChecked(False) self.cornersToolButton.setChecked(False) zoomimage=self.qimage.scaledToWidth(self.qimage.width()*value/100) self.imageLabel.setPixmap(QPixmap.fromImage(zoomimage)) def colorMapChanged(self, string) : self.colormap=[] currentMap=matplotlib.cm.get_cmap(str(string)) for n in range(256) : self.colormap.append( tuple([int(255*k) for k in currentMap(n)]) ) for n in range(256): self.qimage.setColor (n, qRgb(*self.colormap[n][:3])) self.redrawImage() #def clampChanged(self, v=None): # self.qimage=qimage2ndarray.gray2qimage(self.data, normalize = (self.minDoubleSpinBox.value(),self.maxDoubleSpinBox.value())) # self.colorMapChanged(str(self.colormapComboBox.currentText())) # pixmap = QPixmap.fromImage(self.qimage) # self.imageLabel.setPixmap(pixmap) # self.redrawImage() def clampChanged(self, min,max): #print "clambis",min,max self.qimage=qimage2ndarray.gray2qimage(self.data, normalize = (min,max)) self.colorMapChanged(str(self.colormapComboBox.currentText())) pixmap = QPixmap.fromImage(self.qimage) self.imageLabel.setPixmap(pixmap) self.redrawImage() def redrawImage(self): if(self.fitToolButton.isChecked()): self.fitImage() elif(self.cornersToolButton.isChecked()): self.cornersImage() elif(self.fullSizeToolButton.isChecked()): self.fullSizeImage() else: self.zoomImage(self.horizontalSlider.value())