Commit 23265307 authored by Martin Drechsler's avatar Martin Drechsler

Now the roi analysis is enabled.

parent c644ab2b
...@@ -8,206 +8,212 @@ Created on Thu May 31 14:22:48 2018 ...@@ -8,206 +8,212 @@ Created on Thu May 31 14:22:48 2018
import sys import sys
from pyqtgraph.Qt import QtCore, QtGui from pyqtgraph.Qt import QtGui
from myWidgets import anal_control_signal, digital_control_signal, activation_button, burleighWM from myWidgets import anal_control_signal, digital_control_signal, activation_button, burleighWM
from PyQt5.QtWidgets import QMainWindow
from pyqtgraph import dockarea from pyqtgraph import dockarea
import pyqtgraph as pg import pyqtgraph as pg
import myToolbar from myToolbar import myToolbarMenu
import qdarkstyle import qdarkstyle
import os import os
os.environ['PYQTGRAPH_QT_LIB'] = 'PyQt5' os.environ['PYQTGRAPH_QT_LIB'] = 'PyQt5'
############################################################################### ###############################################################################
#This creates the window for the gui class GuiMainWindow(QMainWindow):
app = QtGui.QApplication([]) def __init__(self):
app.setStyleSheet(qdarkstyle.load_stylesheet_from_environment(is_pyqtgraph=True)) # set dark style super().__init__()
win = QtGui.QMainWindow()
win.setWindowTitle('My GUI') self.initUI()
win.setWindowIcon(QtGui.QIcon('snuffles.png'))
def initUI(self):
self.win = QtGui.QMainWindow()
self.win.setWindowTitle('My GUI')
self.win.setWindowIcon(QtGui.QIcon('snuffles.png'))
app_icon = QtGui.QIcon()
app_icon.addFile('snuffles.png')
app.setWindowIcon(app_icon)
area = dockarea.DockArea() self.area = dockarea.DockArea()
win.setCentralWidget(area) self.win.setCentralWidget(self.area)
cw = QtGui.QWidget() self.cw = QtGui.QWidget()
win.show() self.win.show()
############################################################################### ###############################################################################
# Here I create the layouts # Here I create the layouts
layout397 = pg.LayoutWidget() self.layout397 = pg.LayoutWidget()
layout866 = pg.LayoutWidget() self.layout866 = pg.LayoutWidget()
layoutPI = pg.LayoutWidget() self.layoutPI = pg.LayoutWidget()
layoutIMG = pg.LayoutWidget() self.layoutIMG = pg.LayoutWidget()
layoutWM = pg.LayoutWidget() self.layoutWM = pg.LayoutWidget()
layout397_scan = pg.LayoutWidget() self.layout397_scan = pg.LayoutWidget()
layout866_scan = pg.LayoutWidget() self.layout866_scan = pg.LayoutWidget()
layout423_scan = pg.LayoutWidget() self.layout423_scan = pg.LayoutWidget()
layout_trap_electrodes = pg.LayoutWidget() self.layout_trap_electrodes = pg.LayoutWidget()
layout_activate = pg.LayoutWidget() self.layout_activate = pg.LayoutWidget()
# Here I create the docks # Here I create the docks
s1 = 100 self.s1 = 100
s2 = 100 self.s2 = 100
d397 = dockarea.Dock("Dock397", size=(s1, s2)) self.d397 = dockarea.Dock("Dock397", size=(self.s1, self.s2))
d866 = dockarea.Dock("Dock866", size=(s1, s2)) self.d866 = dockarea.Dock("Dock866", size=(self.s1, self.s2))
dPI = dockarea.Dock("DockPI", size=(s1, s2)) self.dPI = dockarea.Dock("DockPI", size=(self.s1, self.s2))
dWM = dockarea.Dock("DockWM", size=(s1, s2)) self.dWM = dockarea.Dock("DockWM", size=(self.s1, self.s2))
d397_scan = dockarea.Dock("Dock 397 scan", size=(s1, s2)) self.d397_scan = dockarea.Dock("Dock 397 scan", size=(self.s1, self.s2))
d866_scan = dockarea.Dock("Dock 866 scan", size=(s1, s2)) self.d866_scan = dockarea.Dock("Dock 866 scan", size=(self.s1, self.s2))
d423_scan = dockarea.Dock("Dock 423 scan", size=(s1, s2)) self.d423_scan = dockarea.Dock("Dock 423 scan", size=(self.s1, self.s2))
dtrap_electrodes = dockarea.Dock("Dock Trap Electrodes", size=(s1, s2)) self.dtrap_electrodes = dockarea.Dock("Dock Trap Electrodes", size=(self.s1, self.s2))
dactivate = dockarea.Dock(" ", hideTitle=False, size = (s1/4, s2)) self.dactivate = dockarea.Dock(" ", hideTitle=False, size = (self.s1/4, self.s2))
dactivate.hideTitleBar() self.dactivate.hideTitleBar()
# Here I add the docks # Here I add the docks
area.addDock( dtrap_electrodes) self.area.addDock( self.dtrap_electrodes)
area.addDock(d397, 'bottom', dtrap_electrodes) self.area.addDock(self.d397, 'bottom', self.dtrap_electrodes)
area.addDock(d866, 'bottom', d397) self.area.addDock(self.d866, 'bottom', self.d397)
area.addDock(dPI, 'bottom', d866) self.area.addDock(self.dPI, 'bottom', self.d866)
area.addDock(dWM, 'bottom', dPI) self.area.addDock(self.dWM, 'bottom', self.dPI)
area.addDock(d397_scan, 'right', d397) self.area.addDock(self.d397_scan, 'right', self.d397)
area.addDock(d423_scan, 'right', dPI) self.area.addDock(self.d423_scan, 'right', self.dPI)
area.addDock(d866_scan, 'right', d866) self.area.addDock(self.d866_scan, 'right', self.d866)
area.addDock(dactivate, 'right', dtrap_electrodes) self.area.addDock(self.dactivate, 'right', self.dtrap_electrodes)
area.moveDock(dWM, 'above', dtrap_electrodes) self.area.moveDock(self.dWM, 'above', self.dtrap_electrodes)
# Here I add the layouts to the corresponding dock # Here I add the layouts to the corresponding dock
d397.addWidget(layout397) self.d397.addWidget(self.layout397)
d866.addWidget(layout866) self.d866.addWidget(self.layout866)
dPI.addWidget(layoutPI) self.dPI.addWidget(self.layoutPI)
dWM.addWidget(layoutWM) self.dWM.addWidget(self.layoutWM)
d397_scan.addWidget(layout397_scan) self.d397_scan.addWidget(self.layout397_scan)
d866_scan.addWidget(layout866_scan) self.d866_scan.addWidget(self.layout866_scan)
d423_scan.addWidget(layout423_scan) self.d423_scan.addWidget(self.layout423_scan)
dtrap_electrodes.addWidget(layout_trap_electrodes) self.dtrap_electrodes.addWidget(self.layout_trap_electrodes)
dactivate.addWidget(layout_activate) self.dactivate.addWidget(self.layout_activate)
############ creating the controls ######################## ############ creating the controls ########################
piezoA397 = anal_control_signal('piezoA397', 13, out_minimum=0, out_maximum=4, out_step=0.01) self.piezoA397 = anal_control_signal('piezoA397', 13, out_minimum=0, out_maximum=4, out_step=0.01)
piezoB397 = anal_control_signal('piezoB397', 7, out_step = 0.01) self.piezoB397 = anal_control_signal('piezoB397', 7, out_step = 0.01)
piezoA866 = anal_control_signal('piezoA866', 14, out_minimum=0, out_maximum=4, out_step=0.01) self.piezoA866 = anal_control_signal('piezoA866', 14, out_minimum=0, out_maximum=4, out_step=0.01)
piezoB866 = anal_control_signal('piezoB866', 6, out_step = 0.01) self.piezoB866 = anal_control_signal('piezoB866', 6, out_step = 0.01)
piezoA423 = anal_control_signal('piezoA423', 1, out_step = 0.01) self.piezoA423 = anal_control_signal('piezoA423', 1, out_step = 0.01)
trapDCA = anal_control_signal('DC A', 2) self.trapDCA = anal_control_signal('DC A', 2)
trapDCB = anal_control_signal('DC B', 3) self.trapDCB = anal_control_signal('DC B', 3)
trapCompC = anal_control_signal('Comp C', 4) self.trapCompC = anal_control_signal('Comp C', 4)
trapCompD = anal_control_signal('Comp D', 5) self.trapCompD = anal_control_signal('Comp D', 5)
shutter397 = digital_control_signal('shutter397', 0) self.shutter397 = digital_control_signal('shutter397', 0)
shutter866 = digital_control_signal('shutter866', 2) self.shutter866 = digital_control_signal('shutter866', 2)
shutter423 = digital_control_signal('shutter423', 1) self.shutter423 = digital_control_signal('shutter423', 1)
shutterLED = digital_control_signal('shutterLED', 3) self.shutterLED = digital_control_signal('shutterLED', 3)
#############Toolbar and initial loading of config ############################ #############Toolbar and initial loading of config ############################
myToolbar.first_load(anal_control_signal._registry)
myToolbar.incorporate_toolbar(win, anal_control_signal._registry) toolbar = myToolbarMenu(self.win, anal_control_signal._registry )
############################################################################### ###############################################################################
#here I connect the spinboxes to the daq analog outputs: #here I connect the spinboxes to the daq analog outputs:
for ao in anal_control_signal._registry: for ao in anal_control_signal._registry:
ao.connectSpinBoxesToDaq() ao.connectSpinBoxesToDaq()
############################################################################### ###############################################################################
#activate button #activate button
actB = activation_button() self.actB = activation_button()
layout_activate.addWidget(actB.button) self.layout_activate.addWidget(self.actB.button)
############################################################################### ###############################################################################
#Adding the controls: #Adding the controls:
######### 397 ########### ######### 397 ###########
layout397.addWidget(QtGui.QLabel('397'), 0, 0) self.layout397.addWidget(QtGui.QLabel('397'), 0, 0)
layout397.addWidget(QtGui.QLabel(piezoA397.name), 1, 0), layout397.addWidget(piezoA397.sb, 1, 1) self.layout397.addWidget(QtGui.QLabel(self.piezoA397.name), 1, 0), self.layout397.addWidget(self.piezoA397.sb, 1, 1)
layout397.addWidget(QtGui.QLabel(piezoB397.name), 2, 0), layout397.addWidget(piezoB397.sb, 2, 1) self.layout397.addWidget(QtGui.QLabel(self.piezoB397.name), 2, 0), self.layout397.addWidget(self.piezoB397.sb, 2, 1)
layout397.addWidget(QtGui.QLabel(shutter397.name), 3, 0), layout397.addWidget(shutter397.cb, 3, 1) self.layout397.addWidget(QtGui.QLabel(self.shutter397.name), 3, 0), self.layout397.addWidget(self.shutter397.cb, 3, 1)
layout397_scan.addWidget(QtGui.QLabel('397 Scan piezo B'), 0, 0) self.layout397_scan.addWidget(QtGui.QLabel('397 Scan piezo B'), 0, 0)
layout397_scan.addWidget(QtGui.QLabel('start'), 1, 0), layout397_scan.addWidget(piezoB397.scan_sb_start, 1, 1) self.layout397_scan.addWidget(QtGui.QLabel('start'), 1, 0), self.layout397_scan.addWidget(self.piezoB397.scan_sb_start, 1, 1)
layout397_scan.addWidget(QtGui.QLabel('stop'), 2, 0), layout397_scan.addWidget(piezoB397.scan_sb_stop, 2, 1) self.layout397_scan.addWidget(QtGui.QLabel('stop'), 2, 0), self.layout397_scan.addWidget(self.piezoB397.scan_sb_stop, 2, 1)
layout397_scan.addWidget(QtGui.QLabel('period'), 3, 0), layout397_scan.addWidget(piezoB397.scan_sb_period, 3, 1) self.layout397_scan.addWidget(QtGui.QLabel('period'), 3, 0), self.layout397_scan.addWidget(self.piezoB397.scan_sb_period, 3, 1)
layout397_scan.addWidget(QtGui.QLabel('Scanning'), 4, 0), layout397_scan.addWidget(piezoB397.scan_button, 4, 1) self.layout397_scan.addWidget(QtGui.QLabel('Scanning'), 4, 0), self.layout397_scan.addWidget(self.piezoB397.scan_button, 4, 1)
layout397_scan.addWidget(piezoB397.scanLabelValue, 5, 0) self.layout397_scan.addWidget(self.piezoB397.scanLabelValue, 5, 0)
layout397_scan.addWidget(piezoB397.scanpBar, 5, 1) self.layout397_scan.addWidget(self.piezoB397.scanpBar, 5, 1)
######################### #########################
######### 866 ########### ######### 866 ###########
layout866.addWidget(QtGui.QLabel('866'), 0, 0) self.layout866.addWidget(QtGui.QLabel('866'), 0, 0)
layout866.addWidget(QtGui.QLabel(piezoA866.name), 1, 0), layout866.addWidget(piezoA866.sb, 1, 1) self.layout866.addWidget(QtGui.QLabel(self.piezoA866.name), 1, 0), self.layout866.addWidget(self.piezoA866.sb, 1, 1)
layout866.addWidget(QtGui.QLabel(piezoB866.name), 2, 0), layout866.addWidget(piezoB866.sb, 2, 1) self.layout866.addWidget(QtGui.QLabel(self.piezoB866.name), 2, 0), self.layout866.addWidget(self.piezoB866.sb, 2, 1)
layout866.addWidget(QtGui.QLabel(shutter866.name), 3, 0), layout866.addWidget(shutter866.cb, 3, 1) self.layout866.addWidget(QtGui.QLabel(self.shutter866.name), 3, 0), self.layout866.addWidget(self.shutter866.cb, 3, 1)
layout866_scan.addWidget(QtGui.QLabel('866 Scan piezo B'), 0, 0) self.layout866_scan.addWidget(QtGui.QLabel('866 Scan piezo B'), 0, 0)
layout866_scan.addWidget(QtGui.QLabel('start'), 1, 0), layout866_scan.addWidget(piezoB866.scan_sb_start, 1, 1) self.layout866_scan.addWidget(QtGui.QLabel('start'), 1, 0), self.layout866_scan.addWidget(self.piezoB866.scan_sb_start, 1, 1)
layout866_scan.addWidget(QtGui.QLabel('stop'), 2, 0), layout866_scan.addWidget(piezoB866.scan_sb_stop, 2, 1) self.layout866_scan.addWidget(QtGui.QLabel('stop'), 2, 0), self.layout866_scan.addWidget(self.piezoB866.scan_sb_stop, 2, 1)
layout866_scan.addWidget(QtGui.QLabel('period'), 3, 0), layout866_scan.addWidget(piezoB866.scan_sb_period, 3, 1) self.layout866_scan.addWidget(QtGui.QLabel('period'), 3, 0), self.layout866_scan.addWidget(self.piezoB866.scan_sb_period, 3, 1)
layout866_scan.addWidget(QtGui.QLabel('Scanning'), 4, 0), layout866_scan.addWidget(piezoB866.scan_button, 4, 1) self.layout866_scan.addWidget(QtGui.QLabel('Scanning'), 4, 0), self.layout866_scan.addWidget(self.piezoB866.scan_button, 4, 1)
layout866_scan.addWidget(piezoB866.scanLabelValue, 5, 0) self.layout866_scan.addWidget(self.piezoB866.scanLabelValue, 5, 0)
layout866_scan.addWidget(piezoB866.scanpBar, 5, 1) self.layout866_scan.addWidget(self.piezoB866.scanpBar, 5, 1)
######################### #########################
######### PI ########### ######### PI ###########
layoutPI.addWidget(QtGui.QLabel('Photoion'), 0, 0) self.layoutPI.addWidget(QtGui.QLabel('Photoion'), 0, 0)
layoutPI.addWidget(QtGui.QLabel(piezoA423.name), 1, 0), layoutPI.addWidget(piezoA423.sb, 1, 1) self.layoutPI.addWidget(QtGui.QLabel(self.piezoA423.name), 1, 0), self.layoutPI.addWidget(self.piezoA423.sb, 1, 1)
layoutPI.addWidget(QtGui.QLabel(shutter423.name), 2, 0), layoutPI.addWidget(shutter423.cb, 2, 1) self.layoutPI.addWidget(QtGui.QLabel(self.shutter423.name), 2, 0), self.layoutPI.addWidget(self.shutter423.cb, 2, 1)
layoutPI.addWidget(QtGui.QLabel(shutterLED.name), 3, 0), layoutPI.addWidget(shutterLED.cb, 3, 1) self.layoutPI.addWidget(QtGui.QLabel(self.shutterLED.name), 3, 0), self.layoutPI.addWidget(self.shutterLED.cb, 3, 1)
layout423_scan.addWidget(QtGui.QLabel('423 Scan piezo A'), 0, 0) self.layout423_scan.addWidget(QtGui.QLabel('423 Scan piezo A'), 0, 0)
layout423_scan.addWidget(QtGui.QLabel('start'), 1, 0), layout423_scan.addWidget(piezoA423.scan_sb_start, 1, 1) self.layout423_scan.addWidget(QtGui.QLabel('start'), 1, 0), self.layout423_scan.addWidget(self.piezoA423.scan_sb_start, 1, 1)
layout423_scan.addWidget(QtGui.QLabel('stop'), 2, 0), layout423_scan.addWidget(piezoA423.scan_sb_stop, 2, 1) self.layout423_scan.addWidget(QtGui.QLabel('stop'), 2, 0), self.layout423_scan.addWidget(self.piezoA423.scan_sb_stop, 2, 1)
layout423_scan.addWidget(QtGui.QLabel('period'), 3, 0), layout423_scan.addWidget(piezoA423.scan_sb_period, 3, 1) self.layout423_scan.addWidget(QtGui.QLabel('period'), 3, 0), self.layout423_scan.addWidget(self.piezoA423.scan_sb_period, 3, 1)
layout423_scan.addWidget(QtGui.QLabel('Scanning'), 4, 0), layout423_scan.addWidget(piezoA423.scan_button, 4, 1) self.layout423_scan.addWidget(QtGui.QLabel('Scanning'), 4, 0), self.layout423_scan.addWidget(self.piezoA423.scan_button, 4, 1)
layout423_scan.addWidget(piezoA423.scanLabelValue, 5, 0) self.layout423_scan.addWidget(self.piezoA423.scanLabelValue, 5, 0)
layout423_scan.addWidget(piezoA423.scanpBar, 5, 1) self.layout423_scan.addWidget(self.piezoA423.scanpBar, 5, 1)
######################### #########################
######### trap electrodes ########### ######### trap electrodes ###########
layout_trap_electrodes.addWidget(QtGui.QLabel('Trap electrodes'), 0, 0) self.layout_trap_electrodes.addWidget(QtGui.QLabel('Trap electrodes'), 0, 0)
layout_trap_electrodes.addWidget(QtGui.QLabel(trapDCA.name), 1, 1), layout_trap_electrodes.addWidget(trapDCA.sb, 1, 2) self.layout_trap_electrodes.addWidget(QtGui.QLabel(self.trapDCA.name), 1, 1), self.layout_trap_electrodes.addWidget(self.trapDCA.sb, 1, 2)
layout_trap_electrodes.addWidget(QtGui.QLabel(trapDCB.name), 2, 1), layout_trap_electrodes.addWidget(trapDCB.sb, 2, 2) self.layout_trap_electrodes.addWidget(QtGui.QLabel(self.trapDCB.name), 2, 1), self.layout_trap_electrodes.addWidget(self.trapDCB.sb, 2, 2)
layout_trap_electrodes.addWidget(QtGui.QLabel(trapCompC.name), 1, 3), layout_trap_electrodes.addWidget(trapCompC.sb, 1, 4) self.layout_trap_electrodes.addWidget(QtGui.QLabel(self.trapCompC.name), 1, 3), self.layout_trap_electrodes.addWidget(self.trapCompC.sb, 1, 4)
layout_trap_electrodes.addWidget(QtGui.QLabel(trapCompD.name), 2, 3), layout_trap_electrodes.addWidget(trapCompD.sb, 2, 4) self.layout_trap_electrodes.addWidget(QtGui.QLabel(self.trapCompD.name), 2, 3), self.layout_trap_electrodes.addWidget(self.trapCompD.sb, 2, 4)
########################################################### ###########################################################
#all shutter start in False: #all shutter start in False:
shutters = [shutter397, shutter866, shutter423, shutterLED] self.shutters = [self.shutter397, self.shutter866, self.shutter423, self.shutterLED]
try: try:
for sh in shutters: for sh in self.shutters:
sh.DO.set_out(True) sh.DO.set_out(True)
except: except:
pass pass
############################################################################### ###############################################################################
#read wavemeter # read wavemeter
wavemeter = burleighWM(layoutWM, dWM) self.wavemeter = burleighWM(self.layoutWM, self.dWM)
############################################################################### ###############################################################################
if __name__ == '__main__':
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'): app = QtGui.QApplication([])
QtGui.QApplication.instance().exec_() myGuiMainWIndow = GuiMainWindow()
app.setStyleSheet(qdarkstyle.load_stylesheet_from_environment(is_pyqtgraph=True)) # set dark style
app_icon = QtGui.QIcon()
app_icon.addFile('snuffles.png')
app.setWindowIcon(app_icon)
sys.exit(app.exec_())
#if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
# QtGui.QApplication.instance().exec_()
...@@ -7,13 +7,69 @@ Created on Thu Jul 5 12:17:30 2018 ...@@ -7,13 +7,69 @@ Created on Thu Jul 5 12:17:30 2018
from PyQt5.QtCore import QSettings from PyQt5.QtCore import QSettings
from PyQt5.QtWidgets import QAction, QFileDialog from PyQt5.QtWidgets import QAction, QFileDialog, QInputDialog, QWidget
from threading import Thread from threading import Thread
from webcamROI import roiWindow from webcamROI import roiWindow
#%% #%%
class myToolbarMenu(QWidget):
"""
This will create a toolbar menu
"""
def save(aos): def __init__(self, win, analog_control_signals):
super().__init__()
self.MainGuiWindow = win
self.aos = analog_control_signals
self.first_load(self.aos)
self.incorporate_toolbar(self.MainGuiWindow, self.aos)
self.createAosDict()
def createAosDict(self):
analogs = self.aos
self.aosDicc = {}
for i in range(len(analogs)):
self.aosDicc[analogs[i].name] = analogs[i]
def incorporate_toolbar(self, win, analog_control_signals):
menubar = win.menuBar()
saveAct = QAction('Save', win)
loadAct = QAction('Load', win)
saveAsAct = QAction('Save as' , win)
openFromAct = QAction('open from', win)
win.statusBar()
menubar = win.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(saveAct)
fileMenu.addAction(loadAct)
fileMenu.addAction(saveAsAct)
fileMenu.addAction(openFromAct)
viewMenu = menubar.addMenu('Monitor')
viewWebcams = QAction('View webcams', win, checkable=True)
viewWebcams.setChecked(False)
viewMenu.addAction(viewWebcams)
roiMenu = menubar.addMenu('Roi')
plotRoi = QAction('Open roi plot', win)
roiMenu.addAction(plotRoi)
saveAct.triggered.connect(lambda: self.save(analog_control_signals))
loadAct.triggered.connect(lambda: self.load(analog_control_signals))
saveAsAct.triggered.connect(lambda: self.save_as(analog_control_signals, win))
openFromAct.triggered.connect(lambda: self.open_from(analog_control_signals, win))
viewWebcams.toggled.connect(lambda: self.putWebcams(viewWebcams.isChecked()) )
plotRoi.triggered.connect(self.openRoi)
def save(self, aos):
settings = QSettings('C:\\Users\\Usuario\\Documents\\control_app\\config.ini', QSettings.IniFormat) settings = QSettings('C:\\Users\\Usuario\\Documents\\control_app\\config.ini', QSettings.IniFormat)
settings.beginGroup('Ventana') settings.beginGroup('Ventana')
for ao in aos: for ao in aos:
...@@ -25,7 +81,7 @@ def save(aos): ...@@ -25,7 +81,7 @@ def save(aos):
settings.endGroup() settings.endGroup()
print('saving') print('saving')
def load(aos): def load(self, aos):
settings = QSettings('C:\\Users\\Usuario\\Documents\\control_app\\config.ini', QSettings.IniFormat) settings = QSettings('C:\\Users\\Usuario\\Documents\\control_app\\config.ini', QSettings.IniFormat)
settings.beginGroup('Ventana') settings.beginGroup('Ventana')
for ao in aos: for ao in aos:
...@@ -35,7 +91,7 @@ def load(aos): ...@@ -35,7 +91,7 @@ def load(aos):
spinb.setValue( float(spin) ) spinb.setValue( float(spin) )
settings.endGroup() settings.endGroup()
def first_load(aos): def first_load(self, aos):
try: try:
settings = QSettings('C:\\Users\\Usuario\\Documents\\control_app\\config.ini', QSettings.IniFormat) settings = QSettings('C:\\Users\\Usuario\\Documents\\control_app\\config.ini', QSettings.IniFormat)
except: except:
...@@ -51,7 +107,7 @@ def first_load(aos): ...@@ -51,7 +107,7 @@ def first_load(aos):
settings.endGroup() settings.endGroup()
def save_as(aos, window): def save_as(self, aos, window):
name = QFileDialog.getSaveFileName(window, 'Save File') name = QFileDialog.getSaveFileName(window, 'Save File')
file = open(name[0], 'w+') file = open(name[0], 'w+')
...@@ -67,7 +123,7 @@ def save_as(aos, window): ...@@ -67,7 +123,7 @@ def save_as(aos, window):
settings.endGroup() settings.endGroup()
print('saving to %s' % name[0]) print('saving to %s' % name[0])
def open_from(aos, window): def open_from(self, aos, window):
name = QFileDialog.getOpenFileName(window, 'Save File') name = QFileDialog.getOpenFileName(window, 'Save File')
settings = QSettings(name[0], QSettings.IniFormat) settings = QSettings(name[0], QSettings.IniFormat)
...@@ -79,59 +135,29 @@ def open_from(aos, window): ...@@ -79,59 +135,29 @@ def open_from(aos, window):
spinb.setValue( float(spin) ) spinb.setValue( float(spin) )
settings.endGroup() settings.endGroup()
def startWebcamsThread(): def startWebcamsThread(self):
exec(open('C:\\Users\\Usuario\\Documents\\control_app\\webcams.py').read()) exec(open('C:\\Users\\Usuario\\Documents\\control_app\\webcams.py').read())
def putWebcams(checked): def putWebcams(self, checked):
if checked: if checked:
t_webcams = Thread(target=startWebcamsThread, args=()) t_webcams = Thread(target=self.startWebcamsThread, args=())
t_webcams.start() t_webcams.start()
else: else:
pass pass
def openRoi(): def openRoi(self):
print('opening roi window') print('opening roi window')
#t_roi = Thread(target=startRoiThread, args=()) ao = self.getChoiceForRoi()
#t_roi.start() self.startRoiThread(ao)
startRoiThread()
def startRoiThread():
roiW = roiWindow()
roiW.w.show()
def incorporate_toolbar(win, analog_control_signals):
menubar = win.menuBar()
saveAct = QAction('Save', win)
loadAct = QAction('Load', win)
saveAsAct = QAction('Save as' , win)
openFromAct = QAction('open from', win)
win.statusBar()
menubar = win.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(saveAct)
fileMenu.addAction(loadAct)
fileMenu.addAction(saveAsAct)
fileMenu.addAction(openFromAct)
def startRoiThread(self, ao):
self.roiW = roiWindow(ao)
self.roiW.w.show()
viewMenu = menubar.addMenu('Monitor') def getChoiceForRoi(self):
viewWebcams = QAction('View webcams', win, checkable=True) items = self.aosDicc.keys()
viewWebcams.setChecked(False) item, okPressed = QInputDialog.getItem(self, "Get item","Color:", items, 0, False)
viewMenu.addAction(viewWebcams) if okPressed and item:
return self.aosDicc[item]
roiMenu = menubar.addMenu('Roi')
plotRoi = QAction('Open roi plot', win)
roiMenu.addAction(plotRoi)
\ No newline at end of file
saveAct.triggered.connect(lambda: save(analog_control_signals))
loadAct.triggered.connect(lambda: load(analog_control_signals))
saveAsAct.triggered.connect(lambda: save_as(analog_control_signals, win))
openFromAct.triggered.connect(lambda: open_from(analog_control_signals, win))
viewWebcams.toggled.connect(lambda: putWebcams(viewWebcams.isChecked()) )
plotRoi.triggered.connect(openRoi)
\ No newline at end of file
...@@ -11,16 +11,21 @@ import numpy as np ...@@ -11,16 +11,21 @@ import numpy as np
import pyqtgraph as pg import pyqtgraph as pg
import cv2 import cv2
from PyQt5.QtCore import QTimer from PyQt5.QtCore import QTimer
#from myWidgets import anal_control_signal
import sys import sys
from PyQt5.QtWidgets import QMainWindow, QApplication from PyQt5.QtWidgets import QMainWindow, QApplication, QMessageBox, QPushButton, QGraphicsProxyWidget
class roiWindow(QMainWindow): class roiWindow(QMainWindow):
def __init__(self): def __init__(self, aoScan):
super().__init__() super().__init__()
self.aoScan = aoScan
print(self.aoScan.name, self.aoScan.sb.val)
self.cap = cv2.VideoCapture(1) self.cap = cv2.VideoCapture(1)
...@@ -30,7 +35,7 @@ class roiWindow(QMainWindow): ...@@ -30,7 +35,7 @@ class roiWindow(QMainWindow):
self.rois = [] self.rois = []
#self.rois.append(pg.EllipseROI([110, 10], [30, 20], pen=(3,9))) #self.rois.append(pg.EllipseROI([110, 10], [30, 20], pen=(3,9)))
self.rois.append(pg.TestROI([0, 0], [20, 20], pen=(0,9))) self.rois.append(pg.TestROI([500, 500], [100, 100], pen=(0,9)))
self.initUI() self.initUI()
...@@ -48,13 +53,13 @@ class roiWindow(QMainWindow): ...@@ -48,13 +53,13 @@ class roiWindow(QMainWindow):
self.imgTimer = QTimer() self.imgTimer = QTimer()
self.imgTimer.timeout.connect(self.updateImage) self.imgTimer.timeout.connect(self.updateImage)
self.imgTimer.start(10) self.imgTimer.start(2)
self.im2 = pg.ImageItem() self.im2 = pg.ImageItem()
self.v2 = self.w.addViewBox(1,0) self.v2 = self.w.addViewBox(1,0)
self.v2.addItem(self.im2) self.v2.addItem(self.im2)
#plot real time
self.p = self.w.addPlot(row = 3, col = 0, title="Updating plot") self.p = self.w.addPlot(row = 3, col = 0, title="Updating plot")
self.p.setRange(QtCore.QRectF(0, -10, 5000, 20)) self.p.setRange(QtCore.QRectF(0, -10, 5000, 20))
self.p.setAutoPan(y=True) self.p.setAutoPan(y=True)
...@@ -62,16 +67,61 @@ class roiWindow(QMainWindow): ...@@ -62,16 +67,61 @@ class roiWindow(QMainWindow):
self.curve = self.p.plot(pen='y') self.curve = self.p.plot(pen='y')
self.pv = self.w.addPlot(row = 4, col = 0, title = "Updating plot")
self.pv.setRange(QtCore.QRectF(0, -10, 5000, 20))
self.pv.setAutoPan(y=True)
self.curveVoltage = self.pv.plot(pen='y')
self.voltageDataX = []
self.voltageDataY = []
self.aoScan.ScanTimer.timeout.connect(self.updateVoltagePlotvsI)
self.lastRoi = None self.eraseButton = QPushButton('Erase')
self.eraseButton.clicked.connect(self.erasePlot)
proxy = QGraphicsProxyWidget()
proxy.setWidget(self.eraseButton)
self.pv.addItem(proxy,row=1,col=1)
self.lastRoi = None
self.newData = 0
## Add each ROI to the scene and link its data to a plot curve with the same color ## Add each ROI to the scene and link its data to a plot curve with the same color
for r in self.rois: for r in self.rois:
self.v.addItem(r) self.v.addItem(r)
r.sigRegionChanged.connect(self.updateRoi) r.sigRegionChanged.connect(self.updateRoi)
self.w.show() self.w.show()
self.w.closeEvent = self.myCloseEvent
def updateVoltagePlotvsI(self):
#plot against voltage
self.voltageDataX = np.append(self.voltageDataX, self.aoScan.scan_step)
self.voltageDataY = np.append(self.voltageDataY, self.newData)
#○print(' Roi: ', self.voltageDataX[-1], self.voltageDataY[-1])
self.pv.setRange(xRange = (float(self.aoScan.scan_sb_start.val), float(self.aoScan.scan_sb_stop.val)), yRange = (0, 255))
self.curveVoltage.setData(self.voltageDataX, self.voltageDataY)
def erasePlot(self):
self.voltageDataX = []
self.voltageDataY = []
def myCloseEvent(self, event):
# this overrides the closeEvent method
reply = QMessageBox.question(self, 'Message',
"Quit roi analysis screen?", QMessageBox.Yes |
QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
self.imgTimer.stop()
self.cap.release()
cv2.destroyAllWindows()
event.accept()
else:
event.ignore()
def capture(self): def capture(self):
...@@ -91,8 +141,8 @@ class roiWindow(QMainWindow): ...@@ -91,8 +141,8 @@ class roiWindow(QMainWindow):
self.lastRoi = roi self.lastRoi = roi
roiSlice = roi.getArrayRegion(self.im1.image, img=self.im1) roiSlice = roi.getArrayRegion(self.im1.image, img=self.im1)
self.im2.setImage(roiSlice) self.im2.setImage(roiSlice)
newData = np.mean(roiSlice) self.newData = np.mean(roiSlice)
self.data[self.i] = newData self.data[self.i] = self.newData
self.i = np.mod(self.i + 1, len(self.data)) self.i = np.mod(self.i + 1, len(self.data))
self.curve.setData(self.data) self.curve.setData(self.data)
...@@ -103,8 +153,10 @@ class roiWindow(QMainWindow): ...@@ -103,8 +153,10 @@ class roiWindow(QMainWindow):
if __name__ == '__main__': if __name__ == '__main__':
ao = anal_control_signal('ao', 0)
app = QApplication(sys.argv) app = QApplication(sys.argv)
ex = roiWindow() ex = roiWindow(ao)
sys.exit(app.exec_()) sys.exit(app.exec_())
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment