Newer
Older
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 5 12:17:30 2018
@author: Usuario
"""
from PyQt5.QtCore import QSettings
from PyQt5.QtWidgets import QAction, QFileDialog, QWidget
from threading import Thread
from subclasses.controllayouts import LaserControlLayout, LaserScanLayout
Martin Drechsler
committed
#%%
class myToolbarMenu(QWidget):
"""
This will create a toolbar menu
"""
Martin Drechsler
committed
def __init__(self, win):
super().__init__()
self.MainGuiWindow = win
Martin Drechsler
committed
self.sbsDicc = dict()
self.cbsDicc = dict()
Martin Drechsler
committed
self.incorporate_toolbar(self.MainGuiWindow)
self.fillSpinBoxesDict()
self.fillCheckBoxesDict()
Martin Drechsler
committed
def fillSpinBoxesDict(self):
Martin Drechsler
committed
for l in LaserControlLayout._registry:
for sb_name in l.spinboxes:
self.sbsDicc[sb_name] = l.spinboxes[sb_name]
for l in LaserScanLayout._registry:
for sb_name in l.spinboxes:
self.sbsDicc['_'.join([l.name, sb_name])] = l.spinboxes[sb_name]
def fillCheckBoxesDict(self):
for l in LaserControlLayout._registry:
for cb_name in l.checkboxes:
self.cbsDicc[cb_name] = l.checkboxes[cb_name]
Martin Drechsler
committed
def createElectrodesDict(self):
d = dict()
for l in LaserControlLayout._registry:
if l.name == 'electrodes':
for sb_name in l.spinboxes:
d[sb_name] = l.spinboxes[sb_name]
return d
def incorporate_toolbar(self, win):
Martin Drechsler
committed
Martin Drechsler
committed
menuBar = win.menuBar
#statusBar = QtGui.QStatusBar(self)
Martin Drechsler
committed
Martin Drechsler
committed
saveAct = QAction('Save', win)
loadAct = QAction('Load', win)
saveAsAct = QAction('Save as' , win)
openFromAct = QAction('open from', win)
loadElectrodesAct = QAction('Load electrodes', win)
Martin Drechsler
committed
menubar = menuBar
fileMenu = menubar.addMenu('&File')
Martin Drechsler
committed
fileMenu.addAction(saveAct)
fileMenu.addAction(loadAct)
fileMenu.addAction(saveAsAct)
fileMenu.addAction(openFromAct)
fileMenu.addAction(loadElectrodesAct)
viewMenu = menubar.addMenu('Monitor')
viewWebcams = QAction('View webcams', win, checkable=True)
viewWebcams.setChecked(False)
viewMenu.addAction(viewWebcams)
Martin Drechsler
committed
saveAct.triggered.connect(lambda: self.save())
loadAct.triggered.connect(lambda: self.load())
Martin Drechsler
committed
loadElectrodesAct.triggered.connect(lambda: self.load_electrodes(win))
saveAsAct.triggered.connect(lambda: self.save_as(win))
openFromAct.triggered.connect(lambda: self.open_from(win))
viewWebcams.toggled.connect(lambda: self.putWebcams(viewWebcams.isChecked()) )
Martin Drechsler
committed
Martin Drechsler
committed
def save(self, location='config.ini'):
Martin Drechsler
committed
settings = QSettings(str(location), QSettings.IniFormat)
Martin Drechsler
committed
for text, spinb in self.sbsDicc.items():
settings.setValue(text, spinb.value())
for text, checkb in self.cbsDicc.items():
settings.setValue(text, checkb.isChecked())
Martin Drechsler
committed
Martin Drechsler
committed
Martin Drechsler
committed
def load(self, location='config.ini'):
Martin Drechsler
committed
settings = QSettings(location, QSettings.IniFormat)
Martin Drechsler
committed
for text, spinb in self.sbsDicc.items():
spinbox_saved_value = settings.value(text)
try:
spinb.setValue( float(spinbox_saved_value) )
except TypeError:
spinb.setValue( float(spinb.value()) )
for text, checkb in self.cbsDicc.items():
checkbox_saved_value = settings.value(text)
if checkbox_saved_value in ['true', 'True', True]:
checkb.setChecked(True)
else:
checkb.setChecked(False)
Martin Drechsler
committed
def save_as(self, window):
name = QFileDialog.getSaveFileName(window, 'Save File')
if not name[0]:
print('Saving was canceled')
return 0
Martin Drechsler
committed
filename = name[0]+'.ini'
file = open(filename, 'w+')
Martin Drechsler
committed
self.save( filename )
print('saving to %s' % filename)
Martin Drechsler
committed
def open_from(self, window):
name = QFileDialog.getOpenFileName(window, 'Open File')
if not name[0]:
print('Opening was canceled')
return 0
self.load(name[0])
def load_electrodes(self, window):
name = QFileDialog.getOpenFileName(window, 'Open File')
if not name[0]:
print('Opening was canceled')
return 0
settings = QSettings(name[0], QSettings.IniFormat)
Martin Drechsler
committed
Martin Drechsler
committed
for text, spinb in self.createElectrodesDict().items():
spinbox_saved_value = settings.value(text)
try:
spinb.setValue( float(spinbox_saved_value) )
except TypeError:
spinb.setValue( float(spinb.value()) )
Martin Drechsler
committed
def startWebcamsThread(self):
exec(open('C:\\Users\\Usuario\\Documents\\control_app\\webcams.py').read())
def putWebcams(self, checked):
if checked:
t_webcams = Thread(target=self.startWebcamsThread, args=())
t_webcams.start()
else:
pass